【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 |