查看: 4|回复: 0

react项目实现国际化i18n

[复制链接]

1

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-3-13
发表于 2021-1-21 12:51:00 | 显示全部楼层 |阅读模式

本篇教程将从零开始实现一个支持多语言功能的demo

0x00 准备

1. 通过create-react-app 新建项目

npx create-react-app my-app

2. 安装i18n所需的库

npm install react-i18next i18next i18next-browser-languagedetector i18next-http-backend --save

其中,i18next-browser-languagedetector库用于添加语言切换功能,可支持自动检测环境,切换到正确的语言,也可以在url中指定语言

3.修改App.js

实现一个用于展示的最小主页

import './App.css';

function App() {
  const { t, i18n } = useTranslation();

  return (
    <div className="App">
      <header className="App-header">
        <p>
          HelloWorld
        </p>
      </header>
    </div>
  );
}

export default App;

0x01 实现最简多语言功能

创建i18n.js,该文件在目录中与index.js同级。

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

// the translations
// (tip move them in a JSON file and import them)
const resources = {
    en: {
        translation: {
            "HelloWorld": "HelloWorld"
        }
    },
    zh_CN: {
        translation: {
            "HelloWorld": "你好世界"
        }
    }
};

i18n
    .use(initReactI18next) // passes i18n down to react-i18next
    .init({
        resources,
        lng: "zh_CN", //设置当前语言

        keySeparator: false, // we do not use keys in form messages.welcome

        interpolation: {
            escapeValue: false // react already safes from xss
        }
    });

export default i18n;

不同语言的翻译内容填写在resources中,按照以上格式填写。上边我们对HelloWorld提供了两种语言的翻译,并设置当前语言为中文(代码zh_CN)

然后在index.js导入i18n.js

import './i18n';

编辑app.js

import './App.css';
import { useTranslation } from 'react-i18next';

function App() {
  const { t, i18n } = useTranslation();

  return (
    <div className="App">
      <header className="App-header">
        <p>
          {t("HelloWorld")}
        </p>
      </header>
    </div>
  );
}

export default App;

如上所示,t("HelloWorld")实现了对HelloWorld字符串的翻译。
运行项目

npm start

我们会看到主页显示出了"你好世界"

当我们把i18n.js的lng字段改为"en",再次刷新页面,会发现主页显示变为了"HelloWorld"

0x02 (待更新)

参考文档

react-i18next官方文档
i18next 官方文档
i18next-browser-languagedetector github项目主页
i18next-http-backend github项目主页



来源:https://www.cnblogs.com/Wade-/p/14303907.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部