React umi 通過路由切換完成國際化的處理

2021-09-11 18:30:59 字數 1960 閱讀 2409

理一下自己對於國際化處理的思路:

1.拿到使用者本機的語言作為第一選項,如果不匹配則設定系統預設的第一語言

2.動態路由(已語言為第一層級),用的是umi的約定式路由(其實都差不多)

3.以切換路由的方式切換語言,完成頁面的國際化(用的外掛程式是: react-intl-universal  阿里出品,優勢在於可以在js檔案裡單獨引用)

4.切換語言的同時,需要切換ui庫的語言(這個有文件豈不是小意思)

下面開始記錄:

a. config.js  你總的語言包有多少來著?預設那個?

module.exports = ,

],defaultlanguage: 'zh_cn' // 可以從快取裡面拿先

}}

b.然後去配置動態路由,因為我用的是umi.js,所以在.umirc.js的

plugins -> routes -> update
import  from './src/utils/config' //    匯入你的語言配置

路由長這個樣子,不用umi你肯定也寫的來吧

c.下面進入layout級

首先監聽個生命週期:

langfrompath(this.props.location.pathname)這個方法就是拿你位址的 /en_us/ 這個資料

componentdidmount()
//  react-intl-universal的配置,en / ch 你本地的語言包 import en from '@/locales/en/messages';

const locales =
//修改語言吶,來吧。

changelang = (language) => ;

const = this.props;

// 更改國際化,分發個changelocal,要在model裡面設定loading哦,就是該語言的loading狀態,這樣體驗好一點

dispatch();

// 初始化國際化

intl.init(params);

};

// 一般而言你是改不動的,還要監聽乙個生命週期: shouldcomponentupdate

shouldcomponentupdate(nextprops, nextstate)
就是比較下乙個路由的語言和狀態model裡的語言是否一樣,不一樣就觸發更新,然後返回true or false

d. 如何主動的觸發跟新語言呢?

答案是路由跳轉,經過對比確實是需要跟換語言之後,將位址列http://localhost:8000/en_us/systemmanage,

其中的en_us換成要換的語種(我們可是在路由中配置了的喲),然後回車,就會觸發layout裡面的生命週期,

是不是有道理啊。

e. 還有呢,比如你自己個如何跳轉啊?

pathname: 答案是對path加入語言,可以對umi/withrouter進行一層封裝,就把語言配置搞進去嘛,再跳轉就ok了咯

link :要去的頁面也加上語言字首,封裝一下。

那就完成了

vue 通過路由頁面跳轉 引數傳遞

跳轉方式 1.this.router.push name main params post請求 name為router中定義的name 跳轉後的頁面取請求引數 this.route.params.username 2.this.router.push path params post請求 path為...

教你通過路由器設定網速

路由器設定網速步驟 1 首先我們需要保證我們的路由器具有www.cppcns.comip流量控制功能 2 通過電腦連線到網路,開啟瀏覽器,輸入路由器後台管理ip,並輸入使用者名稱和密碼 3 點選 確定 按鈕通過驗證後進入嚮導介面,我們點選左側的 ip頻寬控制 鏈結 4 然後在右側的 ip頻寬控制 中...

國稅VPDN通過路由器拔號

619 678 691錯誤的解決辦法 一 vpdn撥號時提示619錯誤,指定埠沒有連線錯誤,如和解決?1 如果計算機中使用了防火牆軟體,可以先關閉後再重試 2 如果偶爾出現,重撥幾次,或者重新啟動計算機及路由器後再重試 3 如果是通過區域網或者通過路由器上網的使用者,請網管在伺服器或者路由器上開啟u...