- → Программирование
- → 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]); ?>
Это мой вариант определения языка на PHP. Если у вас есть другие варианты и предложения по поводу определения языка пользователя методом PHP, просьба отписаться в комментариях.
Дальше: Определение ipod, iphone пользователей на php
Development — Taras Moroz