added dutch localization and fallback localization

This commit is contained in:
Ellpeck 2020-06-29 13:24:17 +02:00
parent 610fb79424
commit fff6724b00
6 changed files with 127 additions and 10 deletions

View file

@ -92,3 +92,6 @@
#begin Localization/NumberFormat.json5
/copy:Localization/NumberFormat.json5
#begin Localization/Localization.nl.json
/copy:Localization/Localization.nl.json

View file

@ -1,4 +1,5 @@
{
"TranslationBy": "",
"----- Ui -----": "",
"Back": "Zurück",
"Place": "Platzieren",

View file

@ -1,4 +1,5 @@
{
"TranslationBy": "",
"----- Ui -----": "",
"Back": "Back",
"Place": "Place",

View file

@ -0,0 +1,98 @@
{
"TranslationBy": "Vertaling door Usain_Volt",
"----- Ui -----": "",
"Back": "Terug",
"Place": "Plaats",
"Remove": "Verwijder",
"EarnStar": "Verdien <i star>",
"ReallyEarnStar": "Als u nu uw <i ticket> verzilvert, verdient u {0} <i star>. Het zal ook alle geplaatste attracties verwijderen en je <i ticket> resetten. Ben je zeker?",
"Yes": "Ja",
"Okay": "Okay",
"RequiresTickets": "{0}<i ticket> voor 1<i star>. Maximum 3.",
"AppliedUpgrades": "Actie Upgrades",
"Options": "Opties",
"RainingTicketLimit": "Max. Ticketregen ",
"SoundVolume": "Geluid volume",
"AGameByEllpeck": "Een speel door Ellpeck",
"----- Tutorial -----": "",
"Tutorial1": "Hallo! Welkom bij Touchy Tickets. Om het spel te starten, druk gewoon op het loket om een <i ticket> te verkopen. Start door 50<i ticket> op te stapelen!",
"Tutorial2": "Fantastisch! Nu kan je je eerste attract kopen. Ga naar het menu rechts door te vegen en koop een carrousel.",
"Tutorial3": "Dit is je park kaart. Het gebied binned het her behoort tot jou. Plaats de carrousel door het te slepen naar de perfecte locatie en dan op de knop beneden te drukken.",
"Tutorial4": "Nu dat je je carrousel hebt geplaatst, kan je zien dan je automatisch <i ticket> begint op te stapelen op het hoofdscherm ",
"Tutorial5": "Je kan nog steeds <i ticket> manueel verkopen door te tikken, Maar hoe langer je speelt, hoe meer <i ticket> je automatisch kan accumuleren .",
"Tutorial6": "Terwijl het spel gesloten is of op de achtergrond speelt, verkoop je <i ticket> met de helft van de normale snelheid .",
"Tutorial7": "Het lijkt erop dat je eindelijk genoeg <i ticket> hebt verkocht om ze te ruilen voor een <i star>! Als je klaar bent, open je het menu aan de linkerkant door te vegen en verdien je een <i star>",
"Tutorial8": "Je kunt ook wat langer wachten en meerdere <i star> tegelijk kopen met meer <i ticket>.",
"Tutorial9": "Nu dat je een <i star> hebt, moet je ook het spel herstarten. Maak je teen zorgen: <i star> geeft je de mogelijkheid om geweldige permanente upgrades voor je attracties te kopen",
"Tutorial10": "Nu kan je nog sneller nog meer <i ticket> opstapelen om meer <i star> te verdienen, om meer <i ticket> op te stapelen... je snapt het wel. Veel plezier!",
"Tutorial11": "Nu dat je een paar attracties hebt, kan je nadenken over het kopen van multipliers! Veeg om het modificatiemenu uiterst rechts te openen en koop een modifier.",
"Tutorial12": "Verschillende soorten modificaties kunnen worden toegepast bij verschillende attracties. Tik op een van je attracties en voeg de modificatie eraan toe.",
"Tutorial13": "Modificaties voegen een <i ticket> verkoop multiplier toe aan één attractie. Elke attractie kan een oneindige hoeveelheid van elke gegeven modifier hebben, dus ze zijn een geweldige manier om <i ticket> sneller te verzamelen.",
"GDPRInfo": "Dit spel gebruikt gebruikersgegevens <c CornflowerBlue><l https://gameanalytics.com/privacy>GameAnalytics'</l></c> and <c CornflowerBlue><l http://www.google.com/policies/privacy/partners/>Google's</l></c> policies on data collection.",
"----- Attractions -----": "",
"Carousel": "Carrousel",
"FoodCourt": "Voedselbank",
"FerrisWheel": "Reuzenrat",
"WildMouse": "Wilde muis-achtbaan",
"LogFlume": "Log Flume",
"HedgeMaze": "Haagdoolhof",
"SpiralSlide": "Spiraalvormige glijbaan",
"WoodCoaster": "Houten achtbaan",
"FreefallCoaster": "Vrijval achtbaan",
"MirrorHouse": "Spiegelhuis",
"HauntedHouse": "Spookhuis",
"GoKarts": "Go Karts",
"HeartlineTwister": "Pijplijnachtbaan",
"MiniGolf": "Mini Golf",
"SafariZone": "Safari Zone",
"----- Modifiers -----": "",
"Lubricant": "Glibberen en glijden",
"LubricantDescription": "De wielen van de auto's van een rit zijn gesmeerd voor meer snelheid.",
"LongerQueue": "Wachtrij",
"LongerQueueDescription": "De wachtrijlengte van een attractie wordt vergroot.",
"LouderMusic": "Audiofobie",
"LouderMusicDescription": "Ontspannende ritten spelen luidere muziek, waardoor rijders sneller vertrekken.",
"Bouncer": "Bouncer",
"BouncerDescription": "Bouncers worden geplaatst tijdens ritten op loopafstand, waardoor alleen jonge, energieke mensen kunnen binnenkomen.",
"OnRideCameras": "On-Ride Afbeeldingen",
"OnRideCamerasDescription": "Camera's zijn geïnstalleerd op ritten, zodat rijders een foto op de rit kunnen kopen.",
"SmallAds": "Tiny Living",
"SmallAdsDescription": "Een advertentiecampagne over kleine huisjes zorgt ervoor dat meer mensen geïnteresseerd zijn in kleine ritjes",
"----- Upgrades -----": "",
"MapSize1": "Groot park",
"MapSize1Description": "Vergroot de bebouwbare oppervlakte van uw park. Bestaande attracties worden niet verwijderd.",
"MapSize2": "Groter Park",
"MapSize2Description": "Vergroot de bebouwbare oppervlakte van uw park meer. Bestaande attracties worden niet verwijderd.",
"MapSize3": "Grootste Park",
"MapSize3Description": "Vergroot de bebouwbare oppervlakte van uw park nog meer. Bestaande attracties worden niet verwijderd.",
"MapSize4": "Grootster Park",
"MapSize4Description": "Vergroot de bebouwbare oppervlakte van uw park nog meer. Bestaande attracties worden niet verwijderd",
"MapSize5": "Grooterste Park",
"MapSize5Description": "Vergroot de bebouwbare oppervlakte van uw park tot het maximum. Bestaande attracties worden niet verwijderd",
"TapIncrease1": "Super Tik",
"TapIncrease1Description": "Verhoogt de hoeveelheid <i ticket> die wordt verkregen door op de ticketstand te tikken tot 5.",
"TapIncrease2": "Mega Tik",
"TapIncrease2Description": "Verhoogt de hoeveelheid <i ticket> die wordt verkregen door op de ticketstand te tikken tot 10.",
"TapIncrease3": "Hyper Tik",
"TapIncrease3Description": "Verhoogt de hoeveelheid <i ticket> die wordt verkregen door op de ticketstand te tikken tot 50.",
"ModifierIncrease1": "Modified",
"ModifierIncrease1Description": "Verhoogt het aantal ritmodifiers dat in één keer wordt geplaatst tot 3.",
"ModifierIncrease2": "Meer Modified",
"ModifierIncrease2Description": "Verhoogt het aantal ritmodifiers dat in één keer wordt geplaatst tot 5.",
"ModifierIncrease3": "Meest Modified",
"ModifierIncrease3Description": "Verhoogt het aantal ritmodifiers dat in één keer wordt geplaatst tot 10.",
"FoodCourtModifier": "Smakelijke Snoepjes",
"FoodCourtModifierDescription": "Verdubbelt <i ticket> verkoop voor alle attracties die grenzen aan food courts.",
"FerrisWheelModifier": "Drukke Pods",
"FerrisWheelModifierDescription": "Stelt meer mensen in staat om het gebied vanaf reuzenwielen te overzien. Verdubbelt de verkoop van <i ticket> voor aangrenzende ritten.",
"RollerCoasterModifier": "Geen remmen",
"RollerCoasterModifierDescription": "Verhoogt de snelheid van alle auto-gebaseerde attracties, verdubbelt hun <i ticket> verkoop.",
"ManualRideModifier": "Duw en schuif",
"ManualRideModifierDescription": "Verhoogt het aantal mensen dat is toegestaan op handmatige (wandelende) ritten en verdrievoudigt hun <i ticket> verkoop.",
"SpiralSlideModifier": "bezienswaardigheden",
"SpiralSlideModifierDescription": "Met een nieuwe verrekijker kunnen bezoekers met een spiraalvormige glijbaan aangrenzende ritten bekijken waarvan de <i ticket> -verkoop hierdoor wordt verdubbeld.",
"HauntedHouseModifier": "Spookachtig, eng",
"HauntedHouseModifierDescription": "Spookhuizen worden nog enger, waardoor rijders onmiddellijk op zoek gaan naar ontspanning. Driedubbeld <i ticket> verkoop voor alle aangrenzende ontspannen ritten.",
"NatureModifier": "Red de bomen",
"NatureModifierDescription": "Ritten waarin geen technologie wordt gebruikt, worden interessanter voor bezoekers die bezorgd zijn over klimaatverandering, waardoor hun verkoop van <i ticket> wordt verdubbeld."
}

View file

@ -12,11 +12,16 @@ namespace TouchyTickets {
public static readonly List<string> NumberFormat = LoadLocalized<List<string>>("NumberFormat", "json5");
private static readonly Dictionary<string, string> Strings = LoadLocalized<Dictionary<string, string>>("Localization");
private static readonly Dictionary<string, string> FallbackStrings = Load<Dictionary<string, string>>("Localization");
private static readonly List<string> News = LoadLocalized<List<string>>("News");
private static readonly Random Random = new Random();
public static string Get(string key) {
return Strings.TryGetValue(key, out var ret) ? ret : $"?{key}?";
if (Strings.TryGetValue(key, out var val))
return val;
if (FallbackStrings.TryGetValue(key, out var fallback))
return fallback;
return $"?{key}?";
}
public static string GetRandomNews() {
@ -24,12 +29,10 @@ namespace TouchyTickets {
}
private static T LoadLocalized<T>(string name, string extension = "json") {
var location = GameImpl.Instance.Content.RootDirectory + "/Localization/" + name;
var culture = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
foreach (var path in new[] {$"{location}.{culture}.{extension}", $"{location}.{extension}"}) {
foreach (var path in new[] {$"{name}.{culture}", name}) {
try {
using (var reader = new JsonTextReader(new StreamReader(TitleContainer.OpenStream(path))))
return SaveHandler.Serializer.Deserialize<T>(reader);
return Load<T>(path, extension);
} catch (Exception) {
// move on to the next path
}
@ -37,5 +40,11 @@ namespace TouchyTickets {
throw new ContentLoadException();
}
private static T Load<T>(string name, string extension = "json") {
var path = $"{GameImpl.Instance.Content.RootDirectory}/Localization/{name}.{extension}";
using (var reader = new JsonTextReader(new StreamReader(TitleContainer.OpenStream(path))))
return SaveHandler.Serializer.Deserialize<T>(reader);
}
}
}

View file

@ -466,12 +466,17 @@ namespace TouchyTickets {
var splash = new Group(Anchor.TopLeft, Vector2.One, false) {
OnDrawn = (e, time, batch, alpha) => batch.Draw(batch.GetBlankTexture(), e.DisplayArea, Color.Black * alpha)
};
var center = splash.AddChild(new Group(Anchor.Center, new Vector2(0.5F, 0.5F), false) {DrawAlpha = 0});
var content = splash.AddChild(new Group(Anchor.TopLeft, Vector2.One, false) {DrawAlpha = 0});
var center = content.AddChild(new Group(Anchor.Center, new Vector2(0.5F, 0.5F), false));
center.AddChild(new Image(Anchor.AutoCenter, new Vector2(1, -1), Assets.UiTexture[4, 0]));
center.AddChild(new Paragraph(Anchor.AutoCenter, 10000, Localization.Get("AGameByEllpeck"), true));
content.AddChild(new Paragraph(Anchor.BottomCenter, 1, Localization.Get("TranslationBy"), true) {
PositionOffset = new Vector2(0, 15),
TextScale = 0.08F
});
GameImpl.Instance.UiSystem.Add("Splash", splash).Priority = 100000;
while (center.DrawAlpha < 1) {
center.DrawAlpha += 0.015F;
while (content.DrawAlpha < 1) {
content.DrawAlpha += 0.015F;
yield return new Wait(CoroutineEvents.Update);
}
yield return new Wait(0.5);
@ -496,8 +501,8 @@ namespace TouchyTickets {
yield return new Wait(0.25);
loadGame();
yield return new Wait(0.25);
while (center.DrawAlpha > 0) {
center.DrawAlpha -= 0.015F;
while (content.DrawAlpha > 0) {
content.DrawAlpha -= 0.015F;
yield return new Wait(CoroutineEvents.Update);
}
while (splash.DrawAlpha > 0) {