Servlet 3.1 国际化
当我们开发的网站要让全球的用户都能访问时,国际化就显得特别重要
本章节和接下来的几个小章节将会介绍如何实现国际化
在开始之前,先来看看三个重要术语:
-
- 国际化(i18n)
- 这意味着一个网站提供了不同版本的翻译成访问者的语言或国籍的内容
-
- 本地化(l10n)
- 这意味着向网站添加资源,以使其适应特定的地理或文化区域,例如网站翻译成印地文 ( Hindi )
-
- 区域设置(locale)
- 这是一个特殊的文化或地理区域。它通常指语言符号后跟一个下划线和一个国家符号 例如 "en_US" 表示针对 US 的英语区域设置
当建立一个全球性的网站时有一些注意事项。
本教程不会讲解这些注意事项的完整细节,但会通过一个很好的范例演示如何通过差异化定位(即区域设置)来让网页以不同语言呈现
Servlet 可以根据请求者的区域设置拾取相应版本的网站,并根据当地的语言、文化和需求提供相应的网站版本
request 对象返回 Locale 对象的方法
java.util.Locale request.getLocale()
检测区域设置
下表列出了重要的区域设置方法,这些方法都显示了请求者浏览器中设置的国家名称和语言名称
我们可以使用它们来检测请求者的地理位置、语言和区域设置
下面所有的方法
序号 | 方法 & 描述 |
---|---|
1 | String getCountry() 返回以 2 个大写字母形式的 ISO 3166 格式的该区域设置的国家/地区代码 |
2 | String getDisplayCountry() 返回适合向用户显示的区域设置的国家的名称 |
3 | String getLanguage() 以小写字母形式的 ISO 639 格式返回该区域设置的语言代码 |
4 | String getDisplayLanguage() 返回适合向用户显示的区域设置的语言的名称 |
5 | String getISO3Country() 返回该区域设置的国家的三个字母缩写 |
6 | String getISO3Language() 返回该区域设置的语言的三个字母的缩写 |
范例
下面的范例演示了如何显示某个请求的语言和相关的国家
// author: 简单教程(www.twle.cn) // Copyright © 2015-2065 www.twle.cn. All rights reserved. package cn.twle.demo; import java.io.*; import java.util.Locale; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "GetLocaleServlet", urlPatterns = {"get_locale"}, loadOnStartup = 1) public class GetLocaleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取客户端的区域设置 Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "检测区域设置 - Servlet 基础教程 | 简单教程(www.twle.cn)"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body>\n" + "<p>" + title + "</p>" + "<p>" + language + "</p>\n" + "<p>" + country + "</p>\n" + "</body></html>"); } }
在浏览器上输入 http://localhost:8080/servlet/get_locale 显示结果如下