无法更改Glassfish v3 J2EE应用程序的语言环境

3

我的开发服务器上的玻璃鱼Web应用程序报告说它的本地语言是en_US。这导致日期以美国格式显示。我希望使用en_GB语言环境来显示日期。

我的开发服务器配置如下:

  • Ubuntu Ubuntu 12.04.2 LTS服务器
  • Oracle Java 1.7.0_11
  • GlassFish Server Open Source Edition 3.1.2.2 (build 5)
  • GlassFish使用upstart运行
  • JavaServerFaces 1.2 Web应用程序

主机和虚拟机都返回en_GB作为默认的操作系统语言环境。

$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8

然而,在我的Web应用程序中,当我将地区设置写入日志文件时,或者当日期被显示时,我可以看到地区设置为en_US。

                Locale locale = Locale.getDefault();
                log("Login.login_btn_action(): Default locale = " + locale.toString());

报告

Login.login_btn_action(): Default locale = en_US

为了解决这个问题,我尝试过以下方法(但都没有成功):
1)在管理界面中选择域并将区域设置为 en_GB。我可以看到此设置出现在 domain.xml 文件的第一行中。
2)在 domain.xml 中添加额外的 jvm-options 到“default-config”和“server-config”,以设置 user.language 和 user.country。
    <jvm-options>-Duser.language=en</jvm-options>
    <jvm-options>-Duser.country=GB</jvm-options>

(当然,每次我进行更改时,我都会停止并启动Glassfish)
请问您能否提供其他选项/设置以检查/更改,以使我的Java应用程序在本地服务器语言环境下运行?
1个回答

0
根据 Locale.getDefault() 的 Javadoc,您可以使用 Locale.setDefault(Locale) 更改默认语言环境。显然,在应用程序中硬编码语言环境并不是很好的做法,因此您可以考虑从配置文件或 JVM 选项中读取它。

1
他也可以尝试根据语言环境更改日期格式。 - Lenymm
1
感谢mthmulders的建议。使用Locale.setDefault(Locale)是一种解决方法。 然而,为什么Glassfish不使用操作系统或jvm-option语言环境仍然没有答案..... - SteveGreenslade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接