• 党务问答:党组与党委有何区别? 2018-02-21
  • 杨浦区贯彻实施长护险 春节加班满足老人护理需求 2018-02-21
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-21
  • 冬奥观察:奥林匹克在“云”间 2018-02-20
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-20
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-20
  • 人民网驻阿尔及利亚记者报道集 2018-02-19
  • 党务问答:党组与党委有何区别? 2018-02-19
  • MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • 集团原董事长违纪被查 人员伤亡事故频发 湖北宜化:去年亏损额超过公司市值 2018-02-17
  • 【jsp教程】JSP 国际化

    栏目: JSP 发布于: 2014-11-25 15:16:25

    JSP 国际化

    在开始前,需要解释几个重要的概念:

    • 国际化(i18n):表明一个页面根据访问者的语言或国家来呈现不同的翻译版本。
    • 本地化(l10n):向网站添加资源,以使它适应不同的地区和文化。比如网站的印度语版本。
    • 区域:这是一个特定的区域或文化,通常认为是一个语言标志和国家标志通过下划线连接起来。比如"en_US"代表美国英语地区。

    如果想要建立一个全球化的网站,就需要关心一系列项目。本章将会详细告诉您如何处理国际化问题,并给出了一些例子来加深理解。

    JSP容器能够根据request的locale属性来提供正确地页面版本。接下来给出了如何通过request对象来获得Locale对象的语法:

    java.util.Locale request.getLocale() 
    

    检测Locale

    下表列举出了Locale对象中比较重要的方法,用于检测request对象的地区,语言,和区域。所有这些方法都会在浏览器中显示国家名称和语言名称:

    序号 方法 & 描述
    1 String getCountry()

    返回国家/地区码的英文大写,或 ISO 3166 2-letter 格式的区域
    2 String getDisplayCountry()

    返回要显示给用户的国家名称
    3 String getLanguage()

    返回语言码的英文小写,或ISO 639 格式的区域
    4 String getDisplayLanguage()

    返回要给用户看的语言名称
    5 String getISO3Country()

    返回国家名称的3字母缩写
    6 String getISO3Language()

    返回语言名称的3字母缩写

    实例演示

    这个例子告诉我们如何在JSP中显示语言和国家:

    <%@ page import="java.io.*,java.util.Locale" %>
    <%@ page import="javax.servlet.*,javax.servlet.http.* "%>
    <%
       //获取客户端本地化信息
       Locale locale = request.getLocale();
       String language = locale.getLanguage();
       String country = locale.getCountry();
    %>
    <html>
    <head>
    <title>Detecting Locale</title>
    </head>
    <body>
    <center>
    <h1>Detecting Locale</h1>
    </center>
    <p align="center">
    <% 
       out.println("Language : " + language  + "<br />");
       out.println("Country  : " + country   + "<br />");
    %>
    </p>
    </body>
    </html>
    

    语言设置

    JSP可以使用西欧语言来输出一个页面,比如英语,西班牙语,德语,法语,意大利语等等。由此可见,设置Content-Language信息头来正确显示所有字符是很重要的。

    第二点就是,需要使用HTML字符实体来显示特殊字符,比如"&#241;" 代表的是"?","&#161;"代表的是 "?" :

    <%@ page import="java.io.*,java.util.Locale" %>
    <%@ page import="javax.servlet.*,javax.servlet.http.* "%>
    <%
        // Set response content type
        response.setContentType("text/html");
        // Set spanish language code.
        response.setHeader("Content-Language", "es");
        String title = "En Espa?ol";
    
    %>
    <html>
    <head>
    <title><%  out.print(title); %></title>
    </head>
    <body>
    <center>
    <h1><%  out.print(title); %></h1>
    </center>
    <div align="center">
    <p>En Espa?ol</p>
    <p>?Hola Mundo!</p>
    </div>
    </body>
    </html>
    

    区域特定日期

    可以使用java.text.DateFormat类和它的静态方法getDateTimeInstance()来格式化日期和时间。接下来的这个例子显示了如何根据指定的区域来格式化日期和时间:

    <%@ page import="java.io.*,java.util.Locale" %>
    <%@ page import="javax.servlet.*,javax.servlet.http.* "%>
    <%@ page import="java.text.DateFormat,java.util.Date" %>
    
    <%
        String title = "Locale Specific Dates";
        //Get the client's Locale
        Locale locale = request.getLocale( );
        String date = DateFormat.getDateTimeInstance(
                                      DateFormat.FULL, 
                                      DateFormat.SHORT, 
                                      locale).format(new Date( ));
    %>
    <html>
    <head>
    <title><% out.print(title); %></title>
    </head>
    <body>
    <center>
    <h1><% out.print(title); %></h1>
    </center>
    <div align="center">
    <p>Local Date: <%  out.print(date); %></p>
    </div>
    </body>
    </html>
    

    区域特定货币

    可以使用java.text.NumberFormat类和它的静态方法getCurrencyInstance()来格式化数字。比如在区域特定货币中的long型和double型。接下来的例子显示了如何根据指定的区域来格式化货币:

    <%@ page import="java.io.*,java.util.Locale" %>
    <%@ page import="javax.servlet.*,javax.servlet.http.* "%>
    <%@ page import="java.text.NumberFormat,java.util.Date" %>
    
    <%
        String title = "Locale Specific Currency";
        //Get the client's Locale
        Locale locale = request.getLocale( );
        NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
        String formattedCurr = nft.format(1000000);
    %>
    <html>
    <head>
    <title><% out.print(title); %></title>
    </head>
    <body>
    <center>
    <h1><% out.print(title); %></h1>
    </center>
    <div align="center">
    <p>Formatted Currency: <%  out.print(formattedCurr); %></p>
    </div>
    </body>
    </html>
    

    区域特定百分比

    可以使用java.text.NumberFormat类和它的静态方法getPercentInstance()来格式化百分比。接下来的例子告诉我们如何根据指定的区域来格式化百分比:

    <%@ page import="java.io.*,java.util.Locale" %>
    <%@ page import="javax.servlet.*,javax.servlet.http.* "%>
    <%@ page import="java.text.NumberFormat,java.util.Date" %>
    
    <%
        String title = "Locale Specific Percentage";
        //Get the client's Locale
        Locale locale = request.getLocale( );
        NumberFormat nft = NumberFormat.getPercentInstance(locale);
        String formattedPerc = nft.format(0.51);
    %>
    <html>
    <head>
    <title><% out.print(title); %></title>
    </head>
    <body>
    <center>
    <h1><% out.print(title); %></h1>
    </center>
    <div align="center">
    <p>Formatted Percentage: <%  out.print(formattedPerc); %></p>
    </div>
    </body>
    </html>
    

    本文转载自:w3cschool
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:【jsp教程】JSP 国际化
    IT技术书籍推荐:
    Java编程思想(第4版)
    Java编程思想(第4版)
    埃史尔 (作者), 陈昊鹏 (译者)
    《Java编程思想(第4版)》书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Iava’UO系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。 从《Java编程思想(第4版)》一书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对c、c++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。