LocaleContext.getLocale() 返回当前作为“en_US_WOL”的语言环境对象。我使用断点验证了语言环境对象,看起来像英语,美国 - 美国的国家代码,WOL - 变体(语言环境对象的一个字段)。变体字段如何以及为什么会为 getLocale() 方法附加和返回?我该如何阻止呢?(LocaleContext 是 ThreadLocal 类型)
问问题
2806 次
2 回答
0
根据http://docs.oracle.com/javase/6/docs/api/java/util/Locale.html
变体参数是供应商或浏览器特定的代码。例如,Windows 使用 WIN,Macintosh 使用 MAC,POSIX 使用 POSIX。如果有两个变体,请用下划线分隔它们,并将最重要的一个放在第一位。例如,传统的西班牙语排序规则可能会构造一个带有语言、国家和变体参数的语言环境:“es”、“ES”、“Traditional_WIN”。
如果您在特定变体的 Locale 之后,我认为您可以使用此构造函数:
Locale(String language, String country, String variant)
或者调整浏览器的区域设置(如果您的应用程序完全涉及浏览器)
于 2012-12-18T04:59:37.413 回答
0
我也有这个问题。不幸的是,我还没有找到任何内置方法来很好地输出没有 Variant 的语言国家代码,所以我用这样的代码段帮助自己(也许对某人来说很方便):
public static String getLanguageCode(Locale locale) {
StringBuilder sb = new StringBuilder();
sb.append(locale.getLanguage());
if (locale.getCountry() != null && locale.getCountry().length() > 0) {
sb.append("-");
sb.append(locale.getCountry());
}
return sb.toString();
}
于 2016-10-06T10:56:40.210 回答