问题:如何正确使用java.util.locale检查用户的区域设置?
摘要:我使用的遗留代码在Locale中使用预定义的静态来检查用户是否在例如法国......
if(Locale.FRANCE.equals(locale) || Locale.FRENCH.equals(locale)) {
// do stuff
}
我希望添加一些代码来检查用户是否在澳大利亚。但是,Locale只有一组有限的预定义静态,而AUSTRALIA不是其中之一。我似乎能够做到以下几点......
if(new Locale("AU").equals(locale)) {
// do stuff
}
但是,这与现有代码不一致。这样做的正确方法是什么?如果我给出的第一个例子是正确的,为什么预定义的静态列表如此有限?
答案 0 :(得分:5)
没有。 new Locale( "AU" )
将是“AU”语言(无论是什么)。你需要两个参数构造函数!
Locale.equals()
方法会比较language
,country
和variant
。您应该像这样检查:
if ( "AU".equals( locale.getCountry() ) ) { /* do stuff */ }
至于为什么预定义的Locale
列表如此有限:通过。我们应该感到荣幸的是除了en_US
之外还有其他东西: - )
干杯,