如何从Java Locale获取样式语言/国家/地区代码

时间:2012-03-26 17:44:25

标签: java locale

我想知道是否有人知道如何从Locale类获取格式化或样式代码。我想看到的是美国的英语“en_US”。例如,如果我从Firefox检测到一种语言,则会返回“en-us,en; q = 0.5”。后来当我想输出它时(使用getLanguage()或toString()),它返回“en-us,en; q = 0.5”而不是“en_US”。我尝试了各种函数,但它们似乎都返回了用于生成Locale的字符串。

这些值会进入各种UI元素和配置文件,因此无论生成者是谁或如何生成它们都会更好看,并且当它们转换为字符串时也不容易进行比较(必须)

干杯谢谢!

注意:我问这个是因为我们有遗留代码,当数据是字符串/ xml格式时,它会做很多(而且我的意思是大多数)事情,所以格式化是至关重要的。

2 个答案:

答案 0 :(得分:2)

Locale#toString()会返回您想要的内容。

事情就是这样:您从Firefox中检测到的语言使用the format specified in RFC 2616,这是HTTP规范。这与您在Java Locale中看到的任何格式都不同,因为该格式非常符合HTTP。

答案 1 :(得分:0)

问题在于您要打印的内容。

EN-US,连接; Q = 0.5

表示英语的偏好质量为50%,可以识别为en-us或en。

如果您收到http请求

Accept-Language:da,en-gb; q = 0.8,en; q = 0.7

这意味着:“我更喜欢丹麦语,但会接受英国英语和其他类型的英语”

首先,您必须根据规范解码您的http请求,然后获取Locales