Domanda

Sto costruendo una versione WebWorks di un'applicazione Android che è localizzata in 39 lingue.

Al momento tutte le localizzazioni sono in file XML di coppie chiave-valore, un file per ogni lingua. Ogni file di lingua ha circa 400 linee (circa 40k per file).

Gli utenti possono modificare la lingua usata in app.

Quali possibilità ci sono in WebWorks per risolvere questo tipo di situazione?

sarei più che felice di convertire i file di risorse in qualsiasi altro tipo di formato per rendere il lavoro con esso una migliore esperienza sulla piattaforma.

È stato utile?

Soluzione

Si potrebbe memorizzare ogni set lingua in un file JavaScript che si include il carico / a seconda delle necessità. (Ho convertito i dati XML per una "mappa" in quanto si tratta solo di coppie di valori / chiave)

es. (Solo Ignora le mie traduzioni ... Ho appena Googled questo, io sono in alcun modo fluente in spagnolo)

//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"
};

Nel vostro <head> si può quindi avere un tag script generica, che basta cambiare la fonte di secondo necessità.

per es.

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

Quando si desidera una lingua diversa, è sufficiente rimuovere questo script dal DOM e aggiungere quello nuovo. per es.

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');

L'alternativa sarebbe quella di caricare tutte le 39 lingue di default ... ma che sembra eccessivo considerando la maggior parte sarà sempre e solo vogliono 1 o 2.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top