react native全球化react native i18n按键转换语言实战

本文介绍如何使用react-native-i18n进行应用国际化设置,并解决在实际应用中遇到的问题,如某些控件未能正确转换语言及语言状态重置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先先安装

yarn add react-native-i18n(或者npm install -g react-native-i18n

正常来说只需要创建语言包(可以参照

https://blog.youkuaiyun.com/ddwhan0123/article/details/78425929?utm_source=tuicool&utm_medium=referral),导入i18n然后改变语言的值就OK了,这里主要讲的是用按键转换语言会遇到哪些坑

第一坑、

某些控件在I18N实现之前就已经刷新好了,从而导致的控件无法转换语言。

这个没什么好说的,改程序入口,先刷I18N。



第二坑、

再次打开APP,语言状态回到默认语言。

redux的createStore记录当前语言状态,定义一个locale:i18n.currentLocale()   //currentLocale()这个方法是i18n.JS里面的方法,可以获取用户当前本机语言。


const initialLocaleState = {
  locale: I18n.currentLocale()
};


function selectLocale(state = initialLocaleState, action) {
  switch (action.type) {
    case "SelectLocale":
      return {
        ...state,
        locale: action.locale
      };
    default:
      return state;
  }
}


//在按钮界面定义
this.state={
            changeLocale:'zh'

        }


<Button
    title="简体中文"
    buttonStyle={styles.button}
    onPress={() => {
        this.props.changeLocale('zh');
    }}
/>
//通过这行代码发送出去给store
const mapDispatchToProps = (dispatch, ownProps) => ({
    changeLocale: newLocale => {
        dispatch({ type: "SelectLocale", locale: newLocale });//发数据
        ownProps.navigation.setParams({ locale: newLocale });
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值