2013-01-02 3 views
0

토큰을 the Sencha's official example에 표시했습니다. 이제는 번역을 응용 프로그램에 적용하고 싶습니다. 위의 예제에서 두 파일과 .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의 전원을 켜고 이유 : 이제 응용 프로그램의 실행 기능이 시작 렌더링 프로세스 전에 호출 될 것입니다! 이 개발 및 생산 모드 (앱 all.js 엉)에 ​​나를 위해 일한 전에 내가 말한 것처럼 app.js의 출시 기능에
  2. 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