【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

記事がお気に召しましたらシェアお願いします!

関連記事