當我們的程式可能會有其他語言使用者時,就得開始考慮國際化的問題了,專業術語叫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的檔案,在程式中就可以動態抽換想顯示的字元了。