当前位置:首页 > React

react 实现多语言

2026-01-27 10:22:52React

实现多语言支持的步骤

安装依赖库

使用 react-i18nexti18next 库实现多语言功能。安装命令如下:

npm install react-i18next i18next

配置语言文件

创建语言资源文件,例如 en.json(英文)和 zh.json(中文),存放在 src/locales 目录下。
示例 en.json

{
  "welcome": "Welcome to our app!",
  "button": {
    "submit": "Submit"
  }
}

示例 zh.json

{
  "welcome": "欢迎使用我们的应用!",
  "button": {
    "submit": "提交"
  }
}

初始化 i18n

src/i18n.js 中配置 i18next

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

i18n.use(initReactI18next).init({
  resources: {
    en: { translation: enTranslation },
    zh: { translation: zhTranslation }
  },
  lng: 'en', // 默认语言
  fallbackLng: 'en',
  interpolation: { escapeValue: false }
});

export default i18n;

在 React 组件中使用

通过 useTranslation Hook 或 withTranslation HOC 实现多语言切换。
示例组件:

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>
      <button>{t('button.submit')}</button>
    </div>
  );
}

export default App;

动态加载语言包

对于大型应用,可以按需加载语言包以减少初始加载时间:

i18n.use(initReactI18next).init({
  lng: 'en',
  fallbackLng: 'en',
  interpolation: { escapeValue: false },
  backend: {
    loadPath: '/locales/{{lng}}.json'
  }
});

使用命名空间

拆分语言文件为多个命名空间(如 common.jsondashboard.json):

i18n.init({
  ns: ['common', 'dashboard'],
  defaultNS: 'common',
  resources: {
    en: {
      common: { /* 翻译内容 */ },
      dashboard: { /* 翻译内容 */ }
    }
  }
});

在组件中指定命名空间:

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

服务端渲染支持

在 Next.js 等框架中,可通过 next-i18next 库简化配置:

npm install next-i18next

next.config.js 中配置:

const { i18n } = require('./next-i18next.config');
module.exports = { i18n };

创建 next-i18next.config.js

module.exports = {
  i18n: {
    locales: ['en', 'zh'],
    defaultLocale: 'en'
  }
};

react 实现多语言

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

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…