Ответ 1
Это ожидаемое поведение. Symfony по умолчанию не использует заголовок Accept Language и вместо этого использует конфигурацию symfony для настроек локали. На самом деле, рекомендуется не использовать один и тот же URL-адрес для контента в разных местах, см. Этот документ:
Symfony 2 The Book - Translations - The Locale и URL
Но если вы хотите игнорировать этот совет и использовать заголовок Accept language, вы можете сделать это с помощью этого кода в своем контроллере:
$request = $this->getRequest();
$session = $this->get('session');
$session->setLocale($request->getPreferredLanguage(array('de', 'en')));