Я искал простой способ для автоматического обнаружения пользовательского языка с помощью 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”.
Следующей строкой делаем перенаправление на нужный нам домен.
Источник: sitear.ru