当前位置: 首页 > news >正文

第三章、React项目国际化介绍(`react-i18next`)

React项目国际化介绍(react-i18next

React + TypeScript 项目中配置 国际化 (i18n) ,推荐使用主流方案:react-i18next(即 i18next 的 React 适配库)。

一、安装依赖

在项目根目录执行:

npm install i18next react-i18next i18next-browser-languagedetector

二、目录结构推荐

src/
├── i18n/
│   ├── index.ts                # i18n 初始化配置
│   ├── locales/
│   │   ├── en/
│   │   │   └── translation.json
│   │   └── zh/
│   │       └── translation.json
├── components/
│   └── LanguageSwitcher.tsx    # 语言切换组件
├── App.tsx
└── index.tsx

三、i18n 初始化配置

src/i18n/index.ts

import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import LanguageDetector from "i18next-browser-languagedetector";// 导入语言包
import en from "./locales/en/translation.json";
import zh from "./locales/zh/translation.json";i18n.use(LanguageDetector) // 自动检测用户语言(浏览器设置、localStorage等).use(initReactI18next) // React 绑定.init({fallbackLng: "en", // 默认语言debug: false,       // 开发时可设为 true 查看加载日志interpolation: {escapeValue: false, // React 已经自动防止 XSS},resources: {en: { translation: en },zh: { translation: zh },},detection: {// 可选:指定检测顺序和缓存方式order: ["localStorage", "navigator"],caches: ["localStorage"],},});export default i18n;

四、语言文件

src/i18n/locales/en/translation.json

{"welcome": "Welcome to our site!","language": "Language","change_language": "Change Language"
}

src/i18n/locales/zh/translation.json

{"welcome": "欢迎来到我们的网站!","language": "语言","change_language": "切换语言"
}

五、在入口文件中加载 i18n

src/index.tsx

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import "./i18n"; ReactDOM.createRoot(document.getElementById("root")!).render(<React.StrictMode><App /></React.StrictMode>
);

六、在组件中使用国际化

src/App.tsx

import React from "react";
import { useTranslation } from "react-i18next";
import LanguageSwitcher from "./components/LanguageSwitcher";const App: React.FC = () => {const { t } = useTranslation();return (<div className="p-8"><h1>{t("welcome")}</h1><p>{t("language")}: {t("change_language")}</p><LanguageSwitcher /></div>);
};export default App;

七、语言切换组件

src/components/LanguageSwitcher.tsx

import React from "react";
import { useTranslation } from "react-i18next";const LanguageSwitcher: React.FC = () => {const { i18n } = useTranslation();const changeLanguage = (lng: string) => {i18n.changeLanguage(lng);};return (<div><button onClick={() => changeLanguage("zh")} className="mr-2">中文</button><button onClick={() => changeLanguage("en")}>English</button></div>);
};export default LanguageSwitcher;
http://www.dtcms.com/a/524582.html

相关文章:

  • RHCA - DO374 | Day03:通过自动化控制器运行剧本
  • 深圳微商城网站建设温州 网站开发
  • 何谓RSS
  • 【SpringCloud】Eureka
  • 网站后台尺寸一般做多大的如何把优酷视频放到网站上
  • 帝国建站模板淘宝网络营销案例分析
  • 企业选择内容+人工智能供应商应该考虑什么?​
  • CI/CD(一)—— 从零搭建 GitLab 全流程(Docker 部署 + 实战指南)
  • 【Android】 Gradle 下载后本地使用方式(macOS / Windows通用)
  • 华为od面经-23届-Java面经
  • Kubernetes LoadBalancer系列|MetalLB介绍与配置
  • 网站制作及管理教程模板网站建设公司 东莞
  • 网站内容品质网站开发的相关语言有哪些
  • 淘宝自己网站怎么建设怎么制作网站编辑页面
  • SQLMap 终极渗透手册(2025全功能版)
  • 微硕WSP4884双N沟MOSFET:汽车智能座舱PMIC“微型稳压核”
  • 【Redis 全解析】高性能内存数据库的原理、实践与优化
  • 手机壳在线设计网站网站都不需要什么备案
  • Ubuntu 系统使用 Docker 部署 Jenkins 详细教程
  • 机器学习(9)正则化
  • 《3D手游光照算力精准分配:动态分层渲染的实践指南》
  • HarmonyOS分布式数据库深度应用
  • 南阳网站优化费用方太产品站网站建设
  • 从 rt.jar 到模块化:JDK9 类加载机制的全面演进
  • 列举一些数据仓库面向主题的设计的实际案例
  • 网站托管服务适合wordpress上传视频黑屏
  • MongoDB 8.x 制作一键部署安装包文档分享(Linux / Windows )
  • Data Warehouse简介
  • 若依 - idea集成docker一键部署springboot项目(docker-compose)
  • 2025 年 MathorCup 大数据建模竞赛 AB 题:高质量全方案・成品资料速取(含双代码 + 论文)