Этот код перенаправляет пользователей на соответствующую языковую версию сайта в зависимости от их страны, определенной по IP-адресу.
| Код |
|---|
use Bitrix\Main\Service\GeoIp\Manager;
use Bitrix\Main\Application;
// Получаем IP-адрес пользователя
$ip = Manager::getRealIp();
// Получаем геоданные
$result = Manager::getDataResult($ip, 'en');
if ($result !== null && $result->isSuccess()) {
$geoData = $result->getGeoData();
$countryCode = $geoData->countryCode;
// Определяем язык сайта на основе страны пользователя
$siteLanguage = 'en'; // язык по умолчанию
$countryToLanguageMap = [
'RU' => 'ru',
'UA' => 'ua',
'KZ' => 'kz',
// добавьте другие страны и соответствующие языки по необходимости
];
if (isset($countryToLanguageMap[$countryCode])) {
$siteLanguage = $countryToLanguageMap[$countryCode];
}
// Получаем текущий URL без параметров языка
$request = Application::getInstance()->getContext()->getRequest();
$currentUrl = $request->getRequestedPage();
$currentUrlWithoutLang = preg_replace('/\/[a-z]{2}(\/|$)/', '/', $currentUrl);
// Перенаправляем пользователя на соответствующую языковую версию сайта
$newUrl = str_replace('//', '/', $currentUrlWithoutLang . $siteLanguage . '/');
LocalRedirect($newUrl);
} else {
// В случае ошибки перенаправляем на версию по умолчанию
LocalRedirect('/en/');
}
|