【问题标题】:Changing the devise locale in React-native在 React-native 中更改设计语言环境
【发布时间】:2017-03-30 11:10:01
【问题描述】:

我已经成功安装了 react-native-i18n 并且工作正常。但是,我想更改 React 本机应用程序本身的语言环境。

我添加了一个按钮(Touchable opacity)并编写了以下代码:

onPress={() => { i18n.locale = 'ar'; }}

但是,这不会将语言环境更改为“ar”,并且我的所有翻译仍然只针对英语 (en-US)。我不希望用户转到电话设置并从那里更改语言环境。我不能从应用程序本身做吗?只是为了让语言环境仅限于我的应用程序。

【问题讨论】:

    标签: javascript reactjs react-native internationalization


    【解决方案1】:

    您需要重新渲染应用程序。监听 Co​​nfigurationChange 事件以重新呈现,或者您可以参考此 GitHub issue。更简单的技巧是在你执行 i18n.locale = 'ar' 后设置一个状态 :)

    【讨论】:

    • 能否详细说明:set a state once you do i18n.locale = 'ar'
    • onPress={() => { i18n.locale = 'ar'; this.setState(abc: 0);}} 你也可以这样做 this.setState(this.state) 但这会引发使用 this.forceUpdate() 的警告。 forceUpdate 不是推荐的方法,参考this
    • 我认为存储i18n使用的字典的所有键值不应该存储在本地状态。我需要将它们全局存储,以便我的所有其他组件也可以使用它们。我认为我必须将它们存储在 redux 中。
    • 我们并没有尝试将 i18n 字典存储在本地状态中,我们只是重新渲染组件以便反映区域设置更改,这不是问题吗? setState 用于触发渲染
    • 使用 setState/forceUpdate 进行重新渲染只是我提到的一个 hacky 解决方案,更好的方法是使用 redux
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多