一个页面根据访问者的语言或国家来呈现不同的翻译版本

JSP 国际化

在开始前,需要解释几个重要的概念:

  • 国际化(i18n):表明一个页面根据访问者的语言或国家来呈现不同的翻译版本。
  • 本地化(l10n):向网站添加资源,以使它适应不同的地区和文化。比如网站的印度语版本。
  • 区域:这是一个特定的区域或文化,通常认为是一个语言标志和国家标志通过下划线连接起来。比如"en_US"代表美国英语地区。

如果想要建立一个全球化的网站,就需要关心一系列项目。本章将会详细告诉您如何处理国际化问题,并给出了一些例子来加深理解。

JSP容器能够根据request的locale属性来提供正确地页面版本。接下来给出了如何通过request对象来获得Locale对象的语法:

java.util.Locale request.getLocale()

检测Locale

下表列举出了Locale对象中比较重要的方法,用于检测request对象的地区,语言,和区域。所有这些方法都会在浏览器中显示国家名称和语言名称:

序号 方法 & 描述
1 String getCountry()

返回国家/地区码的英文大写,或 ISO 3166 2-letter 格式的区域

2 String getDisplayCountry()

返回要显示给用户的国家名称

3 String getLanguage()

返回语言码的英文小写,或ISO 639 格式的区域

4 String getDisplayLanguage()

返回要给用户看的语言名称

5 String getISO3Country()

返回国家名称的3字母缩写

6 String 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字符实体来显示特殊字符,比如"ñ" 代表的是"?","¡"代表的是 "?" :

<%@ 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>

原文地址:https://www.cnblogs.com/borter/p/9499042.html

时间: 2024-10-05 21:53:52

一个页面根据访问者的语言或国家来呈现不同的翻译版本的相关文章

如何将一个HTML页面嵌套在另一个页面中

这个在做网页中常要用到,有些通用的内容可集中放在一个页面文件中,其它要用到这些内容的页面只需要包含(引用)这个通用文件即可.这样便于维护,如果有很多网页,当通用内容需要修改时,只改一个文件就可以了,不需要每个文件单独修改. 最典型的应用比如页脚的版权信息等内容可以放在一个叫做footer.html文件里, 然后其他页面文件在页面内容的最后包含这个文件就可以了,具体例子下面有. 要html文件嵌套,最简单的办法是使用SSI(Server Side Include)技术,也就是在服务器端两个文件就被

61 书籍和出版社 的增删改查 几秒后跳转一个页面

主要内容: 书籍的增删改查: 增:  selecct标签    for循环{% for press in  press_list %}...option....{% endif %} <select name="press_id"> {% for press in press_list %} <option value="{{ press.id }}">{{ press.name }}</option> {% endfor %}

微信点击图文消息链接 在根据判断跳到另一个页面 但是 点关闭 将当前的关闭之后 会出现空白页

<script> function ss() { var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机location.href = '2.html?id=3323/#wechat_redirect'; } else if (u.indexOf('iPhone') > -1) {//苹果手机location.href = '2.html?id

用js通过url传参把数据从一个页面传到另一个页面

好长时间没写博客了,时值五一,外面到处人山人海,本宝宝还是好好呆在家学习吧.好了,言归正传.在没有后台支持的情况下,如何实现从一个页面像另一个页面来传递数据呢?应该很多人遇到过这个问题吧.那我就来说说我在项目中遇到的时候是如何解决的. 比如说,有两个页面,page1.html,和page2.html,在page1页面向page2页面传递数据可以通过hash值.上代码: page1.html的代码: 1 <!DOCTYPE html> 2 <html lang="en"

用js在网页上完成倒计时3秒后自动跳转到另一个页面

<body> <div id="time"></div> <a href="#" onclick="stop()">停止</a> <script type="text/javascript"> var i=3; function changeTime(){ document.getElementById("time").innerHTM

一个轻客户端,多语言支持,去中心化,自动负载,可扩展的实时数据写服务的实现方案讨论

背景 背景是设计一个实时数据接入的模块,负责接收客户端的实时数据写入(如日志流,点击流),数据支持直接下沉到HBase上(后续提供HBase上的查询),或先持久化到Kafka里,方便后续进行一些计算和处理,再下沉到文件系统或做别的输出. 在设计中,对于客户端和服务端有这么些目标. 客户端需要支持多语言(Java,C++),做得尽量轻量级,只要连上服务端的ip:port,以RPC的形式调用简单的write就可以把数据写出去.客户端不承担任何逻辑的处理,服务端的负载均衡对客户端是透明的. 服务端想要

input点击链接另一个页面,各种操作

1.链接到某页<input type="button" name="Submit" value="确 定" class="btn" onclick="location.href='filename.html'" />2.返回(等同后退)<input name="Submit2" type="button" class="btn"

JavaScript网站设计实践(七)编写最后一个页面 改进表单

原文:JavaScript网站设计实践(七)编写最后一个页面 改进表单 一.最后一个页面 contact.html.改进表单 在该页面实现的功能: 几乎所有的网站都会有表单填写,对于用户输入和填写的数据,首先我们一般现在前台验证,然后再去后台验证. 在前台最简单的验证:检查必填字段是否填写.填写格式是否符合要求等. 每个表单里面,当获取到输入焦点时,令提示文本消失 现在开始动手来写. 1.实现思路 (1)在这个表单里会验证的是必填字段和邮箱格式是否正确.首先,把判断必填字段和邮箱格式分别写在两个

解决TabActivity中子页面不通过导航跳转到另一个页面的问题

问题:当你的导航在TabActivity中 而子页面的一个按钮需要切换到其中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址:http://download.csdn.net/detail/x605940745/7353695 package com.example.shows; import android.app.TabActivity; import android.content.BroadcastReceiver; im