2011-10-27 5 views
0

현지화에 대한 안내는 http://docs.sencha.com/ext-js/4-0/#!/guide/localization에 가깝지만 MVC 패턴으로 작동하지는 않습니다. 이전 예제처럼 동적 지역화가 필요하지 않습니다. 응용 프로그램이로드 될 때 설정하기를 원합니다. ExtJS 4.0 : 현지화 관련 문제

나는 다음과 같은 시도 : 불을 지르고에서

Ext.application({ 
name: 'KS', 

appFolder: 'app', 

controllers: ['Menu', 'DailyReport', 'DP'], 

launch: function() { 
    Ext.Ajax.request({ 
     url: 'lib/ext-4.0/locale/ext-lang-es.js', 
     success: function(response, opts) { 
      eval(response.responseText); 
     }, 
     failure: function() { 
      Ext.Msg.alert('Error', 'Error al cargar archivos de idioma.'); 
     } 
    }); 
    Ext.create('Ext.container.Viewport', { 
     items: [{ 
      xtype: 'menu' 
     }, 
     { 
      xtype: 'dpedit' 
     }] 
    }); 

} 
}); 

내가 얻을 : 오류 "Ext.view가 정의되어 있지 않습니다"아무것도 렌더링하지 않습니다. Viewport를 생성 한 후 Ajax 호출을 시도하면 오류가 발생하지 않지만 번역은 적용되지 않습니다.

답변

0

응용 프로그램을 시작하기 전에 모든 확장 자바 스크립트 파일을로드 할 때 프로덕션 모드로 작동합니다. 나는이 문제도 가지고 있었다. 테스트를 위해 이것을 시도하십시오. 'ext-all.js'파일을 가져온 다음 해당 언어 파일을 가져옵니다. 이것은 효과가있다. 최고의 솔루션은 아니지만 내가 찾은 유일한 솔루션입니다.

문제의 원인 : 당신이 당신의 번역 파일을 열 경우이 같은 지시를 알 수

:

Ext.view.View.prototype.emptyText = ""; 

파일 'Ext.view.View.js이'로드하지 않은 경우 'Ext.view.View'클래스가 없기 때문에 번역 파일을로드하는 순간 오류가 발생합니다.

더 나은 솔루션을 제공하는 데 도움이되기를 바랍니다.

+0

작동하지만 가장 세련된 해결책은 아닙니다. – Milan

1

더 멋진 해결책은 시작 메소드가 실행되기 전에 자동 로더가 클래스를로드하게하는 것입니다. 당신은 필요에 따라이에 의해 Ext.view.View을 정의 할 수 있습니다 자세한 내용은

Ext.application({ 
    name: 'KS', 

    appFolder: 'app', 

    controllers: ['Menu', 'DailyReport', 'DP'], 

    // This will make shure the class is loaded before your application runs: 
    requires : ['Ext.view.View'], 

    launch: function() { 
     Ext.Ajax.request({ 
      url: 'lib/ext-4.0/locale/ext-lang-es.js', 
      success: function(response, opts) { 
       eval(response.responseText); 
      }, 
      failure: function() { 
       Ext.Msg.alert('Error', 'Error al cargar archivos de idioma.'); 
      } 
     }); 
     Ext.create('Ext.container.Viewport', { 
      items: [{ 
       xtype: 'menu' 
      }, 
      { 
       xtype: 'dpedit' 
      }] 
     }); 
    } 
}); 

내가 아주 쉽게 해결에 extjs

+0

지역화가 그리드, 양식 필드, 피커 등 다른 모든 구성 요소를 하나씩 요구할 때 작동하지 않습니다. – Milan

0

api를 참조하십시오. 그것은 간단하고 훨씬 더 잘 작동합니다. ext.js/ext-all.js 다음 app.js. 앞에 문서 머리 부분에 넣으십시오. 나는 레일 3.1 작동하도록/자산을 사용하고

var params = Ext.urlDecode(window.location.search.substring(1)); 
if (params.lang) { 
    var url = Ext.util.Format.format('/assets/extjs/locale/ext-lang-{0}.js', params.lang); 
    document.write("<script src='" + url + "'><\/script>"); 
} 

(I은 현지화 가이드 당 language.js의 하단에 넣어).

이렇게하면 검색어 매개 변수에? lang = fr이 나타나기 때문에 나머지 앱은 가이드에 따라 작동해야합니다.

http://docs.sencha.com/ext-js/4-0/#!/guide/localization