Я закончил этот плагин языковой локализации.Это не удивительно, но это сработало лучше, чем я изначально предполагал.Вот краткие ответы на каждый из вопросов.
1 - Есть ли более простой способ локализации языка с моей настройкой?
Не то, чтобы я знализ.Комментарий Стюарта предоставил эту ссылку Sencha-touch локализация.Использовать хранилище или глобальный объект JSON? , в котором содержится некоторая полезная информация об одном способе использования переопределений классов.Мне не понравился этот подход, потому что он распространял мои языковые переводы на разные классы.Но, разумеется, если вы делаете что-то простое или хотите что-то более мощное, возможно, вам следует это изучить.
2- Буду ли я сталкиваться с проблемами с нативными вещами сенчи (например, с датчиками)?
В итоге я специально оставил "DatePickers" на английском языке.Но все остальное было действительно относительно легко настроить.Почти каждый графический элемент пользовательского интерфейса может иметь измененный текст.
3- При загрузке / перезагрузке языковых файлов json у меня будут проблемы с производительностью (потребуется перезагрузка веб-просмотра ?, проблемы с изменением размера объекта sencha и т. Д.).
Метод, который я использовал (см. Ниже), работал исключительно хорошо в отношении производительности.Единственная проблема, с которой вы столкнулись, связана с тем, что при переключении языков вам нужно перезагрузить эту конкретную страницу.Сенча справился с изменением размера без каких-либо недостатков, за исключением случаев, когда я был глуп и статически устанавливал размеры.
Часть того, что я сделал, было описано в правках вопроса.Вот подробный обзор моего решения.(предупреждение, это не самое элегантное решение.)
Вместо того, чтобы использовать чистый файл JSON, я просто использовал функцию javascript.Это не самое лучшее решение, потому что оно требует минимального обслуживания, но разбор JSON с phonegap / sencha не самый лучший.(Я получаю JSON-файлы от переводчика и быстро вставляю в файл javascript. Занимает около 2 минут, см. Дальнейшие пояснения ниже).Этот файл позволяет использовать 3 языка (португальский, английский и испанский).После установки языка вы можете получить доступ к каждой локализованной строке в любом месте вашего объекта.Например, если вам нужно получить доступ к слову «about», просто используйте:
GlobalLanguage.ID.glossary[0]["about"]
. Это позволит получить доступ к объекту GlobalLanguage, в котором язык будет загружен в свойства.Таким образом, на протяжении всего вашего проекта вы могли бы иметь эти звонки.Тем не менее, я бы рекомендовал сделать еще один шаг вперед
function langSay(languageIdentifier){
// console.log("inside langSay");
if(!GlobalLanguage.ID.glossary[0][languageIdentifier]){
return "[! LANGUAGE EXCEPTION !]";
}
else{
return GlobalLanguage.ID.glossary[0][languageIdentifier];
}
}
Это защитит вас от языковых исключений и сбоя программы, не зная где (у вас могут быть сотни или тысячи свойств, заданных на этом языке.JS файл).Теперь просто:
langSay("about")
Еще одно примечание о форматировании из JSON.Формат, в котором вы хотите, чтобы ваши языковые файлы были:
languageIdentifier : 'Translation',
languageIdentifier : 'Translation',
languageIdentifier : 'Translation'
Я использовал Excel для форматирования.Также languageIdentifiers - это уникальные идентификаторы без пробелов.Я рекомендую использовать Excel для форматирования первых 3-4 слов word1_word2_word3_word4 в переводе на английский.
word1_word2_word3 : 'word1 word2 word3'
Надеюсь, это поможет вам!Буду рад ответить на любые вопросы