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

react 多语言如何配置

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;

按需加载语言文件

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

react 多语言如何配置

// 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 自动检测用户语言。

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

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react如何重启

react如何重启

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

java如何react

java如何react

在Java中使用React 要在Java项目中集成React,通常需要将React前端与Java后端结合使用。以下是几种常见的方法: 使用Spring Boot作为后端 Spring Boot是一个…

react 如何精通

react 如何精通

掌握核心概念 深入理解React的基础概念,包括组件(函数组件与类组件)、状态(useState)、生命周期(useEffect)、Props传递、虚拟DOM与Diff算法。通过官方文档或《React…

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…

react如何清空state

react如何清空state

清空 React 组件的 state 在 React 中清空 state 可以通过多种方式实现,具体取决于组件的类型(类组件或函数组件)以及 state 的结构。 类组件中清空 state 在类组件…