2013-01-02 94 views
0

我有令牌一看the Sencha's official example,現在我想將翻譯應用到我的應用程序。在這個例子中,我跟着兩個files.js和file.html在同一個目錄中,但是我的應用程序遵循MVC體系結構,因此它有所不同。我有一個包含單詞翻譯一個js文件:extjs和翻譯

if (Ext.app.ContactForm) { 
Ext.apply(Ext.app.ContactForm.prototype, { 
    formTitle: 'Contact Informatie (Dutch)', 
    firstName: 'Nom', 
    lastName: 'Prénom' 
}); 
} 

而且我的應用程序只包含一個file.html「app.html」,所以我不知道放在哪裏file.js,在同app.html的目錄或在視圖文件夾!以及它如何能夠被所有的應用程序讀取。

回答

1

一種方法是,在index.html中包含一個包含所有覆蓋項的文件!就像你會用官方語言環境文件(ext/locale)一樣。

<script type="text/javascript" src="ext-4/locale/ext-lang-de.js"> </script> 

只要你不建立應用程序,這個工作。

有一天或其他你想建立你的應用程序,所以我建議一種不同的方式!

問題:我發現,如果我正在構建我的應用程序(使用sencha工具 - > app-all.js),本地化在第一次加載應用程序時不起作用。原因是,覆蓋在元素的渲染過程之後應用。

創建一個名爲例如myOverrides.js

Ext.define('MyApp.myOverrides', {  

statics: { 
    doOverride: function() { 

     Ext.apply(Ext.app.ContactForm.prototype, { 
      formTitle: 'Contact Informatie (Dutch)', 
      firstName: 'Nom', 
      lastName: 'Prénom' 
     }); 
} 
}); 

爲了得到它我做了如下修改app.js並在index.html刪除它初始化之前應用。

  1. autoCreateViewport之交 原因:現在應用的啓動功能將渲染過程之前被稱爲 開始!
  2. 在app.js的發射功能
  3. 正如我以前說過這樣的研發和生產模式(白衣APP-all.js)工作對我來說做以下

    launch: function() { 
        ... 
        //Injecting the overrides 
        Ext.Loader.injectScriptElement('app/myOverride.js', Ext.emptyFn);   
        MyApp.myOverride.doOverride(); 
        Ext.create("MyApp.view.Viewport"); //We have to create the viewport manually 
    } 
    

+0

你救了我很大的時間。很好的答案! – Jacob