当前位置:首页 > 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页面

如何react页面

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

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

如何监控react性能

如何监控react性能

使用 React Profiler API React 16.5 及以上版本内置了 Profiler API,可直接测量组件渲染时间。通过 <React.Profiler> 包裹目标组件,…

react如何滚动scroll

react如何滚动scroll

React 实现滚动的方法 使用 useRef 和 scrollTo 方法 通过 useRef 获取 DOM 元素的引用,调用 scrollTo 方法实现滚动。 import React, { us…

如何搭建react项目

如何搭建react项目

使用 Create React App 搭建项目 Create React App (CRA) 是官方推荐的快速搭建 React 项目的工具,无需配置构建工具(如 Webpack 或 Babel)。…