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