如何从Java区域设置中获取样式语言/国家/地区代码



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

这些值进入各种UI元素和配置文件,因此无论是谁或如何生成,都最好让它们看起来相同,而且当它们转换为字符串时(必须如此),比较也不容易。

干杯,谢谢!

注意:我之所以这么问,是因为当数据是string/xml格式时,我们的遗留代码会做很多(我的意思是大多数)事情,所以格式化是至关重要的。

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

事情是这样的:您从Firefox中检测到的语言使用RFC 2616中指定的格式,即HTTP规范。这与您在Java Locale中看到的任何格式都不同,因为该格式非常特定于HTTP。

问题在于您试图打印的内容的含义。

恩,恩;q=0.5

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

在您收到http请求的情况下

接受语言:da,en-gb;q=0.8,en;q=0.7

意思是:"我更喜欢丹麦语,但会接受英国英语和其他类型的英语"

因此,首先您必须根据规范解码http请求,然后获得Locales

最新更新