国际化问题

在这里面使用JSP来利用property文件应用的一个能显示多国语言的页面,
仅一个JSP和4个properties配置文件
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.awt.*" %>

<%
String languageDefault = Locale.getDefault().getLanguage();
String countryDefault = Locale.getDefault().getCountry();

Locale defaultLocale 
= null;
String charset = null;
if (languageDefault == "en" || languageDefault.equals("en")){
        defaultLocale 
= Locale.ENGLISH;
        charset 
= "iso-8859-1";
}
else if (countryDefault == "CN" || countryDefault.equals("CN")){
        defaultLocale 
= Locale.SIMPLIFIED_CHINESE;
        charset 
= "gb2312";
}
else if (countryDefault == "TW" || countryDefault.equals("TW")){
        defaultLocale 
= Locale.TRADITIONAL_CHINESE;
        charset 
= "big5";
}
else{
        System.out.println(
"LanguageDefault not equals en.CountryDefault not equals TW or CN");
}

if (session.isNew()){
        session.setAttribute(
"locale",defaultLocale);
        session.setAttribute(
"charset",charset);
}
else{
        
String language = request.getParameter("language");
        
if (language == null || language.equals(null)){
                session.setAttribute(
"locale",defaultLocale);
                session.setAttribute(
"charset",charset);
        }
else{
                Locale locale 
= null;
                
if (language.equals("Locale.SIMPLIFIED_CHINESE") || language.equals( "Locale.SIMPLIFIED_CHINESE")){
                        locale 
= Locale.SIMPLIFIED_CHINESE;
                        charset 
= "gb2312";
                }
else if (language.equals( "Locale.TRADITIONAL_CHINESE") || language.equals( "Locale.TRADITIONAL_CHINESE")){
                        locale 
= Locale.TRADITIONAL_CHINESE;
                        charset 
= "big5";
                }
else if (language.equals( "Locale.ENGLISH") || language.equals( "Locale.ENGLISH")){
                        locale 
= Locale.ENGLISH;
                        charset 
= "iso-8859-1";
                }
                session.setAttribute(
"locale",locale);
                session.setAttribute(
"charset",charset);
        }
}

Locale locale 
= (Locale)session.getAttribute("locale");
ResourceBundle messagesBundle 
= ResourceBundle.getBundle("propertyFiles/uni_property",locale);//资源文件放在propertyFiles包下
String localeCountry = locale.getCountry();
String localeLanguage = locale.getLanguage();
System.out.println(
"locale:"+locale.toString());
System.out.println(
"localeCountry:"+localeCountry);
System.out.println(
"localeLanguage:"+localeLanguage);



if(localeLanguage == "en"){
        response.setContentType(
"text/html; charset=ISO8859-1");
}
else if (localeCountry == "CN"){
        response.setContentType(
"text/html; charset=gb2312");
}
else if(localeCountry == "TW"){
        response.setContentType(
"text/html; charset=big5");
}
%>

<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Internationzational by propery file</title>
<base target="contents">
</head>
<body >

<table border="0" width="796" style="font-size: 10pt" cellspacing="0" cellpadding="0" height="60">
  
<tr rowspan=5><td colspan=3>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
  
<tr rowspan=5><td colspan=3>&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
  
<tr>
    
<td width="196" height="68"></td>
    
<td width="470" height="64">
      
<align="center"><href="#" onclick="href='uni_property.jsp?language=Locale.SIMPLIFIED_CHINESE'">
      
<%=messagesBundle.getString("simplifiedChinese")%></a> | 
      
<href="#" onclick="href='uni_property.jsp?language=Locale.TRADITIONAL_CHINESE'">
      
<%=messagesBundle.getString("traditionalChinese")%></a> |
      
<href="#" onclick="href='uni_property.jsp?language=Locale.ENGLISH'">
      
<%=messagesBundle.getString("english")%></a></td>
     
<td width="130" height="56">
      
<align="center">
      
<%=messagesBundle.getString("username")%>
     
</td>
  
</tr>
</table>
</body>
</html>

四个资源文件如下
#uni_property.properties
username=JSP Developer
simplifiedChinese=SimplifiedChinese
traditionalChinese=TraditionalChinese
english=English 
#uni_property_en.properties
username=JSP Developer
simplifiedChinese=SimplifiedChinese
traditionalChinese=TraditionalChinese
english=English
#uni_property_zh_CN.properties
username=JSP\u5f00\u53d1\u8005
simplifiedChinese=\u7b80\u4f53\u4e2d\u6587
traditionalChinese=\u7e41\u4f53\u4e2d\u6587
english=\u82f1\u6587
#uni_property_zh_TW.properties
username=JSP\u958b\u767c\u8005
simplifiedChinese=\u7c21\u9ad4\u4e2d\u6587
traditionalChinese=\u7e41\u9ad4\u4e2d\u6587
english=\u82f1\u6587

在同连接上单击会出现不同语言界面,另外需要注意的是
ResourceBundle messagesBundle = ResourceBundle.getBundle("propertyFiles/uni_property",locale);//资源文件放在propertyFiles包下
该方法查找的起始位置为默认的包,也就是没有名字的包,我们这里放属性文件放在propertyFiles包下,所以为propertyFiles/
另外在属性文件中使用的是Unicode编码,它支持互相转换,处理和显示现在世界上用不同语言写的文本。

posted on 2007-01-17 01:06  冯岩  阅读(831)  评论(0编辑  收藏  举报

导航