react-intlの使い方が少し分かりにくかったのでメモ
packageの追加
yarn add react-intl
言語ファイルの準備(ja_JP.jsなどで作成)
const ja_JP = {
'hello': 'こんにちわ'
}
export default ja_JP
import
addLocaleData([…en, …ja])をしておくことが必要ぽい
node_modules\react-intl\locale-dataにあるものを読み込むことが出来るのかな
import en_US from '../locales/en_US'
import ja_JP from '../locales/ja_JP'
import { IntlProvider, addLocaleData, FormattedMessage } from 'react-intl'
import en from 'react-intl/locale-data/en'
import ja from 'react-intl/locale-data/ja'
addLocaleData([...en, ...ja])
言語判定
const locale = navigator.language.split('_')[0]
const chooseLocale = (locale) => {
switch(locale) {
case 'en':
return en_US
case 'ja':
return ja_JP
default:
return en_US
}
}
IntlProvider
出来るだけトップレベルで囲っておくといいらしい
ReactDOM.render(
<IntlProvider locale={locale} messages={chooseLocale(locale)}>
<PublicIndex />
</IntlProvider>,
document.body.appendChild(document.createElement('div')),
)
表示
render内の任意の場所で記述
<FormattedMessage id='hello' />