Веб-приложение в jsp/сервлетах - локализация с использованием fmt:message

Я пишу простое приложение www, используя jsp и сервлеты на Tomcat 7.0. Он многоязычный, и я хочу выводить все сообщения для облегчения перевода. Я пытаюсь добиться этого, используя тег fmt:message. Это моя тестовая страница:

SimplePage.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<fmt:setLocale value="en_US" scope="application" />
<fmt:setBundle basename="localization.message" var="b" />
<html>
<body>
    <fmt:message key="key1" bundle="${b}" />
</body>

message_en_US.properties

key1=test

Вывод страницы:

???key1???

Я поместил message_en_US.properties в исходную папку с именем «localization». Я также пытался поместить его в WEB-INF, WebContent и src (с изменением базового имени пакета) - результат тот же. Я ценю любую помощь.


person phi293    schedule 21.03.2013    source источник
comment
Связанный: stackoverflow .com/questions/4276061/   -  person BalusC    schedule 21.03.2013


Ответы (1)


Если он у вас есть в исходной папке с именем localization, вам не нужно добавлять к нему префикс локализации.

<fmt:setBundle basename="message" var="b" />
person Sotirios Delimanolis    schedule 21.03.2013
comment
Как именно это отвечает на конкретную проблему? ОП, кажется, не сделал ничего плохого в этом отношении. - person BalusC; 21.03.2013
comment
Ну... но теперь он работает, я имею в виду, что я удалил префикс локализации. Но мне интересно, это подходящее место для хранения моих файлов локализации? - person phi293; 21.03.2013
comment
@BalusC У меня это тоже работает. Теперь я сомневаюсь в себе, но библиотека fmt и ее тег bundle используют ресурсы пути к классам для оценки ваших пакетов. Поэтому поместить их в исходную папку — один из способов сделать это. - person Sotirios Delimanolis; 21.03.2013
comment
OP упомянул, что он помещен в исходную папку с именем localization, которую я интерпретировал как пакет localization, тогда базовое имя localization.message должно быть правильным. Но, видимо, это исправило. Похоже, есть некоторая путаница / неправильное понимание используемых терминов. - person BalusC; 21.03.2013
comment
Нет, он сказал into source folder named "localization". - person Sotirios Delimanolis; 21.03.2013