Если вы используете файлы в формате JSON для языка, вы должны загрузить его с помощью Ajax и присвоить данные переменной (например «Lang») для доступа к свойствам. Теперь это будет проблематично, если вы используете значения Lang в вашей конфигурации Views или Controllers, потому что эти файлы могут загружаться, пока вызов Ajax все еще выполняется. Как и в следующем случае:
Ext.define('SomeView', {
config : {
....
html : Lang.someview.displatHtml, // This will give "Lang is undefined" error
....
}
});
Итак, я советую вам использовать для этого отдельные JS-файлы. Я в основном использовать папку языков внутри каталога приложений и включает в себя все En.js, Fr.js и т.д., и объект языка выглядит просто, как это:
var LANG = {
loading : 'Loading...'
}
Вы можете использовать простую функцию, как показано ниже, чтобы загрузить этот язык файл динамически (до того, как приложение загрузит файл app.js
). Если вам не нужно изменять его динамически, просто добавьте скрипт в начало вашего index.html.
// Load JS file dynamically
function loadJS(url){
if(!url){ return; }
var head= document.getElementsByTagName('head')[0],
script= document.createElement('script');
script.type= 'text/javascript';
script.src= url;
head.appendChild(script);
}
Для этого нет смысла использовать модель Sencha. Если вы используете модель, вам нужно добавить поле каждый раз, когда вы добавляете новое языковое свойство. Простой json-объект, такой как выше, будет достаточным.
У вас есть образец файла lang.js, который я мог бы прочитать, чтобы понять структуру? что ему нужно? или небольшой, но полный пример из вас? Я попытаюсь понять вашу динамическую функцию загрузки, не вполне уверенную в этом? Что происходит? (Я не делал много JS, я ограничивался простыми вещами на одной странице). – Fawar
Lang файл прост. Проверьте эту ссылку: http://jsfiddle.net/9wgkh/. Я включил содержимое файла En.js из одного из моих проектов. И файл динамической загрузки загружает соответствующий языковой файл (например, En.js или Fr.js), как только пользователь выбирает параметр. Вам просто нужно передать URL-адрес файла, и эта функция создает и добавляет ссылку SCRIPT в HEAD DOM. – Swar
Работал как шарм, спасибо! – Fawar