2013-05-29 5 views
0

IDEA:
Наличие JSON-файла на одном языке для моего приложения. Загрузите нужную в зависимости от настроек, установленных пользователем.JSON файл для многоязычного языка

Как это работает? Мое приложение загрузило бы каждый JSON-файл при запуске или загрузило бы «string» в «string» в соответствии с запросом на показ? Будет ли он слишком тяжелым, будет ли он медленнее, чем иметь модель для каждого языка, имеющую поля для каждой отображаемой строки?

Я планирую иметь 3 langs в своем приложении.

спасибо

ответ

1

Если вы используете файлы в формате 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-объект, такой как выше, будет достаточным.

+0

У вас есть образец файла lang.js, который я мог бы прочитать, чтобы понять структуру? что ему нужно? или небольшой, но полный пример из вас? Я попытаюсь понять вашу динамическую функцию загрузки, не вполне уверенную в этом? Что происходит? (Я не делал много JS, я ограничивался простыми вещами на одной странице). – Fawar

+0

Lang файл прост. Проверьте эту ссылку: http://jsfiddle.net/9wgkh/. Я включил содержимое файла En.js из одного из моих проектов. И файл динамической загрузки загружает соответствующий языковой файл (например, En.js или Fr.js), как только пользователь выбирает параметр. Вам просто нужно передать URL-адрес файла, и эта функция создает и добавляет ссылку SCRIPT в HEAD DOM. – Swar

+0

Работал как шарм, спасибо! – Fawar

Смежные вопросы