Почему polylang не переключает язык?
У вас одна и та же проблема, при использовании qtranslate-X и при использовании polylang, если хорошенько подумать, не приходит в голову, что они тут ни причем?
А проблема в теме или других плагинах?
Простой пример аналогичной ситуации
Недавно добавляю на сайт ssl
1. Выпускаю сертификат, настраиваю nginx, меняю ссылки в базе, рестартую nginx.
 САЙТ ПАДАЕТ
2. Запускаю  nginx -t, все ОK, смотрю конфиги, все нормально, все как всегда, рестартую nginx.
САЙТ ЛЕЖИТ
3. Много матерюсь, сношу настройки для ssl, рестартую nginx.
САЙТ РАБОТАЕТ
4. Много и громко матерюсь, пишу настройки с нуля, рестартую nginx.
САЙТ ЛЕЖИТ
5. Смеюсь, трясу бубном, лезу в гуглл, нихрена не понимаю. Решаю залезть в тему, в теме нахожуadd_action( 'template_redirect', 'redirect_from_https_to_http', 1 );
function redirect_from_https_to_http() {
    if ( is_ssl() && ! is_admin() ) {

        if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) {
            wp_redirect( preg_replace( '|^https://|', 'http://', $_SERVER['REQUEST_URI'] ), 301 );
        } else {
            wp_redirect( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
        }
        die();

    }
}
6.Занавес
Была такая же проблема, решилась выключением в настройках полиленга настройки "определить язык браузера
"
