2014-04-08 42 views
2

我在模块XML文件中定义以下区域:如何合并来自不同语言环境的GWT排列?

<extend-property name="locale" values="en, en_US, en_GB"/> 
<extend-property name="locale" values="de, de_DE" />  

我怎样才能得到只有一个连接,EN_US,EN_GB置换和德,de_DE这个一个置换?

回答

0

删除特定国家的版本,如果你不为他们提供的选项给用户:

<extend-property name="locale" values="en"/> 
<extend-property name="locale" values="de" /> 

要设置默认的语言环境:

<set-property-fallback name="locale" value="en"/> 
+0

并创建翻译en_whatever到en的属性提供者,de_whatever去de –

+2

@Maciej - 如果已经存在'_en'和'_de'属性文件,则不需要这样做。 –

+0

我不知道,谢谢! –

6

GWT的方式合并排列不同的财产价值被称为SoftPermutations

<collapse-property name="locale" values="en, en_US, en_GB" /> 
<collapse-property name="locale" values="de, de_DE" /> 

EDITED

关于使用所有区域而不是选择每种语言的好处,您可以充分利用所有这些语言差异,这对用户来说非常重要。

想那GWT包括国际化数字,日期,复数等完整的国际化堆栈(基于CLDR),它是不显示的'en' date-picker VS的'en_GB' datepicker由于欧洲人使用周一周的第一天,而不是相同周日。

由于大多数属性都在类似语言之间共享,所以在最终置换中javascript的增量并不重要(很少有KB),因为只有那些细微的差异必须包括在内。

当然,您只需为支持的语言翻译一次您的应用程序,例如您将所有应用程序消息写入'en',因为当找不到消息时'en_GB'会回退到'en',但您仍然如果需要,可以选择更改某些消息。

很多人用GWT中的语言环境做的事情就是将它们全部折叠起来,以避免排列爆炸<collapse-property name="locale" values="*" />并提高编译时间。您可以选择在交付通常每个交付周期发生一次的生产应用程序时放弃该行,并且可以让CI服务器编译所有排列。

+1

指定三个语言环境并告诉编译器将它们合并为一个,而不是只指定一个您需要的语言环境,有什么好处? –

+0

好问题。是的有什么好处? – confile

+2

将一个语言环境置于一个排列中,该应用程序只能用于一种语言。在一个排列中有三个语言环境,该应用程序可以用于这三种语言中的任何一种,但仅排放一个排列。这使得编译时间更短,但用户下载的总量更大。如果你只需要一个语言环境,那么当然折叠其他无用(对你)语言环境将是愚蠢的,但如果你需要所有这些,跳过其他语言环境将限制谁可以使用你的应用程序。 –