WordPressで多言語サイトを作成し、言語設定によってページをリダイレクトさせる

WordPressで多言語サイトを作成し、 言語設定によってページをリダイレクトさせる

WordPressで多言語サイトを作成し、言語設定によってページをリダイレクトさせる方法について紹介していきたいと思います!

ちなみに、今回は「日本語版・英語版」のWebサイトを作成するという内容を想定しています。

同一ページで単純に翻訳機能をつけたい場合は、

Google Translate(WordPressプラグインもあります)を使うのがお手軽です!

WordPressで多言語サイトを作成し、言語設定によってページをリダイレクトさせるコードを紹介

早速、サンプルコードを紹介します!

  • 日本語サイト・・・ドメイン名+/jp/
  • 英語サイト・・・・ドメイン名+/en/

というディレクトリ設定とした上での内容になります!

```
<?php
/* * ブラウザ(スマホの場合は端末)の言語設定を取得 * 言語設定は複数されている可能性があることを考慮 */
$languagesConfigurations = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$languagesConfigurations = array_reverse($languagesConfigurations);

$http = is_ssl() ? 'https' . '://' : 'http' . '://';
$url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];

if ($_SESSION["isRedirect"] !== 1) {
$_SESSION["isRedirect"] = 1;
/*
* 言語設定の内容を1つ1つ解析する。
* array_reverseをしているので、
* 1番最後に取り出すデータ=優先度の高い言語設定となる。
* ・言語設定にen,fr,itのいずれかが含まれている場合は、USサイトにリダイレクト
* ・言語設定にjaが含まれている場合は、日本語サイトをそのまま表示
* ・あんまりなさそうだが、言語設定が何かの理由で取得できない場合は
* 日本語サイトそのまま表示するという設定内容
*/
foreach ($languagesConfigurations as $language) {
if (preg_match('/^en/i', $language)) {
$result = 'English';
       $url = str_replace('/jp/', '/us/', $url);
// URLのうち/jp/の部分のみを/us/に置き換え
} elseif (preg_match('/^ja/i', $language)) {
$result = 'Japanese';
}
}
/*
* 英語だった場合はリダイレクト
* 日本語だった場合はリダイレクトせずセッションを削除
*/
if ($result === 'English') {
header("Location: " . $url);
} else if ($result === 'Japanese') {
unset($_SESSION["isRedirect"]);
} else {
unset($_SESSION["isRedirect"]);
}
} else if ($_SESSION["isRedirect"] === 1) {
unset($_SESSION["isRedirect"]);
}
```

ああ、追ってコードは整形します・・・

こちらのコードをfunctions.phpの冒頭に貼り付けます。

多言語設定に関わるポイント

今回のサンプルコードのポイントとしては、ブラウザや端末のスマホの言語設定を取得して、その内容を判断し、しかるべきページにリダイレクトさせるというものになります。

$languagesConfigurations = explode(‘,’, $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]);
$languagesConfigurations = array_reverse($languagesConfigurations);

この2行の部分で、言語設定を取得します。

こと言語設定については、複数設定されている可能性もあるため、配列で取得するところがポイントですね。

実際にiPhoneやAndroidで試してみましたが、今回のサンプルコードを用いた上で、仮サイトを作ってみたところ、正しく動作しました。

日本語・英語だけでなく、当然他の言語にも対応しています。

技術的には、Webサイトが表示される際にデータとして渡される各種データの中のうちの「HTTP_ACCEPT_LANGUAGE」という情報を読み取って、その情報の中に書かれた文字列を見て、どこにリダイレクトさせるかを判断しているというものになります!

まとめ

ということで、WordPressで多言語サイトを作成し、言語設定によってページをリダイレクトさせる方法について見ていきました!

参考になれば幸いです!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする