автоматический выбор языка и переадресация в файл

Я хотел бы автоматический выбор языка в моем index.php. Когда пользователь из Колумбии, он перенаправляется на index_columbia.html, а из других стран — на index_english.html.

Как я могу сделать это с помощью PHP?


person ScienceNoob    schedule 19.06.2013    source источник


Ответы (4)


Информация о языке, отправляемая браузером, находится в зарезервированных на сервере переменных. Ну, это решение основано не на местоположении посетителя, а на языковых настройках браузера, которые кажутся лучше. Если не имеет значения, из Колумбии или Франции посетитель, если он использует английский как язык, лучше показать ему англоязычную версию веб-сайта.

Вы можете использовать $_SERVER['HTTP_ACCEPT_LANGUAGE'] следующим образом: -

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "fr":

        include("index_fr.php");
        break;
    case "it":

        include("index_it.php");
        break;
    case "en":

        include("index_en.php");
        break;        
    default:

        include("index_en.php");
        break;
}
?>
person Vivek Sadh    schedule 19.06.2013

Проверить можно по IP-адресу (для этого есть веб-сервисы). например: http://freegeoip.net/

Также вы можете использовать заголовок accept-language, отправленный браузером. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 Это можно получить из переменной $_SERVER.

person Fracsi    schedule 19.06.2013

Вы можете использовать поиск страны по IP-адресу.

Класс, который делает это, можно найти по адресу http://www.phpandstuff.com/articles/geoip-country-lookup-with-php.

person james_tookey    schedule 19.06.2013

Вы можете использовать мой код:

$langs = array('en','fr','de');
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (!in_array($lang, array_keys($langs))) $forward = 'index_'.$lang.'.html';
else $forward = 'index_en.html';
person Michael Walter    schedule 19.06.2013
comment
Как это использовать? - person Funk Forty Niner; 19.06.2013
comment
заголовок (статус: 301 перемещен навсегда); header(Location:mydomain.com/.$forward); выход; - person Michael Walter; 19.06.2013