JSF 2.0: неверный язык выбран после развертывания на другом сервере - PullRequest
2 голосов
/ 07 сентября 2011

Я сделал веб-приложение с JSF 2.0.Он поддерживает немецкий (по умолчанию) и английский, который выбирается языками, отправленными в http-заголовке.

На моем локальном сервере (Tomcat 6.0) автоматический выбор языка был правильным, если бы у меня был «немецкий»«Наивысший приоритет, заявка была немецкой.То же самое для английского языка.

Но теперь я развернул его на своем веб-сервере (Tomcat 6.0 за веб-сервером Apache, используя ModJk), и теперь он только на английском языке.Но заголовок http остается прежним:

Accept-Language:      de-de,en-us;q=0.8,de;q=0.5,en;q=0.3
(Fetched from Firebug)

Запись для языковых пакетов в моем файле Face-config.xml выглядит следующим образом:

<application>
    <locale-config>
        <default-locale>de</default-locale>
        <supported-locale>en</supported-locale>
    </locale-config>
    <resource-bundle>
        <base-name>de.citkomm.tbm.locale.Lang</base-name>
        <var>lang</var>
    </resource-bundle>
</application>

Файлы "Lang.properties"и" Lang_en.properties "в файле de.citkomm.tbm.locale правильно развернуты.

Это проблема с Apache + ModJk + Tomcat 6.0 или что-то неправильно настроено?У кого-нибудь есть идея, почему Tomcat выбирает неправильный язык?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Ну, я не знаю, почему Tomcat использует переменную окружения моего сервера Ubuntu, но это так.

Изменил LANG с "en_US.UTF-8" на "de_DE.UTF-8", и теперь все в порядке. : S

В любом случае, спасибо!

0 голосов
/ 07 сентября 2011

Это странно ... Я думаю, что mod_jk не должен влиять на это, поскольку вы проверяете, что заголовок HTTP по-прежнему содержит правильный Accept-Language. Для проверки работоспособности, если вы находитесь в той же внутренней сети, вы можете попытаться получить прямой доступ к веб-приложению Tomcat и вообще пропустить веб-сервер Apache, однако я сомневаюсь, что это проблема.

Если у вас есть какие-либо общие библиотеки, развернутые в вашей серверной среде Tomcat, возможно, что используется другая версия вашей реализации JSF, возможно, более ранняя версия, в которой есть ошибка интернационализации.

Я видел, как это происходит на серверах приложений, таких как JBoss и Glassfish, которые по умолчанию поставляются с собственной реализацией JSF. Аналогично, загрузчики классов JBoss / Glassfish отдали предпочтение библиотекам реализации JSF, а не реализациям JSF, которые появляются в WEB-INF/lib.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...