React-i18next切換中英文


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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM