Изображение i18n в JSF2 - PullRequest
5 голосов
/ 27 января 2011

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

FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale);

, который прекрасно работает, за одним исключением:

<h:graphicImage library="images" name="pic.gif" />

использует Accept-Language, отправленный в запросе браузера, чтобы определить, какую локаль использовать. Я могу обойти это, поместив строку локали в каждый файл .properties и ссылаясь на изображения по

<h:graphicImage library="#{resource.locale}/images" name="pic.gif" />

но для отдельных изображений нет запасного варианта, поэтому мне нужно иметь копию каждого изображения, независимо от того, отличается оно или нет, в каталоге каждой локали. Это довольно громоздко, учитывая, что я поддерживаю 9 локалей и, возможно, больше в будущем. Любой совет будет высоко ценится.

1 Ответ

2 голосов
/ 27 января 2011

Интересный вопрос. Однако встроенной поддержки для этого нет ни у JSF, ни у остатка Java EE. Лучше всего создать Servlet, который знает о резервной локали и, следовательно, в основном выполняет следующий тест:

if (getServletContext().getResource(request.getPathInfo()) == null) {
    // Display fallback image instead.
}

В конечном итоге вы можете сделать это с помощью пользовательского компонента JSF, который выполняет ту же проверку.

...