日期:2014-05-20  浏览次数:20677 次

JAVA国际化的一个小例子,系统为啥不使用默认资源类????
理论上,如果找不到给定Locale的资源,应该使用默认资源啊。
为啥我的程序都使用中文资源呢?????

本小程序包含3个源文件:
主类代码:
import   java.util.Locale;
import   java.util.ResourceBundle;


public   class   Main   {

public   static   void   main(String[]   args)   {
ResourceBundle   rb   =   null;
rb   =   ResourceBundle.getBundle( "MyResource ");
System.out.println(rb.getObject( "key "));
rb   =   ResourceBundle.getBundle( "MyResource ",   Locale.FRANCE);
System.out.println(rb.getObject( "key "));   //这里为什么还输出中文?
}
------------------------------------

默认资源类代码:
import   java.util.ListResourceBundle;

public   class   MyResource   extends   ListResourceBundle   {

@Override
public   Object[][]   getContents()   {
//   TODO   Auto-generated   method   stub
return   contents;
}

static   final   Object[][]   contents   =   {
{ "key ",   "hello "}
};
}
}
----------------------------------------------------------------------

中文资源类代码:

import   java.util.ListResourceBundle;

public   class   MyResource_zh   extends   ListResourceBundle   {

@Override
public   Object[][]   getContents()   {
//   TODO   Auto-generated   method   stub
return   contents;
}

static   final   Object[][]   contents   =   {
{ "key ",   "你好 "}
};
}

------解决方案--------------------
大概Java是根据系统的默认国家和语言来找的默认资源吧

估计过程是这样的:
先找指定的语言,如果没有
再找默认的语言(系统的),如果没有
找默认资源(无后缀的那个)