首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Locale.forLanguageTag()与新的Locale()

Locale.forLanguageTag()与新的Locale()
EN

Stack Overflow用户
提问于 2022-09-07 14:42:30
回答 1查看 177关注 0票数 7

用哪一种?

代码语言:javascript
运行
复制
final Locale locale = Locale.forLanguageTag("en-US");

代码语言:javascript
运行
复制
final Locale locale = new Locale("en", "US");

当您查看它们的实现时,它们都有大量的代码,从这段代码中我看不出哪一种代码更快或者应该更好。

当我将它用于我的web应用程序的每一个请求时,很高兴知道哪一个更适合我的情况。

EN

回答 1

Stack Overflow用户

发布于 2022-09-07 16:08:10

常量

Locale类为经常使用的区域设置提供了许多常量:Locale.CANADALocale.CANADA_FRENCHLocale.CHINALocale.UK等。

与其通过new Locale("en", "US")为英语作为语言和美国作为国家创建新的地区实例,不如使用静态字段Locale.US

区域构造函数

有三个重载的构造函数,它们允许您从语言、国家和变体创建Local对象。

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

注意:构造函数调用总是在内存中创建新的对象。

Locale.forLanguageTag

静态方法Locale#forLanguageTag()允许通过提供IETF BCP 47语言标签来构造Locale的实例(参见https://www.rfc-editor.org/rfc/rfc4647https://www.rfc-editor.org/rfc/rfc5646)。

使用语言标记,除了语言和国家,您可以指定各种细节,如日历,数字系统,货币。

注意:解析完成后的 forLanguageTag() (以及Local.Builder)提供了一个来自缓存的实例(如果已经存在)。

示例:

代码语言:javascript
运行
复制
Locale buddhistCal = Locale.forLanguageTag("en-EN-u-ca-buddhist");
Locale arabicNum = Locale.forLanguageTag("en-EN-u-nu-arab");
Locale thaiNum = Locale.forLanguageTag("en-EN-u-nu-thai");
        
LocalDate date = LocalDate.now();
    
System.out.println(date);
System.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(buddhistCal)));
System.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(arabicNum)));
System.out.println(date.format(DateTimeFormatter.ISO_DATE.localizedBy(thaiNum)));

输出:

代码语言:javascript
运行
复制
2022-09-07
2565-09-07     // buddhist calendar
٢٠٢٢-٠٩-٠٧     // arabic numbers
๒๐๒๒-๐๙-๐๗    // thai numbers
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73637436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档