Ich bin kein Experte, aber hier sind einige grundlegende Dinge:
Stellen Sie sicher, dass Ihre Zeichenfolgen mehr als nur ASCII verarbeiten können
Sie benötigen einige Sonderzeichen, die nicht in ASCII passen, und Ihre Zeichenfolgenklasse sollte besser nicht mit diesen Zeichen versehen werden. UTF-8 ist eine gängige Codierung, da sie platzsparend ist. Was auch immer Sie tun, testen Sie frühzeitig und bügeln Sie die Knicke aus.
Es ist eine wirklich gute Idee, eine echte Saitenklasse zu verwenden und nicht nur char *
überall oder in einer Welt voller Schmerzen.
Vergiss deine Schriften nicht. Stellen Sie sicher, dass alle verwendeten Schriftarten die von Ihnen benötigten Zeichen enthalten.
Zieh deine Fäden aus dem Code
Dies ist das wichtigste. Stellen Sie sicher, dass alle Ihre Textzeichenfolgen außerhalb des Codes in einer Datendatei gespeichert sind, die Sie auslagern können. Eine Pipeline dafür einzurichten, kann eine lästige Aufgabe sein, spart Ihnen aber später eine Menge Zeit. Sie benötigen eine einfache API, damit Sie jedes Mal, wenn Sie eine Zeichenfolge im Code benötigen, so einfach wie folgt vorgehen können:
String text = Locale::getString("some unique identifier");
Verketten oder erstellen Sie keine Zeichenfolgen im Code
Es ist wichtig, keine Annahmen darüber zu treffen, wie ein Text aus kleineren Wörtern aufgebaut ist. Sogar etwas so harmloses wie:
String currency = Locale::getCurrencyString() + money.toString();
// creates $123
ist ein Problem, da andere Sprachen das Währungszeichen möglicherweise nach der Zahl platzieren. Verwenden Sie stattdessen Formatzeichenfolgen, die selbst wie folgt lokalisiert sind:
String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());
Auf diese Weise können Lokalisierer Wörter innerhalb der Formatzeichenfolge neu anordnen.
Minimieren Sie die Textmenge, die in der Grafik angezeigt wird, insbesondere in Videos
Das Forken von Kunstgegenständen ist mühsam. Bei einigen UI-Elementen müssen Sie dies wahrscheinlich zumindest ein wenig tun, aber es ist mühsam. Forking FMV ist ein großer Schmerz, weil Sie jetzt doppelte Kopien Ihres FMV rendern und speichern müssen.
Testen Sie in verschiedenen Sprachen gründlich
In den meisten Codebasen ist es allzu einfach zu sagen printf("Hi there");
oder zu loadTexture("someTexture");
vergessen, dass diese Ihre Lokalisierungs-API durchlaufen müssen. Jemand wird es vergessen und Sie werden am Ende etwas finden, das in Ihrer Primärsprache korrekt ist, in anderen jedoch falsch. Die einzige Möglichkeit, diese zu finden, besteht darin, Ihre Tester in nicht-primären Sprachen testen zu lassen.
Stellen Sie fehlenden lokalisierten Text klar
In der Regel übersetzen Sie Ihren Text spät im Zyklus, sodass für einige Sprachen meistens nur keine Daten vorliegen. Das ist in Ordnung, weil Sie so Ihre Inhalte durchlaufen können, ohne sie ständig neu übersetzen zu müssen. Der Nachteil ist, dass es leicht für Sie ist, Dinge zu verpassen und zu vergessen, einige Dinge zu übersetzen.
Eine billige Sache, die Sie tun können, ist, den fehlenden Text ganz offensichtlich erscheinen zu lassen wie "!!! ÜBERSETZUNG FÜR ID #blah blah !!!" im Spiel, wenn es fehlt.
Gestalten Sie Ihre Benutzeroberfläche nach der Worst-Case-Methode
Verschiedene Sprachen haben in der Regel längere oder kürzere Wörter. Eine Benutzeroberfläche, die auf Englisch schön aussieht, enthält möglicherweise Text, der über die Grenzen hinausläuft, beschnitten wird oder in einer längeren Sprache falsch umbrochen wird. Sie müssen Änderungen an der Benutzeroberfläche vornehmen, um die Sprache für den schlimmsten Fall zu berücksichtigen (oder die Benutzeroberfläche aufteilen, aber das ist wahrscheinlich nicht das, was Sie tun möchten.)
Ärgerlicherweise ist Englisch oft die kürzeste Sprache der normalerweise lokalisierten Sprachen, sodass Ihre Designer wahrscheinlich versehentlich für den besten Fall entwerfen. Lassen Sie sie beim Entwerfen besonders langen Text für ihre Platzhalter verwenden. Angenommen, ein Textabschnitt kann etwa 30% länger sein als auf Englisch. Google Translate kann hilfreich sein, um einen ungefähren Text für den Platzhalter zu erhalten.
Budget Zeit für die Übersetzung
Das Übersetzen von Texten erfolgt normalerweise zu spät, wenn das Team müde ist und sich nicht wirklich darum kümmert. Dennoch werden Sie eine Menge Fehler bekommen, wenn es passiert. Wörter überschreiten Grenzen, Übersetzer machen Fehler usw. Um die Sache noch schlimmer zu machen, kann die Bearbeitungszeit für das Wiederholen von Texten lang sein, wenn Sie Text an Personen in Übersee senden und auf deren Änderungen warten müssen. Planen Sie Zeit für diese Arbeit ein.