使用navigator.globalization在config中设置全局变量

时间:2014-02-26 14:35:58

标签: extjs sencha-touch

我正在尝试在识别手机中的区域设置时将我的应用中的某些标题和字符串设置为其他语言。

我正在使用App.utils.Global类来设置像这里的代码一样的东西。这似乎不起作用,我的默认名称保持不变。当我更改它后打印配置值时,它实际上已加载更改的名称。在全球化插件实际完成更改之前,我是否在输出中输出名称?

如何在设备上设置正确的全局变量localeName之前,如何阻止应用程序的其余部分执行?还是有另一种方法吗?我知道可能有更好的方法在Sencha中进行本地化,但因为我只有几个字符串,这似乎是最简单的解决方案。

提前致谢

Ext.define('App.utils.Global', {
    singleton: true,
    alias: 'widget.global',
    config: 
    {
        namelabel: 'default name',
    },

    constructor: function(config) {

        this.initConfig(config);
        that = this;

        if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/)) {

            document.addEventListener("deviceready", onDeviceReady, false);
            function onDeviceReady() {

                navigator.globalization.getLocaleName(
                    function (locale) {

                        if(locale.value == 'en_US'){
                            that.setNamelabel('ENGLISH NAME');
                        }

                        else if(locale.value == 'nl_NL'){
                            that.setNamelabel('DUTCH NAME');
                        }

                    },
                    function () {
                        alert('Error getting locale\n');
                    }
                );

            }
        }
    }
});

1 个答案:

答案 0 :(得分:0)

您不应该在类构造函数中使用“deviceready”事件处理程序,而应该在 app.js 文件中使用它。

然后,在“deviceready”事件处理程序中,运行Ext.Application()方法以启动应用程序构建。