在构建多语言应用时,Java 提供了完善的国际化(i18n)支持,而其中的核心类之一便是
java.util.Locale
。它代表了一个特定的地理、政治或文化区域,如“中文-中国”、“英语-美国”等。本文将带你全面了解
Locale
的基础知识、常见用法,以及 JDK 10 中的一些重要增强。
一、什么是 Locale
?
Locale
是 Java 国际化功能的基石。它不是日期格式或翻译资源本身,而是用来标识“语言环境”的对象。系统根据 Locale
来选择合适的资源、格式和行为。
例如,以下代码可根据不同地区格式化数字和日期:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
System.out.println(format.format(123456.78)); // 输出 123 456,78
二、如何创建 Locale
?
Java 提供了多种方式来创建 Locale
对象:
✅ 1. 使用标准常量(推荐)
Locale locale = Locale.US; // 等同于 new Locale("en", "US")
✅ 2. 使用构造函数
Locale locale = new Locale("zh", "CN"); // 中文-中国
✅ 3. 使用语言标签(推荐方式)
Locale locale = Locale.forLanguageTag("en-GB"); // 英语-英国
这种方式符合 BCP 47 语言标签标准,更通用、更易与 Web 接口集成。
✅ 4. 使用 Locale.Builder
适合动态构建复杂的 Locale
:
Locale locale = new Locale.Builder()
.setLanguage("ja")
.setRegion("JP")
.setScript("Latn")
.build();
三、常用方法与应用场景
1. 🌐 国际化消息处理
Java 使用