在 React 中使用 i18next的示例

目录
  • 1. 安装依赖
  • 2. 在src下创建i18n文件夹
    • 2.1 common下的zh-CN.js
    • 2.2 common下的en-US.js
    • 2.3 在common的index.js文件中引入
    • 2.4 在resources.js中引入common模块的翻译
    • 2.5 utils下初始化语言的方法
    • 2.6 i18n.js代码如下
  • 3. 在app.tsx中引入
  • 4. 页面中使用

1. 安装依赖

npm i i18next react-i18next i18next-browser-languagedetector
  • i18next 提供了翻译的基本能力。
  • react-i18next 是 i18next 的一个插件,用来降低 react 的使用成本。
  • i18next-browser-languagedetector 是用来检测浏览器语言的插件。

2. 在src下创建i18n文件夹

2.1 common下的zh-CN.js

{
  "common": {
    "personSetting": "个人设置",
    "modifyPassword": "修改密码",
    "currentTime": '当前时间是 {{time}}',
  }
}

2.2 common下的en-US.js

{
  "common": {
    "personSetting": "Personal settings",
    "modifyPassword": "change Password",
    "currentTime": 'Current time is {{time}}',
  }
}

2.3 在common的index.js文件中引入

import en_common from './en-US/translation.json'
import zh_common from './zh-CN/translation.json'

export const langCommon = { en_common, zh_common }

2.4 在resources.js中引入common模块的翻译

import { langCommon } from './locales/common' //公共需要翻译的内容
// 把所有的翻译资源集合
const resources = {
  en: {
    translation: {
      ...langCommon.en_common
    },
  },
  zh: {
    translation: {
      ...langCommon.zh_common
    },
  }
}
export { resources }

2.5 utils下初始化语言的方法

export function initLangage() {
  let lang = localStorage.getItem('language') || navigator.language // 获取浏览器的语言环境,兼容IE的写法
  if (lang) {
    lang = lang.substr(0, 2).toLowerCase() // 截取前两位字符,并转化为小写
    return lang
  } else {
    return 'en'
  }
}

2.6 i18n.js代码如下

import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import LanguageDetector from 'i18next-browser-languagedetector';
import { resources } from '@/i18n/resources'
import { initLangage } from '@/utils'

i18n
  // 检测用户当前使用的语言
  // 文档: https://github.com/i18next/i18next-browser-languageDetector
  .use(LanguageDetector)
  // 注入 react-i18next 实例
  .use(initReactI18next)
  // 初始化 i18next
  // 配置参数的文档: https://www.i18next.com/overview/configuration-options
  .init({
    resources, //资源初始化
    lng: initLangage(),
    interpolation: {
      escapeValue: false, // react already safes from xss
    },
    react: {
      useSuspense: false, // this will do the magic
    },
    debug: false,
  })
export default i18n

3. 在app.tsx中引入

import './i18n/i18n'

4. 页面中使用

import { useTranslation } from 'react-i18next';

const SafetyManage: React.FC = (): React.ReactElement => {
  const { t } = useTranslation();
  return (
    <div >
      <Button
         type="primary"
       >
         {t('common.personnalSetting')}
       </Button>,
       <Button
       >
         {t('common.modifyPassword')}
       </Button>,
       <p>
		  {t('common.currentTime', { time: dayjs().format('MM/DD/YYYY') })}
		</p>
    </div>
  );
}

export default App;

useTranslation 返回的对象包含一个 t 方法,这个方法可以翻译文本。
i18next 提供了插值的用法: 在 t 函数中传递第二个参数,它是一个对象。

参考文章:https://www.zadmei.com/qdizjsjz.html

