读书人

国际化的有关问题高手请关注

发布时间: 2011-12-22 23:36:25 作者: rapoo

国际化的问题,高手请关注
java中国家化的问题如何解决?
正在做一个web项目,需要用到国际化。网上搜索了些资料,我的国家化过程如下:
1:先生成Resource类

import java.io.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Locale;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

public class Resource {
private static final String HEAD_FILE = "ATTR "; //属性文件名的前缀
private static final String LAST_FILE= ".properties "; //属性文件名的后缀
private static final String FILE_PATH= "c:// "; //定义属性文件存放的目录
public Resource() {

}

/*以下是根据传入的属性文件中的 "键 ",而得到与区域与语言设置相对应的 "值 "*/

public synchronized String srcStr(String disStr) {
String ret = " ";
try {
Locale locale = Locale.getDefault(); //获取系统的区域与语言默认设置
System.out.println( "locale is : "+locale.toString());
String baseName = new StringBuffer()

.append(HEAD_FILE).append( "_ ").append(locale.toString())

.append(LAST_FILE).toString(); //根据local属性,前缀以及后缀生成文件名

System.out.println( "baseName is: "+baseName);
String fileName = new StringBuffer(FILE_PATH).append(baseName).toString(); //获取文件的完整路径



InputStream is = new FileInputStream(fileName); //生成文件输入流
PropertyResourceBundle pr = new PropertyResourceBundle(is); //根据输入流构造PropertyResourceBundle的实例
ret = pr.getString(disStr);


if(locale.equals(Locale.CHINA)){
ret = new String(ret.getBytes( "ISO-8859-1 "), "UTF-8 ");
} //如果是要显示中文,则要进行内码的转换
is.close();
return ret;
}
catch (Exception e) {
e.printStackTrace();
return disStr;
}
}
public static void main(String args[]){
Resource res = new Resource();
System.out.println( "Password is: "+res.srcStr( "Password "));
}
}

2:生成资源文件
LoginName=用户

Password=密码

Login=登陆

LoginTime=登陆时间

LogOff=注销登陆

ChineseVersion=中文版

MainPage=首页

SoftWare=软件

Hardware=硬件

YourLocationMainPage=当前位置:首页

MyCalendar=我的日程

MyMails=我的邮件

R&D=研发区

Forum=讨论区

DeveloperProcess=开发进程

TechnologyCommunion=技术交流


利用native2ascii命令将其转化为utf-8编码

3:在页面中使用Resource类的对象。比如:
<jsp:useBean id= "resource " scope= "session " class= "localtest.Resource "/>
<p align=right> <%=resource.srcStr( "Password ")%> </p>

可惜,我打开页面,发现是乱码,类似于问号的那样。
期间,我将资源文件用微软带的记事本打开,将资源文件的编码改为utf-8,可惜,无济于事

麻烦高手解决下,谢谢拉


[解决办法]
...

我的国际化问题 没有写什么代码 直接对资源文件命名。

applicationResources_zh_CN.properties
applicationResources.properties(默认)
applicationResources_US.properties

浏览器自动找
如果你浏览器设置为美国英语,它自己就去找applicationResources_US.properties
如果设置为简体中文,就去找applicationResources_zh_CN.properties

读书人网 >Java Web开发

热点推荐