2012-12-18 116 views
2

LocaleContext.getLocale()返回當前爲「en_US_WOL」的語言環境對象。我使用斷點來驗證語言環境對象,並且看起來像en-語言英語,美國 - 美國的國家代碼,WOL - 變體(Locale對象的字段)。 如何以及爲什麼變體字段正在追加並返回getLocale()方法?我該如何阻止? (LocaleContext是類型的ThreadLocal的)將語言和國家/地區代碼附加「變體」的語言環境

回答

0

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

的變體參數是賣方或特定瀏覽器的代碼。例如,使用WIN for Windows,MAC for Macintosh和POSIX for POSIX。在有兩個變體的地方,用下劃線分隔它們,並且首先放置最重要的變體。例如,傳統的西班牙語排序規則可能會將語言,國家和變體的參數構建爲:「es」,「ES」,「Traditional_WIN」。

如果你是語言環境特定的變化後,我想你可以使用此構造函數:

Locale(String language, String country, String variant) 

或調整您的瀏覽器的區域設置(如果您的應用程序涉及到瀏覽器的話)

+1

我需要的輸出是「EN_US ' 只要。當我使用getLocale()時,我不想要變體'WOL'。如果有另一個函數只返回language_CountryCode,那麼我將不得不修改我的API(LocalContext類)來調用該函數,並且只返回getLocale()中的2個值 –

0

我也有這個問題。不幸的是我還沒有發現任何內置的方法,很好地輸出郎國的代碼,而變,所以我有這樣的片段順手拿(也許會是得心應手的人):

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(); 
} 
相關問題