2014-02-26 80 views
0

我试图在识别移动电话的区域设置时将我的应用中的某些标题和字符串设置为不同的语言。使用navigator在config中设置全局变量全球化

我正在使用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'); 
        } 
       ); 

      } 
     } 
    } 
}); 

回答

0

不是有类构造函数里面的“deviceready”事件处理程序,你应该有你的app.js文件。

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