【问题标题】:How do I merge GWT Permutations from different Locales?如何合并来自不同语言环境的 GWT 排列?
【发布时间】:2014-05-21 15:53:00
【问题描述】:

我在我的模块 xml 文件中定义了以下语言环境:

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

我怎样才能只得到 en、en_US、en_GB 的一种排列和 de、de_DE 的一种排列?

【问题讨论】:

    标签: java javascript html gwt locale


    【解决方案1】:

    如果您不向用户提供特定国家/地区的版本,请删除它们:

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

    设置默认语言环境:

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

    【讨论】:

    • 并创建将 en_whatever 转换为 en、de_whatever 为 de 的属性提供程序
    • @Maciej - 如果_en_de 属性文件已经存在,则无需这样做。
    • @AndreiVolgin 那么我是否需要 en_US、en_... 的属性提供者才能获得 en?另一个问题如何覆盖默认值?
    • 您无法覆盖默认语言环境。您可以将其设置为您计划提供的语言环境之一。它仍然是一个单独的排列。
    • IMO collapse-property 是一种更好的方法。
    【解决方案2】:

    合并不同属性值排列的 GWT 方式称为SoftPermutations

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

    已编辑

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

    认为 GWT 包含完整的 i18n 堆栈(基于 CLDR)用于国际化数字、日期、复数等,并且显示 'en' date-picker'en_GB' datepicker 是不一样的,因为欧洲人使用星期一作为一周的第一天,而不是星期日。

    最终排列中 javascript 的增量并不显着(很少 KB),因为只需包含那些细微的差异,因为大多数属性在相似的语言之间共享。

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

    许多人在 GWT 中使用 locale 所做的就是将它们全部折叠起来,以避免排列爆炸&lt;collapse-property name="locale" values="*" /&gt; 并缩短编译时间。当您交付应用程序进行生产时,您可以选择删除该行,这通常在每个交付周期发生一次,并且您可以让 CI 服务器编译所有排列。

    【讨论】:

    • 指定三个语言环境并告诉编译器将它们合并为一个有什么好处,而不是只指定一个您需要的语言环境?
    • 好问题。是的,有什么好处?
    • 在一种排列中使用一种语言环境,该应用程序只能以一种语言使用。在一个排列中使用三个语言环境,该应用程序可以在这三种语言中的任何一种中使用,但只会发出一个排列。这使得编译时间更短,但用户下载的总量更大。如果您只想要一个语言环境,那么折叠其他(对您而言)无用的语言环境当然是愚蠢的,但如果您需要所有语言环境,跳过其他语言环境将限制谁可以使用您的应用。
    • @ColinAlworth JS 折叠相似语言环境的增量是微不足道的,因为 gwt 将重用常见的东西。更新了我的答案以解释好处。
    • 这是一个很好的解决方案,但前提是用户可以选择en_GB 语言环境。否则,如果从未在应用程序中设置此语言环境,则声明它然后折叠它会增加文件大小,但用户永远不会从这些额外的 kB 中受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多