【问题标题】:How to get the Current Locale in GWT using LocaleInfo如何使用 LocaleInfo 获取 GWT 中的当前语言环境
【发布时间】:2012-04-23 19:39:30
【问题描述】:

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

Date 类 toLocaleString() 方法返回特定于区域设置的字符串,但 LocaleInfo 似乎无法获取系统区域设置。

【问题讨论】:

  • 实际上是否有任何地方可以获得可能的语言环境列表? CldrLocales 会起作用吗?

标签: gwt locale


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

      &lt;meta name="gwt:property" content="locale=es" /&gt;

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

    【讨论】:

      【解决方案3】:

      在 JavaScript 中准确获取用户的语言环境几乎是不可能的,因此 GWT 甚至不会尝试 [1]。
      LocaleInfo 返回有关您在其中选择的语言环境的信息编译到您的应用中;也就是说,您在 *.gwt.xml 中使用 &lt;extend-property name="locale" ... /&gt; 添加的语言环境之一。

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

      [1] 好吧,在最近的版本中,它确实会尝试(使用浏览器的 compile-time 语言环境),但只选择其中一个已编译的语言环境,因此不会改变任何内容LocaleInfo的行为。

      【讨论】:

      • 我只希望语言环境设置日期和时间格式,所以我认为 Javascript toLocale 是可靠的。我想我必须在模块文件中添加支持的语言环境列表,并希望浏览器在编译时选择正确的语言环境。我无法想象每次运行应用程序时让用户自己选择语言环境。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多