- JSP 基礎教程
- JSP - 首頁
- JSP - 概述
- JSP - 環境搭建
- JSP - 架構
- JSP - 生命週期
- JSP - 語法
- JSP - 指令
- JSP - 動作
- JSP - 隱式物件
- JSP - 客戶端請求
- JSP - 伺服器響應
- JSP - HTTP 狀態碼
- JSP - 表單處理
- JSP - 編寫過濾器
- JSP - 處理 Cookie
- JSP - 會話跟蹤
- JSP - 檔案上傳
- JSP - 處理日期
- JSP - 頁面重定向
- JSP - 訪問計數器
- JSP - 自動重新整理
- JSP - 傳送郵件
- 高階 JSP 教程
- JSP - 標準標籤庫
- JSP - 資料庫訪問
- JSP - XML 資料
- JSP - JavaBeans
- JSP - 自定義標籤
- JSP - 表示式語言
- JSP - 異常處理
- JSP - 除錯
- JSP - 安全
- JSP - 國際化
- JSP 有用資源
- JSP - 問題與解答
- JSP - 快速指南
- JSP - 有用資源
- JSP - 討論
JSP - 國際化 | i18n | l10n
在本章中,我們將討論 JSP 中國際化的概念。在繼續之前,讓我們瞭解以下三個重要術語:
國際化 (i18n) - 這意味著使網站能夠提供內容的不同版本,這些版本已翻譯成訪問者的語言或國籍。
本地化 (l10n) - 這意味著向網站新增資源,以使其適應特定的地理或文化區域,例如將網站翻譯成印地語。
區域設定 (locale) - 這是特定的文化或地理區域。它通常被稱為語言符號後跟國家/地區符號,它們之間用下劃線分隔。例如,“en_US”表示美國的英語區域設定。
在構建全球網站時,需要考慮許多事項。本教程不會詳細介紹所有內容,但它將為您提供一個很好的示例,說明如何透過區分其位置(即區域設定)為網際網路社群提供不同語言的網頁。
JSP 可以根據請求者的區域設定選擇合適的網站版本,並根據本地語言、文化和需求提供相應的網站版本。以下是返回 Locale 物件的 request 物件的方法。
java.util.Locale request.getLocale()
檢測區域設定
以下是可以用於檢測請求者的位置、語言以及當然還有區域設定的重要區域設定方法。所有以下方法都顯示在請求者瀏覽器中設定的國家/地區名稱和語言名稱。
| 序號 | 方法和描述 |
|---|---|
| 1 | String getCountry() 此方法以 ISO 3166 2 個字母格式返回此區域設定的大寫國家/地區程式碼。 |
| 2 | String getDisplayCountry() 此方法返回適合顯示給使用者的區域設定國家/地區的名稱。 |
| 3 | String getLanguage() 此方法以 ISO 639 格式返回此區域設定的小寫語言程式碼。 |
| 4 | String getDisplayLanguage() 此方法返回適合顯示給使用者的區域設定語言的名稱。 |
| 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 實體顯示所有特殊字元;例如,"ñ" 表示 "ñ","¡" 表示 "¡",如下所示:
<%@ 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>