0

Dojo を使用してローカリゼーションをセットアップしようとしていますが、機能しません。

次のようなフォルダー構造があります。

Folder: locale
    - about.html
    - Folder: nls
        - about.js
        - Folder fr
            - about.js

これは、ローカライズする必要があるファイルです。

<html>
<head>
<script type="text/javascript">
    var dojoConfig = {
        locale: 'fr'
    };
</script>
<script src="//servicesbeta.esri.com/jsapi/arcgis/3.4/js/dojo/dojo/dojo.js"></script>
<script>
    require([
        "dojo/i18n",
        "dojo/i18n!./nls/about"
    ],function(
        i18n,
        nls
    ){
        console.log("Good Morning");
        console.log(dojoConfig);
        console.log(nls['hello']);
    });
</script> 
</head>
<body></body>
</html>

これは、ファイルからの出力です。

ここに画像の説明を入力

French Hello出力にではなくが含まれることを期待していEnglish Helloます。

要求を次のように変更した場合:

require([
    "dojo/i18n",
    "dojo/i18n!./nls/about.js"
],function(

に:

require([
    "dojo/i18n",
    "dojo/i18n!./nls/about"
],function(

私はこの出力を得ます:

ここに画像の説明を入力

ここで何が起こっているのか正確にはわかりません。

最初の例でフランス語のローカリゼーションが見つからないのはなぜですか? ロードされ、ローカルが設定されています。

2 番目の例は、私が目にするほとんどの Dojo の例とより一致しています。これはどうしたの?

どんな助けでも大歓迎です。ありがとう!


完全を期すために、nls/about.js:

define({
    root: {
    hello: "English Hello"
    },
    "fr":true
});

および nls/fr/about.js:

define({
    root: {
    hello: "French Hello"
    }
});
4

2 に答える 2

0

ローカリゼーションの経験から、私はこのようにしてきました。

したがって、あなたがしていることは基本的に正しいですが、"dojo/i18n!./nls/about"ファイルを呼び出すことは私にとってなじみのない賭けなので、これは別の方法です。

var my_localization_object = i18n.getLocalization("locale", "about");

パッケージを dojoconfig に追加する必要があります。

var dojoConfig = {
        locale: 'fr',
packages: [
     //location should be a full qualified location.
  { name: "locale", location: "/JS/locale" }
],
  };

このようにして、オブジェクトを変数に戻すmy_localization_objectことができますが、フランス語のロケールであるため、オブジェクトを使用して必要なものを入力できます。

about.js は次のようになります。

define({
    root: ({
    //Whatever object you want
    }),

    "en": false,
    "en-gb": false,
    "en-us": true,
    "fr": false,

});
于 2013-09-19T16:20:37.107 に答える