2013-08-23 65 views
0

我想有所有國家的列表。我發現java Locale對此很有用。 Locale.getAvailableLocales()返回JRE上所有已安裝的語言環境。翻譯從Java Locale.getAvailableLocales()國家

的問題是:

  1. 是,如果安全跨越diferent的JRE使用?比如OpenJDK,IBM Java,Oracle Java,1.6,1.7?有更好的實施嗎?
  2. 可以將Locale.getCountry()翻譯爲特定語言環境嗎?我發現,如果僅可使用這些少數提供語言環境ENGLISH,FRENCH,GERMAN,ITALIAN,JAPANESE,KOREAN,CHINESE,SIMPLIFIED_CHINESE,TRADITIONAL_CHINESE,FRANCE,GERMANY,ITALY,JAPAN,KOREA,CHINA,PRC,TAIWAN,UK,US,CANADA_FRENCH ,但如果我想將其轉換爲Locale("sk", "SK")斯洛伐克語什麼。所有國家保留其英文名稱,只有斯洛伐克語被正確翻譯:SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika)。什麼是用新翻譯擴展可用國家/地區翻譯目錄的java Locale的正確方法。

private static final Locale SLOVAK = new Locale("sk", "SK"); 
Collection<?> COUNTRIES_LIST_EN = (Collection<?>) CollectionUtils 
    .collect(Arrays.asList(Locale.ENGLISH.getAvailableLocales()), new Transformer() { 
     @Override 
     public String transform(Object input) { 
     System.out.println(String.format("%s EN:%s FR:%s SK:%s", ((Locale) input).getCountry(), 
             ((Locale) input).getDisplayName(), 
             ((Locale) input).getDisplayName(Locale.FRANCE), 
             ((Locale) input).getDisplayName(SLOVAK))); 
     return ((Locale) input).getDisplayCountry(); 
     } 
    }); 

輸出:

JP EN:Japanese (Japan) FR:japonais (Japon) SK:Japanese (Japan) 
PE EN:Spanish (Peru) FR:espagnol (Pérou) SK:Spanish (Peru) 
EN:English FR:anglais SK:English 
JP EN:Japanese (Japan,JP) FR:japonais (Japon,JP) SK:Japanese (Japan,JP) 
PA EN:Spanish (Panama) FR:espagnol (Panama) SK:Spanish (Panama) 
CH EN:German (Switzerland) FR:allemand (Suisse) SK:German (Switzerland) 
US EN:English (United States) FR:anglais (Etats-Unis) SK:English (United States) 
SK EN:Slovak (Slovakia) FR:slovaque (Slovaquie) SK:Slovenčina (Slovenská republika) 
+0

'Locale.getDisplayCountry(Locale.ITALIAN)'等等一樣。但有一些漏洞。但是人們可以與自己的定義添加自己的語言環境。它保持凌亂。 –

回答

1

根據API Locale.getAvaliableLocale返回至少一個Locale實例等於Locale.US。這是API不保證其結果是所有的JRE