我有一个扩展com.google.gwt.i18n.client.Messages
类的接口,我用它来检索我的GWT应用程序中的i18n消息.它看起来像这样:
public interface MyMessages extends com.google.gwt.i18n.client.Messages {
@DefaultMessage("Hello world")
@Key("message1")
String message1();
@DefaultMessage("Hello again")
@Key("message2")
String message2();
//...
}
Run Code Online (Sandbox Code Playgroud)
通常,我使用GWT.create()
如下所示创建它的实例:
private MyMessages messages = GWT.create(MyMessages.class);
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于服务器端代码,只能用于客户端代码(它会抛出错误,说GWT.create()仅在客户端代码中可用).
类似问题的答案指向一个单独的库,您可以下载它可以让您访问服务器上的i18n消息,但我不想下载任何额外的库(这似乎是一个简单的问题,必须有一个简单解决方案).
总结:如何在服务器端代码中访问我的i18n消息? 谢谢.
在服务器端,您可以使用标准的Java本地化工具,如ResourceBundle.看这里的教程如何使用它.
// Create a ResourceBundle out of your property files
ResourceBundle labels =
ResourceBundle.getBundle("LabelsBundle", currentLocale);
// Get localized value
String value = labels.getString(key);
Run Code Online (Sandbox Code Playgroud)
从属性文件创建接口并通过延迟绑定提供实现的GWT特定方法不能在服务器端Java上使用.
如果您无所畏惧并愿意花时间,您可以实现代码生成步骤来读取属性文件并为您的消息接口生成实现类.这正是Google GWT编译器在幕后所做的事情.
归档时间: |
|
查看次数: |
4845 次 |
最近记录: |