2017-02-02 4 views
1

Добрый день,php language автоматически перенаправляется

Мой сайт имеет EN, RU, AZ язык. как я могу заставить скрипт автоматически менять язык с помощью местоположений? Этот скрипт работает:

function getLocationInfoByIp(){ 
    $client = @$_SERVER['HTTP_CLIENT_IP']; 
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
    $remote = @$_SERVER['REMOTE_ADDR']; 
    $result = array('country'=>'', 'city'=>''); 
    if(filter_var($client, FILTER_VALIDATE_IP)){ 
    $ip = $client; 
    } 
    elseif(filter_var($forward, FILTER_VALIDATE_IP)){ 
    $ip = $forward; 
    } 
    else{ 
    $ip = $remote; 
    } 
    $ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip)); 
    if($ip_data && $ip_data->geoplugin_countryName != null){ 
    $result['country'] = $ip_data->geoplugin_countryCode; 
    $result['city'] = $ip_data->geoplugin_city; 
    } 
    return $result; 
    } 
    $location = getLocationInfoByIp(); 
    $loc= $location['country']; 

Это помогает найти код региона. ех. Azerbaija AZ, Russian RU

Как написать код перенаправления с if? ex. если место AZ перенаправляет mysite.com/az/ и если местоположение RU перенаправляет mysite.com/ru/ тогда все остальные регионы должны перенаправить mysite.com/en/

Благодаря хороший день

ответ

1

Вообще-то это не очень хорошая идея, чтобы установить язык для пользователей, основываясь на Только IP - что, если турист посещает страну, но не говорит на этом языке? И некоторые страны используют несколько языков (например, Beglium, где люди говорят по-голландски и/или по-французски).

Вместо этого вы можете проверить набор заголовков в браузере (локально определить язык, используемый в браузере), и использовать его. Кроме того, может быть хорошей идеей иметь возможность отменить это, файлы cookie хороши для этого.

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

switch ($language){ 
    case "ru": 
     header("Location: /ru/"); 
     exit; 
    case "az": 
     header("Location: /az/"); 
     exit; 
    case "en": 
    default: 
     header("Location: /en/"); 
     exit; 
} 

Вы должны разместить чеки, которые перенаправляет только если два не совпадают, например, - это бессмысленно для перенаправления /ru/, если вы уже в /ru/ и браузер заголовка устанавливается на русский язык.


В руководстве говорится следующее о $_SERVER['HTTP_ACCEPT_LANGUAGE']:

'HTTP_ACCEPT_LANGUAGE'
Содержание Accept-Language: из текущего запроса, если имеется один. Пример: «en».

+0

спасибо за быстрый ответ. – Vaska

Смежные вопросы