English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
До начала необходимо объяснить несколько важных концепций:
Если вы хотите создать глобальный веб-сайт, вам нужно заботиться о целой серии проектов. В этой главе мы подробно расскажем, как обрабатывать международную поддержку, и дадим несколько примеров для лучшего понимания.
Веб-контейнер может предоставлять правильную версию страницы на основе свойства locale запроса. Далее приведен синтаксис получения объекта Locale через объект запроса:
java.util.Locale request.getLocale()
В таблице перечислены важные методы объекта Locale, используемые для проверки региона, языка и области объекта запроса. Все эти методы будут отображать имя страны и имя языка в браузере:
Номер | Метод & Описание |
---|---|
1 | String getCountry(); Вернуть код региона в верхнем регистре, или код региона в формате ISO 3166 2-буквенного формата |
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>Обнаружение Locale</title> </head> <body> <center> <h1>Обнаружение Locale</h1> </center> <p align="center"> <% out.println("Язык : " + language + "<br />"); out.println("Страна : " + country + "<br />"); %> </p> </body> </html>
JSP может использовать западноевропейские языки для вывода страницы, например, английский, испанский, немецкий, французский, итальянский и т.д. Таким образом, установка заголовка информации о языке очень важна для правильного отображения всех символов.
Второй момент — необходимо использовать HTML-символьные коды для отображения специальных символов, например, "ñ" означает ñ, "¡" означает ¡ :
<%@ page import="java.io.*,java.util.Locale" %> <%@ page import="javax.servlet.*,javax.servlet.http.* "%>" <% // Установить тип содержимого ответа response.setContentType("text/html"); // Установить код языка испанского. response.setHeader("Content-Language", "ru"); 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"; //Получить 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"; //Получить 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"; //Получить 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>Форматированный процент: <% out.print(formattedPerc); %></p> </div> </body> </html>