如何正确使用java.util.Locale检查澳大利亚语言环境

And*_*y A 5 java locale

问题:如何正确使用java.util.locale检查用户的语言环境?

简介:我使用遗留代码在Locale中使用预定义的静态来检查用户是否在例如法国......

if(Locale.FRANCE.equals(locale) || Locale.FRENCH.equals(locale)) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

我想添加一些代码来检查用户是否在澳大利亚.但是,Locale只有一组有限的预定义静态,而AUSTRALIA不是其中之一.我似乎能够做到以下......

if(new Locale("AU").equals(locale)) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,这与现有代码不一致.这样做的正确方法是什么?如果我给出的第一个例子是正确的,为什么预定义的静态列表如此有限?

And*_*rup 5

new Locale( "AU" )将是语言"AU"(无论是).你需要两个参数构造函数!

这些Locale.equals()方法比较两者language,countryvariant.您可能应该像这样检查:

if ( "AU".equals( locale.getCountry() ) ) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)

至于为什么预定义的列表Locale如此有限:通过.我们应该感到荣幸的是,除了一切之外什么en_US都没有:-)

干杯,