From 019853bf4ecbb2797ac4d838eaa47441e3624f10 Mon Sep 17 00:00:00 2001 From: FaceDeer Date: Mon, 2 Oct 2023 11:49:01 -0600 Subject: [PATCH] filled in some more missing translations Credit/blame to ChatGPT --- df_achievements/dig.lua | 4 +- df_achievements/food.lua | 6 +-- df_achievements/locale/df_achievements.de.tr | 22 ++++----- df_achievements/locale/template.txt | 12 ----- df_achievements/misc.lua | 16 +++---- df_dependencies/locale/df_dependencies.de.tr | 14 +++--- df_trees/locale/df_trees.de.tr | 48 +++++++++---------- .../locale/df_underworld_items.de.tr | 30 ++++++------ find untranslated strings.py | 33 +++++++++++++ hunter_statue/locale/hunter_statue.de.tr | 6 +++ ice_sprites/locale/ice_sprites.de.tr | 2 +- mine_gas/locale/mine_gas.de.tr | 2 +- pit_caves/locale/pit_caves.de.tr | 11 +++++ translation prompt.txt | 19 ++++++++ 14 files changed, 140 insertions(+), 85 deletions(-) create mode 100644 find untranslated strings.py create mode 100644 hunter_statue/locale/hunter_statue.de.tr create mode 100644 pit_caves/locale/pit_caves.de.tr create mode 100644 translation prompt.txt diff --git a/df_achievements/dig.lua b/df_achievements/dig.lua index cd7f163..6eda262 100644 --- a/df_achievements/dig.lua +++ b/df_achievements/dig.lua @@ -49,8 +49,8 @@ end -- too common --awards.register_achievement("dfcaverns_glow_worms", { --- title = S("Collect Glow Worms"), --- description = S(""), +-- title = , +-- description = , -- icon =, -- trigger = { -- type = "dig", diff --git a/df_achievements/food.lua b/df_achievements/food.lua index e7595a2..2b07434 100644 --- a/df_achievements/food.lua +++ b/df_achievements/food.lua @@ -74,10 +74,10 @@ if minetest.get_modpath("df_primordial_items") then }, }) --- too mundane compared to the other achievements +-- eating diced mushroom too mundane compared to the other achievements -- awards.register_achievement("dfcaverns_diced_mushroom", { --- title = S("Eat Diced Mushroom"), --- description = S(""), +-- title = , +-- description = , -- icon =, -- trigger = { -- type = "eat", diff --git a/df_achievements/locale/df_achievements.de.tr b/df_achievements/locale/df_achievements.de.tr index 2f52a93..3a91773 100644 --- a/df_achievements/locale/df_achievements.de.tr +++ b/df_achievements/locale/df_achievements.de.tr @@ -14,7 +14,6 @@ Collect Cave Pearls=Sammle Höhlenperlen Collect Flawless Mese Crystal Block=Sammle ein makelloses Mesekristallblock Collect Giant Red Crystal=Sammle Riesenroten Kristall Collect Giant Webbing=Sammle Riesennetz -Collect Glow Worms=Sammle Glühwürmer Collect Glowing Amethyst=Sammle Leuchtenden Amethyst Collect Luminous Salt Crystal=Sammlung von Leuchtendem Salzkristall @@ -39,12 +38,6 @@ Destroy a Gas Seep=Zerstöre eine Gasaustrittsstelle Plug a crack that mine gas is seeping out of to make the caves just a little bit safer.=Verschließe einen Riss, aus dem Gas austritt, um die Höhlen etwas sicherer zu machen. -### dig.lua ### -### food.lua ### -### misc.lua ### - -= - ### farming.lua ### Fungal Arborist=Fungaler Baumpfleger @@ -87,7 +80,6 @@ Underground Farmer=Unterirdischer Bauer Dwarven Gourmand=Dwarven Feinschmecker Eat @1=Essen Sie @1 -Eat Diced Mushroom=Essen Sie gewürfelte Pilze Eat a Glowtato=Essen Sie eine Leuchtkartoffel Eat a Primordial Fruit=Essen Sie eine Urtümliche Frucht @@ -109,13 +101,9 @@ Activating a puzzle seal has produced a breach in the slade foundations of the w Capture an Ice Sprite=Einen Eisschatten einfangen Collect All Lore=Sammle alle Überlieferungen Decipher the code of the ancients. Do you dare turn the key?=Entschlüssele den Code der Alten. Traust du dich, den Schlüssel umzudrehen? -Detonate Mine Gas=Minengas detonieren Get Attacked by an Underworld Guardian=Von einem Unterwelt-Wächter angegriffen werden -Loot 100 Ancient Warrior Bones=Beute 100 Knochen der antiken Krieger -Loot Ancient Warrior Bones=Beute Knochen der antiken Krieger Punch Veinstone=Schlag auf Adernstein Punch a vein to hear the heartbeat of the stone.=Schlage eine Ader, um den Herzschlag des Steins zu hören. -Repair 100 Ancient Lanterns=Repariere 100 antike Laternen Repair an Ancient Lantern=Repariere eine antike Laterne Solve a Puzzle Seal=Löse ein Rätselsiegel Trigger a Slade Breacher=Einen Slade-Breacher auslösen @@ -183,3 +171,13 @@ Discover the giant caverns to which all water from the surface ultimately drain. Discover the lost jungles below the foundations of the world.=Entdecke die verlorenen Dschungel unter den Grundfesten der Welt. Discover the sea of magma that volcanoes draw from.=Entdecke das Magmameer, aus dem die Vulkane schöpfen. + + +##### not used anymore ##### + +Collect Glow Worms=Sammle Glühwürmer +Eat Diced Mushroom=Essen Sie gewürfelte Pilze +Detonate Mine Gas=Minengas detonieren +Loot 100 Ancient Warrior Bones=Beute 100 Knochen der antiken Krieger +Loot Ancient Warrior Bones=Beute Knochen der antiken Krieger +Repair 100 Ancient Lanterns=Repariere 100 antike Laternen diff --git a/df_achievements/locale/template.txt b/df_achievements/locale/template.txt index c000995..e70c64b 100644 --- a/df_achievements/locale/template.txt +++ b/df_achievements/locale/template.txt @@ -14,7 +14,6 @@ Collect Cave Pearls= Collect Flawless Mese Crystal Block= Collect Giant Red Crystal= Collect Giant Webbing= -Collect Glow Worms= Collect Glowing Amethyst= Collect Luminous Salt Crystal= @@ -39,12 +38,6 @@ Destroy a Gas Seep= Plug a crack that mine gas is seeping out of to make the caves just a little bit safer.= -### dig.lua ### -### food.lua ### -### misc.lua ### - -= - ### farming.lua ### Fungal Arborist= @@ -87,7 +80,6 @@ Underground Farmer= Dwarven Gourmand= Eat @1= -Eat Diced Mushroom= Eat a Glowtato= Eat a Primordial Fruit= @@ -109,13 +101,9 @@ Activating a puzzle seal has produced a breach in the slade foundations of the w Capture an Ice Sprite= Collect All Lore= Decipher the code of the ancients. Do you dare turn the key?= -Detonate Mine Gas= Get Attacked by an Underworld Guardian= -Loot 100 Ancient Warrior Bones= -Loot Ancient Warrior Bones= Punch Veinstone= Punch a vein to hear the heartbeat of the stone.= -Repair 100 Ancient Lanterns= Repair an Ancient Lantern= Solve a Puzzle Seal= Trigger a Slade Breacher= diff --git a/df_achievements/misc.lua b/df_achievements/misc.lua index 89128a8..8b2e44b 100644 --- a/df_achievements/misc.lua +++ b/df_achievements/misc.lua @@ -75,8 +75,8 @@ if minetest.get_modpath("df_underworld_items") then }) -- awards.register_achievement("dfcaverns_repaired_100_lanterns", { --- title = S("Repair 100 Ancient Lanterns"), --- description = S(""), +-- title = , +-- description = , -- icon =, -- }) @@ -102,19 +102,19 @@ end -- can't think of an easy way to detect these --awards.register_achievement("dfcaverns_torch_detonated_mine_gas", { --- title = S("Detonate Mine Gas"), --- description = S(""), +-- title = , +-- description = , -- icon =, --}) --awards.register_achievement("dfcaverns_looted_underworld_bones", { --- title = S("Loot Ancient Warrior Bones"), --- description = S(""), +-- title = , +-- description =, -- icon =, --}) -- --awards.register_achievement("dfcaverns_looted_100_underworld_bones", { --- title = S("Loot 100 Ancient Warrior Bones"), --- description = S(""), +-- title = , +-- description = , -- icon =, --}) diff --git a/df_dependencies/locale/df_dependencies.de.tr b/df_dependencies/locale/df_dependencies.de.tr index e4674a4..47357f9 100644 --- a/df_dependencies/locale/df_dependencies.de.tr +++ b/df_dependencies/locale/df_dependencies.de.tr @@ -11,17 +11,17 @@ Hidden Firefly=Verborgenes Glühwürmchen ### helper_functions.lua ### -@1 Fence= -@1 Fence Gate= -@1 Fence Rail= -@1 Mese Post Light= +@1 Fence=@1 Zaun +@1 Fence Gate=@1 Zauntor +@1 Fence Rail=@1 Zaunschienen +@1 Mese Post Light=@1 Mese Pfostenlicht #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE @1 Slab=@1 Platte #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE @1 Stair=@1 Treppe -Double @1 Slab= +Double @1 Slab=Doppelte @1 Platte ### misc.lua ### -Icecap= -Nethercap= +Icecap=Eiskappe +Nethercap=Netherkappe diff --git a/df_trees/locale/df_trees.de.tr b/df_trees/locale/df_trees.de.tr index 5363bcd..47f7f4f 100644 --- a/df_trees/locale/df_trees.de.tr +++ b/df_trees/locale/df_trees.de.tr @@ -5,10 +5,10 @@ #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Black Cap=Schwarze Kappe -Black Cap Gills= +Black Cap Gills=Schwarze Kap Pilze #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Black Cap Planks=Black Cap Planken -Black Cap Spawn= +Black Cap Spawn=Schwarze Kap Setzlinge #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Black Cap Stem=Schwarzer Kappenstiel @@ -16,17 +16,17 @@ Black Cap Stem=Schwarzer Kappenstiel #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Blood Thorn Planks=Blutdornbretter -Blood Thorn Spike= +Blood Thorn Spike=Blutdornen Dornen #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Blood Thorn Stem=Blutdornstamm -Dead Blood Thorn Spike= -Dead Blood Thorn Stem= +Dead Blood Thorn Spike=Tote Blutdornen Dornen +Dead Blood Thorn Stem=Toter Blutdornen Stiel ### doc.lua ### -@1 have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.= +@1 have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=@1 haben eine ungewöhnliche Biochemie, die es ihnen auf unerklärliche Weise ermöglicht, von Umgebungswärme zu leben, was allen bekannten Gesetzen der Thermodynamik widerspricht. Sie wachsen tief unter der Erde in eisigen Höhlen, die eigentlich vulkanisch sein sollten. -@1 wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living icecaps and is able to quickly freeze nearby water solid.= +@1 wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living icecaps and is able to quickly freeze nearby water solid.=@1 Holz behält neben seiner wunderschönen blauen Farbe die seltsame Fähigkeit, Wärme abzuleiten, die lebende Eiskappen haben, und kann in der Nähe schnell Wasser zu Eis erstarren lassen. #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE A torchspine alternates between active and quiescent phases and emits dim light when active. They can be harvested for torches, and their embers sprout into new torchspines when placed on flammable surfaces.=Eine Fackel wechselt zwischen aktiver und ruhender Phase und gibt schwaches Licht ab, wenn sie aktiv ist. Sie können für Fackeln geerntet werden, und ihre Glut sprießt auf brennbaren Oberflächen zu neuen Fackelstacheln. @@ -137,40 +137,40 @@ When harvested, the central stalk of a blood thorn can be cut into planks and us Fungiwood Planks=Fungiwood Planken #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Fungiwood Shelf=Fungiwood Regal -Fungiwood Spawn= -Fungiwood Stem= +Fungiwood Spawn=Fungiwood Setzlinge +Fungiwood Stem=Fungiwood Stiel ### goblin_cap.lua ### -Goblin Cap= -Goblin Cap Gills= +Goblin Cap=Goblin Kap +Goblin Cap Gills=Goblin Kap Pilze #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Goblin Cap Planks=Goblin Cap Planken -Goblin Cap Spawn= -Goblin Cap Stem= +Goblin Cap Spawn=Goblin Kap Setzlinge +Goblin Cap Stem=Goblin Kap Stiel #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Goblin Cap Stem Planks=Goblin Cap Stem Planken ### nether_cap.lua ### -@1 Gills= -@1 Planks= -@1 Spawn= -@1 Stem= +@1 Gills=@1 Pilze +@1 Planks=@1 Planken +@1 Spawn=@1 Setzlinge +@1 Stem=@1 Stiel ### spindlestem.lua ### -@1 Spindlestem Cap= +@1 Spindlestem Cap=@1 Spindelstamm Kappe #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE @1 Spindlestem Extract=@1 Spindlestem-Extrakt -Cyan= -Golden= +Cyan=Cyan +Golden=Gold #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Green=Grün #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Red=Rot -Spindlestem= -Spindlestem Spawn= +Spindlestem=Spindelstamm +Spindlestem Spawn=Spindelstamm Setzlinge #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE White=Weiß @@ -206,7 +206,7 @@ Tower Cap=Turmkappe Tower Cap Gills=Tower Cap Kiemen #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Tower Cap Planks=Turmkappenbretter -Tower Cap Spawn= +Tower Cap Spawn=Turm Kap Setzlinge #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Tower Cap Stem=Turmkappenstiel @@ -218,7 +218,7 @@ Tunnel Tube=Tunnelrohr Tunnel Tube Fruiting Body=Tunnelrohr-Fruchtkörper #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Tunnel Tube Plies=Tunnelrohrlagen -Tunnel Tube Spawn= +Tunnel Tube Spawn=Tunnelrohr Setzlinge ##### not used anymore ##### diff --git a/df_underworld_items/locale/df_underworld_items.de.tr b/df_underworld_items/locale/df_underworld_items.de.tr index 7031666..32f3628 100644 --- a/df_underworld_items/locale/df_underworld_items.de.tr +++ b/df_underworld_items/locale/df_underworld_items.de.tr @@ -3,7 +3,7 @@ ### ancient_lanterns.lua ### -Ancient Lantern= +Ancient Lantern=Antike Laterne ### crystals_amethyst.lua ### @@ -13,7 +13,7 @@ Glowing Amethyst Block=Glühender Amethystblock ### doc.lua ### #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE -Bright glowing stones of unknown origin found lodged in the crevices of the underworld's ceiling.=Hell leuchtende Steine ​​unbekannter Herkunft wurden in den Spalten der Decke der Unterwelt gefunden. +Bright glowing stones of unknown origin found lodged in the crevices of the underworld's ceiling.=Hell leuchtende Steine unbekannter Herkunft wurden in den Spalten der Decke der Unterwelt gefunden. #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Glowing purple crystals that grow through holes in the foundation of the world.=Glühende lila Kristalle, die durch Löcher im Fundament der Welt wachsen. @@ -37,14 +37,14 @@ The very foundation of the world, Slade is a mysterious ultra-dense substance.=S These crystals have no known use.=Diese Kristalle haben keine bekannte Verwendung. #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE -These stones are highly volatile and should not be disturbed.=Diese Steine ​​sind sehr flüchtig und sollten nicht gestört werden. +These stones are highly volatile and should not be disturbed.=Diese Steine sind sehr flüchtig und sollten nicht gestört werden. #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE This block of Slade, carved by an unknown hand, is engraved with mysterious symbols. Most of the engraving's meaning is lost to the mists of time but one frament in the oldest known language can be translated: "This place is not a place of honor."=Dieser von einer unbekannten Hand geschnitzte Slade-Block ist mit mysteriösen Symbolen versehen. Der größte Teil der Bedeutung der Gravur geht den Nebeln der Zeit verloren, aber ein Frament in der ältesten bekannten Sprache kann übersetzt werden: "Dieser Ort ist kein Ehrenplatz." -This shard of a spent slade breacher doesn't appear to have been intended as a portable tool, but it can be used as one.= +This shard of a spent slade breacher doesn't appear to have been intended as a portable tool, but it can be used as one.=Dieser Splitter eines verbrauchten Slade-Sprengers scheint nicht als tragbares Werkzeug gedacht gewesen zu sein, kann aber als solches verwendet werden. -Use this on a target to unleash the energies used to dig through the foundations of the world.= +Use this on a target to unleash the energies used to dig through the foundations of the world.=Verwende dies an einem Ziel, um die Energien freizusetzen, die verwendet wurden, um die Grundlagen der Welt zu durchbrechen. ### glow_stone.lua ### @@ -64,7 +64,7 @@ Guardian Statue=Wächterstatue ### puzzle_chest.lua ### -Puzzle Chest= +Puzzle Chest=Rätseltruhe ### puzzle_seal.lua ### @@ -74,23 +74,23 @@ Active Slade Breacher=Aktiver Slade Breacher Breach in the Slade=Brich den Slade ein #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Inscribed Slade Block=Beschrifteter Slade-Block -Slade Capstone= -Slade Puzzle Seal= +Slade Capstone=Slade-Schlussstein +Slade Puzzle Seal=Slade-Rätselversiegelung #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Turn=Wende ### slade.lua ### -Slade= -Slade Block= -Slade Brick= -Slade Sand= -Slade Seal= -Slade Wall= +Slade=Slade +Slade Block=Slade-Block +Slade Brick=Slade-Ziegel +Slade Sand=Slade-Sand +Slade Seal=Slade-Versiegelung +Slade Wall=Slade-Wand ### slade_drill.lua ### -Slade Drill= +Slade Drill=Slade-Bohrer ##### not used anymore ##### diff --git a/find untranslated strings.py b/find untranslated strings.py new file mode 100644 index 0000000..2286a72 --- /dev/null +++ b/find untranslated strings.py @@ -0,0 +1,33 @@ +import os + +def process_file(file_path): + found = False + with open(file_path, 'r', encoding='utf-8') as file: + for line in file: + line = line.strip() + if not line.startswith("#") and line and line.endswith("="): + if not found: + found = True + print("Found in:", file_path) + print(line) + +def find_and_process_files(directory): + for root, dirs, files in os.walk(directory): + for file in files: + if file.endswith(".de.tr"): + full_file_path = os.path.join(root, file) + #print("Found in:", os.path.abspath(root)) + process_file(full_file_path) + +def find_missing_locale_directories(directory): + for root, dirs, files in os.walk(directory): + if "locale" in dirs: + locale_dir = os.path.join(root, "locale") + locale_files = [f for f in os.listdir(locale_dir) if f.endswith(".de.tr")] + if not locale_files: + print("Missing *.de.tr file in:", os.path.abspath(locale_dir)) + +# Start the search from the current directory +current_directory = os.getcwd() +find_and_process_files(current_directory) +find_missing_locale_directories(current_directory) diff --git a/hunter_statue/locale/hunter_statue.de.tr b/hunter_statue/locale/hunter_statue.de.tr new file mode 100644 index 0000000..5d561a0 --- /dev/null +++ b/hunter_statue/locale/hunter_statue.de.tr @@ -0,0 +1,6 @@ +# textdomain: hunter_statue + + +### init.lua ### + +Hunter Statue=Jägerstatue diff --git a/ice_sprites/locale/ice_sprites.de.tr b/ice_sprites/locale/ice_sprites.de.tr index 23bc652..ca60e91 100644 --- a/ice_sprites/locale/ice_sprites.de.tr +++ b/ice_sprites/locale/ice_sprites.de.tr @@ -7,7 +7,7 @@ A bottle containing a captured ice sprite.=Eine Flasche mit einem erbeuteten Eisgeist. #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Hidden Ice Sprite=Verstecktes Eis-Sprite -Ice Sprite= +Ice Sprite=Eis-Sprite #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Ice Sprite in a Bottle=Ice Sprite in einer Flasche diff --git a/mine_gas/locale/mine_gas.de.tr b/mine_gas/locale/mine_gas.de.tr index 802821b..47e709b 100644 --- a/mine_gas/locale/mine_gas.de.tr +++ b/mine_gas/locale/mine_gas.de.tr @@ -26,7 +26,7 @@ When exposed to air and an ignition source it can produce a deadly explosion.=We ### wisp.lua ### -Gas Wisp= +Gas Wisp=Gasnebel #WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE Gas Wisps have no known use, and fortunately they are not hostile or very dangerous.=Gas-Wisps haben keine bekannte Verwendung und sind glücklicherweise nicht feindlich oder sehr gefährlich. diff --git a/pit_caves/locale/pit_caves.de.tr b/pit_caves/locale/pit_caves.de.tr new file mode 100644 index 0000000..af3fa29 --- /dev/null +++ b/pit_caves/locale/pit_caves.de.tr @@ -0,0 +1,11 @@ +# textdomain: pit_caves + + +### init.lua ### + +No pits near @1=Keine Gruben in der Nähe von @1 +Pit at @1, bottom @2=Grube bei @1, unten @2 +You need the server privilege to use this command.=Du benötigst die Serverberechtigung, um diesen Befehl zu verwenden. + +find the pits near the player's map region, or in the map region containing pos if provided=Finde die Gruben in der Nähe der Kartenregion des Spielers oder in der Kartenregion, die pos enthält, falls angegeben. + diff --git a/translation prompt.txt b/translation prompt.txt new file mode 100644 index 0000000..668ee57 --- /dev/null +++ b/translation prompt.txt @@ -0,0 +1,19 @@ +I used following prompt to getting ChatGPT to translate text for me. Note that ChatGPT can be unreliable sometimes in following all of these instructions, check the output to ensure the @1 substitutions are used correctly and it otherwise follows the correct syntax. + +------------- + +I've created a mod for Minetest that has a bunch of strings in it that need localization. They've been put into a text file that the game reads from, and I'm wondering if you can process the text file to add translations for me. + +Here are the detailed rules of how the file is structured: + +The lines that matter for you are all non-empty lines that do not start with "#". These are the translation lines. On the left side of the equals sign, the original text is written. On the right side of the equals sign, the translation has to be written. If there's nothing on the right side of the equals sign please fill that in with the translation of the text on the left of the equals sign. Note that the equals sign itself is not to be included in the translated text, it serves as a delimiter between the original English text and the translated text. + +Other lines that start with "#" are comments. Minetest will ignore them but they might contain some information for you that will help give context for translating the lines that follow them. Please preserve these lines unchanged in the output. + +In the texts (both original and translated texts), some characters will be replaced in the actual game: + +"@1", "@2", ... to "@9" are placeholders. The game will replace it with another text. You MUST include all placeholders in the translation, but the order can be different. + +To produce a newline, write "@n". + +If these formatting rules make sense, let me know that you're ready and I'll paste the contents of the text file to be translated here. When I paste the text please respond by giving me the text back with the original English text on the left of the = symbol and German translations added to the right of the = symbol. \ No newline at end of file