react-intl 多國語系 | Format.js

>> 發文日期 : 2023/8/4

> 說明

在專案開發上我們常常會遇到支援多國語系的需求,如果光靠google翻譯的話,很難保證他會不會翻譯出什麼奇怪的東西,所以這篇要來分享我們在react上如何使用react-intl來處理多國語系的需求。


> STEP 1. 設定Provider

先建立一個Provider把在外層的component包起來,這邊我另外建立了一個state去控制使用哪一個字典庫,這個會在之後講到。


> STEP 2. 應用

這邊會用到最常見的文字翻譯功能,簡單來說是我們會先在字典庫裡寫好每個id會對應到的翻譯文字,然後使用官方提供的FormattedMessage component,在props上寫下他是對應到哪個id,這樣就可以在瀏覽器上看到對應的翻譯文字了。

在props上的id我們可以把它視為是對應到字典庫裡的key,而value的部分就是代表字典庫裡的變數,defaultMessage則是在字典庫裡找不到對應資料時的預設值。

在字典庫的部分我先建立兩種不同語言,可以看到在app.sub的部分就只有英文版是有資料的,也就是他會去選擇在沒資料的情形下,自動帶入預設的內容。


> STEP 3. 切換語言

接下來會示範當我們在更改語系時,內容會如何去做切換。

從上面的程式碼可以看到,我用了兩個按鈕去控制最外層的IntlProvider locale的值,這樣就可以針對不同語系去載入對應的字典庫,另外我還使用了useIntl這個hook,我也可以透過locale或是formatMessage這兩個props去取得對應的值。