2016-02-26 1 views
1

Я хочу знать, какой язык использовать, когда клиент приходит на мой сайт, но я не могу этого сделать. Большинство решений кажутся немного устаревшими, например. ClientLocation.GWT - Как определить, какой язык установить и/или получить страну/местоположение клиента?

Каков наилучший подход для определения того, какой язык использовать и как это сделать с помощью GWT?

Я знаю, что могу получить IP-адрес клиента из сервлета, но если я пойду таким образом, я не уверен, как найти пользователя на самом деле.

ответ

0

Лучшим способом является поиск локали для использования в браузере. Вы должны следовать documentation, и использовать это свойство:

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

Вы можете увидеть все свойства устанавливаемыми для i18n в the module definition. По умолчанию GWT использовать этот код для определения UserAgent локаль, и вы можете изменить его с помощью нового свойства-провайдера, или использовать открытие на стороне сервера:

var language = navigator.browserLanguage ? navigator.browserLanguage : navigator.language; 
if (language) { 
    var parts = language.split(/[-_]/); 
    if (parts.length > 1) { 
    parts[1] = parts[1].toUpperCase(); 
    } 
    locale = parts.join(\"_\"); 
} 

Если вы хотите открыть для себя страну/местоположение пользователь, вы можете, с сервлета, использовать базу данных GeoIP. Этот вид БД имеет сопоставление от IP к стране/штатам/городу. Это, как правило, легко использовать и интегрировать в приложение. См. Например, Maxmind GeoIP Database.

+0

Есть ли изменения, которые вы можете показать мне, что с точки зрения Java-кода? Я установил свойство конфигурации в моем client.gwt.xml, и я захватываю 'LocalInfo.getCurrentLocale()', но я не могу получить что-то вроде кода страны или, что более важно, языка .. – displayname

+0

Кажется, что это работает например если я устанавливаю свойство-fallback, но я не могу найти ничего, что дает мне язык, заданный браузером: / – displayname

Смежные вопросы