Почему GWT игнорирует локаль браузера? - PullRequest
6 голосов
/ 01 октября 2008

GWT получает локаль либо из свойства локали, либо из строки запроса локали. Если ни то, ни другое не указано, используется локаль «по умолчанию» (т.е. en_US).

Почему он не получает его из настроек браузера?

Кажется, что единственное решение - заменить статическую страницу запуска html чем-то вроде JSP, который читает локали браузера и устанавливает локаль или перенаправляет, используя строку запроса. Должно быть лучшее решение, чем это или просто жесткое программирование локали, конечно?

Ответы [ 6 ]

6 голосов
/ 03 ноября 2011

Вы также можете поместить этот переключатель в ваш * .gwt.xml

<set-configuration-property name="locale.useragent" value="Y"/>

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

  <set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/>

Но имейте в виду, что в IE это не работает - вы должны разработать серверный языковой выбор на основе заголовка «Accept-Language», отправляемого IE.

3 голосов
/ 02 октября 2008

Если вы поместите список доступных языков в файл * .gwt.xml, он по умолчанию переключится на первый язык в списке.

<!-- Slovenian in Slovenia -->
<extend-property name="locale" values="sl"/>

<!-- English language, independent of country -->
<extend-property name="locale" values="en"/>
1 голос
/ 18 мая 2013

Вы можете использовать cookie для сохранения и отправки этого значения, но для этого вам нужно добавить в *. Gwt.xml first

<set-configuration-property name="locale.cookie" value="yourCookieName"/>
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent"/>

Обратите внимание, что здесь "queryparam" имеет самый большой приоритет, что позволяет установить новую локаль с помощью запроса http и игнорировать значение в cookie.

0 голосов
/ 10 февраля 2015

Это сработало для меня, надеюсь, это также сработает и для вас.

Моя проблема заключалась в том, что я не объявил никакого значения локали в дескрипторе модуля .gwt.xml. В этом случае используется только локаль по умолчанию. GWT делает так, потому что любая другая поддерживаемая локаль означает новую итерацию / перестановку компиляции. Поэтому используются только объявленные локали.

Вот вам пример:

<!-- Locales -->
<extend-property name="locale" values="en_US"/>
<extend-property name="locale" values="es"/>    
<set-property-fallback name="locale" value="en_US"/>
<set-configuration-property name="locale.useragent" value="Y" />
<set-configuration-property name="locale.searchorder" value="queryparam,cookie,meta,useragent" />

Первая и вторая строки устанавливают доступные / поддерживаемые локали (английский в США и испанский без конкретной страны в моем примере). Третья строка устанавливает язык по умолчанию, если никто не обнаружен (это объявление по умолчанию должно быть установлено после того, как значение по умолчанию объявлено в строке extend-property). Четвертая строка включает определение локали с помощью HTTP-заголовка Accept-Language, отправляемого браузером (возможно, он включен по умолчанию и вообще не требуется устанавливать). Последняя строка устанавливает порядок, в котором различные механизмы обнаружения пытаются обнаружить локаль:

  1. в качестве параметра в URL-запросе
  2. Из печенья
  3. в качестве мета-значения на странице HTML
  4. Из заголовка HTTP, отправленного браузером
0 голосов
/ 25 июня 2013

добавьте эту запись в ваш файл *. Gwt.xml , чтобы увидеть эффект!

Пожалуйста, проверьте следующую строку для получения дополнительной информации!

<set-configuration-property name="locale.useragent" value="Y"/>

0 голосов
/ 24 ноября 2011

Если ваша страница ввода - JSP, вы можете проверить заголовок Accept-Language запроса, чтобы динамически установить локаль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...