Springe zum Inhalt

localesxmldatei übersetzen

Ich habe auf der Suche nach alten Spielen warlords iv ausgekramt. Teil 3 war zwar cooler, aber bei Teil 4 scheint mir der Mehrspielermodus modern genug umgesetzt zu sein, dass der auch heute noch hoffentlich weniger Probleme macht.

okay, so weit so gut, aber dieses Spiel gibts tatsächlich nur auf Spanisch, Englisch und Französisch .... was ist DAS DENN ? naja... okay...

also hab ich mir die 7 xml-Dateien rausgesucht, die für die jeweilige Übersetzung zuständig sind. Das ist insgesamt wirklich hübsch gemacht von den Entwicklern.

Okay, der erste Versuch der halbautomatischen Übersetzung mit ChatGPT ging so mittelmäßig gut, weil es nach 50 oder 60 Zeilen immer einen Abbruch gab und so eine 800 Zeilen lange xml dann entsprechend viele Häppchen braucht, bis sie durchübersetzt ist.

Plan 2 war direkt google Übersetzer oder deepl zz benutzen und als Ausgangs-xml die französische Übersetzung zu nehmen, damit die Tags, die auf englisch waren, nicht angetastet werden sollten.

Das hat zwar grundsätzlich funktioniert, aber die Zeichenbeschränkung auf 5000 Zeichen hat auch hier nur ein häppchenweises Vorgehen erlaubt... also noch nicht cool genug, aber nicht ganz schlecht

also war der Plan, nur die Elemente, die auch übersetzt werden sollen in den Translator zu werfen, um keine Zeichen zu verschwenden, die gar nicht übersetzt werden sollen. ...die Herausforderung war jetzt, in der xml-Datei nur die Datenelemente zu markieren und nicht die tags.

sublimetext3 kann das über regex-Suche

(?<=">)[^<]+

das hier war cooler: (?<=">)[^<\n]+

alles ab dem Zeichen < bis zum Zeichen "> aber ohne Newline

cool:

  • alles gefundene markieren
  • kopieren
  • in neue Textdatei einfügen
  • in Häppchen <5000 Zeichen markieren und kopieren
  • in den Übersetzer werfen
  • Übersetzung kopieren und über den Originaltext einfügen
  • wenn alle Zeilen übersetzt sind, alles markieren
  • kopieren
  • und in die xml, die noch die regex-Suche markiert hat, einfach EINFÜGEN

bämm...fertig.... cool!