我偶然发现以下行为

public static void main( String[] args ) {
    Locale.setDefault( new Locale( "ar" ));

    System.out.println(new Locale( "ar" ).getDisplayName());
    System.out.println(new Locale( "en" ).getDisplayName());
    System.out.println(new Locale( "fr" ).getDisplayName());
}


输出量

 العربية
 English
 French


我偶然发现以下行为

public static void main( String[] args ) {
    Locale.setDefault( new Locale( "en" ));

    System.out.println(new Locale( "ar" ).getDisplayName());
    System.out.println(new Locale( "en" ).getDisplayName());
    System.out.println(new Locale( "fr" ).getDisplayName());
}


输出量

 Arabic
 English
 French


我偶然发现以下行为

public static void main( String[] args ) {
    Locale.setDefault( new Locale( "fr" ));

    System.out.println(new Locale( "ar" ).getDisplayName());
    System.out.println(new Locale( "en" ).getDisplayName());
    System.out.println(new Locale( "fr" ).getDisplayName());
}


输出量

 arabe
 anglais
 français


为什么没有英语和法语的翻译?我是否需要下载其他内容?我可以找到未翻译的参考文献吗?

Alexander Campos告诉我有关此网页的信息:
http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html

所以我执行了以下代码。

public static void main( String[] args ) {
    show("en");
    show("zh_CN");
    show("zh_TW");
    show("fr");
    show("de");
    show("it");
    show("ja");
    show("ko");
    show("pt_BR");
    show("sv");
}

public static void show(String in){
    Locale.setDefault( new Locale( in ) );
    System.out.println(new Locale( "ar" ).getDisplayName());
}


输出量

Arabic
Arabic
Arabic
arabe
Arabisch
arabo
アラビア語
아랍어
Arabic
arabiska


因此,我得到jvm支持的语言只有一小部分,它们记录在网页中。但是,为什么我仍然获得zh_CN和zh_TW的默认值?

最佳答案

嗨,我正在研究Locale类,并对此进行了研究:


公共字符串getDisplayCountry(Locale inLocale)


返回适合于以下语言环境的国家/地区的名称:
向用户显示。如果可能,返回的名称将被本地化
根据inLocale。例如,如果语言环境为fr_FR且
inLocale为en_US,getDisplayCountry()将返回“ France”;如果
语言环境为en_US,inLocale为fr_FR,getDisplayCountry()将返回
“ Etats-Unis”。如果返回的名称无法根据
inLocale。 (例如,我们没有克罗地亚的日语名称),这
功能取决于英文名称,最后取决于ISO代码
作为最后的度假价值。如果语言环境未指定国家/地区,则此
函数返回空字符串。



将返回英文名称。

07-24 09:17