Webpackを使用している場合。アプリから異なるロケール データをコード分割し、動的に読み込むことができます。Webpack 1 は require.ensure() のみをサポートし、webpack 2 は System.import() もサポートします。System.import は promise を返しますが、require.ensure はコールバックを使用します。https://webpack.github.io/docs/code-splitting.html
System.import() を使用
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)
}
}
require.ensure() を使用
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]();
}
開発環境によっては、上記のコードが機能する場合と機能しない場合があります。Webpack2 を Babel と共に使用してコードをトランスパイルしていることを前提としています。