【发布时间】:2010-10-07 07:58:02
【问题描述】:
我在使用 Ubuntu 10.04.1 LTS x86_64 时遇到了一个奇怪的问题,当系统区域设置为 en_US 时,一切似乎都运行良好。但是,当系统区域设置为 en_GB 时,Spring 会尝试将默认资源包查找为 en_us 而不是 en_US。
例外:
06-Oct-2010 23:35:12 org.springframework.context.support.ResourceBundleMessageSource getResourceBundle
WARNING: ResourceBundle [messages] not found for MessageSource: Can't find bundle for base name messages, locale en_us
系统区域设置:
taylor@taylor-laptop:~$ locale
LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=
taylor@taylor-laptop:~$
默认的 Spring 语言环境设置如下:
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="USER_LOCALE" />
<property name="cookieMaxAge" value="1209600" />
<property name="defaultLocale" value="en_US" />
</bean>
【问题讨论】:
-
不知道这是否有帮助,但我相信语言环境字符串的格式应该是“en_GB.UTF-8”而不是“en_GB.utf8”。
-
@schot - 在 /etc/default/locale 中设置为 LANG="en_GB.UTF-8"。
-
你的消息解析器 bean 是什么样的?你有什么“消息”文件?
-
@matt - 这里有 Spring 配置文件 (github.com/tleese22/google-app-engine-jappstart/tree/master/src/…) -- 查看 dispatcher-servlet.xml 和 applicationContext-service.xml。
-
我查看了您的资源,并在 maven-gae-plugin 的配置中添加了
<jvmFlag>-Duser.country=GB</jvmFlag>。我还在 index.jsp 中添加了一些调试文本以打印出默认的java.util.Locale对象(显示 en_GB)——恐怕我没有从 Spring 中得到任何与 ResourceBundle 相关的错误。
标签: java linux spring ubuntu internationalization