Какие есть варианты локализации в WebWorks? - PullRequest
0 голосов
/ 28 ноября 2011

Я создаю версию приложения Android для WebWorks, локализованную на 39 языков.

В настоящее время все локализации находятся в XML-файлах пар ключ-значение, по одному на каждый язык.Каждый языковой файл содержит около 400 строк (примерно 40 тыс. На файл).

Пользователи могут изменять язык, используемый в приложении.

Какие варианты есть в WebWorks для решения такой ситуации?

Я был бы более чем рад преобразовать файлы ресурсов в любой другой формат, чтобы сделать работу с ним более удобной на платформе.

1 Ответ

1 голос
/ 15 декабря 2011

Вы можете хранить каждый языковой набор в файле JavaScript, который вы включаете / загружаете по мере необходимости. (Я преобразовал данные XML в «карту», ​​так как это просто пары ключ / значение)

например. (просто игнорировать мои переводы ... Я только что прогуглил это, я ни в коем случае не говорю по-испански)

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

В вашем <head> вы можете иметь универсальный тег сценария, который вы просто меняете при необходимости.

, например

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

Если вам нужен другой язык, просто удалите этот скрипт из DOM и добавьте новый. например, * 1 016 *

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

Альтернативой может быть загрузка всех 39 языков по умолчанию ... но это кажется излишним, если учесть, что большинство из них когда-либо захотят только 1 или 2.

...