Javascript 在React native中更改设计区域设置

Javascript 在React native中更改设计区域设置,javascript,reactjs,react-native,internationalization,Javascript,Reactjs,React Native,Internationalization,我已经成功地安装了react-native-i18n,并且工作正常。但是,我想更改React本机应用程序本身内部的区域设置 我添加了一个按钮(可触摸不透明度),并编写了以下代码: onPress={() => { i18n.locale = 'ar'; }} 但是,这并没有将语言环境更改为“ar”,我的所有翻译仍然只提供英语(en-US)。我不希望用户转到电话设置并从那里更改区域设置。我不能从应用程序本身执行此操作吗?仅限于我的应用程序的区域设置。您需要重新启动应用程序。侦听要重新提交的

我已经成功地安装了react-native-i18n,并且工作正常。但是,我想更改React本机应用程序本身内部的区域设置

我添加了一个按钮(可触摸不透明度),并编写了以下代码:

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

但是,这并没有将语言环境更改为“ar”,我的所有翻译仍然只提供英语(en-US)。我不希望用户转到电话设置并从那里更改区域设置。我不能从应用程序本身执行此操作吗?仅限于我的应用程序的区域设置。

您需要重新启动应用程序。侦听要重新提交的ConfigurationChange事件,或者您可以引用此GitHub。更简单的破解方法是在完成i18n后设置一个状态。locale='ar':)

您需要重新启动应用程序。侦听要重新提交的ConfigurationChange事件,或者您可以引用此GitHub。更简单的破解方法是一旦你做了i18n.locale='ar':)就设置一个状态。

你能详细说明一下:
一旦你做了i18n.locale='ar'
?onPress={()=>{i18n.locale='ar';this.setState(abc:0);}你也可以做这个。setState(this.state)但是这会引发一个使用这个.forceUpdate()的警告。forceUpdate不是一种推荐的方法,我不认为将i18n使用的字典的所有键值都存储在本地状态。我需要全局存储它们,以便我的所有其他组件也可以使用它们。我认为我必须将它们重新存储。我们不是试图在本地状态中存储i18n字典,我们只是重新命名组件,以便反映区域设置的变化,这不是问题所在吗?setState用于触发渲染setState/forceUpdate用于重新渲染正如我所提到的,这只是一个黑客解决方案,更好的方法是使用reduxCan您详细介绍:
一旦您执行i18n.locale='ar'
?onPress={()=>{i18n.locale='ar';this.setState(abc:0);}您也可以执行这个.setState(this.state)但这将引发使用此.forceUpdate()的警告。forceUpdate不是一种推荐的方法,我不认为将i18n使用的字典的所有键值都存储在本地状态。我需要全局存储它们,以便我的所有其他组件也可以使用它们。我认为我必须将它们重新存储。我们不是试图在本地状态中存储i18n字典,我们只是重新命名组件,以便反映区域设置的变化,这不是问题所在吗?setState用于触发渲染setState/forceUpdate以便重新渲染正如我所提到的,这只是一个黑客解决方案,更好的方法是使用redux