簡體   English   中英

Java:靜態字符串本地化

[英]Java: Static string localization

是否有任何工具可以將java .properties文件編譯為可以在Java EE(tomcat)應用程序中使用的類? 類似於android,其中eclipse插件生成一個靜態R.strings類。

我找到了這篇文章:

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

但它依賴於GWT。 任何幫助贊賞。

我從未聽說過這樣的工具。 GWT有一個很好的基於延遲綁定的技術,但它不是你想要的東西。 但是我認為可以為這些任務實現基本代碼生成器。

但你的問題的答案是:據我所知,沒有。

為了國際化應用程序,我實現了一個Message Compiler ,它創建資源包文件和常量定義作為Java枚舉或來自單個源文件的鍵的靜態最終字符串。 因此,常量可以在Java源代碼中使用,這比使用普通字符串更安全。 在這種情況下,當您使用不存在的密鑰常量時,您還會收到編譯時錯誤。 消息編譯器不僅可以用於Java。 它還為Objective-C或Swift創建資源文件和常量,並可以擴展到其他編程環境。

那么ResourceBundle呢?

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

我認為可以在自定義maven插件(或Ant任務)中使用ANTLR為屬性文件編寫一個非常簡單的語法,該插件只是在編譯步驟之前生成Java源代碼。

如何將屬性存儲在JSON文件中。 存儲在文件中的JSON對象應映射到Java類,使用Jackson映射器進行反序列化。 使用Jackson,您可以強制執行反序列化時所有字段必須為非null。 您還可以使用GSON並編寫自定義反序列化程序,以根據需要執行嚴格的檢查。 示例 - 對於字符串,您可以強制不為null而不為空。

編譯器輔助本地化(CAL10N)並不完全是您所要求的,但可能會有所幫助。

雖然它不會從.properties生成Java類,但使用枚舉作為消息鍵仍然比字符串更好,因為您可以從編譯器獲得一些幫助。

聲明枚舉,使用注釋將其綁定到.properties,並在消息查找中使用枚舉值。 不過,我還沒有嘗試過。 手冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM