今天主要要來介紹如何設計REST API可以支援國際化(internationalization),簡稱 i18n(因為 internationalization 有 18 個字母)

今天主要是使用英文和中文來示範

首先準備兩個檔案,分別是RestApplication_en.properties, RestApplication_zh_TW.properties

這兩個檔案是拿來定義i18n的Key和Value, 檔案內容如下

RestApplication_en.properties: 

en.png

 RestApplication_zh_TW.properties:

zh-TW.png

接著我們就可以來寫一個controller

i18n code.png

首先先透過Java內建的ResourceBundle的getBundle去讀取剛剛我們設定的i18n檔案,以及設定對應的語系

接著就可以用getString傳入i18n key去拿到對應的訊息

接下來我們就可以用postman實際下一下API測試一下訊息是否符合我們的預期

postman_en.png

 

重點在於我們要在Header的地方加入Accept-Language,給定語系,接著我們就可以在Response看到英文訊息

 

postman_zh_TW.png

 

那如果在i18n的檔案中,是帶有參數的(如下),那我們該怎麼去替換參數呢?

en_with_arg.png

用Key去取得message的程式都一樣,只是多用了MessageFormat幫我們替換掉參數

i18n code msg format.png

結果如下

en arg.png

 

簡單記錄一下ResourceBundle和MessageFormat的用法

arrow
arrow

    Mark Zhang 發表在 痞客邦 留言(0) 人氣()