2014-02-26 109 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()方法來啓動應用程序構造。