Как Polylang загружать язык от геолокации?

Ссылка скопирована
1 ответ

Есть может какой плагин адекватный который от геолокации выдает язык для сайта в полиланг или может его с чем то подружить можно. Стоит решение о смене языка от браузера клиента, но что-то не нравится хД

Дополнительно:

Если думать головой, то смена языка по языку UA - это самое правильно решение.

  • ППКС. Учить шведский из-за Оперы не очень хочется. А на подходе еще и распределенный прокси от Гугля. Боюсь, тогда пользователи узнают такие языки, о которых вообще никогда не слышали.
  • Refguser, тоже бы по UA оставил и все, но требуют по геолокации, нафиг не пойму смысл этого...
  • YBB, )) на сайте все равно только 3 языка, если вдруг выдаст какой-то аля "Зимбаба" то грузить будет дефолтный англ
  • Как вообще в полиланге управлять языком, в доках не нашел этого. Так что бы при открытие сайта я сам задавал язык через код. Прикрутить геолокатор я смогу сам и вытащить страну, это не проблема. ПРоблема как полиланг заставить работать с этим(
  • Роман,

    но требуют по геолокации, нафиг не пойму смысл этого...

    Нужно просто внятно объяснить требователям для чего нужна геолокация и чем отличается от мультиязычности. Это не сложно.

  • Refguser, бывают сложные случаи)) Когда есть одно мнение и ничего больше(
  • YBB,

    распределенный прокси от Гугля.

    Ты про это https://habr.com/ru/news/769186/ ?

  • Роман,

    бывают сложные случаи)) Когда есть одно мнение и ничего больше(

    Бывают, согласен. Но делюсь опытом: если озвучить проблемы (потерю денег для биза) и выставить нереальный ценник за реализацию, то это как правило лечится. Если же пациент не излечим, то я его отправляю к другим докторам. Лучше потерять такого клиента чем иметь вечный гемморой.

  • Refguser, да, об этом. Шоб его.
  • Как вообще в полиланге управлять языком, в доках не нашел этого.

    А штатная ворпрессовская функция switch_to_locale() не работает?

  • YBB, сейчас попробую)
  • Неа, не работает. локаль меняется в html но сайт никак не реагирует на это
  • Роман, потому что при смене языка нужно загружать весь новый html, а не менять только локаль. По хорошему нужно сделать всплывающее окно в html, на js проверять язык пользователя и при нужных условиях активировать с предложением перейти на локаль пользователя
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для Polylang автоматический выбор языка по геолокации технически возможен, но я бы использовал его аккуратно. Язык браузера обычно правильнее для пользователя, чем страна по IP: человек может жить в одной стране, но читать на другом языке, использовать VPN, корпоративный прокси или мобильного оператора с чужим регионом.

    Если всё же нужно задавать язык кодом, не надо делать редирект на каждом запросе. Делайте только первый визит, сохраняйте выбор в cookie и всегда уважайте ручной выбор пользователя.

    Пример общей логики:

    add_action('template_redirect', function () {
        if (is_admin() || isset($_COOKIE['pll_lang_selected'])) {
            return;
        }
     
        if (!function_exists('pll_home_url')) {
            return;
        }
     
        $country = $_SERVER['HTTP_CF_IPCOUNTRY'] ?? '';
        $lang = $country === 'DE' ? 'de' : 'en';
     
        setcookie('pll_lang_selected', '1', time() + MONTH_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
        wp_safe_redirect(pll_home_url($lang));
        exit;
    });

    add_action('template_redirect', function () { if (is_admin() || isset($_COOKIE['pll_lang_selected'])) { return; } if (!function_exists('pll_home_url')) { return; } $country = $_SERVER['HTTP_CF_IPCOUNTRY'] ?? ''; $lang = $country === 'DE' ? 'de' : 'en'; setcookie('pll_lang_selected', '1', time() + MONTH_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN); wp_safe_redirect(pll_home_url($lang)); exit; });

    В примере используется заголовок Cloudflare CF-IPCountry. Если Cloudflare нет, нужен отдельный GeoIP-сервис или база MaxMind. Не делайте внешний API-запрос геолокации на каждом открытии страницы — это замедлит сайт.

    Для SEO не редиректите поисковых роботов агрессивно по IP. У каждой языковой версии должны быть свои URL и hreflang. Автопереход — только удобство для пользователя, а не замена нормальной мультиязычной структуры.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно