Java 內建國際化支持,通過「語言代碼_國家代碼」命名規約(如 `zh_CN`、`en_US`),自動匹配當前環境或指定語言的資源包。
# errorMap_en_US.properties RetrievingRequestXMLError=Error retrieving requestXML from HTTP POST RequestXMLParsingError=Error parsing request. Invalid XML format. InvalidServiceTypeError=Invalid service type specified. POSError=Invalid POS node. IdentifyAirportCodeError=Failure to identify airport code: GetCountryCodeError=Failure to get country code of airport code: TagError1=Service type: TagError2=and root tag: TagError3=can not matching Generic=Generic error! RootElementNullError=Root element is null RootTagNullError=Root tag is null GetODError=Can not get OD information IATACodeError=LocationCode can not be empty!
# errorMap_zh_CN.properties RetrievingRequestXMLError=\u83B7\u53D6xml\u8BF7\u6C42\u7684\u5931\u8D25\uFF01 RequestXMLParsingError=\u8BF7\u6C42XML\u89E3\u6790\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u8BF7\u6C42XML\u7684\u683C\u5F0F. InvalidServiceTypeError=\u65E0\u6548\u7684\u64CD\u4F5C\u7C7B\u578B\uFF1A POSError=\u8BF7\u68C0\u67E5POS\u8282\u70B9\u662F\u5426\u6B63\u786E\uFF01 IdentifyAirportCodeError=\u672A\u80FD\u8BC6\u522B\u7684\u4E09\u5B57\u7801\uFF1A GetCountryCodeError=\u65E0\u6CD5\u5F97\u5230\u4E09\u5B57\u7801\u7684\u56FD\u5BB6\u4EE3\u7801\uFF1A TagError1=\u64CD\u4F5C\u7C7B\u578B\uFF1A TagError2=\u548C\u6839\u8282\u70B9\uFF1A TagError3=\u4E0D\u5339\u914D Generic=\u5904\u7406\u8BF7\u6C42\u7684\u5F02\u5E38\uFF01 RootElementNullError=\u6839\u5143\u7D20\u4E0D\u80FD\u4E3A\u7A7A RootTagNullError=\u6839\u6807\u7B7E\u4E0D\u80FD\u4E3A\u7A7A GetODError=\u4E0D\u80FD\u83B7\u53D6OD\u4FE1\u606F IATACodeError=LocationCode\u4E0D\u80FD\u4E3A\u7A7A\uFF01
注意:中文屬性值需使用 `native2ascii` 轉義或 IDE 自動處理 Unicode 轉義序列(`\uXXXX`)。
import java.util.Locale;
import java.util.ResourceBundle;
public class ErrorMap {
public static String getErrorText(String errorTag, String language) {
Locale currentLocale;
if ("en".equals(language)) {
currentLocale = new Locale("en", "US");
} else if ("zh".equals(language)) {
currentLocale = new Locale("zh", "CN");
} else {
currentLocale = Locale.getDefault(); // 系統默認
}
// 基礎名 errorMap,自動拼接 _語言_國家.properties
ResourceBundle rb = ResourceBundle.getBundle("i18n.errorMap", currentLocale);
return rb.getString(errorTag);
}
public static void main(String[] args) {
System.out.println(getErrorText("IdentifyAirportCodeError", "zh")); // 輸出中文
System.out.println(getErrorText("IdentifyAirportCodeError", "en")); // 輸出英文
}
}