Как определить язык пользователя на PHP


Определение языка пользователя, зашедшего на ваш сайт, может быть полезно с точки зрения usability, ведь это позволяет сразу же использовать нужную языковую версию сайта. Пользователю при этом не придется ругаться в поисках кнопки переключения языка (а некоторые могут просто закрыть страницу). В связи с этим возникает вопрос: как определить язык пользователя на php? Разумеется, мы определяем не язык, на котором в реальности он разговаривает, а языковые настройки системы (браузера, в частности).

Почему именно php? php позволяет изменить перевод текстовых данных в процессе подготовки страницы на сервере прежде, чем она будет «отдана» браузеру пользователя.

Для определения языка можно воспользоваться суперглобальным массивом $_SERVER, в котором содержится немало интересной информации о посетителе. Например:

1
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

Данная строчка позволяет «вырезать» первые два символа из строки, содержащейся в $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]. Это как раз и будет сокращенная аббревиатура языка. К примеру, сейчас у меня на Ubuntu вся система настроена на английский язык. Соответственно, в $_SERVER[‘HTTP_ACCEPT_LANGUAGE’] у меня находится такое значение:

1
en-US,en;q=0.8,ru;q=0.6

В переменной $language в итоге мы получим значение «en». Для создания разной логики под несколько языков можно использовать такой код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($language){
    case "fr":
        //здесь код для французской версии
        ...
        break;
    case "it":
        //здесь код для итальянской версии
        ...
        break;
    case "en":
        //здесь код для английской версии
        ...
        break;        
    default:
        //для всех остальных языков код тут
        ...
        break;
}




Другие посты

Категория: PHP-скрипты

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