分步教程:使用 i18next 本地化 React 网站

embedded/2025/2/22 16:37:07/

分步教程:使用 i18next 本地化 React 网站

在这里插入图片描述

通过本指南学习如何为 React 应用添加多语言支持,实现动态语言切换和翻译管理。


前置条件
  • 基础的 React.js 知识
  • 已安装 Node.js 和 npm/yarn
  • 通过 create-react-app 创建的 React 项目

步骤 1:安装所需库

安装翻译管理工具 i18nextreact-i18next

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

步骤 2:组织翻译文件

  1. src 目录下创建 translations 文件夹。
  2. translations 内按语言创建子文件夹(如 en 英语,es 西班牙语)。
  3. 在每个语言文件夹中添加 global.json 文件。

目录结构

src/translations/en/global.jsones/global.json

示例:英语翻译文件(en/global.json

{"header": {"welcome": "Welcome to My App!"},"home": {"title": "Home Page","body": "This app supports multiple languages."}
}

西班牙语翻译文件(es/global.json

{"header": {"welcome": "¡Bienvenido a Mi Aplicación!"},"home": {"title": "Página de Inicio","body": "Esta aplicación soporta múltiples idiomas."}
}

步骤 3:配置 i18next

src/index.js 中初始化翻译设置:

javascript">import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import enTranslations from './translations/en/global.json';
import esTranslations from './translations/es/global.json';// 初始化 i18next
i18n.use(initReactI18next).init({resources: {en: { global: enTranslations },  // "global" 是命名空间es: { global: esTranslations }},lng: 'en', // 默认语言fallbackLng: 'en',interpolation: {escapeValue: false // 防止 XSS 攻击}
});ReactDOM.render(<React.StrictMode><App /></React.StrictMode>,document.getElementById('root')
);

步骤 4:创建可复用组件

1. 头部组件(src/components/Header.js

javascript">import React from 'react';
import { useTranslation } from 'react-i18next';const Header = () => {const { t } = useTranslation('global'); // 使用 "global" 命名空间return <h1>{t('header.welcome')}</h1>;
};export default Header;

2. 首页组件(src/components/Home.js

javascript">import React from 'react';
import { useTranslation } from 'react-i18next';const Home = () => {const { t } = useTranslation('global');return (<div><h2>{t('home.title')}</h2><p>{t('home.body')}</p></div>);
};export default Home;

步骤 5:实现语言切换器

更新 src/App.js,添加语言切换按钮:

javascript">import React from 'react';
import { useTranslation } from 'react-i18next';
import Header from './components/Header';
import Home from './components/Home';const App = () => {const { i18n } = useTranslation();const changeLanguage = (lng) => {i18n.changeLanguage(lng); // 更新应用语言};return (<div><Header /><Home /><button onClick={() => changeLanguage('en')}>English</button><button onClick={() => changeLanguage('es')}>Español</button></div>);
};export default App;

步骤 6:测试应用

  1. 启动应用:
    npm start
    # 或
    yarn start
    
  2. 点击 EnglishEspañol 按钮,观察文本即时切换!

可选增强功能

  1. 保存语言偏好:使用 localStorage 存储用户选择的语言。
  2. 扩展更多语言:按相同模式添加新语言(如法语 fr)。
  3. 拆分命名空间:将翻译文件按模块拆分(如 header.json, home.json)。

最终成果

你已经构建了一个支持动态切换英语和西班牙语的 React 应用!全球用户现在可以使用自己偏好的语言访问你的应用 🌍。

欢迎在评论区告诉我你希望看到的下一个 React.js 教程主题! 🚀


http://www.ppmy.cn/embedded/164388.html

相关文章

阿里云通过docker安装skywalking及elasticsearch操作流程

系统 本文使用系统为 Alibaba Cloud Linux 3.2104 LTS 64位 配置为 4核8G PS&#xff1a;最低配置应为2核4G&#xff0c;配置过低无法启动 安装docker 1.卸载旧版本docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-…

【学习笔记】QT绘图和绘图设备

1. QPainter Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。 QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPain…

设计模式教程:解释器模式(Interpreter Pattern)

1. 什么是解释器模式&#xff1f; 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;通常用于处理语言&#xff08;例如数学表达式、SQL查询等&#xff09;中的语法和解释。该模式定义了一个文法&#xff0c;并通过解释器类来解释文法中…

电脑想安装 Windows 11 需要开启 TPM 2.0 怎么办?

尽管 TPM 2.0 已经内置在许多新电脑中&#xff0c;但很多人并不知道如何激活这一功能&#xff0c;甚至完全忽略了它的存在。其实&#xff0c;只需简单的几步操作&#xff0c;你就能开启这项强大的安全特性&#xff0c;为你的数字生活增添一层坚固的防护屏障。无论你是普通用户还…

洛谷P11042 [蓝桥杯 2024 省 Java B] 类斐波那契循环数

像是这种填空题的话&#xff0c;就直接暴力还更加省时间&#xff0c;在本地算完后直接提交答案即可 #include<bits/stdc.h> using namespace std;const int N 10000000;bool isnumber(int n) {vector<int> a;int m n;while (n > 0) {a.push_back(n % 10);n / …

Unity结合Vuforia虚拟按键实现AR机械仿真动画效果

零、最终效果 待上传 一、资源准备 1、Vuforia Vuforia版本不能高于10.17.4&#xff08;往上的版本虚拟按键功能被删除&#xff09; 2、Unity Unity版本必须要高于2022.3.x&#xff0c;不然使用Vuforia插件时会出现bug 二、主要内容 1、添加虚拟按钮 2、为虚拟按钮设置…

科普:“git“与“github“

Git与GitHub的关系可以理解为&#xff1a;Git是一种软件工具&#xff0c;而GitHub则是一个在线平台&#xff0c;它们是“一家子”。二者的关联最直接体现在你通过Git在GitHub仓库中clone软件包到你的机器中来。 具体来说&#xff1a; 一、Git 定义&#xff1a;Git是一个开源的…

在大语言模型(LLM)中调用(Function Calling) 自定义的结构化函数

函数调用&#xff08;Function Calling&#xff09; 指的是大语言模型&#xff08;LLM&#xff09;自动调用我们定义的结构化函数 &#xff0c;比如这里的RouteQuery&#xff0c;它的作用是根据输入的问题内容&#xff0c;返回对应的数据类别&#xff08;python_docs、js_docs …