react-i18next

因为react-i18next依赖 i18next , 所有需要同时安装i18next包

npm install react-i18next i18next -S

配置

src下新建i18n文件夹,以存放国际化相关配置

i18n中分别新建三个文件:

  • config.js对 i18n 进行初始化操作及插件配置
  • en.json英文语言配置文件
  • zh.json中文语言配置文件

config.js

import i18n from "i18next";
import { initReactI18next } from "react-i18next";

import translation_en from "./en.json";
import translation_zh from "./zh.json";

const resources = {
  en: {
    translation: translation_en,
  },
  zh: {
    translation: translation_zh,
  },
};

i18n.use(initReactI18next).init({
  resources,
  lng: "en",
  interpolation: {
    escapeValue: false,
  },
});

export default i18n;

en.json:

{
  "language": "English",
  "header": {
    "conquest": "Conquest and Conquest"
  }
}

zh.json

{
  "language": "中文",
  "header": {
    "conquest": "征服"
  }
}

在index.js中引入import "./i18n/config"; // 引用配置文件

在 函数式组件 中使用useTranslation 的 hook 来处理国际化

import { useTranslation } from "react-i18next";
function Play() {
  const { t, i18n } = useTranslation();
  return (
    <div className="play_container">
      <div className="header">
        <div>
          <img src={Logo_min} alt="" />
          // t{} 控制显示语言类型
          <span>{t("header.conquest")}</span>
        </div>
        // 切换其他类型语言
        <select onChange={(e) => i18n.changeLanguage(e.target.value)}>
          <option value="en">English</option>
          <option value="zh">中文</option>
        </select>
      </div>
  </div>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React-i18next是一个用于React应用程序的国际化(i18n)库,它帮助开发者轻松地在应用中实现多语言支持。它结合了React和i18next这两个库的优点,让翻译文本变得简单且管理起来更加高效。 以下是使用React-i18next的基本步骤: 1. 安装依赖: ``` npm install react-i18next i18next axios // 如果你想从服务器获取翻译文件 ``` 2. 创建i18n配置: 在项目的`i18n.js`或类似的文件中,设置默认的语言、提供翻译资源(通常是JSON文件)、并初始化i18next: ```javascript import i18n from 'i18next'; import Backend from 'i18next-http-backend'; // 使用axios或其他HTTP backend i18n .use(Backend) // 加载HTTP backend .init({ lng: 'en', // 默认语言 fallbackLng: 'en', // 当语言不可用时的备选语言 resources: { // 翻译资源,例如:'locales': ['en', 'de'] 对应的文件路径 en: require('./locales/en.json'), de: require('./locales/de.json'), }, interpolation: { escapeValue: false, // 取消转义HTML特殊字符 }, }); ``` 3. 配置React: 在`App.js`或组件中引入`react-i18next`并使用`<Translation>`或`useTranslation` Hook: ```javascript import { AppProvider, useTranslation } from 'react-i18next'; function App() { const { t } = useTranslation(); return ( <AppProvider> {/* 你的组件代码 */} <h1>{t('greeting')}</h1> // 使用t函数访问翻译后的文本 </AppProvider> ); } ``` 4. 动态加载语言: 使用`i18next.changeLanguage`方法在用户切换语言时更新语言: ```javascript function changeLanguage(newLang) { i18n.changeLanguage(newLang).then(() => { // 异步处理成功后执行 }); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值