我正在使用React Native创建一个应用程序,并且需要能够“即时”更改应用程序的语言。我在这里跟踪了示例:https://github.com/appfoundry/react-native-multi-language-sample。在此之后,我成功设置了Redux和所有附带的库。
我遇到的问题是我试图从警报弹出窗口而不是选择器触发我的操作,而我实际上已经发出了调度操作的问题。
如果有人能告诉我如何使用一个非常棒的警报更改用户语言。
谢谢!
答案 0 :(得分:0)
我已经研究过这个想法可能会帮助你的情况。
我使用react-native-i18n
(https://github.com/AlexanderZaytsev/react-native-i18n)并创建了一个包含所有翻译的文件。像这样:
I18n.translations = {
en: {
helloWorld: 'Hello World!',
loginButton: 'Login',
}
}
然后我将它导入我的组件中,该组件包含应翻译的文本并使用它:
<View>
<Text>{I18n.t('helloWorld'}</Text>
</View>
我的用户语言存储在我的数据库中,当用户登录我的应用程序时,我得到它并在我的reducer中设置。起初我从I18n.currentLocale()
方法获得了语法。
在我的组件中,我从reducer中获取用户语言并将其设置为I18n config:
I18n.locale = this.props.language;
在这个组件中,我有一个选择器,因此用户可以选择其语言。我触发一个操作来更新我的数据库以及reducer并使用componentWillReceiveProps()
生命周期更新I18n.locale
值
componentWillReceiveProps(nextProps) {
I18n.locale = nextProps.language;
}
希望有所帮助