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
});