当前位置:首页 > React

react 多语言如何配置

2026-03-11 12:46:09React

安装依赖

安装 react-i18nexti18next 作为多语言支持的核心库。

npm install react-i18next i18next

初始化 i18n 配置

创建 i18n.js 文件,配置语言资源和初始化设置。

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

// 语言资源
const resources = {
  en: {
    translation: {
      welcome: 'Welcome',
      button: 'Click me',
    },
  },
  zh: {
    translation: {
      welcome: '欢迎',
      button: '点击我',
    },
  },
};

i18n.use(initReactI18next).init({
  resources,
  lng: 'en', // 默认语言
  fallbackLng: 'en', // 回退语言
  interpolation: {
    escapeValue: false, // 不转义 HTML
  },
});

export default i18n;

在根组件中引入 i18n

在应用的入口文件(如 App.jsindex.js)中引入 i18n.js

import './i18n';

使用翻译功能

在组件中通过 useTranslation Hook 或 withTranslation HOC 实现多语言切换。

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

function MyComponent() {
  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 MyComponent;

按需加载语言文件

对于大型项目,可以动态加载语言文件以减少初始加载时间。

// i18n.js 中配置动态加载
i18n.use(initReactI18next).init({
  lng: 'en',
  fallbackLng: 'en',
  interpolation: { escapeValue: false },
});

// 动态加载语言资源
i18n.addResourceBundle('en', 'translation', {
  welcome: 'Welcome',
});
i18n.addResourceBundle('zh', 'translation', {
  welcome: '欢迎',
});

命名空间支持

通过命名空间(namespace)拆分翻译文件,适合模块化项目。

// 配置命名空间
i18n.init({
  ns: ['common', 'moduleA'],
  defaultNS: 'common',
});

// 使用命名空间翻译
t('moduleA:title');

测试与调试

使用 i18next-http-backend 加载远程翻译文件,或通过 i18next-browser-languagedetector 自动检测用户语言。

react 多语言如何配置

npm install i18next-http-backend i18next-browser-languagedetector
import Backend from 'i18next-http-backend';
import LanguageDetector from 'i18next-browser-languagedetector';

i18n
  .use(Backend)
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({ /* 配置 */ });

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

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

如何运行react

如何运行react

运行 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网 Node.js 下载并安装最新稳定版本。安装完成后,验证版本: node…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…