Locale类是Java国际化基石,标识语言环境如“zh_CN”,驱动ResourceBundle、DateFormat等API按区域规则加载资源、格式化日期数字、排序字符串,并支持Builder等安全创建方式。
Locale类是Java国际化(i18n)的基石,它不直接翻译文字或格式化数据,而是**标识“当前用的是哪种语言环境”**——比如“简体中文(中国)”、“英语(美国)”或“法语(法国)”。系统根据这个标识,自动选择对应的日期格式、数字分隔符、货币符号、排序规则,以及最关键的:加载哪一套语言资源。
每个Locale对象至少包含以下一项或多项标识:
zh(中文)、en(英语)、ja(日语)CN(中国)、US(美国)、JP(日本)POSIX、phonebook(德语电话簿排序)组合后形成标准标签,例如zh_CN、en_US、de_DE_phonebook,完全符合BCP 47国际规范。
它本身不执行操作,但为其他API提供上下文依据:
messages_zh_CN.properties或messages_en_US.properties
123456.78为123 456,78
开发中推荐优先使用清晰、安全的方式:
Locale.CHINA、Locale.US、Locale.JAPAN
new Locale.Builder().setLanguage("zh").setRegion("CN").build()
new Locale("zh", "CN");注意不要传入自然语言名(如new Locale("汉语", "中国")无效)运行时需准确识别用户所在环境:
Locale.getDefault() 获取JVM启动时继承的操作系统语言设置(如Windows区域设为“中文(简体,中国)”,返回zh_CN)Locale.getAvailableLocales() 列出JRE支持的所有Locale,可用于下拉菜单筛选或校验输入
locale.getDisplayLanguage() 和 locale.getDisplayCountry() 返回面向用户的本地化名称,适合界面展示