ウェブパックを使用している場合。あなたは、アプリケーションから異なるロケールデータをコード分割し、動的にロードすることができます。 Webpack 1はrequire.ensure()のみをサポートし、webpack 2はSystem.import()もサポートしています。 require.ensureがコールバックを使用している間、System.importは約束を返します。開発環境のコードは上記または動作しない場合があり応じrequire.ensureでSystem.importでhttps://webpack.github.io/docs/code-splitting.html
()
import { addLocaleData } from 'react-intl';
const reactIntlLocaleData = {
fr:() => System.import('react-intl/locale-data/fr'),
en:() => System.import('react-intl/locale-data/en')
};
function loadLocaleData(locale){
reactIntlLocaleData[locale]()
.then((intlData) => {
addLocaleData(intlData)
}
}
()
import { addLocaleData } from 'react-intl';
const reactIntlLocaleData = {
fr:() => require.ensure([], (require) => {
const frData = require('react-intl/locale-data/fr');
addLocaleData(frData);
}),
en:() => require.ensure([], (require) => {
const enData = require('react-intl/locale-data/en');
addLocaleData(enData);
})
};
function loadLocaleData(locale){
reactIntlLocaleData[locale]();
}
。あなたがコードを翻訳するためにBabelと一緒にWebpack2を使用していることを前提としています。
同じ方法でjsonファイルをロードできますか? – Santhosh
はい、上記と同じパターンを使用して、言語jsonファイルを読み込むことができます。 – slchap5
@ slchap5これは、 'fr'と' en'ロケールの両方のデータを含む単一のバンドルが作成され、index.htmlのscriptタグを介してページにロードされることを意味しますか?あるいは、 'loadLocaleData'が呼び出されたときに実行時にロードできるバンドルを生成しますか? – LoicUV