Тег <fmt:setLocale>
Стандартная библиотека тегов JSP
Тег <fmt:setLocale> используется для сохранения заданной локали в переменной конфигурации локали.
Формат синтаксиса
<fmt:setLocale value="<string>" variant="<string>" scope="<string>"/>
Атрибуты
Тег <fmt:setLocale> имеет следующие атрибуты:
| Attribute | Описание | Обязательный | Значение по умолчанию |
|---|---|---|---|
| value | Указывает код языка ISO-639 и код страны ISO-3166 | Да | en_US |
| variant | Вариант, зависящий от браузера | нет | Отсутствует |
| scope | Область действия переменной конфигурации локали | нет | Page |
Пример программы
Пакеты ресурсов содержат объекты, зависящие от локали. Пакеты ресурсов содержат пары ключ-значение. Когда вашей программе нужны ресурсы, зависящие от локали, вы можете совместно использовать все пары ключ-значение для всех локалей, но также можете указать переведённые значения для локали. Пакеты ресурсов помогают предоставлять содержимое, зависящее от локали.
Файл пакета ресурсов Java содержит набор пар ключ-значение. Метод, который нас интересует, включает создание скомпилированных классов Java, наследующих от класса java.util.ListResourceBundle. Необходимо скомпилировать эти классы и поместить их в CLASSPATH вашего веб-приложения.
Давайте определим набор ресурсов по умолчанию:
package com.example;
import java.util.ListResourceBundle;
public class Example_En extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "One"},
{"count.two", "Two"},
{"count.three", "Three"},
};
}
Теперь определите другой пакет ресурсов для испанской локали:
package com.example;
import java.util.ListResourceBundle;
public class Example_es_ES extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "Uno"},
{"count.two", "Dos"},
{"count.three", "Tres"},
};
}
Скомпилируйте указанные выше файлы в Examble.class и Examble_es_ES.class, затем поместите их в CLASSPATH веб-приложения. Теперь можно использовать теги JSTL для отображения этих трёх чисел, вот так:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setLocale 标签</title>
</head>
<body>
<fmt:bundle basename="com.example.Example">
<fmt:message key="count.one"/><br/>
<fmt:message key="count.two"/><br/>
<fmt:message key="count.three"/><br/>
</fmt:bundle>
<!-- 修改地区-->
<fmt:setLocale value="es_ES"/>
<fmt:bundle basename="com.example.Example">
<fmt:message key="count.one"/><br/>
<fmt:message key="count.two"/><br/>
<fmt:message key="count.three"/><br/>
</fmt:bundle>
</body>
</html>
Вывод следующий:
One Two Three Uno Dos Tres
См.<fmt:bundle>и<setBundle>для получения дополнительной информации.
Другие расширения