zoukankan      html  css  js  c++  java
  • 国际化问题

    在这里面使用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编码,它支持互相转换,处理和显示现在世界上用不同语言写的文本。
  • 相关阅读:
    Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
    空白文章
    Win7下搭建安卓android开发环境
    《转》武​汉​的​I​T​公​司
    《转》四本与携程相关的书
    《转》奇迹在坚持中
    《C#高级编程》学习笔记----c#内存管理--栈VS堆
    jQuery源码分析-each函数
    栈和队列(3)----算法
    栈和队列(2)----排序
  • 原文地址:https://www.cnblogs.com/eflylab/p/622149.html
Copyright © 2011-2022 走看看