当前位置:首页 > React

react 如何使用 i18n

2026-01-25 22:51:14React

安装依赖

在React项目中引入i18n功能需要安装react-i18nexti18next库。通过npm或yarn添加依赖:

npm install react-i18next i18next
# 或
yarn add react-i18next i18next

初始化配置

创建i18n配置文件(通常命名为i18n.jsi18n.ts),初始化i18next实例并配置语言资源:

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

i18n.use(initReactI18next).init({
  resources: {
    en: {
      translation: {
        welcome: "Welcome",
        buttonText: "Click me"
      }
    },
    zh: {
      translation: {
        welcome: "欢迎",
        buttonText: "点击我"
      }
    }
  },
  lng: 'en', // 默认语言
  fallbackLng: 'en', // 回退语言
  interpolation: {
    escapeValue: false // React已处理XSS防护
  }
});

export default i18n;

在组件中使用

通过useTranslation钩子或withTranslation高阶组件访问翻译内容:

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

动态加载语言包

对于大型项目,建议按需加载语言文件以避免初始包过大:

// i18n.js配置修改
i18n.use(initReactI18next).init({
  lng: 'en',
  fallbackLng: 'en',
  interpolation: { escapeValue: false },
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json' // 从public/locales加载
  }
});

命名空间管理

通过命名空间分割大型翻译文件:

// 配置多个命名空间
resources: {
  en: {
    common: { /* 通用翻译 */ },
    dashboard: { /* 仪表盘相关 */ }
  }
}

// 组件中使用指定命名空间
const { t } = useTranslation('dashboard');

类型安全(TypeScript)

为翻译键提供类型定义:

declare module 'react-i18next' {
  interface CustomTypeOptions {
    resources: {
      translation: typeof enTranslations;
    };
  }
}

react 如何使用 i18n

分享给朋友:

相关文章

react 如何引入css

react 如何引入css

在 React 中引入 CSS 的方法 React 提供了多种引入 CSS 的方式,可以根据项目需求选择合适的方法。以下是常见的几种方式: 内联样式 内联样式直接在组件中通过 style 属性定义,…

react如何更新

react如何更新

更新 React 项目的方法 检查当前 React 版本 在项目根目录的 package.json 文件中查看 react 和 react-dom 的版本号。也可以通过命令行运行以下命令查看: np…

如何评价react native

如何评价react native

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

react如何开发组件

react如何开发组件

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

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react如何销毁

react如何销毁

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