在React Native App中将语言更改为用户优先权

时间:2017-09-29 16:25:08

标签: javascript reactjs react-native react-redux react-native-ios

我正在使用React Native创建一个应用程序,并且需要能够“即时”更改应用程序的语言。我在这里跟踪了示例:https://github.com/appfoundry/react-native-multi-language-sample。在此之后,我成功设置了Redux和所有附带的库。

我遇到的问题是我试图从警报弹出窗口而不是选择器触发我的操作,而我实际上已经发出了调度操作的问题。

如果有人能告诉我如何使用一个非常棒的警报更改用户语言。

谢谢!

1 个答案:

答案 0 :(得分:0)

我已经研究过这个想法可能会帮助你的情况。

我使用react-native-i18nhttps://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;
  }

希望有所帮助