Frage

Ich erstelle eine Webworks -Version einer Android -App, die in 39 Sprachen lokalisiert ist.

Derzeit befinden sich alle Lokalisierungen in XML-Dateien von Schlüsselwertpaaren, einer Datei pro Sprache. Jede Sprachdatei enthält ungefähr 400 Zeilen (ungefähr 40.000 pro Datei).

Benutzer können die in App verwendete Sprache ändern.

Welche Optionen gibt es in Webworks, um diese Art von Situation zu lösen?

Ich würde gerne die Ressourcendateien in eine andere Art von Format umwandeln, um mit ihr zu einer besseren Erfahrung auf der Plattform zu machen.

War es hilfreich?

Lösung

Sie können jede Sprache in einer JavaScript -Datei speichern, die Sie bei Bedarf einschließen/laden. (Ich habe die XML -Daten in eine "Karte" konvertiert, da es sich nur um Schlüssel-/Wertpaare handelt.)

zB (gerecht ignorieren Meine Übersetzungen ... Ich habe das einfach gegoogelt, ich bin keineswegs fließend Spanisch)

//Spanish File "lang_spanish.js"
var translations = {
  "lose_a_turn":     "pierde un turno",
  "do_not_pass_go":  "huele como un camello",
  "take_a_card":     "tener una tarjeta de",
  "you_win_the_game":"sin motocicletas en la biblioteca",
  "you_can_not_move":"desbordamiento de la pila puede ser un lugar divertido"
};

In deiner <head> Sie können dann ein generisches Skript -Tag haben, das Sie bei Bedarf nur die Quelle von ändern.

z.B

<script id="langFile" src="js/lang_english.js"></script>

Wenn Sie eine andere Sprache wünschen, entfernen Sie dieses Skript einfach aus dem DOM und fügen Sie Ihre neue hinzu. z.B

function switchLang(langName){
    var headTag = document.getElementsByTagName('head')[0];
    var scriptFile = document.getElementById('langFile');
    headTag.removeChild(scriptFile);
    var newScript = document.createElement('script');
      newScript.id = 'langFile';
      newScript.src = 'js/lang_' + langName + '.js';
    headTag.appendChild(newScript);
}
//call with:
switchLang('spanish');

Die Alternative wäre, alle 39 Sprachen standardmäßig zu laden ... aber das scheint, als ob die meisten immer nur 1 oder 2 wollen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top