как получить информацию о локали в приложении GWT - PullRequest
9 голосов
/ 19 августа 2008

В GWT я должен указать, какие локали поддерживаются в моем приложении. Код компилируется в различные файлы, по одному для каждой локали (помимо других версий), но я должен дать своим клиентам только один URL. Этот URL-адрес должен быть страницей, которая должна отображаться в соответствии с языком, выбранным браузером. Я не хочу иметь параметр HTTP для локали, так как я хочу отбросить локаль, предпочитаемую браузером. Как это можно закодировать в GWT?

Должен ли я попытаться сделать это, используя правила переписывания apache? Я подумал об этом, но я думаю, что не могу легко получить доступ к такому параметру в правиле перезаписи.

Большое спасибо, Giuseppe

Ответы [ 5 ]

13 голосов
/ 27 августа 2009

У меня была та же проблема, что и у вас, но поскольку мне действительно нужно знать текущую локаль (я запрашиваю второй сервер для данных, которые я хочу локализовать), я нашел этот класс: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale(). Это должно дать вам то, что GWT использует в настоящее время.

5 голосов
/ 03 сентября 2008

GWT имеет хорошую поддержку интернационализации. Смотрите эту ссылку . Команда i18nCreator может помочь вам настроить инфраструктуру интернационализации аналогично тому, как projectCreator и applicationCreator настраивают приложение GWT.

Если у вас есть статические строки (т. Е. Недопустимый ввод!), Которые необходимо интернационализировать, вам не нужен дополнительный флаг для команды i18nCreator для создания файлов свойств и инфраструктуры.

Если у вас есть строки, которые должны принимать параметры (например, Hello {0}), вам нужно передать флаг -createMessages команде i18nCreator, чтобы создать файлы свойств и инфраструктуру.

Теперь ваш модуль должен включить модуль i18n в ваш MyApplication.gwt.xml:

<inherits name="com.google.gwt.i18n.I18N"/>

Определите интерфейс Java в том же пакете, что и ваши файлы свойств, который расширяет константы или сообщения и определяет методы (имя совпадает с записями свойств), которые все возвращают строку.

MyConstants.properties содержит:

errorMessage=Invalid Entry!

MyConstants.java содержит:

import com.google.gwt.i18n.client.Constants;

public interface myConstants extends Constants {
    String errorMessage();
}

Теперь для доступа к этим интернационализированным строкам из вашего приложения:

public class MyApplication implements EntryPoint {
    private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class);

    public void onModuleLoad() {
        final Label errorMessage = new Label(constants.errorMessage);
    }
}

GWT автоматически реализует интерфейс для вас.

Вы можете получать сообщения аналогичным образом.

Надеюсь, это поможет вам начать работу.

3 голосов
/ 18 декабря 2010

Проверьте это com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale ()

3 голосов
/ 19 августа 2008

Если я не читаю документацию неправильно, я не думаю, что вы должны что-либо делать.

GWT и Locale

Сделав локаль клиентским свойством, стандартный процесс запуска в gwt.js выбирает соответствующую локализованную версию приложения, обеспечивая простоту использования (это проще, чем может показаться!), Оптимизированную производительность и минимальный размер сценария.

То, как я его читаю, если ваш модуль добавил все варианты выбора языка, он должен быть автоматическим?

2 голосов
/ 01 марта 2013
<inherits name="com.google.gwt.i18n.I18N"/>

<!-- Use browser-specified locale for i18n -->
<set-configuration-property name="locale.useragent" value="Y"/>

<!-- Specify locales your application support -->
<extend-property name="locale" values="en"/>
<extend-property name="locale" values="de_DE"/>
<extend-property name="locale" values="ru_RU"/>
...