Servlet – 国际化 (I18N)
国际化 (I18N) 是设计 Web 应用程序的过程,它可以自动为各种国家、各种语言和各种货币提供支持,而无需对应用程序进行任何更改,称为国际化 (I18N)。它被称为 I18N,因为在 I 和 N 之间;有18个字符;这就是 I18N 的原因。如果您正在开发应用程序并希望根据特定区域或语言显示消息、货币、日期、时间等,则国际化是Java的强大概念之一。让我们先讨论一些有助于理解这些概念的主题,而不是深入探讨这个概念:
- 国际化(I18N):它的任务是创建一个足够灵活以在任何环境中工作的系统。
- 本地化 (I10N):它是安排程序在特定语言环境中运行的过程。
- 区域设置:它代表选定的地理、政治或文化区域。语言环境的字符串表示形式由语言和国家/地区的国际标准两字符缩写和一个可选变体组成,由下划线 (_)字符分隔。
启动语言环境
- Web 应用程序要么使用getLocale()方法从请求中检索区域设置,要么允许用户显式选择区域设置以获取给定用户的正确字符串。
- 需要区域设置来执行其任务的操作被命名为区域设置敏感的,它使用区域设置来为用户定制信息。
- 一旦您构造了一个 Locale,就不会执行有效性检查,因为 Locale 对象只是一个邻域的标识符。
java.util.Locale request.getLocale()
使用的方法
- getCountry():它以 ISO3166 2 字母格式返回此语言环境的大写国家/地区代码。
- getDisplayCountry():它返回适合显示给用户的区域设置国家/地区的名称。
- getLanguage():它以 ISO 639 格式返回此区域设置的小写语言代码。
- getDisplayLanguage():它返回适合显示给用户的区域设置语言的名称。
- getISO3Country():它返回此语言环境所在国家/地区的三字母缩写。
- getISO3Language():它返回此区域设置语言的三字母缩写。
例子
此示例显示如何显示请求的语言和关联国家/地区
Java
import java.io.*;
import java.util.Locale;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetLocale extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Get the client's Locale
Locale locale = request.getLocale();
String language = locale.getLanguage();
String country = locale.getCountry();
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Detecting Locale";
String docType =
"\n";
out.println(docType +
"\n"
+
"" + title
+ " \n"
+
"\n"
+
"" + language
+ "
\n"
+
"" + country
+ "
\n"
+
"
< / html > "
);
}
}
Java
import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.servlet.*;
import javax.servlet.http.*;
public class DateLocale extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// Get the client's Locale
Locale locale = request.getLocale();
String date = DateFormat
.getDateTimeInstance(
DateFormat.FULL,
DateFormat.SHORT, locale)
.format(new Date());
String title = "Locale Specific Dates";
String docType =
"\n";
out.println(docType +
"\n"
+
"" + title
+ " \n"
+
"\n"
+
"" + date
+ "
\n"
+
"
< / html > "
);
}
}
语言设定
- servlet 输出以西欧语言编写的页面,例如英语、西班牙语、德语、法语、意大利语、荷兰语、挪威语、芬兰语或瑞典语。注意特殊字符“ñ”和“¡”的使用。像这样的字符虽然在英语中很少见,但在西欧语言中却很普遍。 Servlet 有两种方法来获取这些字符:使用 HTML字符实体或 Unicode 转义序列。
- 将 HTML 页面中的特定字符序列显示为单个字符的能力。这些序列称为字符实体,以与号 (&) 开头,以分号 (;) 结尾。字符实体可以被命名或编号。
- Unicode 全球转义序列是一种字符编码系统,旨在支持现代世界各种语言的书面文本的交换、处理和显示。此外,它还支持多种书面语言的经典和历史文本。
地区特定日期
您可以使用Java.text.DateFormat 类及其静态 getDateTimeInstance() 方法来格式化特定于语言环境的日期和时间。以下是显示如何格式化特定于给定语言环境的日期的示例 -
Java
import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.servlet.*;
import javax.servlet.http.*;
public class DateLocale extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// Get the client's Locale
Locale locale = request.getLocale();
String date = DateFormat
.getDateTimeInstance(
DateFormat.FULL,
DateFormat.SHORT, locale)
.format(new Date());
String title = "Locale Specific Dates";
String docType =
"\n";
out.println(docType +
"\n"
+
"" + title
+ " \n"
+
"\n"
+
"" + date
+ "
\n"
+
"
< / html > "
);
}
}