- 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-Java Bean
- JSP - 自定义标签
- JSP——表达式语言
- JSP——异常处理
- JSP-调试
- JSP-安全性
- JSP-国际化
- JSP 有用资源
- JSP - 问题与解答
- JSP - 快速指南
- JSP - 有用的资源
- JSP - 讨论
JSP - 国际化| i18n| 10n
在本章中,我们将讨论 JSP 中的国际化概念。在继续之前,让我们了解以下三个重要术语 -
国际化 (i18n) - 这意味着网站能够提供翻译成访问者语言或国籍的不同版本的内容。
本地化 (l10n) - 这意味着向网站添加资源以使其适应特定的地理或文化区域,例如将印地语翻译到网站。
locale - 这是一个特定的文化或地理区域。它通常被称为语言符号,后跟国家/地区符号,并用下划线分隔。例如,“ en_US ”代表美国的英语语言环境。
建立全球网站时应注意许多事项。本教程不会向您提供有关此内容的完整详细信息,但它将为您提供一个很好的示例,说明如何通过区分不同的位置(即区域设置)向互联网社区提供不同语言的网页。
JSP 可以根据请求者的区域设置选择适当的站点版本,并根据当地语言、文化和要求提供适当的站点版本。以下是请求对象的方法,它返回 Locale 对象。
java.util.Locale request.getLocale()
检测区域设置
以下是重要的区域设置方法,您可以使用它们来检测请求者的位置、语言,当然还有区域设置。以下所有方法都会显示请求者浏览器中设置的国家/地区名称和语言名称。
编号 | 方法及说明 |
---|---|
1 | 字符串 getCountry() 此方法以 ISO 3166 2 字母格式返回该区域设置的大写国家/地区代码。 |
2 | 字符串 getDisplayCountry() 此方法返回适合向用户显示的区域设置国家/地区的名称。 |
3 | 字符串 getLanguage() 此方法以 ISO 639 格式返回该区域设置的小写语言代码。 |
4 | 字符串 getDisplayLanguage() 此方法返回适合向用户显示的区域设置语言的名称。 |
5 | 字符串 getISO3Country() 此方法返回该语言环境所在国家/地区的三个字母的缩写。 |
6 | 字符串 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>