【发布时间】:2014-04-22 12:58:19
【问题描述】:
我无法在我的项目中运行国际化。
我尝试了几种 stackoverflow 解决方案和在线教程,但均未成功。
我要获取的message-key找不到,无法切换locale/lang。
这是我的 servlet-context.xml 的 i18n 部分:
<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basename" value="classpath:messages" />
<beans:property name="defaultEncoding" value="UTF-8"/>
</beans:bean>
<beans:bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<beans:property name="paramName" value="lang" />
</beans:bean>
<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<beans:property name="defaultLocale" value="en"/>
</beans:bean>
<beans:bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >
<beans:property name="interceptors">
<beans:ref bean="localeChangeInterceptor"/>
</beans:property>
</beans:bean>
handlerMapping 被标记为已弃用。
这是我收到消息的 jsp 的一部分(spring namspace:http://www.springframework.org/tags):
<spring:message code="btn.ok"/>
我的消息属性文件位于 src/main/resources 下
这是一个使用 Spring Tool Suite 创建的 Spring Maven 项目。
有谁知道问题出在哪里以及如何添加与 messages_en 不同名称的其他属性,例如 labels_en.properties 等等...?
看起来我无法在 spring:message 标签中定义要选择哪个(标签或消息)。
编辑:
这是我得到的例外:
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/myapp] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'btn.ok' for locale 'en'.] with root cause
at org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:184)...
EDIT2:
如果我想将我的属性键拆分为多个文件,一个用于消息,一个用于标签..?
类似(bundle attr 不存在)
<spring:message bundle="messages" code="btn.ok"> and <spring:message bundle="labels" code="lbl.ok">
在同一个视图/jsp中。
EDIT3:
我终于让它工作了:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
<property name="defaultEncoding" value="ISO-8859-2"/>
</bean>
<mvc:interceptors>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptors>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
【问题讨论】:
-
您遇到的错误是什么
标签: java spring spring-mvc internationalization