Определение языка средствами РНP

Часто приходится поднимать такой вопрос, как автоматическое определение языка страницы для пользователя. Существует быстрое и конкретное решение. Стоит только изъять значение константы HTTP_ACCEPT_LANGUAGE суперглобального массива PHP. И он даст именно то, что нужно, а точнее строку типа «en-US,en;q=0.8». Это код, содержащийся в строке заголовка из текущего запроса.PHP

Этот код просто определяет, на каком языке заголовок запроса, правда, если он присутствует. И одновременно направляет пользователя на соответствующий субдомен. Англоязычные пользователи получают перенаправление на en.mysite.com. А в переменной $site, хранятся все поддерживающиеся на сайте языки. Поэтому если нужно добавить другие языки, то необходимо еще дополнительный элемент массива.

Переменная $lang, предназначена для того, чтобы извлечь значение константы HTTP_ACCEPT_LANGUAGE. Для этого используется функция substr, имеющая 3 параметра, что позволяет достать нужный язык.

Следующая строка определяет, читается ли язык пользователя на сайте. Если все хорошо, то язык поддерживается, в противном случае, выставляется язык по умолчанию.

<?php
// List of available localised versions as 'lang code' => 'url' map
$sites = array(
    "en" => "http://en.mysite.com/",
    "es" => "http://es.mysite.com/",
	"fr" => "http://fr.mysite.com/",
);

// Get 2 char lang code
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

// Set default language if a '$lang' version of site is not available
if (!in_array($lang, array_keys($sites))){
    $lang = 'en';
}
// Finally redirect to desired location
header('Location: ' . $sites[$lang]);

?>

Полезные ссылки: межкомнатные двери Липецк

Категория: PHP, Разное Теги: 

Популярные записи:

Отображение содержимого последнего сообщения Отображение содержимого последнего сообщения
Правильный адрес URL в закладках Правильный адрес URL в закладках
Loginza – модуль авторизации на PHP Loginza – модуль авторизации на PHP
Функции PHP взаимодействующие с Twitter Функции PHP взаимодействующие с Twitter

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

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

Test

Яндекс.Метрика