在我的应用程序中,我需要使用动态本地化,所以我不能使用Constants接口。我确实使用了一段时间的常量,但现在我需要在不编译的情况下更改文本,所以我必须找到其他方法。
所以我现在正在使用Dictionary。问题是,当我现在想在UiBinder中使用文本时,我只能使用没有参数的方法。所以我创建了类“StringIdentifiers”,我在MyConstants中使用了相同的方法,但是我必须在这里为每个返回指定String的方法指定一个主体。
例如,我有:
Dictionary locale = Dictionary.getDictionary("myJsObjectWithStrings");
//and then the methods for returning the actual strings from the JS object
String loading(){
return locale.get("loading");
}
我希望这个方法只有
String loading();
因为其余部分与get()方法中出现为String参数的方法的名称始终相同。可能甚至在JS对象中缺少String时返回一些默认值。但我不知道该怎么做。我检查了Constants界面,但我真的不明白那里的代码。有人可以举个例子来说明如何实现这样的事情吗?
答案 0 :(得分:0)
GWT中没有标准功能可以执行此操作,但您可以自己创建一个。这有点紧张,但它应该通过使用GWT生成器机制来工作。在全球范围内,它应该如下工作:
MyMessages
)。MyMessages message = GWT.create(MyMessages.class)
。您需要文字message.loading()
。gwt.xml
文件中添加generate-with标记,以使其有效。这是一个简短的解释,但我希望它有所帮助。有关生成器的更多背景信息,请参阅:What is the use GWT generator?或http://blog.arcbees.com/2015/05/26/how-to-write-gwt-generators-efficiently/
您甚至可以重复使用i18n的一些GWT注释来添加例如默认文本。将注释添加到您的界面,并在生成器中扫描注释并在代码生成部分中使用它。