Я хотел бы автоматический выбор языка в моем index.php. Когда пользователь из Колумбии, он перенаправляется на index_columbia.html, а из других стран — на index_english.html.
Как я могу сделать это с помощью PHP?
Я хотел бы автоматический выбор языка в моем index.php. Когда пользователь из Колумбии, он перенаправляется на index_columbia.html, а из других стран — на index_english.html.
Как я могу сделать это с помощью PHP?
Информация о языке, отправляемая браузером, находится в зарезервированных на сервере переменных. Ну, это решение основано не на местоположении посетителя, а на языковых настройках браузера, которые кажутся лучше. Если не имеет значения, из Колумбии или Франции посетитель, если он использует английский как язык, лучше показать ему англоязычную версию веб-сайта.
Вы можете использовать $_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;
}
?>
Проверить можно по IP-адресу (для этого есть веб-сервисы). например: http://freegeoip.net/
Также вы можете использовать заголовок accept-language, отправленный браузером. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 Это можно получить из переменной $_SERVER
.
Вы можете использовать поиск страны по IP-адресу.
Класс, который делает это, можно найти по адресу http://www.phpandstuff.com/articles/geoip-country-lookup-with-php.
Вы можете использовать мой код:
$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';