位置:首页 > Java技术 > JSP在线教程 > JSP国际化|I18N|L10N

JSP国际化|I18N|L10N

在我们开始之前,让我解释一下三个重要的方面:

  • Internationalization (i18n): 这意味着使一个网站,以提供不同版本的内容翻译成访问者的语言或国籍。

  • Localization (l10n): 这意味着将资源添加到一个网站,以使其适应例如印地文翻译某个特定的地理或文化区域的网站。

  • locale: 这是一个特定的文化或地理区域。它通常被称为语言符号​​后跟一个国家的象征这是由下划线分隔。例如用“en_US”表示美国英语语言环境。

有哪些应该同时建立了一个全球性的网站受到照顾的项目数。本在线教程不会给你完整的细节,但它会告诉您如何可以通过差异化的定位,即提供网页在不同的语言显示,以互联网社区一个很好的例子。语言环境。

网站的一个JSP可以适当的拾取版本的基础上请求者的语言环境,并根据当地的语言,文化和要求,提供相应的现场版本。以下是请求对象的方法,它返回Locale对象。

java.util.Locale request.getLocale() 

检测区域设置:

以下可以用它来检测请求者的位置当然语言环境,语言和区域设置的重要方法。所有下面的方法显示国家名称和语言名称在请求者的浏览器设置。

S.N. 方法& 描述
1 String getCountry()
This method returns the country/region code in upper case for this locale in ISO 3166 2-letter format.
2 String getDisplayCountry()
This method returns a name for the locale's country that is appropriate for display to the user.
3 String getLanguage()
This method returns the language code in lower case for this locale in ISO 639 format.
4 String getDisplayLanguage()
This method returns a name for the locale's language that is appropriate for display to the user.
5 String getISO3Country()
This method returns a three-letter abbreviation for this locale's country.
6 String getISO3Language()
This method returns a three-letter abbreviation for this locale's language.

例子:

这个例子说明了如何显示一个语言和相关国家在一个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可以输出写入西欧语言如英语的网页,西班牙语,德语,法语,意大利语,荷兰语等,在这里,它设置内容语言标头以正确显示所有的字符是非常重要的。

第二点是使用HTML实体,例如,要显示所有的特殊字符“n”代表“N”和“¡”代表“¡”,如下所示:

<%@ 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>