2012-04-11 128 views
4

我试图使用LocaleInfo类和方法getCurrentLocale()获取客户端上的当前语言环境。但是,无论客户端计算机上具有哪些区域设置和区域设置,它总是返回值默认语言环境。如何使用LocaleInfo获取GWT中的当前语言环境

Date类toLocaleString()方法返回特定于语言环境的字符串,但LocaleInfo似乎无法获取系统Locale。

+0

其实你有没有可以获得可能的语言环境列表的地方? 会[CldrLocales](http://code.google.com/p/google-web-toolkit/source/browse/releases/2.0/user/src/com/google/gwt/i18n/CldrLocales.gwt.xml)工作? – snowstreams 2012-04-13 10:37:28

回答

3

GWT的语言环境不会从系统/浏览器设置中自动获取。按照the GET locale documentation的语言环境在运行时可以使用以下两种方式之一进行设置:

  1. 通过指定应用程序的URL一个locale请求参数。即http://www.myapplication.com/?locale=es
  2. 通过包括在主机页一个gwt:property元标记:

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

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

2

这几乎是不可能准确地获得区域的用户的在JavaScript这样GWT甚至没有尝试[1]。
LocaleInfo返回关于您在编译的中选择的语言环境的信息;也就是您在*.gwt.xml中使用<extend-property name="locale" ... />添加的语言环境之一。

https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

[1]那么,在最近的版本中,它不会尝试(使用浏览器的编译时区域),而只是选择编译的语言环境之一,使之不改变任何行为LocaleInfo

+0

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

6

为了让您的GWT应用程序自动检测您的语言环境,只需将您的base index.html文件(包含“nocache.js”脚本的文件)重命名为index.jsp,然后将以下行添加到该部分:

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