Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added multi language support. The language can now be switched (Need translation) #216

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ templates

.idea
scrap_engine.py
venv
35 changes: 35 additions & 0 deletions assets/gen_schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from pathlib import Path
import json

def main():
lang_path = Path(__file__).parent / "lang"
lang_file = lang_path / "en_US.json"
schema_file = lang_path / "schema.json"

schema = {
"$schema": "http://json-schema.org/draft-07/schema",
"title": "Pokete Translation File Schema",
"properties": {}
}

if not lang_file.is_file():
print(f"en_US.json file not found in directory {lang_file} Abort.")
return

with open(lang_file) as en_US:
data = json.load(en_US)

for key in data:
if key == "$schema":
continue

schema["properties"][key] = {
"type": "string"
}

with open(schema_file, "w") as schema_file:
json.dump(schema, schema_file, indent=2)


if __name__ == '__main__':
main()
194 changes: 194 additions & 0 deletions assets/lang/de_DE.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
{
"$schema": "schema.json",
"assert.input.text_length": "Text darf nicht länger als 12 Zeichen sein!",
"assert.pokete.attack_length": "Dein Pokete %s kann nicht mehr als 4 Attacken erlernen!",
"error.input.single_space_character": "Das ausgewählte Zeichen muss ein gültiger Leerzeichen sein!",
"error.import.scrap_engine": "Es scheint als hättest du das Paket 'scrap-engine' nicht installiert",
"error.exception.road_map_exception": "%s %s has no mapstation",
"error.mod.attributes": "Dem Mod %s fehlen Eigenschaften!\n%s",
"ui.pokete.title": "Pokete v%s -- %s\nvon lxgr-linux <lxgr@protonmail.com>",
"ui.dialog.yes": "Ja",
"ui.dialog.no": "Nein",
"ui.dialog.select_yes": "[Y]Ja",
"ui.dialog.select_no": "[N]ein",
"ui.dialog.select_ok": "[O]k",
"ui.dialog.min_window_size": "Minimale Fenstergröße ist 70x20",
"ui.dialog.on": "An",
"ui.dialog.off": "Aus",
"ui.dialog.nothing": "Nichts",
"ui.dialog.succeeded": "Erfolgreich",
"ui.dialog.failed": "Fehlgeschlagen",
"ui.dialog.answer": "Antwort",
"ui.dialog.lost": "Verloren",
"ui.dialog.won": "Gewonnen",
"ui.dialog.close": "Schließen",
"ui.dialog.at": "Um",
"ui.dialog.exit": "Verlassen",
"ui.dialog.active": "Aktiv",
"ui.dialog.move": "Bewegen",
"ui.dialog.move_to": "Bewegen nach",
"ui.dialog.cant_free_all": "Du kannst nicht alle deine Pokete freilassen",
"ui.dialog.free": "Freilassen",
"ui.dialog.free_pokete": "Möchtest du wirklich %s freilassen?",
"ui.details.title": "Details",
"ui.details.attacks": "Attacken",
"ui.details.attack": "Angriff",
"ui.details.defense": "Verteidigung",
"ui.details.abilities": "Fähigkeiten",
"ui.details.initiative": "Initiative",
"ui.details.nature": "Natur",
"ui.details.nature.very": "sehr",
"ui.details.nature.description": "Das heißt es hat %s Angriff, %s Verteidigung\nund %s Initiative Punkte mehr im vergleich zu normalen\nPokete seiner Art.",
"ui.details.use_ability": "Benutze Fähigkeit",
"ui.details.denominator.equal": "das gleiche",
"ui.details.denominator.less_than": "weniger",
"ui.details.denominator.greater_than": "mehr",
"ui.movemap.deck": "Deck",
"ui.movemap.map": "Karte",
"ui.movemap.inventory_abbr": "Inv.",
"ui.movemap.clock": "Uhr",
"ui.movemap.help": "Hilfe",
"ui.hotkeys.not_set": "Die folgenden Tasten sind nicht belegt:\n%s\nSoll die Standardbelegung für diese Tasten geladen werden?",
"ui.menu.title": "Menü",
"ui.menu.playername": "Spielername",
"ui.menu.playername_char": "Zeichen",
"ui.menu.save": "Speichern",
"ui.menu.quit_game": "Spiel verlassen",
"ui.menu.autosave": "Auto. Speichern",
"ui.menu.animations": "Animationen",
"ui.menu.save_trainers": "Speichere Trainer",
"ui.menu.audio": "Audio",
"ui.menu.language": "Sprache",
"ui.menu.saving": "Speichern...",
"ui.about.title": "Über",
"ui.mods.title": "Mods",
"ui.mods.load": "Lade mods",
"ui.mods.description": "Mods sind %s!\nUm ein Mod zu laden, muss es ins Unterverzeichnis '/mods' eingefügt werden\nund anschließend im Mod Menü aktiviert werden.",
"ui.mods.currently.singular": "Derzeitig ist %d Mod geladen:",
"ui.mods.currently.plural": "Derzeitig sind %d Mods geladen:",
"ui.mods.enabled": "aktiviert",
"ui.mods.disabled": "deaktiviert",
"ui.dex.title": "Poketedex",
"ui.inventory.title": "Inventar",
"ui.achievements.title": "Errungenschaften",
"ui.achievements.achieved": "Errungen: ",
"ui.achievements.unlocked": "Errungenschaft freigeschaltet!",
"ui.shop.title": "Geschäft",
"ui.roadmap.title": "Roadmap",
"ui.roadmap.find": "Hier kannst du finden:",
"ui.controls.title": "Tastaturbelegung",
"ui.help.controls.up": "Oben",
"ui.help.controls.down": "Unten",
"ui.help.controls.left": "Links",
"ui.help.controls.right": "Rechts",
"ui.help.controls.menu": "Menü",
"ui.help.text": "Wenn du in das hohe Gras läufst (';') triffst du vielleicht auf\nein wildes Pokete, welche besiegt oder gefangen werden können.\nNPCs sprechen mit dir sobald du gegen sie läufst.\nFür mehr Informationen wie dieses Spiel gespielt wird, \nkannst du hier nachlesen (Englisch): https://git.io/JRRqe",
"ui.lang.en_us": "Englisch (Amerikanisch)",
"ui.lang.de_de": "Deutsch",
"dialog.time.day": "Tag",
"dialog.time.night": "Nacht",
"dialog.time.always": "Immer",
"dialog.evolution.look": "Schau!",
"dialog.evolution.evolving": "%s\n%s entwickelt sich!",
"dialog.evolution.evolved": "%s entwickelte sich zu %s!",
"dialog.evolution.evolve": "Entwickelt sich zu",
"dialog.center.welcome": "Willkommen im Pokete-Center",
"dialog.center.action": "Was möchtest du tun?",
"dialog.center.list": "1: Sehe dein Deck\n 2: Heile alle Pokete\n 3: Knuddeln mit deinen Pokete",
"dialog.center.healed": "Deine Pokete sind nun geheilt!",
"dialog.shop.welcome": "Willkommen im Pokete-Geschäft",
"dialog.shop.action": "Möchtest du was kaufen?",
"dialog.shop.leave": "Hab noch einen schönen Tag!",
"dialog.trader.welcome": "Ich bin ein Händler.",
"dialog.trader.action": "Hier kannst du deine Pokete mit anderen Spielern tauschen.",
"dialog.attack.what_to_do": "Was möchtest du tun?",
"dialog.attack.no_items": "Du hast keine Items mehr!",
"dialog.attack.run_question": "Möchtest du wirklich weglaufen?",
"dialog.attack.failed_run": "Weglaufen fehlgeschlagen!",
"dialog.attack.success_run": "Du bist entkommen!",
"dialog.attack.encounter": "Ein wildes %s ist erschienen!",
"dialog.attack.start_fight": "%s hat einen Kampf begonnen!",
"dialog.attack.opponent.attack": "%s\n%s benutzt %s gegen dich!",
"dialog.attack.opponent.used": "%s benutzt %s!",
"dialog.attack.player.attack": "Du schaffst das %s!",
"dialog.attack.player.swap_pokete": "Möchtest du ein anderes Pokete auswählen?",
"dialog.attack.player.swap_pokete.confirm": "Du hast %s gewählt",
"dialog.attack.player.throw": "Du hast %s geworfen!",
"dialog.attack.pokete.defeat": "%s wurde besiegt!",
"dialog.attack.pokete.no_ap": "%s hat alle seine Angriffspunkte aufgebraucht!",
"dialog.attack.pokete.won": "%s hat gewonnen!",
"dialog.attack.pokete.levelup": "%s erreicht Level %d!",
"dialog.attack.pokete.caught": "Du hast ein %s gefangen!",
"dialog.attack.pokete.missed": "Verfehlt!",
"dialog.attack.pokete.learn_attack": "%s möchte %s lernen!",
"dialog.attack.pokete.learned_attack": "%s hat %s gelernt!",
"dialog.attack.noop": "Das kannst du in einem Kampf nicht tun!",
"dialog.attack.blackout": "Alle deine Pokete wurden besiegt. Du versuchst schnell\nzum zuletzt besuchten Poketecenter zurückzulaufen um deine Pokete zu heilen!\nAuf dem Weg dahin fiel dir %d$ aus deinen Taschen!",
"dialog.attack.deck": "Dein Deck",
"dialog.attack.won": "gewonnen",
"dialog.attack.lvl": "Lvl",
"dialog.attack.hp": "KP",
"dialog.attack.xp": "EXP",
"dialog.attack.ap": "AP",
"dialog.attack.attacks": "Attacken",
"dialog.attack.attack": "Angriff",
"dialog.attack.attack_info": "Attacken Info",
"dialog.attack.run": "Fliehen",
"dialog.attack.type": "Typ",
"dialog.attack.info": "Info",
"dialog.attack.effective": "Das ist sehr effiktiv!",
"dialog.attack.not_effective": "Das ist nicht effiktiv!",
"dialog.attack.missed": "%s verfehlt!",
"dialog.attack.attack_used": "%s benutzt %s! %s",
"dialog.attack.hurt_itself": "%s hat sich selbst verletzt!",
"dialog.inventory.prefix_ld_disk": "LD",
"dialog.inventory.teach_disc": "Bringt einem Pokete die Attacke %s bei.",
"dialog.effect.not_affected": "%s ist nicht betroffen von",
"dialog.effect.now": "%s ist jetzt",
"dialog.effect.already": "%s ist bereits",
"dialog.effect.still": "%s ist immernoch",
"dialog.effect.isnt": "%s ist noch nicht",
"dialog.effect.anymore": "!",
"dialog.effect.cant_attack": "und kann nicht angreifen!",
"dialog.effect.paralysis.description": "Paralyses the enemy and stops it from attacking. \nThis is reverted randomly.",
"dialog.effect.sleep.description": "Makes the enemy fall asleep and stops it from attacking. \nThis is reverted randomly.",
"dialog.effect.burn.description": "Sets the enemy on fire and damages them with 2 HP every round. \nThis is reverted randomly.",
"dialog.effect.poison.description": "Poisons the enemy and damages the enemy with 1 HP every round.\n This is reverted randomly.",
"dialog.effect.confusion.description": "Makes the enemy hurt it self. This is reverted randomly.",
"dialog.effect.freeze.description": "Freezes the enemy and stops it from attacking. \nThis is reverted randomly.",
"dialog.walk.collected_item.singular": "You found a %s!",
"dialog.walk.collected_item.plural": "You found %d %ss!",
"npc.interaction.give": "%s gifted you a %s.\nDo you want to accept it?",
"npc.interaction.twenty_dollars": "Here is $20!",
"npc.test_npc.hey": "Hey.",
"npc.old_man.greet": "Hello, young trainer.",
"npc.old_man.talk": "When I was your age... I also was a trainer.",
"npc.old_man.found_hyperball": "One day I found this very special Poketeball...",
"npc.old_man.hyperball": "A Hyperball!",
"npc.old_man.rarest": "It's one of the oldest and rarest of them all.",
"npc.old_man.keep": "You can keep it!",
"trainer.playmap1.franz.fight": "Wanna fight?",
"trainer.playmap1.franz.lose1": "Hahaha!",
"trainer.playmap1.franz.lose2": "You're a loser!",
"trainer.playmap1.franz.win": "You're a very good trainer!",
"log.achievements.unlocked": "[Achievements] Freigeschaltet %s",
"log.general.player": "Spieler",
"log.general.enemy": "Gegner",
"log.effects.add": "[Effect][%s] Added to %s",
"log.effects.remove": "[Effect][%s] Removed from %s",
"log.fight.ran_away": "[Fight] Ended, ran away",
"log.fight.end_fight": "[Fight] Ended, fight item",
"log.fight.start_fight": "[Fight] Started between %s and ",
"log.fight.end_fight_won": "[Fight] Ended, %s (%s) won",
"log.fight.pokete_caught": "[Fight][%s] Caught %s",
"log.fight.pokete_missed": "[Fight][%s] Missed",
"log.fight.ap_potion_used": "[Fight][ap_potion] Used",
"log.fight.blackout": "[Fight] You lost all Poketes and ran away!",
"log.npc.interaction": "[NPC][%s] Interaction",
"log.npc.walk_check": "[NPC][%s] %s walk check to (%d|%d)",
"log.npc.match_info": "[NPC][%s] %s against player",
"log.pokete.gained_xp": "[Pokete][%s] Gained %d XP (current: %d)",
"log.pokete.level_up": "[Pokete][%s] Reached level %d",
"log.pokete.used_attack": "[Pokete][%s] Used %s: %s",
"log.pokete.evolved": "[Pokete] %s evolved into %s"
}
Loading