читать ключ из LocalizedResource.properties программно - PullRequest
1 голос
/ 05 февраля 2011

Я могу использовать LocalizedResource.properties с uibinder.скажем, у меня есть виджет, который создан программно в Java-файл.как прочитать ключ из LocalizedResource.properties в зависимости от выбранного пользователем языка "en, fr..etc"

Ответы [ 3 ]

2 голосов
/ 06 февраля 2011

@ Paŭlo Ebermann

Этот метод не работает для GWT, потому что GWT не может переводить классы Java, такие как Locale и ResourceBUndle, в JavaScript.

Я просто попробую.

Locale loc = new Locale(LocaleInfo.getCurrentLocale().getLocaleName());
String key = "AnotherWord";
ResourceBundle bundle = ResourceBundle.getBundle("msgs", loc);

Сбой компиляции GWT с

[ERROR] Errors in 'file:/K:/programming/eclipse-workspace/polyglotte/src/com/mw/uibinder/client/Polyglotte.java'
  [ERROR] Line 64: No source code is available for type java.util.Locale; did you forget to inherit a required module?
  [ERROR] Line 67: No source code is available for type java.util.ResourceBundle; did you forget to inherit a required module?

Может быть, это будет работать, если я попробую кормить GWT Compiler с помощью java.util. *исходники.Но я думаю, что это не очень хорошая идея.Почему гуглеры не идут по этому пути?

1 голос
/ 06 февраля 2011

Трудно сказать что-то однозначно.

  1. Если ваши LocalizedResource.properties генерируются, как описано в « Интернационализация - UiBinder », поэтому я не понимаю, почему вы хотите прочитать ключ из него

  2. Если .properties созданы для интерфейса Message или Constant, чтобы вы могли читать * fr_CA.properties по http://*.html? Locale = fr_CA и так далее для любого языка, который вы хотите.

    Полезная ссылка: Интернационализация GWT: Создание перевода для каждого поддерживаемого языка

  3. или попробуйте @ UiTemplate , чтобы переключаться между шаблонами, подготовленными для разных языков. Чтобы узнать текущую локаль вы можете использовать LocaleInfo.getLocaleName().

    Полезная ссылка Применение различных шаблонов XML к одному и тому же виджету

0 голосов
/ 06 февраля 2011

Я ничего не знаю о GWT и UIBinder, но в Java "Standard Edition" вы создали бы ResourceBundle выбранного вами языка (Locale), а затем использовали бы его getString метод.

Locale loc = ...;
String key = ...;
ResourceBundle bundle =
     ResourceBundle.getBundle("LocalizedResource", loc);

String value = bundle.getString(key);

Затем вы можете использовать эту строку для обозначения вашего виджета.

Пожалуйста, попробуйте это и сообщите об успехе в GWT.

...