В spring'e использую для решения CookieLocaleResolver, LocaleChangeInterceptor и ReloadableResourceBundleMessageSource.
Все настроено согласно множеству примеров и документации, работает и определяет согласно установленным параметрам, но нужно немного не так.
Если в свойствах bean CookieLocaleResolver указать name="defaultLocale" value="en", тогда не важно кто и откуда первый раз зашел, язык будет у всех одинаковый.
Убираю defaultLocale, тогда определяет язык установленный в браузере и тоже верно, но до тех пор, пока он совпадает с языковым файлом *.properies.
Добавляю/меняю язык на любой другой, отличный от тех, что указаны в *.properies и тогда выбирает один из существующих языков, указанных в *.properies, а не браузера. Добавление любого языка в браузере ни к чему не приводит - по прежнему определяет язык системы.
Если нет cookie, тогда:
1. Каким образом определить язык в броузере, создать cookie ?
2. Подсунуть cookie до того, как отработает CookieLocaleResolver ?
Тогда не нужен будет и LocaleChangeInterceptor, т.к. смена значения параметра, указанного в cookie и перезагрузка текущей страницы, будет выполняться javascript'ом.
Продвижение своими сайтами как стратегия роста и независимости