ZK的多語系(i18n)的支援可透過在WEB-INF
目錄下設定zk-label_lang_CNTY.properties
檔(舊版的好像是叫做i3-labels.properties),並在zul直接透過EL及隱含物件labels
來存取。(注意labels是全小寫,在Eclipse編輯器大寫"L"和小寫"l"的斜體長得很像,剛才因為這個小差異折騰了半天。)
<label value="${labels.app.login}"/>
但今天在Eclipse Properties Editor編輯好properties檔時,在zul的畫面上卻是顯示中文的Unicode。
例如在zk-label_zh_TW.properties
中設定了app.login=登入
,但在畫面上卻顯示為\u767b\u5165
。
在確認Eclipse編輯器及properties檔都是UTF-8編碼(ZK的properties檔編碼預設是UTF-8)後,最後發現問題原因是Eclipse的Properties Editor會自動將properties檔的中文轉成跳脫的Uncode編碼,又因為Eclipse中預設properties檔的編碼為ISO-8859-1,但ZK中的properties檔的編碼為UTF-8,也就是被轉了兩次,導致網頁上的中文反而變成了Unicode碼。
ZK properties檔編碼為UTF-8,
以Properties Editor開啟ZK properties檔,
然後在Properties Editor輸入新的文字"登入"後存檔,
輸入的文字(UTF-8)被Properties Editor再一次轉碼回UTF-8編碼"\u767b\u5165"。
解決方式就是不要使用Eclipse內建的編輯器或Properties Editor開啟或編輯zk-label_lang_CNTY.properties
檔,改使用Notepad++編輯器來編輯即可。
參考:
沒有留言:
張貼留言