Интернационализация GWT выдает исключение при повторной привязке - PullRequest
1 голос
/ 04 декабря 2009

Я пытаюсь интернационализировать тестовое приложение с GWT , следуя инструкции , и у меня есть:

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
...

Любая помощь будет принята с благодарностью за то, что она вызывает исключение.

Ответы [ 3 ]

1 голос
/ 04 декабря 2009

Ответ заключается в том, что имя модуля должно совпадать с именем свойства. Так что, если я использую:

<module rename-to="MyApp">

Тогда файлы свойств должны быть:

com.example.client.MyAppConstants.java
com.example.client.MyApp_en.properties
com.example.client.MyApp_fr.properties

Другими словами, имя модуля должно совпадать с именем файла свойств.

0 голосов
/ 17 марта 2010

После того, как я попробовал разные варианты, я понял, что вам не нужна опция "en", я думаю, потому что это значение по умолчанию, поэтому вам нужно:

com.example.client.MyAppConstants.java (Interface)
com.example.client.MyAppConstants.properties (Default)
com.example.client.MyAppConstants_fr.properties (Other language)

Надеюсь, это поможет кому-то другому.

0 голосов
/ 04 декабря 2009

Это может быть свойство extension, не принимающее несколько значений. Я думаю, что вы должны написать:

<extend-property name="locale" values="en"/>
<extend-property name="locale" values="fr"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...