【PHP】ブラウザの言語設定ごとに異なるURLにジャンプさせる方法

ユーザーのブラウザの言語設定ごとに異なるURLにジャンプさせる方法をご紹介します。

ソースコード

<?php
//言語設定取得
$language = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
//言語識別
if (preg_match('/ja/i', $language[0])) { 
$result = 'ja'; 
} elseif (preg_match('/en/i', $language[0])) {
$result = 'en'; 
} elseif (preg_match('/pt/i', $language[0])) { 
$result = 'pt'; 
}
//ジャンプ設定
if ($result == 'ja') { 
header("Location:https://deco8.net/ja/"); 
}elseif ($result == 'en') { 
header("Location:https://deco8.net/en/"); 
}elseif ($result == 'pt') { 
header("Location:https://deco8.net/pt/"); 
}else{ 
header("Location:https://deco8.net/en/"); } 
?>

解説

言語設定取得

$language = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); 

ブラウザに設定してある言語を取得します。設定してある言語の優先順位の高い順に配列に格納されます。

言語識別

if (preg_match('/ja/i', $language[0])) { $result = 'ja'; } elseif (preg_match('/en/i', $language[0])) { $result = 'en'; } elseif (preg_match('/pt/i', $language[0])) { $result = 'pt'; } 

優先順位が一番高い言語を識別します。前述の通り優先順位の高い言語は$language[0]に格納されています。

ジャンプ設定

if ($result == 'ja') { header("Location:https://deco8.net/ja/"); }elseif ($result == 'en') { header("Location:https://deco8.net/en/"); }elseif ($result == 'pt') { header("Location:https://deco8.net/pt/"); }else{ header("Location:https://deco8.net/en/"); } 

上記の例では「日本語」の場合「ja」にジャンプ、「英語」の場合は「en」にジャンプ、「ポルトガル語」の場合「pt」にジャンプ、それ以外の言語の場合は「en」にジャンプする設定です。  

良く使う言語コード一覧

日本語ja
英語en
中国語zh
スペイン語es
ポルトガル語pt
ドイツ語de
イタリア語it
フランス語fr

関連記事