即使我将语言环境更改为其他语言,GWT Datepicker 也会以“en”语言环境显示。我不想在某些 *.gwt.xml 文件中指定它,我想要的是它应该从浏览器语言环境中获取它。任何解决方法????
3 回答
GWT 默认不使用浏览器语言环境。你必须告诉它这样做。
<set-configuration-property name="locale.useragent"
value="Y" />
<set-configuration-property name="locale.searchorder"
value="queryparam,cookie,useragent,meta" />
请注意,这不适用于所有浏览器。我想这就是默认情况下不激活它的原因。到目前为止,IE 是我所知道的唯一例外。
他们称之为动态 I18N只是提供翻译的常量。对于其他所有内容(数字格式、日期格式、复数规则等),您必须在您的应用程序 (<extend-property name="locale" values="…" />
) 中编译支持的语言环境。
作为替代方案,您可以使用您自己的实现(使用规则)覆盖(使用<replace-with>
规则)各种实现(在您的情况下使用DatePicker
, the DateTimeFormatInfoImpl
),这些实现将从 a Dictionary
(或等效)而不是从编译的数据中获取它们的信息。不过,这些 API 在 GWT 版本之间可能会发生变化(我已经可以告诉您,它们将在 GWT 2.6 中发生变化)。
最后,当您添加对新语言环境的支持时,重新编译您的 GWT 应用程序可能比沿着上述道路更容易。
如果您想使用浏览器语言环境(通常会非常有限,并非在所有情况下都可用等),那么您需要结合 Thomas 的答案(特别是在扩展属性标签中指定您的应用程序应支持的所有语言环境) ) 并设置 locale.useragent 属性(您不需要设置 locale.searchorder ,除非您想更改顺序或禁用某些提供程序)。
具体来说,在您的应用程序 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 文档