Spring MVC - выборка неправильного пакета сообщений - PullRequest
3 голосов
/ 15 ноября 2011

У меня странная проблема с использованием Spring MVC пакетов сообщений: загружается неправильный файл пакета сообщений.Я дважды проверил, и в моем классе контроллера Java у меня есть fr_FR языковой стандарт, но теги Spring (также appContext.getMessage(code, null, locale); в классе) возвращают мне сообщения на английском языке!

Что такоепроисходит?

Я занимаюсь разработкой портлетов для Liferay Portal.Позвольте мне показать вам части моего кода:

в applicationContext.xml :

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>messages</value>
        </list>
    </property>
</bean>

в моих JSP У меня есть код, похожий на этот:

... 
<spring:message code="button.help"/> 
...

и пути к моим сообщениям выглядят так:

development:

  • / src / main / webapp /WEB-INF / classes / messages.properties (английский, по умолчанию)
  • / src / main / webapp / WEB-INF / classes / messages_fr.properties

развернут вTomcat

  • / webapps / MY_APP / WEB-INF / classes / messages.properties
  • / webapps / MY_APP / WEB-INF / classes / messages_fr.properties

Ответы [ 4 ]

1 голос
/ 15 ноября 2011

У меня была похожая проблема, когда мой локализованный файл сообщений содержал недопустимый символ Unicode (форма \ uXXX).

Ни Java, ни Spring, ни Tomcat не писали информацию об этом, никакой обратной связи вообще.1003 *

После исправления файла все внезапно начало работать.

С уважением

1 голос
/ 15 ноября 2011

Попробуйте установить язык (fr_FR) в вашем браузере.В версии Firefox, которую я использую, она имеет значение

Edit ->Preferences -> Content -> Langauges

И используйте кнопки «вверх» или «вниз», чтобы в качестве верхнего предпочтения было выбрано значение fr_FR.

Этозаставляет браузер отправлять запросы с установленным языковым стандартом.

0 голосов
/ 16 ноября 2011

Во-первых, вы должны убедиться, что LifeRay поддерживает желаемую локаль.Кроме того, вы должны добавить поддерживаемые локали в portlet.xml для каждого портлета.

portlet.xml:

<portlet>
   ...
   <supported-locale>en</supported-locale>
   <supported-locale>fr</supported-locale>
   ...
</portlet>

Если вы пропустите один из них, он просто не будет работать.Проверьте, добавили ли вы поддерживаемый языковой стандарт для этого портлета.

0 голосов
/ 15 ноября 2011

Вы должны иметь перехватчик в applicationContext, как

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>
</mvc:interceptors>

Вам также нужно

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

<bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

На первой странице JSP моего проекта я выбрал такие языки:

<span style="float: right"> <a href="?lang=en">en</a> | <a
        href="?lang=fr">fr</a> </span>

Скажите, пожалуйста, помогло ли это вам.

P.S. Мои сообщения _ *. Файлы свойств находятся в исходной папке src / main / resources, а не в webapp, я не знаю, имеет ли это значение.

P.P.S. Полезный урок здесь: http://springbyexample.org/examples/basic-webapp-internationalization.html

Я хотел бы также добавить, что в начале вашего xml у вас должно быть что-то вроде:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
     http://www.springframework.org/schema/util
     http://www.springframework.org/schema/util/spring-util-3.0.xsd
     http://www.springframework.org/schema/security
     http://www.springframework.org/schema/security/spring-security-3.0.xsd">

Это необходимо для распознавания префиксов, таких как mvc. Убедитесь, что он у вас есть.

...