Тег <fmt:setLocale>

JSP 标准标签库Стандартная библиотека тегов 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>для получения дополнительной информации.


JSP 标准标签库Стандартная библиотека тегов JSP

Другие расширения