当前位置:首页 > React

react 多语言如何配置

2026-01-25 03:43:37React

配置 React 多语言支持

React 项目可以通过 react-i18next 库实现多语言支持。以下是详细配置步骤:

安装依赖

安装 react-i18nexti18next 核心库:

npm install react-i18next i18next --save

如果需要从文件或后端加载翻译资源,可以安装 i18next-http-backend

npm install i18next-http-backend --save

初始化 i18n

在项目中创建 i18n.js 文件,配置语言初始化逻辑:

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

// 本地翻译资源
const resources = {
  en: {
    translation: {
      welcome: 'Welcome',
    },
  },
  zh: {
    translation: {
      welcome: '欢迎',
    },
  },
};

i18n
  .use(initReactI18next)
  .init({
    resources,
    lng: 'en', // 默认语言
    fallbackLng: 'en', // 回退语言
    interpolation: {
      escapeValue: false, // React 已处理 XSS
    },
  });

export default i18n;

在 React 组件中使用

通过 useTranslation Hook 或 withTranslation HOC 使用翻译功能:

react 多语言如何配置

import React from 'react';
import { useTranslation } from 'react-i18next';

function App() {
  const { t, i18n } = useTranslation();

  const changeLanguage = (lng) => {
    i18n.changeLanguage(lng);
  };

  return (
    <div>
      <h1>{t('welcome')}</h1>
      <button onClick={() => changeLanguage('en')}>English</button>
      <button onClick={() => changeLanguage('zh')}>中文</button>
    </div>
  );
}

export default App;

按需加载翻译文件

通过 i18next-http-backend 动态加载语言文件:

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import Backend from 'i18next-http-backend';

i18n
  .use(Backend)
  .use(initReactI18next)
  .init({
    lng: 'en',
    fallbackLng: 'en',
    backend: {
      loadPath: '/locales/{{lng}}/{{ns}}.json', // 文件路径格式
    },
  });

文件目录结构示例:

public/
  locales/
    en/
      translation.json
    zh/
      translation.json

命名空间支持

将翻译拆分为多个命名空间(如 common.jsondashboard.json):

react 多语言如何配置

i18n.init({
  ns: ['common', 'dashboard'],
  defaultNS: 'common',
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json',
  },
});

在组件中指定命名空间:

const { t } = useTranslation('dashboard');

高级功能

  1. 语言检测
    使用 i18next-browser-languagedetector 自动检测用户浏览器语言:

    npm install i18next-browser-languagedetector --save
    import LanguageDetector from 'i18next-browser-languagedetector';
    i18n.use(LanguageDetector).init({ /* ... */ });
  2. 复数与插值
    支持复数形式和变量插值:

    {
      "items": "{{count}} item",
      "items_plural": "{{count}} items"
    }
    t('items', { count: 5 }); // 输出 "5 items"

通过以上步骤,可以实现 React 项目的多语言支持,并支持动态切换语言、按需加载翻译文件等高级功能。

标签: 多语言react
分享给朋友:

相关文章

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。…

react如何迭代

react如何迭代

在 React 中迭代数组或对象 React 提供了多种方式来处理数组或对象的迭代,以下是常见的方法: 使用 map 方法迭代数组 map 是 JavaScript 数组的内置方法,常用于在 Rea…

如何清洁react

如何清洁react

清洁 React 项目的方法 删除未使用的依赖项 运行 npm ls 或 yarn list 检查已安装的依赖项,使用 npm uninstall <package> 或 yarn rem…

小白如何搭建react

小白如何搭建react

安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网下载安装包(https://nodejs.org/),选择 LTS 版本。安装完成后,终端运行以下命令验证版…

react如何上传文件

react如何上传文件

使用React上传文件的方法 使用HTML的input元素和FormData 创建一个文件输入字段,通过onChange事件获取文件对象,使用FormData将文件数据发送到服务器。 import…