分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

JSP 国际化

发布时间:2023-09-06 02:28责任编辑:彭小芳关键词:暂无标签

JSP 国际化


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

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

如果想要建立一个全球化的网站,如何处理国际化问题。

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


java.util.Locale request.getLocale()


检测Locale

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


方法 & 描述

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


String getDisplayCountry()
返回要显示给用户的国家名称

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


String getDisplayLanguage()
返回要给用户看的语言名称


String getISO3Country()
返回国家名称的3字母缩写

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字符实体来显示特殊字符,比如"&#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 国际化

原文地址:https://www.cnblogs.com/Alanf/p/10218582.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved