Сенча-тач локализация.Использовать магазин или глобальный объект JSON? - PullRequest
2 голосов
/ 22 ноября 2011

Я пишу приложение в Sencha-Touch 1.1 и хочу добавить локализацию в строки.

Я думал (но не реализовал) о двух способах.

  1. Создание отдельных файлов JSON для каждого языка (en-US.json, el-GR.json и т. Д.) И использование proxy и store для загрузки данных, каждый раз меняя URL прокси (назначение файла json).Проблема в том, что я не знаю, как извлечь данные из магазина впоследствии.

  2. Создайте глобальный объект JSON, который я затем раздуваю (анализирую файл json и превращаю его в объект).Проблема здесь в том, что я не могу найти способ для анализа файла JSON без использования комбо ридер / прокси.

Есть ли оптимальное решение для локализации строк в sencha-touch?

1 Ответ

1 голос
/ 22 ноября 2011

Общий подход заключается в извлечении всех ваших строк в свойства уровня класса и наличии отдельных файлов локали, которые переопределяют эти классы и их свойства строки.

Например, если бы у меня была такая панель:

MyApp.MyPanel = Ext.extend(Ext.Panel, {

    myPanelContent: 'This is your text to be translated...',

    initComponent: function(){

        Ext.apply(this, {
            html: this.myPanelContent
        });

         MyApp.MyPanel.superclass.initComponent.call(this)
    }

});

И тогда у вас будет файл локали в соответствии с:

Ext.override(MyApp.MyPanel, {

    myPanelContent: 'This is a translation of my text to another language'

});

Затем вы можете либо загрузить правильный файл локали при загрузке приложения (после загрузки самих представлений), либо динамически загрузить файлы локали во время выполнения (для этого потребуется логика для обновления каждого из представлений текущим значением) .

Надеюсь, это имеет смысл, дай мне крик, если это не так!

Stuart

...