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>