Locale.forLanguageTag() 与 new Locale()

hor*_*oje 8 java locale localization

使用哪一个?

final Locale locale = Locale.forLanguageTag("en-US");
Run Code Online (Sandbox Code Playgroud)

或者

final Locale locale = new Locale("en", "US");
Run Code Online (Sandbox Code Playgroud)

当您查看它们的实现时,它们都有大量代码,我无法从这些代码中看出哪一个更快或应该首选。

由于我将它用于对 Web 应用程序的每个请求,因此很高兴知道哪一个更适合我的情况。

Ale*_*nko 0

常数

\n

Locale类为常用的语言环境提供了许多常量:Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA,Locale.UK等。

\n

最好使用静态字段,而不是通过创建英语作为语言和美国作为国家/地区的新语言环境实例new Locale("en", "US")Locale.US

\n

语言环境构造函数

\n

有三个重载构造函数允许您创建一个Local根据语言、国家/地区和变体创建对象。

\n\n

如果您对这些信息足够了解,请使用构造函数。

\n

注意:构造函数调用总是创建一个新的构造函数调用总是在内存中

\n

语言标签的区域设置

\n

静态方法允许通过提供IETF BCP 47 语言标签Locale#forLanguageTag()来构造 的实例(另请参阅RFC 4647“语言标签匹配”RFC 5646“用于识别语言的标签”Locale)。

\n

使用除了语言和国家/地区之外的语言标签,您可以指定各种详细信息,例如日历数字系统货币

\n

注:( forLanguageTag()以及Local.Builder)解析完成后,从缓存中提供一个实例(如果已经存在)。

\n

例子:

\n
Locale buddhistCal = Locale.forLanguageTag("en-EN-u-ca-buddhist");\nLocale arabicNum = Locale.forLanguageTag("en-EN-u-nu-arab");\nLocale thaiNum = Locale.forLanguageTag("en-EN-u-nu-thai");\n        \nLocalDate date = LocalDate.now();\n    \nSystem.out.println(date);\nSystem.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(buddhistCal)));\nSystem.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(arabicNum)));\nSystem.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(thaiNum)));\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Locale buddhistCal = Locale.forLanguageTag("en-EN-u-ca-buddhist");\nLocale arabicNum = Locale.forLanguageTag("en-EN-u-nu-arab");\nLocale thaiNum = Locale.forLanguageTag("en-EN-u-nu-thai");\n        \nLocalDate date = LocalDate.now();\n    \nSystem.out.println(date);\nSystem.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(buddhistCal)));\nSystem.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(arabicNum)));\nSystem.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(thaiNum)));\n
Run Code Online (Sandbox Code Playgroud)\n