如何使用LocaleInfo获取GWT中的当前区域设置

4
我试过使用LocaleInfo类和getCurrentLocale()方法在客户端获取当前区域设置,但无论客户端机器的区域和语言设置是什么,它总是返回默认区域设置。Date类的toLocaleString()方法返回区域设置特定的字符串,但LocaleInfo似乎不能获取系统的区域设置。

实际上,你能在哪里获取可能的区域设置列表呢? CldrLocales 行吗? - snowstreams
3个回答

6

如果您希望您的GWT应用程序可以自动检测到您的语言环境,请将基础index.html文件(包含“nocache.js”脚本的文件)重命名为index.jsp,并向 <head> 部分添加以下行:

<meta name="gwt:property" content="locale=<%=request.getLocale()%>">

3
GWT 的区域设置不会自动从系统/浏览器设置中获取。根据获取区域设置文档,运行时使用的语言环境可以通过以下两种方式之一进行设置:
  1. 在应用程序的 URL 中指定 locale 请求参数。例如: http://www.myapplication.com/?locale=es
  2. 在主机页面中包含一个 gwt:property 元标记:

    <meta name="gwt:property" content="locale=es" />

    这是生产应用程序的首选方法。您的主机页面可以通过多种方式确定用户的区域设置,包括但不限于允许用户配置本地设置或基于Accept-Language 请求头检测其首选的区域设置。


2
JavaScript几乎无法准确获取用户的区域设置,因此GWT甚至不尝试[1]。LocaleInfo返回有关所选语言环境的信息,其中包括您在应用程序中编译的语言环境之一;也就是说,您使用在*.gwt.xml文件中添加的语言环境之一。
请参见https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale [1] 好吧,在最近的版本中它确实会尝试(使用浏览器的编译时语言环境),但仅选择其中一个已编译的语言环境,因此这不会改变LocaleInfo的行为。

我只想设置日期和时间格式的本地化,所以我认为JavaScript的toLocale会很可靠。我想我将不得不在模块文件中添加支持的语言环境列表,并希望浏览器在编译时选择正确的语言环境。我无法想象每次运行应用程序时都要让用户自己选择语言环境。 - snowstreams

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