浏览器特定的GWT Datepicker Loaclization

时间:2013-01-31 06:38:56

标签: gwt

即使我将我的语言环境更改为其他语言,GWT Datepicker也会以“en”语言环境显示。我不想在一些* .gwt.xml文件中指定它,我想要的是它应该从浏览器区域设置中获取它。这个的任何解决方法??????

3 个答案:

答案 0 :(得分:1)

默认情况下,GWT不使用浏览器区域设置。你必须告诉它这样做。

    <set-configuration-property name="locale.useragent"
    value="Y" />
<set-configuration-property name="locale.searchorder"
    value="queryparam,cookie,useragent,meta" />

请注意,这不适用于所有浏览器。我想这就是为什么默认情况下它没有激活。到目前为止,IE是我所知道的唯一例外。

答案 1 :(得分:1)

Dynamic I18N因为他们称之为仅提供翻译的常量。对于其他所有内容(数字格式,日期格式,复数规则等),您必须在应用程序中编译支持的区域设置(<extend-property name="locale" values="…" />)。

作为替代方案,您可以覆盖(使用<replace-with>规则)各种实现(在您的情况下使用DatePickerDateTimeFormatInfoImpl)和您自己的实现一个Dictionary(或等价物)而不是编译数据。这些API可能会在GWT版本之间发生变化(我已经可以告诉你,他们在GWT 2.6中发生变化)。

最后,当您添加对新语言环境的支持时,重新编译GWT应用程序可能比在上述道路上更容易。

答案 2 :(得分:1)

如果您想使用浏览器区域设置(通常情况非常有限,并非在所有情况下都可用,等等),那么您需要结合Thomas的答案(特别指定您的应用应该支持的所有区域设置) -property tags)并设置locale.useragent属性(除非您想更改顺序或禁用某些提供程序,否则不需要设置locale.searchorder。)

具体来说,在您的apps gwt.xml文件中,添加以下内容:

<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="fr"/>
... etc ...
<set-configuration-property name="locale.useragent" value="Y"/>

您不需要任何替换规则。见GWT i18n docs