Hallo auch!
Sicherlich gibt es unter euch auch jene, welche ihr Spiel gerne sowohl der internationalen Spielerschaft, wie auch dem deutschsprachigem Publikum möglichst zugänglich machen möchten.
Am einfachsten geht dies natürlich mit unterschiedlichen Lokalisierungen!
Für dieses kurze Tutorial verwenden wir folgendes Plugin von Open Digital World, dessen Einrichtung ich hier gerne im Detail erläutern möchte.
Außerdem brauchen wir noch einen Texteditor für den JSON-Teil des Tutorials. Ich verwende in diesem Beispiel Notepad++.
Folgende Schritte werden uns erwarten:
- Das Plugin und den Projektordner vorbereiten
- JSON-Dateien erstellen und Strukturen aufbauen
- Im RPG Maker MZ alle gewünschten Texte durch Strings austauschen
- Optional: Weitere Überlegungen
1. Das Plugin und den Projektordner vorbereiten
Zuerst wird das Plugin ganz normal in den Projekt-Ordner kopiert. Im RPG Maker MZ gehen wir in den Plugin Manager und aktivieren es dort. Hier fällt bei den Parametern sofort auf, dass dieses Plugin kein "Plug & Play" ist, sondern noch ein paar Vorbereitungen benötigt, um seine Funktion erfüllen zu können.
Hier kann man sehen, dass ich bereits (oben rechts) bei "Languages Option" (in der JSON) mit einem String arbeite, damit dieser Punkt ebenfalls berücksichtigt wird.
Im Projektordner eures Spieles erstellen wir einen neuen Ordner namens "languages" oder einen anderen beliebigen Namen, welcher dann aber auch in der 2. Parameter-Spalte des Plugins ("Languages Folder") angepasst werden muss. In diesem Ordner können wir uns nun Abkürzungen für die angestrebten Sprachen erstellen, welche als eigenständige Ordner in "languages" erstellt werden. In meinem Fall waren dies einmal "en" für die englische Sprachversion und einmal "ger" für die deutsche Version.
Hier lässt sich bereits (für Notepad++-Nutzer anhand der Icons) erahnen, was später in die Ordner kommen wird.
Nun werden wir auch nochmal im Plugin schauen, dass wir alles nach demselben Prinzip vorbereiten.
Hier sieht man, wie das Plugin in der 3. Parameter-Spalte einen Bezug zu den gerade erstellten Ordnern herstellt. Die 4. Spalte ist ebenso wichtig und wird im 2. Themenpunkt behandelt.
Sobald dies der Fall ist, öffnen wir nun den Texteditor unserer Wahl und erstellen in jedem Ordner (in dem Fall "en" und "ger") eine JSON-Datei, welche wir "main" nennen. Diese Datei ist ebenfalls bereits im Plugin vordefiniert (4. Spalte des obigen Bildes). Und genau mit diesen JSON-Dateien machen wir nun weiter!
Wichtig ist, dass alle Bezeichnungen (auch in Sachen Groß- und Kleinschreibung) 1:1 identisch sind.
2. JSON-Dateien erstellen und Strukturen aufbauen
Wir haben nun das Plugin eingestellt und im Projektordner die entsprechenden Vorbereitungen getroffen. Nun gehen wir dazu über zu definieren, welche Inhalte wir gerne im Spiel übersetzen möchten. Dafür öffnen wir eine der beiden mit "main" betitelten JSON-Dateien und bauen uns eine Struktur auf!
Hier zeige ich euch mal den Inhalt meiner exemplarischen "main"-JSON-Datei und erkläre euch die einzelnen Abschnitte.
Wichtig ist hervorzuheben, dass in einer JSON-Datei keine simplen Kommentare möglich sind, wie man es vom Programmieren in diversen Sprachen mit "#" oder "//" vor einem Text kennt, welcher für den Programmierer als Gedankenstütze dient und keinen vom Programm auszuführenden Code enthält. Die Leerzeilen dienen deswegen als thematische Trennzeichen zur Erleichterung des Lesens.
Auch muss aufgrund der Syntax (grob der "Grammatik" des Datenformats) hinter jeder Zeile ein "," stehen - außer in der letzten Zeile.
Wenn man mit längeren Listen arbeitet, kann man diese durch "{" über und "}" unter einem Abschnitt ein- bzw. ausklappbar machen. Dies erleichtert die Verwaltung enorm und sorgt für Übersicht.
Da der RPG Maker (MZ) in Dialogboxen leider keinen Zeilenumbruch beherrscht, empfehle ich noch "\n" in einem String einzusetzen, wenn ein solcher notwendig ist. Der entsprechende Textinhalt innerhalb der JSON-Datei muss jedoch in derselben Zeile geschrieben bleiben und auf zuvor gesetzte Leerzeichen Acht gegeben werden, da diese - plötzlich an den Beginn einer Zeile gerutscht - deplatziert wirken können.
"Game.mainTitle": "Das ultimative RPG-Deluxe-Pro-Mega-Edition",
"Command.fight": "Angreifen",
"Command.escape": "Fliehen",
"Command.attack": "Zuschlagen",
"Command.guard": "Beschützen",
"Command.item": "Rucksack",
"Command.skill": "Fähigkeiten",
"Command.equipment": "Ausrüstung",
"Command.status": "Status",
"Command.formation": "Anordnung",
"Command.options": "Einstellungen",
"Command.save": "Speichern",
"Command.gameEnd": "Spiel beenden",
"Command.weapon": "Waffen",
"Command.armor": "Rüstungen",
"Command.keyItem": "Wichtige Gegenstände",
"Command.equip": "Ausrüsten",
"Command.optimize": "Optimieren",
"Command.clear": "Alles entfernen",
"Command.buy": "Kaufen",
"Command.sell": "Verkaufen",
"Command.newGame": "Neues Spiel",
"Command.continue": "Fortsetzen",
"Command.toTitle": "Zum Startmenü",
"Command.cancel": "Abbrechen",
"Message.language": "Sprache",
"Message.alwaysDash": "Immer Rennen",
"Message.commandRemember": "Befehle merken",
"Message.touchUi": "Benutze Touch UI",
"Message.bgmVolume": "Hintergrund-Musik",
"Message.bgsVolume": "Hintergrund-Geräusche",
"Message.meVolume": "Musik-Effekte",
"Message.seVolume": "Geräusch-Effekte"
Alles anzeigen
Hierbei handelt es sich um folgende Gliederung, welche ich vom Plugin-Ersteller übernommen und (bislang) minimal erweitert habe.
1. Abschnitt:
Der Name des Projektes, welcher oben im Fenster des Spiels (und wenn aktiviert im Titelmenü) angezeigt wird.
Bei Bedarf lässt sich hier auch die Währung an die jeweilige Sprache des Spielers anpassen, indem man (beispielsweise) eine Spalte mit ""Game.currencyUnit":" und gemäß der grundlegenden Struktur mit einem in "Wert" auf der rechten Seite verwendet. Ebenso kann man im Falle eines Schrittzählers oder anderer Funktionen diese hier aufgreifen und entsprechend übersetzen.
2. Abschnitt:
Befehle aus diversen Menüpunkten, welche der Spieler auswählen kann.
Der Plugin-Ersteller hat hier mit "command." gearbeitet, um die Buttons beim Lesen besser hervorzuheben. Grundlegend kann man sich aber auch hier seine eigene Logik überlegen, da diese Werte auf der Linken Seite lediglich als Verknüpfung von Datenbank-Spalten und JSON-Übersetzung dienen. Je prägnanter diese Namen sind, desto leichter lässt sich damit arbeiten. Deswegen rate ich dazu, diese zu übernehmen und nach denselben Prinzipien neue Verknüpfungen zu erstellen - gerade wenn man das Spiel durch anpassbare Menüs und zusätzliche Funktionen weiter individualisiert.
3. Abschnitt
Informationen aus dem Optionen-Menü, welche nur dort gebündelt vorkommen.
Hier habe ich in der ersten Spalte "Message.language" hinzugefügt, damit im Optionsmenü auch der Menüpunkt für ausgewählte Sprachen in der jeweilig ausgewählten Sprache benannt wird. Darüber hinaus kann man auch hier die gegebene Logik konsequent weiterverfolgen, wenn man durch Plugins ein wesentlich umfassenderes Optionsmenü hat.
3. Im RPG Maker MZ alle gewünschten Texte durch Strings austauschen
Jetzt ist es an der Zeit, in die Datenbank des RPG Maker MZ zu gehen.
Dort "verlinken" wir nun mit
die Textausgabe des Spielprojektes mit den multiplen Möglichkeiten der unterschiedlichen Sprachvarianten. Da nach Auswahl der Sprache die jeweilige "main"-JSON-Datei verwendet wird, reicht der soeben genannte Befehl vollkommen aus, um mehrere Sprachen gleichzeitig zu verwalten.
Da Bilder mehr sagen als Worte - hier ein Beispiel! Man kann sehr gut sehen, wieviel Arbeit noch vor einem liegen wird. Oben rechts lässt sich das Vorgehen am besten lesen/herleiten.
4. Optional: Weitere Überlegungen
Nun haben wir die Grundsteinlegung hinter uns. Doch die tatsächliche Arbeit wird darin bestehen, all die Dialoge des Spiels in die JSONs zu schreiben und diese Strings in Nachrichtenfenster, Auswahlfenster, Item Beschreibungen, etc zu setzen.
Neben diesem Zusatzschritt hat man nun natürlich auch mindestens die doppelte Arbeit, da der Maker keinen automatischen Zeilenumbruch in den Dialogfenstern nutzt und übersetzte Texte ohne sorgfältige Überprüfung abgeschnitten werden können.
Aber eigentlich möchte ich auf etwas anderes hinaus: Wie viele JSON-Dateien pro Sprache machen Sinn?
Wir wissen ja, dass wir derer einige im Plugin einstellen können. In welchen Situationen kann dies sinnvoll sein?
- Beispielsweise kann bei sehr dialoglastigen RPGs eine Aufteilung im Sinne der Kapitel/Akte/etc auf eigene JSON-Dateien sinnvoll sein. So lassen sich Übersetzungen und/oder Korrekturen schneller vornehmen, da man beim Öffnen der Datei sofort in einem Themenbereich steckt.
- Wenn man dies wünscht, kann man auch alle Formen von Gegenständen ("Items", "Ausrüstung", "Wichtige Gegenstände") in einer eigenen JSON-Datei bündeln, um sich im Workflow das viele Scrollen (trotz Einklappen der Elemente) etwas zu reduzieren.
- Ebenso könnte man Bereiche durch eigene JSON-Dateien "ausklammern", welche unter Umständen noch einer starken Überarbeitung unterliegen - wie beispielsweise ein selbst geschriebenes Plugin im WIP-Zustand. Dieses ließe sich bei Bedarf im Nachhinein leicht in eine größere Datei hinüber kopieren, wo man dann mit den Klammern arbeiten kann.
Das war es erst einmal von meiner Seite!
Ich wünsche euch nun viel Spaß beim Übersetzen eurer Spiele und freue mich ebenso über Erfahrungsberichte und Anregungen!
Als Dreingabe hänge ich euch die beschriebene Ordnerstruktur samt beispielhafter JSON-Dateien zur freien Verwendung an, welche bereits ein paar (aber bei Weitem nicht alle) Parameter aus der Datenbank und die Sprachoption im Spiel selbst übersetzen. Das erspart euch etwas Schreibarbeit.