RequireJS を使っている人は、requirejs-i18n プラグインを使うと簡単に多言語対応できます。
詳細は下記ページに書いてある通りです。
インストール
i18n.js
をインストールします。
bower install requirejs-i18n
もちろん手動でもいいです。
i18n.js
注意事項
data-main属性で指定したconfigスクリプトのパスに nls
ディレクトリを作成してください。
それ以外のパスでは正しく動作しません。
YOUR_CONFIG_PATH/nls/**/*.js
また、同種のリソースファイルのファイル名を同じにします。以下の説明では、wording.js
としています。
メモ
何の情報をもとに言語判定しているのか
navigator.language
または navigator.userLanguage
基本形
ルートとなる文字列リソース
言語コードに対応するリソースが存在しない場合、ルートのリソースが表示されます。
// YOUR_CONFIG_PATH/nls/wording.js
define({
"root": {
"trend": "Trends",
"loading": "Loading...",
"search": "Search"
}
});
"en"(英語)をルートのlocaleとするのが良いでしょう。
リソースの読み込み方
// YOUR_CONFIG_PATH/test.js
define(["i18n!nls/wording.js"], function (aWording) {
console.log("The name for trend in this locale is: " + aWording.trend);
// The name for trend in this locale is: Trends
});
localeを追加
例)pt-br を追加する場合
// YOUR_CONFIG_PATH/nls/wording.js
define({
"root": {
// 省略...
},
"pt-br": true // ポルトガル語(ブラジル)
// 以降、同じように列挙.
}
ポルトガル(ブラジル)語のリソースを追加します。
// YOUR_CONFIG_PATH/nls/pt-br/wording.js
define({
"trend": "Trends",
"loading": "Carregando...",
"search": "Pesquisar"
});
localeを追加する毎にディレクトリを作成します。
例では nls/pt-br/wording.js
となるようにファイルを配置します。
特定の言語を固定表示
require.config({
config: {
i18n: {
locale: 'ja' // 日本語の文字列リソースのみを表示
}
}
});
リソース読み込みの優先順位
以下のようにポルトガル語のリソースが存在する場合を想定したときに、pt-br の
wording.jsが存在しない場合は pt のwording.jsがロードされます。
YOUR_CONFIG_PATH/nls/pt-br/wording.js
YOUR_CONFIG_PATH/nls/pt/wording.js
YOUR_CONFIG_PATH/nls/wording.js
rootリソースをバンドル化
localeと同じようにディレクトリを作成することもできます。
// YOUR_CONFIG_PATH/nls/wording.js
define({
"root": true,
"pt-br": true,
"pt": true,
"ja": true,
"es": false
});
// YOUR_CONFIG_PATH/nls/root/wording.js
define({
"trend": "Trends",
"loading": "Loading...",
"search": "Search"
});