国际化问题

在这里面使用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编码,它支持互相转换,处理和显示现在世界上用不同语言写的文本。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值