上一节:

  JSP 国际化

  • 国际化| i18n | l10n

    在本章中,我们将讨论JSP中的国际化概念。在继续之前,让我们了解以下三个重要术语-
    • 国际化(i18n) -这意味着使网站能够提供翻译成访客语言或国籍的不同版本的内容。
    • 本地化(l10n) -这意味着向网站添加资源以使其适应特定的地理或文化区域,例如将印地语翻译成网站。
    • 地区 -这是一个特定的文化或地理区域。它通常被称为语言符号,后跟一个国家符号,由下划线分隔。例如,“en_US ”表示美国的英语语言环境。
    建立全球网站时,应注意许多事项。本教程不会为您提供完整的详细信息,但会为您提供一个很好的示例,说明如何通过区分其位置(即区域设置)向互联网社区提供不同语言的网页。JSP可以根据请求者的语言环境来选择适当的站点版本,并根据本地语言,文化和要求提供适当的站点版本。以下是请求对象的方法,该方法返回Locale对象。
    
    java.util.Locale request.getLocale() 
    
  • 检测语言环境

    以下是重要的语言环境方法,可用于检测请求者的位置,语言以及语言环境。以下所有方法都显示在请求者的浏览器中设置的国家/地区名称和语言名称。
    方法 描述
    String getCountry() 此方法以ISO 3166 2字母格式以大写返回该地区的国家/地区代码。
    String getDisplayCountry() 此方法返回适合显示给用户的地区国家名称。
    String getLanguage() 此方法以ISO 639格式返回该地区的小写语言代码。
    String getDisplayLanguage() 此方法返回适合显示给用户的地区语言的名称。
    String getISO3Country() 此方法返回该地区国家的三个字母的缩写。
    String getISO3Language() 此方法返回该地区语言的三个字母的缩写。
    以下示例显示如何在JSP中显示请求的语言和相关国家/地区-
    
    <%@ page import = "java.io.*,java.util.Locale" %>
    <%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
    <%
       //Get the client's Locale
       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.txt.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.txt.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>
    
上一节: