gpt4 book ai didi

java - GWT 多模块项目中的本地化

转载 作者:行者123 更新时间:2023-12-01 13:09:08 24 4
gpt4 key购买 nike

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

我拥有的是MyAppConstantsMyAppMessages与相应的接口(interface).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 编译器在 com.myapp.client.MyAppConstants_ru.java 中看不到源文件(例如 .generated )成功执行 i18n 后它们通常驻留在的文件夹Maven 插件阶段。相反,它们可以在 localization.jar 中找到。 .

我觉得我错过了一些东西,因为这似乎不是一个需要解决的不平凡的任务。处理这种情况的正确方法是什么?

最佳答案

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

Rebind result 'com.myapp.client.MyAppConstants_ru' must be a class

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

所以我的问题解决了:

  • 正在删除 <goal>i18n</goal>以及localization中的相应配置模块
  • 确保 .properties文件到达 localization.jar

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

关于java - GWT 多模块项目中的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com