3

その点については、Dojoとi18nは初めてです。私は自分のアプリでいくつかの作品を異なる言語に変換しようとしています。いくつかの記事を読んだことがありますが、正直なところ、消化するためにたくさんの情報が投げかけられているような気がして、苦労しています。誰かが私にこれを行うことができる最も簡単な方法を提供することができるでしょうか?「こんにちは」という言葉を変えたいとしましょう。私の頭の中では、次のようになります。

  • Dojoライブラリを使用できるようになりました
  • javascriptファイルで文字列'hello'を定義します。「こんにちは」のプレースホルダーテキストがあります
  • HTMLで、自分のページを指定します

    「helloを別の言語で表示するためにここで指定された文字列」

ですから、それは私の限られた知識から吸収できる限りのことです。基本的に、この種のセットアップを機能させるにはどうすればよいですか?私は自分のページでi18nを要求する必要があると思いますが、これをどのように実行するかはまだ決定されていません。

どんな助けでも素晴らしいでしょう。可能であれば、私はあなたの答えについて限られた知識しか持っていないことを覚えておいてください、ありがとう!

4

1 に答える 1

6

nlsフォルダーは通常、翻訳文字列を格納するために使用され、通常、それを使用するウィジェットの隣のサブディレクトリです。

すなわち。ウィジェットがappというフォルダー内のmyWidget.jsに保存されている場合、 myWidget.jsの翻訳文字列は、ディレクトリapp / nls内の同じ名前のファイル(myWidget.js )に保存されます。

これは単なる慣例ですが、ディレクトリ構造が論理的になるため、おそらく従う価値があります。

myWidget.jsウィジェットの例を次に示します。

define([
    "dojo/_base/declare",
    "dijit/_WidgetBase",
    "dijit/_TemplatedMixin",
    "dojo/i18n!./nls/myWidget"
], function(
    declare,  _widget, _templated,  strings, domAttr
){
    "use strict";

    var construct = declare([_widget,  _templated], {
        "i18n": strings,
        "templateString": "<div>${i18n.hello}</div>"
    });

    return construct;
});

これは、画面上に<div>templateStringプロパティを参照)を作成する非常に単純なウィジェットです。<div>には、翻訳ファイルからロードされ、helloプロパティに割り当てられたテキストが含まれている必要があります。

ウィジェットには、 myWidget.jsと同じディレクトリにnlsディレクトリを作成する必要があります。nlsディレクトリに、myWidget.jsという別のjavascriptファイル(つまり、親と同じ名前)を作成します。このファイルはルート翻訳ファイルであり、次のようになります。

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

ここでは、文字列「Hello」をプロパティhelloに割り当てています。翻訳が提供されていないため、これはあまり役に立ちません。ノルウェー語の翻訳が必要な場合は、次のように変更します。

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

ここでは、ルート翻訳文字列だけでなく、ノルウェー語の翻訳もあると言っています。次に、ノルウェー語の翻訳ファイルを作成し、 noという名前のnlsのサブディレクトリに配置する必要があります。したがって、 myWidget.jsという別のファイルを作成し、それをnls/noに配置します。

define({
    "hello": "Hei"
});

翻訳ファイルの形式は、ルートファイルとは少し異なります。現在のブラウザ言語で特定の文字列の翻訳が利用可能でない限り、デフォルトの文字列が使用されます(つまり、すべての文字列を翻訳する必要はなく、翻訳したい文字列だけを翻訳する必要があります)。

ウィジェットの外に翻訳文字列をロードする:

上記の例は、通常の規則に従ってウィジェットの翻訳テキストをロードする方法を示しています。任意のウィジェットまたは任意のrequireステートメントに必要な文字列のセットをロードできます。dojo / i18nクラスは、指定した文字列の任意のセットをロードできます。

eg:

require([
    "dojo/i18n!<PATH TO TRANSLATION ROOT FILE YOU WANT TO LOAD>"
], function(string) {
    // translation-string are stored in the 'strings' variable for the
    //    current browser language
});
于 2012-12-04T12:05:26.800 に答える