如何在GWT中更改默认语言环境

16

我们的应用程序应该固定使用en-GB区域设置。现在我已经添加了:

<extend-property name="locale" values="en_GB"/>

但这意味着GWT为两者构建了预置项。如何设置GWT默认为en-GB?或者如何从编译中删除default

6个回答

12
<extend-property name="locale" values="sl_SI"/>
<set-property name="locale" value="sl_SI" />

首先将可用语言环境添加到集合中。

然后设置默认语言环境。

如果默认语言环境与添加的语言环境不同,则 GWT 将为添加的语言环境和默认语言环境构建排列组合。


9

我在这里扮演考古学家的角色,但根据有关国际化的GWT文档,您应该使用“locale”属性回退而不是强制使用区域设置本身。

因此,在您的模块XML(.gwt.xml文件)中,您应该使用以下代码:

<!-- Let say you app supports the english language, independent of country -->
<extend-property name="locale" values="en"/>
<!-- Now set the fallback locale so your app will be in british english by default, Sir -->
<set-property-fallback name="locale" value="en_GB"/>
<set-property name="locale" value="en_GB"/> 只会将应用程序的语言环境设置为 en_GB,并不会为您定义的其他语言环境创建排列组合。
希望这可以帮助您。

9
如何翻译为中文:

怎么样:

<set-property name="locale" value="en_GB" />

我猜你需要将这个与上面的答案结合起来。 - David Nouls
这个可以运行!我有个想法。但似乎打错了一些东西。 - Mike Chaliy
4
我该把这个属性添加在哪里?我尝试在我的 .gwt.xml 文件中添加,但它报错说“在处理 'set-property' 元素时出现意外的异常”。 - raisercostin
这个答案有点变通,因为你强制使用了语言环境。根据GWT关于i18n Locale的文档,“你应该避免在默认语言环境下运行应用程序”,而是应该设置一个回退语言环境。 - Kyone

3
请参考这里
您需要在主机页面中指定区域设置,如下所示...
<meta name="gwt:property" content="locale=x_Y">

您还可以编写自己的属性提供程序。

这不会替换“default”语言环境。这是关于设置要使用的语言环境。我需要的是将“default”语言环境设置为“en_GB”。 - Mike Chaliy
如果您已经指定了区域设置(如上所示),那么它不应该替换默认设置吗?以下是有关默认语言环境的说明...“com.google.gwt.i18n.I18N模块默认定义了一个语言环境,称为default。当在部署中未指定客户端属性的语言环境时,将使用此默认语言环境。默认语言环境在本地化接口和本地化资源或类之间作为最后一道防线进行匹配。” - Michael Balint
我们只使用一个语言环境 - default,但我们希望它是英国英语而不是美国英语。这就是为什么我问如何配置默认语言环境的原因。 - Mike Chaliy

3
您可以通过注解设置默认语言:@DefaultLocale("en_GB"),在扩展i18接口的接口上,例如com.google.gwt.i18.client.Messages
例如:
@DefaultLocale("en_GB")
public interface MyMessages extends com.google.gwt.i18.client.Messages {
  ...

我不确定这是否真正解决了你的问题,但是似乎有一种设置默认值的方法。 另请参阅http://code.google.com/p/google-web-toolkit/wiki/I18nAnnotations


这看起来像是你真正在寻找的东西。 - Michael Balint
我主要需要的是内置的东西。比如日期时间和数字格式。所以感谢您指出这一点,但这并不能解决我的问题。无论如何,感谢您的时间。 - Mike Chaliy

1

这里有一个更好的解决方案(请查看第二条评论)。

请注意,仅具有此代码的情况

<set-property name="locale" value="en_GB" />

导致 LocaleInfo.getLocaleNativeDisplayName(localeName) 对于默认语言环境返回空字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接