https://zhuanlan.zhihu.com/p/94788672
https://github.com/i18next/react-i18next/pull/759/files
1. 安装依赖
yarn add react-i18next i18next i18next-browser-languagedetector
2. 配置多语言json
/locales/en-us.json:
{ "user": { "user_management": "User Management", "user_id": "User ID", "status": "Status", "role": "Role", "search": "Search", "reset": "Reset", "add_new": "Add New", "edit_user": "Edit User", "add_user": "Add User", "first_name": "First Name", "last_name": "Last Name", "email_address": "Email Address", "operate": "Operate" } }
/locales/zh-cn.json:
{ "user": { "user_management": "用户管理", "user_id": "用户 ID", "status": "状态", "role": "角色", "search": "搜索", "reset": "重置", "add_new": "添加用户", "edit_user": "编辑用户", "add_user": "添加用户", "first_name": "名字", "last_name": "姓", "email_address": "邮箱地址", "operate": "操作" } }
3. 定义i18n.tsx:
import LanguageDetector from 'i18next-browser-languagedetector'; import i18n from 'i18next'; import enUsTrans from './locales/en-us.json'; import zhCnTrans from './locales/zh-cn.json'; import { initReactI18next } from 'react-i18next'; i18n .use(LanguageDetector) //嗅探当前浏览器语言 .use(initReactI18next) //init i18next .init({ //引入资源文件 resources: { en: { translation: enUsTrans, }, zh: { translation: zhCnTrans, }, }, //选择默认语言,选择内容为上述配置中的key,即en/zh fallbackLng: 'en', debug: false, interpolation: { escapeValue: false, // not needed for react as it escapes by default }, }); export default i18n;
4. 在主入口文件_app.tsx中引用i18n.tsx
import './i18n';
5. 高阶组件中使用
import { withTranslation, WithTranslation } from 'react-i18next'; export class UserManagement extends React.Component<IUserProps & WithTranslation> {} export default withTranslation()(UserManagement);