Pregunta

Estoy construyendo una versión webworks de una aplicación Android que se localiza en 39 idiomas.

Por el momento, todas las localizaciones están en archivos XML de pares de valores clave, un archivo por idioma. Cada archivo de idioma tiene alrededor de 400 líneas (aproximadamente 40k por archivo).

Los usuarios pueden cambiar el idioma utilizado en la aplicación.

¿Qué opciones hay en WebWorks para resolver este tipo de situación?

Estaría más que feliz de convertir los archivos de recursos en cualquier otro tipo de formato para que trabajar con él sea una mejor experiencia en la plataforma.

¿Fue útil?

Solución

Puede almacenar cada idioma establecido en un archivo JavaScript que incluya/cargue según sea necesario. (He convertido los datos XML en un "mapa" ya que es solo pares de clave/valor)

por ejemplo (solo pasar por alto Mis traducciones ... solo busqué en Google, de ninguna manera soy fluido en español)

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

En tus <head> Luego puede tener una etiqueta de secuencia de comandos genérica, que simplemente cambie la fuente de según sea necesario.

p.ej

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

Cuando desee un idioma diferente, simplemente elimine este script del DOM y agregue su nuevo. p.ej

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

La alternativa sería cargar los 39 idiomas de forma predeterminada ... pero parece que exagerar, teniendo en cuenta que la mayoría solo querrá 1 o 2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top