Ответ 1
Я закончил плагин локализации языка. Это не удивительно, но он работал лучше, чем я предполагал. Ниже приведены короткие ответы на каждый из вопросов.
1- Есть ли более простой способ реализовать локализацию языка с помощью моего установка?
Не то, что я знаю. Комментарий Стюарта предоставил эту ссылку локализация Сенча. Использовать хранилище или глобальный объект JSON?, в котором есть некоторая хорошая информация о том, как вы можете использовать переопределения класса. Мне не понравился этот подход, потому что он распространял мои языковые переводы на разные классы. Но, конечно, если вы делаете что-то простое или хотите что-то более мощное, возможно, вам следует это расследовать.
2 Будет ли я сталкиваться с проблемами с родным материалом sencha (например, datepickers)?
В конце концов я окончательно оставил "datepickers" на английском языке. Но все остальное было относительно легко настроить. Почти каждый графический элемент пользовательского интерфейса может изменить текст.
3- При загрузке/перезагрузке языковых json файлов у меня будет производительность проблемы (требуется перезагрузка webview, вопросы изменения размера объекта sencha, и т.д.).
Метод, который я использовал (см. ниже), работал исключительно хорошо в отношении производительности. Единственная проблема, которая у вас есть, правильная, когда вы переключаете языки, вам нужна эта страница для перезагрузки. Сенча обрабатывал изменения размеров без каких-либо недостатков, кроме случаев, когда я был глупым и статически установленным.
Некоторые из того, что я сделал, были описаны в редактировании вопроса. Вот подробный обзор моего решения. (предупреждение, это не самое изящное решение.)
Вместо использования чистого файла JSON я закончил использование функции javascript. Это не самое лучшее решение, потому что оно требует некоторого минимального обслуживания, но JSON-анализ с помощью phonegap/sencha не самый лучший. (Я получаю файлы JSON из транслитера и быстро вставляю в файл javascript. Занимает около 2 минут, см. Дальнейшие объяснения ниже).
Language.js
function setLanguage(language)
{
if(language == "en")
{
//console.log("inside if Language == en");
GlobalLanguage.CurrentLanguage = language;
GlobalLanguage.ID = {"glossary": [
{
//CONVERTED JSON
about : 'About',
checking_for_updates : 'Checking for updates...(This may take a few minutes.)'
//Any additional translations
}
]};
}
if (language == "es"){
//console.log("inside language == es");
GlobalLanguage.CurrentLanguage = language;
GlobalLanguage.ID = {"glossary": [
{
//CONVERTED JSON
about : 'Acerca de ',
checking_for_updates : 'Verificando actualizaciones... (Capas que demore algunos minutos).'
//Any additional translations
}]};
}
if (language == "pt"){
//console.log("inside language == pt");
GlobalLanguage.CurrentLanguage = language;
GlobalLanguage.ID = {"glossary": [
{
//CONVERTED JSON
about : 'Sobre',
checking_for_updates : 'Verificando se há atualizações... (pode demorar alguns minutos.)'
//Any additional translations
}]};
}
}
Как вы можете видеть, этот файл позволяет использовать 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];
}
}
Это защитит вас от языковых исключений и сбоя вашей программы, не зная, где (у вас могут быть сотни или тысячи свойств, заданных в файле language.js). Теперь просто:
langSay("about")
Еще одно примечание о форматировании из JSON. Формат, в котором вы хотите, чтобы ваши языковые файлы были:
languageIdentifier : 'Translation',
languageIdentifier : 'Translation',
languageIdentifier : 'Translation'
Я использовал Excel для форматирования. Кроме того, языковые идентификаторы являются уникальными идентификаторами без пробелов. Я рекомендую просто использовать Excel для форматирования первых 3 - 4 слов word1_word2_word3_word4 английского перевода.
word1_word2_word3 : 'word1 word2 word3'
Надеюсь, это поможет вам! Я был бы рад ответить на любые вопросы.