到此这篇关于在 React 中使用 i18next的文章就介绍到这了,更多相关React 使用 i18next内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • React国际化react-i18next详解

    简介 react-i18next 是基于 i18next 的一款强大的国际化框架,可以用于 react 和 react-native 应用,是目前非常主流的国际化解决方案. i18next 有着以下优点: 基于i18next不仅限于react,学一次就可以用在其它地方 提供多种组件在hoc.hook和class的情况下进行国际化操作 适合服务端的渲染 历史悠久,始于2011年比大多数的前端框架都要年长 因为历史悠久所以更成熟,目前还没有i18next解决不了的国际化问题 有许多插件的支持,比如可

  • React 中使用 react-i18next 国际化的过程(react-i18next 的基本用法)

    目录 简介 安装与使用 安装 准备新建一个 React 项目,安装依赖包: 使用 检测当前浏览器语言国际化组件 手动切换国际化语言 总结 本文使用 React-i18next 库结合 React, 介绍如何在 React 中配置使用国际化.官方地址:i18next | react-i18next 简介 react-i18next 是基于 i18next 的一款强大的国际化框架,可以用于 react 和 react-native 应用:react-i18next 特点: 提供多种组件可以在hoc,

  • 在 React 中使用 i18next的示例

    目录 1. 安装依赖 2. 在src下创建i18n文件夹 2.1 common下的zh-CN.js 2.2 common下的en-US.js 2.3 在common的index.js文件中引入 2.4 在resources.js中引入common模块的翻译 2.5 utils下初始化语言的方法 2.6 i18n.js代码如下 3. 在app.tsx中引入 4. 页面中使用 1. 安装依赖 npm i i18next react-i18next i18next-browser-languagede

  • React中前端路由的示例代码

    目录 一. url是什么 二. 使用步骤 一. url是什么 访问不同url, 展示不同的组件 二. 使用步骤 安装React路由:命令行中执行npm install react-router-dom --save(注意此处的版本为npm install react-router-dom@4.3.1 --save) 两个js文件,分别为list.js和newButton.js,要实现访问localhost:3000/button的时候就显示button.js:访问localhost:3000/l

  • React中classnames库使用示例

    目录 classnames的引入 引入 使用 Node.js, Browserify, or webpack: classnames函数的使用 数组的形式 ES6中使用动态类名 结合React一起使用 总结: classnames的引入 从名字上可以看出,这个库是和类名有关的.官方的介绍就是一个简单的支持动态多类名的工具库. 支持使用 npm, Bower, or Yarn 使用 npm安装 npm install classnames 使用 Bower安装 bower install clas

  • 在react中使用vuex的示例代码

    前言 笔者最近在学习使用react,提到react就绕不过去redux.redux是一个状态管理架构,被广泛用于react项目中,但是redux并不是专为react而生,两者还需要react-redux建立一座桥梁.同时,redux架构规定只能发送同步action,要想发送异步action就需要结合中间件如redux-thunk.redux-saga等,所以说要想搞定redux还真是不容易啊,光名词就这么多.笔者以前也接触过一点vuex,vuex对笔者这样的菜鸡相对友好,但是vuex是和vue配

  • 在React 组件中使用Echarts的示例代码

    在完成一个需求的时候碰到一个场景需要使用柱状图.涉及到可视化,第一反应当然是Echarts了.平时用js加载Echarts组件很方便,但是在React中就要费下神了.各种连蒙带猜实现了.edmo里的 这里我们要在自己搭建的react项目中使用ECharts,我们可以在ECharts官网上看到有一种方式是在 webpack 中使用 ECharts,我们需要的就是这种方法. 我们在使用ECharts之前要先安装ECharts,在以往的开发模式中,我们很多使用就是把官网中的ECharts的核心js文件

  • React 组件中的 bind(this)示例代码

    React 组件中处理 onClick 类似事件绑定的时候,是需要显式给处理器绑定上下文(context)的,这一度使代码变得冗余和难看. 请看如下的示例: class App extends Component { constructor() { super(); this.state = { isChecked: false }; } render() { return ( <div className="App"> <label > check me: &

  • 在react中使用vue的状态管理的方法示例

    我是要介绍一个新的 react 全局共享状态管理器,它和 vue 组件的状态管理一起同工之妙. 马上体验 在 react 状态管理领域,react-redux 可谓是只手遮天了,基于 flux 思想实现,小巧,immutable 的思想让数据变化可控.但 immutable 所带来的编程代价太大了,如果你要更新一个深层结构的对象的某个节点,写作将会是极其麻烦的一件事,而且还保不准会出错.为了保证 immutable,redux 的 reducer 机制让开发者掉光了头发.于是有了类似 dva.r

  • react中antd Upload手动上传的示例

    目录 情况介绍 实现方法 1.初始化 2.上传表单和图片 3.图片回显 情况介绍 在antd官方提供的upload组件案例中,都使用了action属性直接上传,唯一手动上传的一个例子(如下图)也不够好用,可能不能满足项目的需求,所以我们需要对其进行一些修改,并加入一些别的方法. 我们经常会使用antd的form表单上传数据,有时就会需要同时上传图片.所以在这里我们需要实现的是,前端页面上传多张图片时,先存储在前端,当表单上传时,和表单数据一起上传到后端. 实现方法 1.初始化 首先,在最前面引入

  • React中井字棋游戏的实现示例

    目录 需求分析 实现分析 涉及的组件 涉及的状态 编码实现 项目初始化 定义各个组件的props/state Square组件props Board组件props Game组件state 各组件代码 Square Board Game 最近开始接触React,我认为读官方文档是最快上手一门技术的途径了,恰好React的官方文档中有这样一个井字棋游戏的demo,学习完后能够快速上手React,这是我学习该demo的总结 需求分析 首先看看这个游戏都有哪些需求吧 游戏玩家:X和O,每次落棋后需要切换

  • React Hooks钩子中API的使用示例分析

    目录 hooks是什么 Hooks的作用 使用Hooks组件前后开发模式的对比 Hooks使用策略 为什么要有Hooks useState useEffect使用 useEffect依赖项 使用情景 useMemo使用 useMemo缓存组件方式 useMemo和useEffect的区别 useCallback使用 useContext使用 useRef使用 为什么在函数组件中无法使用ref 如何在类组件中使用ref属性 自定义hooks hooks是什么 hooks理解字面意思就是钩子,是一些

随机推荐