区域设置会在语言和国家/地区代码中添加“变体”

时间:2012-12-18 01:55:45

标签: java locale

LocaleContext.getLocale()返回当前为“en_US_WOL”的语言环境对象。我使用断点验证了语言环境对象,看起来像英语,美国 - 美国的国家代码,WOL - 变体(Locale对象的字段)。 如何以及为什么变量字段会为getLocale()方法追加并返回?我该怎么办呢? (LocaleContext的类型为ThreadLocal)

2 个答案:

答案 0 :(得分:0)

根据http://docs.oracle.com/javase/6/docs/api/java/util/Locale.html

  

variant参数是供应商或浏览器特定的代码。例如,使用WIN for Windows,MAC for Macintosh和POSIX for POSIX。哪里有两个变体,用下划线分开它们,并将最重要的变量放在第一位。例如,传统西班牙语排序规则可能会构建一个语言环境,其中包含语言,国家和变体的参数:“es”,“ES”,“Traditional_WIN”。

如果您在特定变体的Locale之后,我认为您可以使用此构造函数:

Locale(String language, String country, String variant) 

或调整浏览器的区域设置(如果您的应用程序完全涉及浏览器)

答案 1 :(得分:0)

我也有这个问题。不幸的是我还没有找到任何内置方法来很好地输出没有Variant的lang-country代码,所以我用这样的片段帮助自己(也许对某些人来说很方便):

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();
}