JSP - Internationalization| i18n| l10n

在本章中,我们将讨论JSP中的国际化概念.在我们继续之前,让我们理解以下三个重要条款 :

  • 国际化(i18n) : 这意味着允许网站提供翻译成访问者语言或国籍的不同版本的内容.

  • 本地化(l10n) : 这意味着向网站添加资源以使其适应特定的地理或文化区域,例如印地语翻译到网站.

  • locale : 这是一个特定的文化或地理区域.它通常被称为语言符号,后跟国家符号,由下划线分隔.例如," en_US "表示美国的英语区域设置.

有许多项目应该是建立一个全球网站时要小心.本教程不会为您提供有关此内容的完整详细信息,但它将为您提供一个很好的示例,说明如何通过区分其位置(即区域设置)来向不同语言提供不同语言的网页.

JSP可以根据请求者的语言环境选择适当的站点版本,并根据本地语言,文化和要求提供适当的站点版本.以下是请求对象的方法,它返回Locale对象.

java.util.Locale request.getLocale()

检测区域设置

以下是您可以用来检测请求者位置,语言的重要区域设置方法课程区域设置.以下所有方法都显示请求者浏览器中设置的国家名称和语言名称.

S.No.方法&描述
1

String getCountry()

此方法以ISO 3166 2字母为此区域设置返回大写的国家/地区代码格式.

2

String getDisplayCountry()

此方法返回区域设置国家/地区的名称适合于向用户显示.

3

String getLanguage()

此方法返回语言代码小写,适用于ISO 639格式的此语言环境.

4

String getDisplayLanguage()

此方法返回适合于显示的语言环境语言的名称y给用户.

5

String getISO3Country()

此方法返回三个字母的缩写对于此区域设置的国家/地区.

6

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&ntilde;ol";
%>

<html>
   <head>
      <title><%  out.print(title); %></title>
   </head>
   
   <body>
      <center>
         <h1><%  out.print(title); %></h1>
      </center>
      
      <div align = "center">
         <p>En Espa&ntilde;ol</p>
         <p>&iexcl;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"; 
//获取客户端的Locale 
 Locale locale = request.getLocale(); 
 String date = DateFormat.getDateTimeInstance(
 DateFormat.FULL,
 DateFormat.SHORT,
 locale).format(new Date()); 
%> 
< html> 
< head> 
< title><%out.print(title); %GT;&LT;/标题&GT; 
</head> 
< body> 
< center> 
< h1><%out.print(title); %GT;&LT;/H1&GT; 
</center> 
< div align ="center"> 
< p>本地日期:<%out.print(date); %GT;&LT;/p为H. 
</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.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 类和其静态 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>