私たちのプロジェクトでは、モジュール定義に require.js を使用しています。Web プロジェクトは多言語サポートも提供します。その場合、require.js バンドル i18n を使用します。r.js による最適化が処理されるまで、すべてが機能します。
main.js ファイルでは、次のコード行を定義しました。
config: {
i18n: {
locale: localStorage.getItem('locale') || 'de-de'
}
}
したがって、ユーザーは言語を切り替えることができます。コードのどこかにそれがあります:
'click .lang-selection' : function(ev){
localStorage.setItem('locale',$(ev.currentTarget).attr('data-language'));
location.reload();
}
しかしr.jsでの最適化部分になると問題が発生。
Error: エラー: mainConfigFile /home/ch/html5-app/src/web/main.js の構成は、オプティマイザーでの実行中に正しく評価できないため、使用できません。有効な JSON でもある構成のみを使用するか、mainConfigFile を使用せずに、必要な構成値をビルド ファイルまたはオプティマイザーに指定されたコマンド ライン引数にコピーします。Function.createConfig で (/home/ch/html5-app/bin/r.js:24283:23)
誰かがそれまたは別のアプローチに対する解決策を持っていますか? たとえば、言語ごとに最適化された独自のファイルを作成しますか?
さらに js.build.js ファイル
({
baseUrl: "../",
name: "src/web/main",
paths: {
// require.js
requirejs : 'vendor/backbone/require.215',
// app specific modules
root: 'src/web/app/js',
templates : 'src/web/app/templates',
// shared modules
shared: 'src/shared/app/js',
confighandler : 'src/shared/app/js/config/confighandler',
root_config : 'src/web/app/js/config/config',
layout: 'src/shared/app/js/views/layout',
general: 'src/shared/app/js/general',
helper: 'src/shared/app/js/helper',
session: 'src/shared/app/js/session',
vent: 'src/shared/app/js/vent',
view: 'src/shared/app/js/views',
model: 'src/shared/app/js/models',
module : 'src/shared/app/js/modules',
collection: 'src/shared/app/js/collections',
nls : 'empty:',
facebookSDK: 'empty:'
},
mainConfigFile: '../src/web/main.js',
preserveLicenseComments: false,
stubModules : ['text'],
inlineText: true,
// optimize: 'none',
include: ['requirejs']
})