jvm的未翻译部分

时间:2014-09-25 18:06:34

标签: java localization

我偶然发现了以下行为

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

为什么没有英语和法语的交易?我需要下载其他内容吗?我可以找到这样的未翻译事物的参考吗?

亚历山大·坎波斯告诉我这个网页: 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的默认值?

1 个答案:

答案 0 :(得分:1)

您好我正在对Locale类进行一些研究并看一看:

  

public String getDisplayCountry(Locale inLocale)

     
    

返回适合的语言环境国家/地区的名称     显示给用户。如果可能,返回的名称将被本地化     根据inLocale。例如,如果语言环境是fr_FR和     inLocale是en_US,getDisplayCountry()将返回“France”;如果     locale是en_US,inLocale是fr_FR,getDisplayCountry()将返回     “Etats-紫光”。如果返回的名称无法根据本地化     inLocale对。 (比如,我们没有克罗地亚的日本名字),这个     函数依赖于英文名称,最后是ISO代码     作为最后的手段。如果区域设置未指定国家/地区,则为此     function返回空字符串。

  

将返回英文名称。