java.util.Locale 代表特定地理、政治、文化區域。日期/時間格式化、數字貨幣格式、消息國際化均依賴 Locale。
Locale locale = Locale.getDefault(); // JVM 從 OS 獲取,可用 -Duser.language -Duser.country 指定
Locale.CHINA // zh_CN
Locale.SIMPLIFIED_CHINESE // zh_CN (別名)
Locale.TRADITIONAL_CHINESE // zh_TW
Locale.US // en_US
Locale.UK // en_GB
Locale.JAPAN // ja_JP
Locale.KOREA // ko_KR
// 共 20+ 常量
new Locale("zh", "CN") // 語言 + 國家
new Locale("zh", "CN", "variant") // 語言 + 國家 + 變體 (極少用)
Locale[] locales = Locale.getAvailableLocales();
// 輸出: ja_JP, es_PE, en, ja_JP_JP, es_PA, sr_BA, ..., zh_CN, zh_TW, zh_HK, ...
格式:language_COUNTRY (如 zh_CN) 或僅 language (如 en)。
| 方法 | 說明 |
|---|---|
getLanguage() | ISO-639 語言代碼 (如 "zh") |
getCountry() | ISO-3166 國家代碼 (如 "CN") |
getDisplayName(Locale) | 本地化顯示名 (如 "中文 (中國)") |
getISO3Language() | 三字母語言代碼 (如 "zho") |
getISO3Country() | 三字母國家代碼 (如 "CHN") |
Date date = new Date(113, 8, 19, 14, 22, 30);
Locale cn = Locale.SIMPLIFIED_CHINESE;
Locale us = new Locale("en", "US");
String cnStr = DateFormat.getDateInstance(DateFormat.MEDIUM, cn).format(date);
String usStr = DateFormat.getDateInstance(DateFormat.MEDIUM, us).format(date);
System.out.println("cn = " + cnStr); // 2013-9-19
System.out.println("us = " + usStr); // Sep 19, 2013
Accept-Language 頭或用戶偏好解析 LocaleResourceBundle) 命名遵循 baseName_language_COUNTRY.properties 約定