правильный способ сделать интернационализацию в JSF для полных страниц HTML? - PullRequest
1 голос
/ 27 июня 2011

У меня есть приложение JSF2, и до сих пор я выполняю интернационализацию обычным способом с пакетом ресурсов сообщений;пример:

<f:view contentType="text/html" locale="#{loginHandler.currentLocale}">

<f:loadBundle basename="MessageResource" var="msg" />

<h:outputText value="#{msg.user_firstNameLabel}" />

Моя проблема в том, что у меня есть информационная страница с абзацами контента на двух языках.Я предпочитаю не брать каждую строку текста на странице и делать их ключевыми | значениями в файле свойств сообщения.

Если содержимое находится в двух html-файлах;скажем contactus_en.html и contactus_fr.html, что будет правильным способом отображения правильного языка в зависимости от текущей локали?

Спасибо!Rob

1 Ответ

3 голосов
/ 28 июня 2011

Самый простой способ сделать то, что вы просите, - это создать контроллер, который будет считывать содержимое ваших HTML-файлов и возвращать их по требованию. В таком случае вы можете выписать его со своей страницы JSF с очень простым объявлением:

<h:outputText escape="false" value="#{yourController.contactus}" />

Поскольку вы собираетесь читать содержимое файла (ов) HTML, вы должны указать JSF не избегать их (таким образом escape = "false").
Конечно, ваш контроллер должен предоставить метод с именем getContactus(), который должен читать содержимое интересующих вас HTML-файлов и возвращать их как String. Я полагаю, что вы можете легко справиться с этим:)


Редактировать - добавить информацию о том, как выбрать файл.

Если ваши HTML-файлы зависят от локали, поэтому они уже двуязычны, но различаются для английского и французского языков, вы можете легко получить текущий вид локали из UIViewRoot:

Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
String fileName = "contactus_" + currentLocale.toString() + ".html";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...