Java:静态字符串本地化

时间:2012-03-29 11:45:34

标签: java localization

是否有任何工具可以将java .properties文件编译为可以在Java EE(tomcat)应用程序中使用的类?类似于android,其中eclipse插件生成静态R.strings类。

我找到了这篇文章:

http://www.techhui.com/profiles/blogs/localization-in-gwt-using

但它依赖于GWT。任何帮助赞赏。

6 个答案:

答案 0 :(得分:4)

我从未听说过这样的工具。 GWT有一个很好的基于延迟绑定的技术,但它不是你想要的东西。但是我认为可以为这些任务实现基本代码生成器。

但你问题的答案是:据我所知,没有。

答案 1 :(得分:1)

为了国际化应用程序,我实现了Message Compiler,它创建了资源包文件和常量定义,作为来自单个源文件的密钥的Java枚举或静态最终字符串。因此,常量可以在Java源代码中使用,这比使用普通字符串更安全。在这种情况下,当您使用不存在的密钥常量时,您还会收到编译时错误。消息编译器不仅可以用于Java。它还为Objective-C或Swift创建资源文件和常量,并可以扩展到其他编程环境。

答案 2 :(得分:0)

ResourceBundle怎么样?

// refers to "src/config.properties"
ResourceBundle config = ResourceBundle.getBundle("config"); 
String property1 = config.getString("property1");

答案 3 :(得分:0)

我认为可以在自定义maven插件(或Ant任务)中使用ANTLR为属性文件编写一个非常简单的语法,该插件只是在编译步骤之前生成Java源代码。

答案 4 :(得分:0)

如何将属性存储在JSON文件中。存储在文件中的JSON对象应映射到Java类,使用Jackson映射器进行反序列化。使用Jackson,您可以强制执行反序列化时所有字段必须为非null。 您还可以使用GSON并编写自定义反序列化程序,以根据需要执行严格的检查。示例 - 对于字符串,您可以强制不为null而不为空。

答案 5 :(得分:0)

Compiler Assisted Localization (CAL10N)并不完全是您提出的问题,但可能会有所帮助。

虽然它不会从.properties生成Java类,但是使用枚举作为消息键仍然比字符串更好,因为您可以从编译器获得一些帮助。

声明枚举,使用注释将其绑定到.properties并在消息查找中使用枚举值。不过,我还没有尝试过。请参阅manual