I18n
reactnative
expo
CRNA

i18nを使いReact Native(CRNA)で多言語化


react-native-i18nのエラー

CRNAreact-native-i18nを使用すると下記のエラーが出てしまう

"react-native-i18n module is not correctly linked"

Expo用にラップされたex-react-native-i18nを使う


I18n.localeがenしか取得できない


App.js

import React from 'react'

import { AppLoading } from 'expo'
import I18n from 'ex-react-native-i18n'
import Top from './Top'

export default class App extends React.Component {
state = { isAssetsLoaded: false }

componentWillMount() {
this.loadAssetsAsync()
}

loadAssetsAsync = async () => {
try {
await I18n.initAsync()
} catch (e) {
// console.log(e.message)
} finally {
this.setState({ isAssetsLoaded: true })
}
}

render() {
return this.state.isAssetsLoaded ? <Top /> : <AppLoading />
}
}



ファイルで管理する方法


i18n/index.js

import I18n from 'ex-react-native-i18n'

import en from './locales/en'
import ja from './locales/ja'

I18n.fallbacks = true

I18n.translations = {
en,
ja
}

export default I18n



i18n/locales/en.js

export default {

cat: 'Cat',
hello: 'Hello'
}


i18n/locales/ja.js

export default {

cat: 'ねこ',
hello: 'やぁやぁ'
}