LINUX.ORG.RU

Как с этим безобразием работать?

 , ,


0

1

Как понял я:
1) Создать *.properties файл, название которого состоит из выбранного basename и локали
2) Настроить в jsp локаль
3) Настроить в jsp bundle basename
4) Вызвать fmt:message

А вот как сделал:

cat src/main/resources/Dictionary_ru-RU.properties
index = \u0412\u044B \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0435\u0441\u044C \u0432
<fmt:setLocale value="ru_RU"/>
<fmt:bundle basename="Dictionary">
<fmt:message key="index"/>
</fmt:bundle>

Вместо желаемой надписи получаю

???index???

ЧЯДНТ?

★★★★★

ты не указываешь кодировку страницы, и браузер нат тобой ржот в итоге

Deleted ()
Ответ на: комментарий от Deleted

Указываю:

<jsp:directive.page contentType="text/html;charset=UTF-8"/>
Кстати, в Dictionary_ru-RU.properties слова «index» нету. Там все на русском.

f1xmAn ★★★★★ ()
Ответ на: комментарий от f1xmAn

В общем тебе надо убедиться как отдает текст сервер: проще всего поставить firebug и поглядеть заголовки на предмет кодировок и сырые данные - вопросики там или нет.

Кстати, в Dictionary_ru-RU.properties слова «index» нету. Там все на русском.

это видно, но непонятно, может это у них такое сообщение об ошибках.

кстати что там в логах сервера?

Deleted ()
Последнее исправление: Deleted (всего исправлений: 2 )

ru_RU а не ru-RU в названии файла. А еще лучше просто ru и там и там, если ты не задался благой целью локализовывать свой продукт на российский русский, казахстанский русский и украинский русский.

Legioner ★★★★★ ()
Ответ на: комментарий от Deleted

кстати что там в логах сервера?

Неполный server.log домена, в котором крутится приложение. По диагонали просмотрел, ошибок не заметил, может ты увидишь?

f1xmAn ★★★★★ ()
Ответ на: комментарий от f1xmAn

Либо в теге bundle, либо в web.xml написать что-то вроде

[code]
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>Dictionary</param-value>
</context-param>
[/code]

Должно работать, завтра на работе сделаю тестовый проект, скину сюда, если не решится проблема.

Legioner ★★★★★ ()
Ответ на: комментарий от f1xmAn

Это не путь, это префикс, который будет указан в Class.getResource. Например ru.org.linux.translations.messages, при этом в результирующем war-файле должен быть файл /WEB-INF/classes/ru/org/linux/translations/messages_ru.properties

Кстати попробуй создать просто Dictionary.properties, без «_ru_RU». Если не может найти из-за чего-то, связанного с локалью, то он будет использовать этот файл как последнюю попытку хоть где-то найти перевод.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Кстати попробуй создать просто Dictionary.properties, без «_ru_RU».

Без изменений.

f1xmAn ★★★★★ ()
Ответ на: комментарий от Legioner

Я решил проблему. Причина была в одном интересном моменте, но сначала предыстория. Как можно было догадаться по путям, проект собирается maven'ом. В war собирает maven-war-plugin, а деплоит maven-glassfish-plugin. Я использовал всего лишь несколько *.jspx страничек, поэтому команда сборки-деплоя выглядела примерно так

mvn clean war:war glassfish:redeploy
в результате, в собранном пакете отсутствовали мои *.properties файлы. Но если вместо war:war использовать package, то все ок. Большое спасибо.

f1xmAn ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.