Войти Регистрация

Определение языка на 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]);

?>

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



Дальше: Определение ipod, iphone пользователей на php


Дискуссия по теме     0 Комментариев
Добавить комментарий
Просмотров: 3839