【问题标题】:Localization in a GWT multi-module projectGWT 多模块项目中的本地化
【发布时间】:2014-04-12 14:39:12
【问题描述】:

我有一个 GWT maven webapp 项目,它曾经由一个模块组成。由于需求演变,我需要将一些代码提取到单独的模块中,以使它们可重用。到目前为止,这个过程进展顺利,直到我决定提取本地化代码以便在另一个项目中使用它。

我所拥有的是MyAppConstantsMyAppMessages 与相应的.properties 文件的接口,这些文件通过GWT.create() 在客户端代码中使用。我将它们移到单独的模块中,添加了Localization.gwt.xml 文件并在pom.xml 中指定了以下内容:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <configuration>
        <module>com.myapp.Localization</module>
        <!-- Do not compile source files, just check them -->
        <validateOnly>true</validateOnly>
        <!-- i18n -->
        <i18nConstantsBundle>com.myapp.client.MyAppConstants_ru</i18nConstantsBundle>
        <i18nMessagesBundle>com.myapp.client.MyAppMessages_ru</i18nMessagesBundle>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>i18n</goal>
                <goal>resources</goal>
                <goal>compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

在主应用程序模块中,我只是继承了Localization.gwt.xml。作为编译的结果,我可以看到.cache.html 文件不包含它们曾经拥有的本地化常量和消息(它们看起来像\u0410\u043B...)。我想这是因为 GWT 编译器在成功执行 maven 插件的i18n 阶段后通常驻留的.generated 文件夹中看不到源文件(例如,com.myapp.client.MyAppConstants_ru.java)。相反,它们可以在 localization.jar 中找到。

我觉得我遗漏了一些东西,因为这似乎不是一个很重要的任务。处理这种情况的正确方法是什么?

【问题讨论】:

    标签: java maven gwt internationalization


    【解决方案1】:

    事实证明,为了获得正确的本地化,您需要在 GWT 编译时在类路径中包含 .properties 文件。最初,我将它们从 localization.jar 中过滤掉,因为它们的存在导致 GWT 编译失败并显示如下消息:

    重新绑定结果 'com.myapp.client.MyAppConstants_ru' 必须是一个类

    我深入研究了gwt-dev.jar 的内容,发现编译器实际上会检查类路径中是否存在本地化属性文件以确定绑定结果。

    所以我的问题通过以下方式解决:

    • 删除&lt;goal&gt;i18n&lt;/goal&gt;localization模块中的相应配置
    • 确保.properties 文件能够到达localization.jar

    这让我想知道,i18n 目标的 gwt-maven-plugin 有什么用?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      相关资源
      最近更新 更多