iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

Java SE系列 第 29

Day29:翻譯蒟蒻

當我們的程式可能會有其他語言使用者時,就得開始考慮國際化的問題了,專業術語叫i18n:

i n t e r n a t i o n a l i z a t i o n
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

在Java中可以透過ResourceBundle來達到這個目的,讓程式中要顯示的字元可以透過.properties檔案進行動態抽換:

messages_zh_TW.properties:

com.ironman13th.welcome=哈囉
com.ironman13th.guest=世界

Java9開始可以直接寫中文字在properties檔案,但是Java8以前需要轉換成unicode。

Java裡面這樣寫:

Locale locale = new Locale("zh", "TW");
ResourceBundle rb = ResourceBundle.getBundle("messages", locale);
String welcome = rb.getString("com.ironman13th.welcome");
String guest = rb.getString("com.ironman13th.guest");
System.out.println(welcome + "! " + guest + "!");

若在拿ResourceBundle沒有給locale物件的話,背後會呼叫Locale.getDefault()取得預設的地區,就看系統預設的地區是什麼了。

所以透過定義出各種messages_(language code)_(Region code).properties的檔案,在程式中就可以動態抽換想顯示的字元了。


上一篇
Day28:阿賴耶識
下一篇
Day30:附魔
系列文
Java SE30

尚未有邦友留言

立即登入留言