JAVA国际化的一个小例子,系统为啥不使用默认资源类????

andycpp 2007-08-23 05:29:20
理论上,如果找不到给定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", "你好"}
};
}
...全文
377 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ting6love 2008-11-24
  • 打赏
  • 举报
回复
国际化,应该怎么用啊~学习
berryzz 2008-05-15
  • 打赏
  • 举报
回复
学习中
xxdjnl 2007-08-24
  • 打赏
  • 举报
回复
你这三个好像有错误,根本运行不了,找不到MyResource资源
边城狂人 2007-08-24
  • 打赏
  • 举报
回复
大概Java是根据系统的默认国家和语言来找的默认资源吧

估计过程是这样的:
先找指定的语言,如果没有
再找默认的语言(系统的),如果没有
找默认资源(无后缀的那个)
easyroom 2007-08-24
  • 打赏
  • 举报
回复
ResourceBundle.getBundle("MyResource");
这个方法是比较特别的,它应用了java的反射机制当你的local是french的时候实际上它试图加载MyResource_fr,如果找不到的话会加载默认的也就是MyResource
我猜你没有写MyResource_fr,而MyResource里面是中文。这样就造成了你说的情况

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