|
|
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Начал новый веб-проект, скачал Spring 3.1.1, Hibernate 4. Есть выбор языков, на которых показывать страницу. Настройки Спринга: application-context.xml: Код: xml 1. 2. 3. springmvc-servlet.xml: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. На странице: Код: html 1. 2. 3. Данные из messages_XX.properties берет, но вот по умолчанию использует родную украинскую локаль, хотя в конфиге установлена английская. Думаю, это связано с тем, что стартовая страница прописана в web.xml как Код: xml 1. 2. 3. Она должна была "подхватить" локаль, установленную в спринговском конфиге? Очень не хочется использовать в url вставку параметра типа ?language=en. Что-то запутался я с этими локалями. Есть парочка проектов, где используется аналогичная схема, только вот контекст там динамический: сайты построены на одной странице, на которую подгружаются динамические блоки. И там все работает. Сейчас более "классическое" исполнение сайта - почти статические страницы, между которыми происходят переходы. Спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2012, 13:14:09 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Ау, люди! Почему не цепляет дефолтную локаль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2012, 15:27:37 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Причем, ИЕ отображает строки из messages_uk.properties, а Хром и ФФ - с messages_ru.properties. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2012, 17:07:36 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
IDVsbruckПричем, ИЕ отображает строки из messages_uk.properties, а Хром и ФФ - с messages_ru.properties. Похоже, вот и ответ. Что в http заголовках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2012, 17:47:50 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
LeonidvПохоже, вот и ответ. Что в http заголовках? Ну, это как бы не совсем ответ, если я правильно помню, то CookieLocaleResolver начинает обращаться к заголовкам response, если он не только не находит нужную печенюшку, но и defaultLocale. Я бы на месте автора вопроса быстренько выдрал/унаследовал из исходников CookieLocaleResolver, создал свой и глянул, что у него "унутре" неонка делает. Но прежде, не плохо было бы понять действительно ли проблема в <welcome-file> или элементарно как-то не так назван файл свойств или там не все обрабатывает DispatcherServlet. Я бы проверил, но лениво, т.к. считаю, что разумней делать как-то так: Код: java 1. 2. 3. И потом: Код: java 1. 2. У автора main = pages/index.jsp, тоже, кстати загадка почему не воспользоваться префиксами и суффиксами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2012, 18:02:59 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Разобрался и решил проблему по-старинке. Я так понял, что welcome-file просто грузится и обращения к MVC Servlet еще нет, поэтому локаль не установилась. Следовательно, надо либо вызвать принудительно интерцептор (?), который поменяет локаль на дефолтную, либо перед показом первой страницы пропустить запрос через Spring MVC. Второй вариант мне понятнее и проще, поэтому я установил welcome-file для страницы-пустышки (можно было напрямую сервлет, но пока так сделал) типа такой: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. А меппинг "/start" повесил на MVC servlet и обрабатываю так: Код: java 1. 2. 3. 4. 5. 6. 7. Как бы все условия переназначения локали соблюдены, хотя и таким "обходным" путем. По крайней мере, заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2012, 20:10:01 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Не, наврал ... Первая страница вызвана из сервлета и на ней меняется локаль. Если же перейти по ссылке на другую страницу, вызов пройдет "мимо" MVC сервлета и изменение языка не влияет на эту страницу, хотя при переходе на предудущую (первую) язык оказывается поменянным (я его меняю путем ajax-вызова метода в MVC сервлете с параметром language=XX). Чего-то, видать, я не допонимаю в этом механизме ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2012, 01:16:22 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Сам с собой разговариваю, сам себя путаю ... сорри. Дошло: надо все переходы пропускать через сервлеты Spring MVC. Так все встает на свои места. Просто перенести маппинг из web.xml в спринговский конфиг (аннотации контроллера). Автоматом как-то прояснилось и похоже, что заработало как я того хотел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2012, 01:33:41 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Добавьте в файл applicationComtext.xml Код: xml 1. 2. 3. и передавайте параметр locale. Например, для GET метода Код: html 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2012, 11:23:54 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Ты, видать, даже не прочитал мой первый пост. Там есть и LocalChangeInterceptor, и поправка, что я не хочу мусорить в адресной строке параметрами - терпеть этого не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2012, 14:46:38 |
|
||
|
Spring 3.1.1: i18n, локаль, изменение языка
|
|||
|---|---|---|---|
|
#18+
Без проблем :) Передавай параметр locale в теле сообщения методом POST :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2012, 18:02:35 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=306&tid=2132454]: |
0ms |
get settings: |
16ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
58ms |
get tp. blocked users: |
3ms |
| others: | 344ms |
| total: | 504ms |

| 0 / 0 |
