Главная » Полезные статьи » Язык PHP » Определение языка на PHP
Распечатать статью

Определение языка на PHP

Я искал простой способ для автоматического обнаружения пользовательского  языка с помощью PHP и наткнулся на интересную деталь, которая делает именно это. Она использует “HTTP_ACCEPT_LANGUAGE” – суперглобальный массив PHP, который возвращает что-то подобное для меня  “en-US,en;q=0.8”. В данной строке содержится код текущего языка запроса, который можно использовать для определения языка.


PHP код определения языка

Этот код просто обнаруживает, на каком языке был заголовок набора (если он есть) и перенаправляет пользователя на соответствующий субдомен. Английскую версию сайта пользователь получает при перенаправлении на en.mysite.com т.д. В переменной $sites мы создаем массив всех языков и поддоменов. Это означает, что по всей линии, если вы хотите добавить больше поддержки для различных языков, например, немецкая «de» вы можете просто добавить значение и ключ к массиву $sites.

Переменная $lang принимает “HTTP_ACCEPT_LANGUAGE” наш суперглобальный PHPмассив, заметьте, что данная строка завернута в дужки функции substr(); которая имеет три параметра. Первый параметр это строка результата суперглобальной переменной (“en-US,en;q=0.8”), остальные два параметра указывают, с какого по какой символ выбрать текст из этой строки, то есть 0,2 – выберет en.

Следующая строка PHP кода проверяет существование в массиве $sites значения $lang, и если в нашем наборе языка нет, то устанавливает умолчание “en”.

Следующей строкой делаем перенаправление на нужный нам домен.

 

<?php
// php определение языка
// Создаем массив с языков => поддоменов
$sites = array(
    «en» => «http://en.mysite.com/»,
    «es» => «http://es.mysite.com/»,
        «fr» => «http://fr.mysite.com/»,
);
// Получаем 2 символа, определяющие язык запроса
$lang = substr($_SERVER[‘HTTP_ACCEPT_LANGUAGE’], 0, 2);
// Устанавливаем умолчание, если нету такого языка у нас на сайте
if (!in_array($lang, array_keys($sites))){
    $lang = ‘en’;
}
// Перенаправление на домен
header(‘Location: ‘ . $sites[$lang]);
?>

 

Источник:  sitear.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи