react-native国际化

本文介绍了如何在ReactNative项目中实现国际化,包括下载并配置i18next库,加载不同语言包,使用`useTranslation`hook在组件中动态切换语言。展示了如何在`index.js`和组件中集成多语言功能,以及如何切换语言至英文。
摘要由CSDN通过智能技术生成

一、下载

en.json
{
    "Balance": "Balance",
    "Total Commission": "Total Commission",
    "Cash In": "Cash In", 
    "Cash Out": "Cash Out",
    "Quick Access Loan": "Quick Access Loan",
    "Remittance": "Remittance", 
    "Top up": "Top up",

}
bur.json
{
    "Balance": "လက်ကျန်ငွေ",
    "Total Commission": "အမြန်ချေးငွေ",
    "Cash In": "ငွေသွင်း", 
    "Cash Out": "‌ငွေထုတ်",
    "Quick Access Loan": "အမြန်ချေးငွေ",
    "Remittance": "Remittance", 
    "Top up": "ဖုန်းဘေလ်ဖြည့်",
    "More": "အခြား",
    "Tips: ": "သတိပြုရန်: ",
}
npm install react-native-localize i18n-js
yarn add react-i18next i18next

二、配置

uitils/i18n.js

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
// 导入语言资源文件
import translationEN from './translations/en.json';
import translationBUR from './translations/bur.json';

// 初始化i18n

const resources = {
    "bur": {
      translation: translationBUR,
    },
    "en": {
      translation: translationEN,
    },
  };

// 设置初始化配置
i18n
  .use(initReactI18next)
  .init({
    resources,
    lng: 'bur', // 默认语言
    fallbackLng: 'en', // 如果无法找到所需语言的翻译,默认回退到英语
    keySeparator: false, // 在翻译文件中禁用键分隔符
    interpolation: {
      escapeValue: false, // 禁用字符串转义
    },
  });

export default i18n;

三、语言包

uitils/translations/xx.json

en.json
{
    "Balance": "Balance",
    "Total Commission": "Total Commission",
    "Cash In": "Cash In", 
    "Cash Out": "Cash Out",
    "Quick Access Loan": "Quick Access Loan",
    "Remittance": "Remittance", 
    "Top up": "Top up",

}
bur.json
{
    "Balance": "လက်ကျန်ငွေ",
    "Total Commission": "အမြန်ချေးငွေ",
    "Cash In": "ငွေသွင်း", 
    "Cash Out": "‌ငွေထုတ်",
    "Quick Access Loan": "အမြန်ချေးငွေ",
    "Remittance": "Remittance", 
    "Top up": "ဖုန်းဘေလ်ဖြည့်",
    "More": "အခြား",
    "Tips: ": "သတိပြုရန်: ",
}

四、引入

index.js

/**
 * @format
 */

import {AppRegistry} from 'react-native';
import 'i18next';
import './src/utils/i18n'
import App from './App';
import {name as appName} from './app.json';

AppRegistry.registerComponent(appName, () => App);

五、使用

import { useTranslation } from 'react-i18next';
export default function HomePage() {

const { t, i18n } = useTranslation();
  return (
       <View>
           <Text>{t('More')}</Text>
       </View>
        )
    }

六、切换

 i18n.changeLanguage('en');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y199710

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值