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

时间:2012-04-11 13:32:28

标签: gwt locale

我尝试使用LocaleInfo类和方法getCurrentLocale()获取客户端上的当前语言环境。但是,无论我在客户端计算机上使用哪种区域和区域设置,它始终返回值默认语言环境。

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

GWT的语言环境不会自动从系统/浏览器设置中获取。根据{{​​3}},运行时使用的语言环境可以通过以下两种方式之一设置:

  1. 在应用程序的URL中指定locale请求参数。即http://www.myapplication.com/?locale=es
  2. 在主页中加入gwt:property元标记:

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

    这是生产应用程序的首选方法。您的主机页面可以通过多种方式确定用户的区域设置,包括但不限于允许用户根据the GET locale documentation配置本地或检测其首选区域设置。

答案 2 :(得分:2)

在JavaScript中准确获取用户区域设置几乎是不可能的,因此GWT甚至不会尝试[1]。
LocaleInfo会返回您在您的应用中编译的区域设置中选择的区域设置信息;也就是说,您在<extend-property name="locale" ... />中使用*.gwt.xml添加的区域设置之一。

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

[1]好吧,在最近的版本中它确实尝试(使用浏览器的编译时语言环境),但只选择其中一个已编译的语言环境,这样就不会改变任何东西对LocaleInfo的行为。