Lokalisierung von Spielen und Anwendungen in Unity. Schnell und einfach

Hallo! In diesem Artikel werde ich meine Erfahrungen mit der Lokalisierung von Spielen und Anwendungen in Unity teilen und über mein Plugin für die einfache Lokalisierung sprechen, das im Asse Store erhältlich ist. Die Artikelebene ist einfach. Es wird überhaupt keinen Code geben, er wird für Sie nicht nützlich sein.



Aus Sicht des allgemeinen Konzepts ist alles einfach. Wir sollten eine Liste von Wörterbüchern für jede Sprache mit denselben Schlüsseln haben, von denen wir lokalisierte Werte erhalten. Von der technischen Seite müssen Sie bestimmen:

  • Was werden unsere Wörterbücher sein?
  • Wo werden sie gelagert?
  • Wie werden wir sie bearbeiten und erweitern?
  • Wie implementiere ich ein Bundle mit der Anwendungsschnittstelle?

Bei der Implementierung habe ich mich von zwei Prinzipien leiten lassen: Einfachheit und Bequemlichkeit. Das einfachste strukturierte Format, das für Wörterbücher geeignet ist, ist CSV (Comma Separated Values). Dies ist eine Textdatei, in der alle Zellen durch ein Trennzeichen getrennt sind - entweder ein Komma (",") oder ein Semikolon (";"), abhängig von den regionalen Einstellungen. CSV kann in jedem Texteditor geöffnet und bearbeitet werden, Excel eignet sich jedoch am besten dafür. CSVs werden natürlich im Ordner Resources gespeichert, damit die Anwendung sie jederzeit lesen kann.

Das Format lautet wie folgt: Die erste Spalte enthält die Schlüssel, alle nachfolgenden Spalten sind Wörterbücher. Die erste Zeile ist der Titel. Sie können eine gemeinsame CSV haben, wenn die Anwendung nur wenige Texte enthält. Sie können sie jedoch nach einem bestimmten Prinzip in mehrere CSVs aufteilen, z. B. Menüs, Einstellungen, Erfolge usw.

Mach weiter. Das Bearbeiten der Lokalisierung in Excel ist natürlich großartig, aber ich empfehle, sie auf Google Sheets hochzuladen. Dann können Sie sie von überall, jederzeit und von jedem Gerät aus bearbeiten. Das Wichtigste ist jedoch, dass die Lokalisierung von den Übersetzern gemeinsam genutzt werden kann und sie keine Schwierigkeiten mit der Übersetzung haben. Sie können das Wörterbuch hier ansehen.


Und der letzte Punkt ist die Integration mit Unity, mit uGUI. Auch hier ist alles einfach - für jede Textkomponente Text fügen wir unsere LocalizedText- Komponente hinzu, in der wir den Schlüssel angeben. Beim Start erhält diese Komponente einen lokalisierten Wert und setzt ihn auf Text .



Dann stellen sich einige Fragen:

  • Wie und wann wird ein Wörterbuch initialisiert? Es reicht aus, LocalizationManager aufzurufen. Lesen Sie das Steuerungsskript. Dies kann in Awake oder Start erfolgen, wenn Sie mit der automatischen Erkennung der Sprache ( Application.systemLanguage ) zufrieden sind, oder nach dem Laden des Profils, wenn die Benutzereinstellungen bereits bekannt sind.
  • Was ist, wenn wir nicht im Voraus genau wissen, welchen Wert die Textkomponente haben wird? Wir fügen die LocalizedText- Komponente nicht hinzu und weisen ihr dann einen Wert aus dem Code zu, um über LocalizationManager.Localize (Zeichenfolge localizationKey) auf das Wörterbuch zuzugreifen.
  • Was kann ich tun, wenn ich einen Parameter in einen lokalisierten Wert einfügen muss? Wir verwenden nur die Formatierung in der lokalisierten Zeichenfolge, z. B. "Level {0}", und führen dann über string.Format die Ersetzung durch. Dafür gibt es eine Überladung von LocalizationManager.Localize (String localizationKey, params object [] args) .
  • Wie ändere ich die Lokalisierung zur Laufzeit? Ändern Sie einfach die Sprache über LocalizationManager.Language. Dies löst ein Ereignis aus, das alle LocalizedText- Komponenten abonniert haben. Aus Code lokalisierte Textkomponenten (die keine LocalizedText- Komponente haben) müssen jedoch manuell aktualisiert werden.
  • Was tun mit anderen Elementen, z. B. mit der Dropdown- Dropdown-Liste? Verwenden Sie natürlich die Komponente LocalizedDropdown =)

Nun, das letzte Brötchen in meinem Asset - er kann automatisch alle Blätter von Google Sheets herunterladen und sie in den Ressourcen des Spiels speichern. Hierfür gibt es eine LocalizationSync- Komponente mit einer Sync- Schaltfläche (im Inspektor).

Sie können es im Asset Store herunterladen: Einfache Lokalisierung .

Source: https://habr.com/ru/post/de417675/


All Articles