2009-10-29 4 views
7

Dojo에서 상호 도메인 사용자 정의 빌드를 구현하는 데 문제점이 있습니다. 다음과 같이 상황은 다음과 같습니다 내가 너무 basicly 디렉토리 구조는
핵심 \ (내 모듈)

\ \
FR \
NLS처럼, 현지화 번들의 좋은 번호, 꽤 많은 응용 프로그램이 ....
내 모듈을 빌드 할 때 결과는 큰 core.js/core.xd.js 파일입니다.이 파일에는 지역화가 포함되어 있지 않습니다. 현지화 nls 디렉토리 (en/fr/etc)에서 각 번들을 빌드/축소 한 후 빌드하고 각 언어에 대해 더 큰 파일 인 core_fr.js/core_en.fs (Dojo/Dijit 관련 문자열 만 포함)를 찾습니다.NLS/현지화를 사용하여 Dojo 사용자 빌드

는 나의 빌드 스크립트는

availableFlatLocales is undefined 
[Break on this error] var locales = availableFlatLocales.split(",");\r\n 
으로 그러나, 나는 1 NLS

여기
dojo["requireLocalization"]("core", "FuseboxContent"); 

가 죽을를로드하려고 core.controller.Fusebox 클래스에서

  layers: [ 
      { 
    resourceName: "core", 
      name: "../core/trusted.js", 
      dependencies: [ 
         "dojo.i18n", 
         //data 
         "dojox.data.JsonRestStore", 
         "dojox.data.XmlStore", 
         "dojox.rpc.Service", 
         "dojox.form.FileInput", 
         ... 
         "core.controller.Fusebox"       
], 
        prefixes: [ 
       ["dijit","../dijit"], 
      ["dojox","../dojox"], 
        ["core", "../core"] 
        ] 

입니다

html 파일의 내 설정은 다음과 같습니다.

// version build 
    var djConfig = { 
    baseUrl: 'https://..../', 
    modulePaths: { 'core': 'core'}, 
    useXDomain: true, 
    xdWaitSeconds: 10, 
    parseOnLoad: true, 
    afterOnLoad: true, 
// debugAtAllCosts: true, 
    isDebug: true, 
    locale: "fr" 
    }; 

다음

<script type="text/javascript" src="http://xd.woopic.com/dojoroot/1.3.2-xd/dojo/dojo.xd.js.uncompressed.js"></script> 
<script type="text/javascript" src="https://..../core/trusted.js.uncompressed.js"></script> 

나는 물론, 디버그에 대한 압축을 사용했다. 문제점은 런타임시 Dojo가 내 번들을로드하려고 시도하고 찾을 수 없기 때문에 레이어 파일에 임베드하고 싶기 때문에 추가로드가 필요하지 않습니다. 달성 될 수 있습니까? 그리고 우리가 작업하는 동안 도메인 간 로컬라이제이션이있는 작업 사이트/예제가 있습니까? 업데이트 : 필자는 분석을 계속했고, 동적으로 nls를로드한다는 사실에 문제가있어 컴파일러가 requireLocalization() 호출을 찾을 수 없습니다. 따라서 프로젝트 nls 파일에는 dojo/dijit 관련 내용 만 포함됩니다. 그러나 더미 파일에 몇 가지 번들로드를 추가했으며 core/nls의 내용은 여전히 ​​빌더에서 무시됩니다.

정보를 제공해 주셔서 감사합니다. 검색이 끝나면이 주제에 대한 정보가 많이 없습니다.

+0

저는 xd 문제의 전문가는 아니지만, modulePaths의 nls 항목을보고 싶습니다. 필요하지 않아야합니다. 당신이 그들을 사용하고 당신이 그들을 제거하면 어떤 차이가 있습니까? – peller

+0

변경 사항을 제거했으나 아직 현지화되지 않았습니다. 나는 그들이 몇 가지 유산 이유 때문에 거기에서있는 곳이라고 생각한다. 그러나 당신이 옳았다면 쓸모 없다. 그에 따라 게시물을 업데이트했습니다. – aciobanu

답변

5

며칠 전에 비슷한 문제가있었습니다. 우선, requireLocalization 호출의 네 번째 매개 변수로 사용 가능한 로케일을 설정하여 오류를 해결할 수 있습니다.

dojo.requireLocalization("core", "FuseboxContent", null, "en,fr"); 

그러나 그렇게 할 필요는 없습니다.

다음과 같이 현지화를 시도 했습니까?

dojo.requireLocalization("core", "FuseboxContent"); // and not dojo["require..."] 
+0

글쎄, 내가 dinamicly nls 파일을로드하기 때문에, 그래서 이런 식으로 나는 빌더의 방식으로하지 않습니다. 빌더가 dojo/dijit 로컬 화를 병합하는 [modulename] _fr.xd.js 파일에서 번들을 병합하지 않는다는 점에서 문제를 해결했습니다. 따라서 xd 단계에서 레이어의 끝에 로컬로드를 미리로드 할 때 내 위치가로드되지 않습니다. 나는 모든 로컬 라이 제이션이 이런 방식으로 "보기"하고 빌드 할 수 있는지 확인해야하는 더미 파일을 만들었습니다. – aciobanu