|
|
|
Определение локали
|
|||
|---|---|---|---|
|
#18+
Всем добрый день. У меня вопрос по определению локали браузера пользователя. Задача - нужно показать jsp страницу пользователю по установленному языку в браузере. Как определяю язык в jsp( использую jQuery) var lng = navigator.browserLanguage || navigator.language || navigator.userLanguage; Определяет вполне точно. Меня устраивает. Вызываю сервлет "/ChangeLngServlet?locale=" + lng, Это я делаю в момент загрузки страницы в методе $(window).load(function(){ В сервлете делаю Locale localeObj = new Locale(locale); ResourceBundle rb = ResourceBundle.getBundle(Constants.BUNDLE_NAME, localeObj); request.getSession().setAttribute(Constants.RESOURCE_BUNDLE, rb); Всё это работает, если загузка страницы не первая. Но если идёт первое обращение, то определять язык браузера в методе $(window).load(function() уже поздно. Потому что страница ужескомпилилась и установилась локаль по умоляанию. Как сказано в описании к классу HttpServletRequest request.getLocale(); принимает значение по умолчанию по локале сервера. Подскажите, пожалуйста, как показать страницу на языке, который установлен в браузере пользователя? Вариант с показом выбора языка перед тем как отобразить страницу заказчика не устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.02.2016, 09:55 |
|
||
|
Определение локали
|
|||
|---|---|---|---|
|
#18+
есть такой request header: Accept-Language у меня например установлено: English/US, English, Ukrainian, Russian мой браузер вместе с запросом посылает заголовок: Код: javascript 1. остается вопрос взять первый поддерживаемый вами язык из указанного списка. кажется надо использовать : ServletRequest.getLocales() Returns an Enumeration of Locale objects indicating, in decreasing order starting with the preferred locale, the locales that are acceptable to the client based on the Accept-Language header. If the client request doesn't provide an Accept-Language header, this method returns an Enumeration containing one Locale, the default locale for the server. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.02.2016, 11:45 |
|
||
|
Определение локали
|
|||
|---|---|---|---|
|
#18+
Dmitry., Спасибо за ответ. Да, я знаю, что можно получить локаль из объекта request. Но в том-то у меня и вопрос. Как заставить сервер при первом же запросе клиента отдать страницу на языке, который установлен в браузере. То, как я описал, это неверно. Потому что запуск сервлета смены языка запускается с уже сформированной страницы. И чтобы отобразилось нужно страницу отрефрешить. Как мне кажется, надо как-то перехватить объект request, посмотреть в нём локаль и сформировать ResourceBundle. Потом уже будет формироваться ответ клиенту, JSP, с нужной локалью. Вот я не могу понять, как правильно это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.02.2016, 16:57 |
|
||
|
Определение локали
|
|||
|---|---|---|---|
|
#18+
webrazrabchik, У вас какой-то набор неверных предположений, из-за которых у вас возникло своё ошибочное представление о проблеме. Код в скриплетах и сервлетах не имеет отношения к процессу компиляции JSP. Но понять в чем именно проблема решительно не возможно, потому что совершенно не ясно как сервлет взаимодействует с JSP и как приведенный код вписан в JSP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.02.2016, 17:01 |
|
||
|
Определение локали
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо за ответ. Ещё раз перечитаю основы JSP. Обстрагиуясь от того, что я выше написал. Попробую ещё раз написать, В чём собстевенно проблема Есть страница - http://ttttttttts.com/service_t/login.jsp Страница содержит два заголовка Пользователь Пароль Вопрос - Как сделать так, чтобы страница отображалась с тем языком, который установлен у пользователя в браузере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.02.2016, 18:05 |
|
||
|
Определение локали
|
|||
|---|---|---|---|
|
#18+
webrazrabchikКак сказано в описании к классу HttpServletRequest request.getLocale(); принимает значение по умолчанию по локале сервера. http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocale() Returns the preferred Locale that the client will accept content in, based on the Accept-Language header. If the client request doesn't provide an Accept-Language header, this method returns the default locale for the server. Помочь с переводом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.02.2016, 18:13 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39181686&tid=2124321]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 294ms |

| 0 / 0 |
