Какие варианты локализации существуют в WebWorks?

StackOverflow https://stackoverflow.com/questions/8300264

  •  22-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

Вы можете сохранить каждый набор языков в файле 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 и добавьте новый.например

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top