2009-10-29 16 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カスタムビルド

ので、私のビルドスクリプトが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"] 
        ] 

である私は1つのNLS

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

をロードしようここでは

availableFlatLocales is undefined 
[Break on this error] var locales = availableFlatLocales.split(",");\r\n 
でしかし、死んでしまいます

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呼び出しの4番目のパラメータとして使用可能なロケールを設定することで、エラーを回避できます。

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

ただし、これを行う必要はありません。

次のようにローカライゼーションを試しましたか?

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

私はdinamicly nlsファイルをロードするので、私はそれを行うので、このように私はビルダーの方法に取得しないでください。ビルダーが[modulename] _fr.xd.jsファイルのバンドルをマージせず、dojo/dijitのローカライゼーションをマージするという点で、この問題を解決しました。したがって、xdフェーズでは、レイヤの最後に事前ロードローカライズを実行すると、ローカライゼーションがロードされません。 ダミーファイルを作成しました。すべてのローカライゼーションで、このように見てビルドしてビルドすると、無駄になります。 – aciobanu

関連する問題