位置:首頁 > 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>