我想知道是否有人知道如何从Locale类获取格式化或样式代码。我想看到的是美国的英语“en_US”。例如,如果我从Firefox检测到一种语言,则会返回“en-us,en; q = 0.5”。后来当我想输出它时(使用getLanguage()或toString()),它返回“en-us,en; q = 0.5”而不是“en_US”。我尝试了各种函数,但它们似乎都返回了用于生成Locale的字符串。
这些值会进入各种UI元素和配置文件,因此无论生成者是谁或如何生成它们都会更好看,并且当它们转换为字符串时也不容易进行比较(必须)
干杯谢谢!
注意:我问这个是因为我们有遗留代码,当数据是字符串/ xml格式时,它会做很多(而且我的意思是大多数)事情,所以格式化是至关重要的。
答案 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