当前位置:K88软件开发文章中心编程语言JavaScriptJS02 → 文章内容

JSP 国际化

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 13:17:44

JSP 国际化在开始前,需要解释几个重要的概念:国际化(i18n):表明一个页面根据访问者的语言或国家来呈现不同的翻译版本。本地化(l10n):向网站添加资源,以使它适应不同的地区和文化。比如网站的印度语版本。区域:这是一个特定的区域或文化,通常认为是一个语言标志和国家标志通过下划线连接起来。比如"en_US"代表美国英语地区。如果想要建立一个全球化的网站,就需要关心一系列项目。本章将会详细告诉您如何处理国际化问题,并给出了一些例子来加深理解。JSP容器能够根据request的locale属性来提供正确地页面版本。接下来给出了如何通过request对象来获得Locale对象的语法:java.util.Locale request.getLocale() 检测Locale下表列举出了Locale对象中比较重要的方法,用于检测request对象的地区,语言,和区域。所有这些方法都会在浏览器中显示国家名称和语言名称:序号方法 & 描述1String getCountry()返回国家/地区码的英文大写,或 ISO 3166 2-letter 格式的区域2String getDisplayCountry()返回要显示给用户的国家名称3String getLanguage()返回语言码的英文小写,或ISO 639 格式的区域4String getDisplayLanguage()返回要给用户看的语言名称5String getISO3Country()返回国家名称的3字母缩写6String getISO3Language()返回语言名称的3字母缩写实例演示这个例子告诉我们如何在JSP中显示语言和国家:<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% //获取客户端本地化信息 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?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.text.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.text.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>

JSP 国际化