У нас есть приложение, использующее базовый JSP/сервлет, который весь текст на английском языке жестко закодирован на страницах JSP. Мы рассматриваем вопрос о интернационализации нашего приложения, поэтому нам нужны какие-то способы извлечь текст из файла свойств.
Вот что я сделал до сих пор:
1) Создайте файл с именем XXXXX-messages_en.properties
, добавьте пару ключ/значение в файл свойств, например. AAAAA = Hello World
2) Загрузите соответствующие теглибы JSTL на страницу JSP
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3) Замените предыдущий текст на
<fmt:message key="AAAAA" bundle="${XXXXX}"/>
4) Добавьте тег setBundle в страницу JSP:
<fmt:setBundle basename="XXXXX-messages" var="XXXXX"/>
И перезапустите сервер, все отображается правильно.
Однако мой вопрос об использовании библиотеки интернационализации JSTL:
ВОПРОС 1) Кажется, что я должен добавить тег <fmt:setBundle>
на каждую из отдельных страниц JSP, что немного уродливо, и если что-то нужно изменить в будущем (смена имени?), это усложнит жизнь.
Я думаю о том, что я могу создать отдельную страницу и поместить в нее <fmt:setBundle>
, а затем включить эту страницу с помощью <jsp:include>
. Или я могу ввести это через фильтр сервлета? Я бы сказал, что я не совсем доволен вариантами.
Есть ли какой-нибудь рекомендуемый способ сделать это?
ВОПРОС 2) Как указать язык по умолчанию, если там нет файлов свойств соответствия? Я тестировал в своем случае, если я помещаю <fmt:setLocale>
на страницу JSP с французским языком, страница может загружаться правильно. Означает ли это, что английская версия всегда является по умолчанию или просто потому, что моя операционная система/браузер - английский?
Что произойдет, если китайский/японский пользователь откроет мою страницу, и у меня есть английский и французский файл свойств там?