2011-11-22 54 views
2

我正在Sencha-Touch 1.1中撰寫應用程序,我想將本地化添加到字符串。Sencha-touch本地化。使用商店還是全局JSON對象?

我以爲有兩種方式(但沒有實現)。

  1. 爲每種語言創建單獨的JSON文件(EN-US.json,EL-GR.json 等)和使用代理加載數據,每個 時間變化代理網址(json文件目的地)。問題是我不知道如何從商店中提取數據。

  2. 創建一個全局JSON對象,然後我膨脹(解析json文件 並將其轉換爲對象)。這裏的問題是我似乎無法找到解析JSON文件而不使用讀寫器/代理組合的方法。

是否有任何優化的解決方案用於本地化sencha-touch中的字符串?

回答

1

一種常用的方法是將所有字符串提取到類級屬性中,並具有單獨的區域設置文件,這些文件將覆蓋這些類及其字符串屬性。

舉例來說,如果我有這樣的面板:

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

+0

你能否解釋一下更多兩種加載正確語言環境的方法?如果我將它添加到我的index.html,語言環境會自動更改.. –

+0

是的,如果您將它添加到您的index.html,這意味着包含的語言環境是您的默認設置。您加載一個新的標籤,動態創建一個新的