当前位置:首页 > 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 实现多语言切换。
示例组件:

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>
      <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: { /* 翻译内容 */ }
    }
  }
});

在组件中指定命名空间:

react 实现多语言

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 native如何启动

react native如何启动

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

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

react如何更新

react如何更新

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

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

react如何重置

react如何重置

重置 React 应用的状态 使用 useState 钩子重新初始化状态变量是最直接的方法。将状态变量重置为初始值或空值即可完成重置。 const [count, setCount] = useSt…

react如何重启

react如何重启

重启 React 应用的方法 重新加载当前页面 使用 window.location.reload() 强制刷新页面,这会重新加载整个应用并重置所有状态。 window.location…