0

我一直在尝试为我的 sencha touch 2.2.x 应用程序实现集成。我的问题不完全是创建包含所有键/值对的 js 或 json 文件。我的问题是实际检测语言环境并采取相应措施。

我使用navigator.globalization.getLocaleName()的是 Cordova 提供的,并且我在 app.js 的启动函数中初始化了一个全局变量“appLocale”。但是,当定义像下面我的 Main.js 之类的类时,值 {title: ' '} 在我可以从 Cordova API 获取语言环境之前设置。

我是否有另一种方法来获取语言环境或可能是另一个放置该getLocaleName()方法的地方?

这是我的 Main.js 文件

Ext.define('MyApp.view.Main', {
    extend: 'Ext.tab.Panel',
    xtype: 'main',

    config: {
            tabBarPosition: 'bottom',
            items: {
                title: 'Get Started',
                iconCls: 'action',

                items: [
                    {
                        docked: 'top',
                        xtype: 'titlebar',
                        title: 'i18n.getTranslation('hello', appLocale)'
                    }]
            }
     }
});

这是我的 app.js 文件:

Ext.application({
    name: 'MyApp',

    requires: [
        'MyApp.util.i18n'
    ],

    views: [
        'Main'
    ],

    launch: function() {

        navigator.globalization.getLocaleName(
             function (locale) {appLocale = locale.value},
             function () {alert('Error getting locale\n');}
        );            

        Ext.Viewport.add(Ext.create('MyApp.view.Main'));    
    }
});

window.navigator.language即使我更改了语言环境,PS也总是在 Android 模拟器中返回“en”。我认为这仅适用于浏览器。

4

1 回答 1

0

挂钩 initComponent() 方法 - 您可以在其中使用以下内容:

//...

initComponent : function() {
    Ext.apply(this, {
        title: 'i18n.getTranslation('hello', appLocale)'
    });

    this.callParent();
},
//...

这样,在对象初始化期间设置任何本地化文本,而不是类定义

于 2013-09-23T14:21:33.290 回答