Language switcher (блок переключения языка в Drupal 7) может не переключать язык для анонимного (не авторизованного пользователя) при определенных условиях. Чтобы этого избежать, нужно пойти в /admin/config/regional/language/configure и включить параметр URL, подняв его на самый верх, при этом, выключив все остальные.
У меня были включены параметры Browser и User, которые, при этом были выше URL, в результате переключатель вроде как переключал язык, но после нажатия происходила мгновенная переадресация обратно на дефолтный (выбранный в браузере) язык, поэтому казалось, что переключение не работает.
Отключив лишние параметры (или выставив верную приоритетность) можно заставить работать переключатель корректно.