当前位置: 首页 > news >正文

i18next国际化(react)


 i18next官网库(https://react.i18next.com/)

安装命令  npm install react-i18next i18next --save
 

includes/i18n.js

import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import zh from '../locales/zh.json';
import en from '../locales/en.json';


const resources = {

    //对应的英文
  en,
  //对应的中文
  zh, 
};

i18n
  .use(initReactI18next) 
  .init({
    resources,
    // 默认语言改为中文
    lng: "zh", 
    //这个是一个中文切换到因英文如果切换错误会默认切换到中文
    fallbackLng: "zh",
    interpolation: {
      escapeValue: false 
    }
  });

  export default i18n;

locales/en.json

{
    
    "translation": {
     
      "Welcome to React": "Welcome to React ",
      "Learn React" : "Learn React"
    }
  }

zh.jaon

{
    "translation": {
    
      "Welcome to React": "欢迎使用 React",
      "Learn React" : "学习 React"
    }
}

app.js

import React,{useRef} from 'react'
import "./includes/i18n"
import { useTranslation } from 'react-i18next';
import {requestMsgApi} from "./api/message"

export default function App() {

  //获取当前组件实例
  const componentRef = useRef(null);
  // 在需要的地方获取组件实例
  const instance = componentRef.current;


  //就可以简单地插入我们的文本
  const { t, i18n } = useTranslation();

  //设置语言切换
  const changeLangage =()=>{
    //通过调用这个i18nchangeLanguage这样一个方法就可以简单的修改我们当前的语言

    i18n.changeLanguage(i18n.language === "en" ? "zh" : "en");

  }




  return (
    <div className='App'>
      <header className='App-header'>
       <h1>{t('Welcome to React')}</h1>

       <p>{t('Learn React')}</p>
    {/* i18n.language 可查看所在中文还是英文 */}
    {/* changeLangage 绑定点击事件 */}
       <button onClick={changeLangage}>{i18n.language}</button>

      </header>
     



    </div>
  )
}

相关文章:

  • 鸿蒙用 BuilderParam 实现同一个布局不同内容组件
  • 值传递和址传递
  • C语言:头歌使用函数找出数组中的最大值
  • Spring框架的原理及应用详解(三)
  • 【计算机视觉】人脸算法之图像处理基础知识(五)
  • 178.二叉树:最大二叉树(力扣)
  • word空白页删除不了怎么办?
  • Linux C编译器从零开发一
  • JVM 根可达算法
  • C++ 20新特性之线程与jthread
  • Matlab的Simulink系统仿真(simulink调用m函数)
  • 一文搞定 大语言模型(LLM)微调方法
  • C# Winform 用户控件,扩展控件,自定义控件综合实例
  • STM32项目分享:智能窗帘系统
  • IT入门知识博客文章大纲第二部分《编程语言》(2/10)
  • Qt QStackedWidget类详细分析
  • SVN 报错Error: Unable to connect to a repository at URL解决方法
  • 【考研数据结构——C语言描述】第四章 串
  • MySQL的高可用方案:深入Galera Cluster和ProxySQL
  • 【Docker系列】跨平台 Docker 镜像构建:深入理解`--platform`参数
  • 央视热评:从银幕到生活,好故事如何“撬动”大市场
  • 解锁川北底色密码,“文化三地”志愿宣讲员招募计划启动报名
  • 光明日报头版评论:让投身西部成为青春潮流
  • 巴菲特再谈投资日本:希望持有日本五大商社至少50年
  • 中央气象台:未来三天北方地区有大风沙尘,江南等地有强降水
  • 经济日报:仅退款应平衡各方权益