私は Javascript ベースの翻訳ソリューションとして I18Next を使用しています。
- デフォルトの名前空間「Core」がロードされます。必要なほとんどのキーが含まれていますが、すべてではありません。
- 名前空間の固定リストはありません。したがって、必要な s だけを伝えることはできませ
i18n.init
んns.namespace
。 - ページロード中に、オプションでいくつかの「モジュール」がアプリケーションにロードされ、それらも翻訳する必要があります。i18n 名前空間の名前をどこかに報告する必要があり、i18n shuold はその名前空間のキーを利用できるようにします。
基本的に、名前空間が呼び出されたときに i18next が名前空間を自動ロードする方法はありますか? 呼び出される名前空間t("[SomeNamespace]Key.Key2");
が有効であり、確実に存在することが保証されます。問題は、i18next が「自動ロード」できず、 i18n.init が呼び出された後にi18n がリソース ファイルを「手動で」ロードする方法を見つけることができないことです。
これが私の現在のコードです。
$.i18n.init(
{
lng: "en",
fallbackLng: "en",
useCookie: false,
resGetPath: "System/i18n/__ns__/__lng__.json",
ns: "Core"
},
function(t) {
System.I18N = t;
alert(System.I18N("LoginUI:Messages.Name"));
}
);
LoginUI:Messages.Name
予想どおり、翻訳の代わりに単に私が表示されSystem/i18n/LoginUI/en.json
ます:
{
"Messages": {
"Name": "Logon Interface"
}
}
(この場合、Core/en.json は関係ありません。現在必要なのは、「LoginUI/en.json」を自動ロードするか、強制的に手動でロードすることだけです。)