вот у мня ща четко. Первый вызов, ставит язык у сеанса. Дальше пока сеанс жив можно слать что угодно, язык берется из сеанса. Убиваю сеанс, шлю другой язык он устанавливается в сеансе.
Появилась загвоздка. Если в модуле сервиса кидаю исключение (например, деление на 0) - оно на русском. Но если прибиваю сеанс, то язык сообщения "Сеанс отсутствует или удалён" зависит от Accept-Language.