我正在尝试使用GWT following the instruction国际化测试应用程序,我有:
com.example.client.MyConstants.java
com.example.client.MyConstants_en.properties
com.example.client.MyConstants_fr.properties
com.example.client.MyAppEntryPoint.java
在这段代码中我有:
public interface MyConstants extends Constants
{
@DefaultStringValue("HelloWorld")
String hellowWorld();
}
并且
public class MyAppEntryPoint implements EntryPoint
{
public void onModuleLoad()
{
MyConstants constants = GWT.create(MyConstants.class);
VerticalPanel mainPanel = new VerticalPanel();
mainPanel.add(new Label(constants.hellowWorld()));
RootPanel.get("myContainer").add(mainPanel);
}
}
对于MyApp.gwt.xml,我有:
<module rename-to="myModule">
<inherits name="com.google.gwt.xml.XML" />
<inherits name="com.google.gwt.i18n.I18N"/>
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<!-- Specify the app entry point class. -->
<entry-point class='com.example.client.MyAppEntryPoint'/>
<extend-property name="locale" values="en,fr"/>
</module>
在html中我有:
...
只要我不包含在xml文件中,这一切似乎都有效。我一做到,就会遇到以下异常:
[ERROR] Generator 'com.google.gwt.i18n.rebind.LocalizableGenerator' threw threw an exception while rebinding 'com.example.client.myConstants'
java.lang.NullPointerException: null
...
任何帮助都会因为它抛出异常而受到高度赞赏。
答案 0 :(得分:1)
答案是模块名称必须与属性名称相同。所以,如果我使用:
<module rename-to="MyApp">
然后属性文件需要是:
com.example.client.MyAppConstants.java
com.example.client.MyApp_en.properties
com.example.client.MyApp_fr.properties
换句话说,模块名称必须与属性文件相同。
答案 1 :(得分:0)
可能是extend-property不接受多个值。我想你应该写:
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="fr"/>
答案 2 :(得分:0)
在尝试了不同的选项后,我想,你不需要“en”选项,我猜因为这是默认的,因此你需要:
com.example.client.MyAppConstants.java (Interface)
com.example.client.MyAppConstants.properties (Default)
com.example.client.MyAppConstants_fr.properties (Other language)
希望这有助于别人的时间。