WordPressを日本語と英語など複数の言語で表示したい場合がありますが、多言語化のプラグインは、ある1つの言語で書かれたページを自動翻訳を使って翻訳しながら表示するプラグインが多く、これだと原稿は1ページ分で良いというメリットがあるものの、翻訳の質がぜんぜん良くないというデメリットがあります。そこで、今回は、言語ごとのページを自分で作って、選択された言語でページを表示するようなしくみを構築するにはどうすれば良いかを解説していきます。
準備
多言語化に必要なプラグイン
ワードプレスに以下のプラグインを導入します。
Conditional Menus | 言語毎にメニューを切り替えるプラグイン |
Content Aware | Sidebars言語毎にサイドバーを切り替えるプラグイン |
多言語化をサポートしてくれるWebツール類
ワードプレス関連以外で多言語化サイトを作る際に便利なルールです。
DeepL | https://www.deepl.com/ ドイツの自動翻訳ソフト(無料です) |
WordPressの変更点
外観 ⇨ テーマエディター でテーマエディターを開き、画面右側のファイルのリストから「functions.php」を選択し、下記のコードを functions.phpの一番下に追加して保存します。
// 固定ページにもタグをつける // function.php に記述 function add_tag_to_page() { register_taxonomy_for_object_type('post_tag', 'page'); } add_action('init', 'add_tag_to_page');
この変更を行うことで、以下のように固定ページにもタグを記入することができるようになります。
実際に多言語のサイトを作る
ページは作る言語毎に用意する
たとえば、英語と日本語のページを作りたい場合を例に取ると、まずトップページですが、英語で書かれたものと、日本語で書かれたものを用意します。この際に、英語のページには「english」などのタグを、日本語のページには「japanese」などのタグを指定しておきます。
サイドバーを切り分けるための設定
WordPressの画面左側の管理者メニューから、「Content Aware」を選択してサイドバーの管理画面を開きます。新規追加を選択してサイドバーを作りたい言語の種類の数だけ作ります。
今回は「english」と「japanese」の2つを作りました。このそれぞれのサイドバーを表示させる条件として、英語のサイドバーは表示条件を「タグ」が「english」だった時、日本語のサイドバーは表示条件を「タグ」が「japanese」だったときと設定しておきます。こうすることで投稿でも固定ページでもタグによって使うサイドバーを分けることが出来ます。
実際のサイドバーを定義する
実際のサイドバーは、外観 ⇨ ウイジェット で編集できます。さきほど作った2つのサイドバーが表示されているはずです。
メニューを切り替えるしくみ
メニューを言語によって切り替えるには、いくつかの技を駆使します。まずは、どの言語のページをデフォルトで表示させるのかを決めます。URLで指定されない限り日本語のトップページをデフォルトで表示させるのであれば、日本語のメニューの中に「English」などの名称で英語の方のトップページを選択するアイテムを入れておきます。逆に英語の方のメニューには「日本語」などのように日本語のページのトップを表示するアイテムを入れておきます。そして日本語のトップページ用に作ったページを 設定 ⇨ 表示設定 で 「ホームページ」として指定しておきます。逆に英語のページをデフォルトで開くようにしたいのであれば、英語の好きなページを 設定 ⇨ 表示設定 で 「ホームページ」として指定しておきます。
メニューを作る
WordPressの管理者メニューから 外観 ⇨ メニュー と選択してメニューの管理画面を出し、2つのメニューを作成します。1つは英語のメニュー、もう1つは日本語のメニューです。このメニューの管理画面の下の方をスクロールしてみると、「固定ページを自動追加」や「メニューの位置」といった設定項目がありますが、ここはチェックを入れないでください。
メニューを言語毎に切り替える設定
メニューを作成したら、画面の上の方にある「位置を管理」というタブを選択します。すると、ヘッダーメニューという項目があるので、ここに表示されている「+ Conditional Menu」というリンクをクリックします。するとメニューを選択するリストとその横に「conditions」というリンクが出ると思いますので、ここで英語のメニューを選んでおいてから「conditions」をクリックし、さらに「Pages」というタブから英語のメニューを表示したいページにすべてチェックを入れます。日本語のメニューも同様に設定して保存ボタンを押しておきます。設定が終わったら、「位置を管理」の画面の下にある保存ボタンを忘れずに押下しておいてください。これをしないと設定が反映されません。
この原稿を執筆している時点では、サイドバーの設定と違い、メニューのほうの切り替え設定では、固定ページに関しては、タグによる切り替えができませんでした。面倒ですがページを1つ1つ指定していくしか無いようです。ですので、ページを新規に作るたびにここの設定も変更してください。
動作確認
サイトを表示させ、メニューが表示されていることを確認してください、さらに、言語を選択したときには目当ての言語でのページが表示されて、サイドバーとマニューが意図したとおりに表示されていることを確認してください。
英語のメニュー
日本語のメニュー
さいごに
今回は、Wordpressでマルチリンガルサイトを構築する方法を解説しました。
現在、1つのページを自動翻訳して多言語に対応させるプラグインは数多く出ていますが、自動翻訳の制度が高くない上に、自動翻訳できない言語には対応できないなど使い勝手がよくありません。
そこで、ちゃんとした多言語サイトを作りたいのであれば、上記の方法で複数の言語を表示できるサイトが構築できると思います。DeepLの翻訳品質は驚くほど良いので、これを使って複数言語に対応したサイトの構築も比較的ラクにできるのではないでしょうか。
- AmazonFireTVをUSBメモリに録画する方法
- 応用プログラミング演習Ⅰのヒント
- さくらのVPSのubuntuにLAMP環境をインストール
- WEBサイトHowTo
- エレクトロハーモニクス
- 漢字書き順表示WEB
- Windows11 削除できないファイル・フォルダを削除
- STM32 Nucleo Boardで電子サイコロ
- STM32 Nucleo BoardでGPIO
- STM32 Nucleo BoardでLED点滅
- STM32F103でマイコン遊び
- windows11のエクスプローラのクイックアクセスを復活させる方法
- iCloud写真でjpg画像をダウンロードできない
- Acrobatが遅い時に見る記事
- Wordpress サイト・ヘルスチェック
- imgur:既にアップロードした写真を既存のpost(Album)に入れ…
- 無料SSL Let's EncryptでWordpressサイトをSSL化する-Ubuntu版
- [ubuntu]ドメイン購入からWordpress設定までの全工程解説
- WordPressのメール送信が遅い時のトラブルシューティングとGmai…
- ドコモ携帯が海外でネット接続できなくなるトラブル・パケット…
- R Studio 統計分析システムの導入方法
- Let's Encrypt revoke & サイト消去 @ubuntu
- paiza.ioのjavaプログラムにコマンドライン引数を与える方法2選
- PHP - Ajaxでリアルタイムチャットなど
- PHPMailer導入とトラブル対策
- Netflixの音声をHome Pod mini で再生できない
- wordpress二段階認証の注意点など
- Wordpressの保存ができない・オートセーブを完全に停止する
- ブラザー・レーザープリンタ HL-317CDW リセット
- 動画配信のトラブル対処(ブーンというノイズが乗る)
- 無料SSL Let's EncryptでWordpressサイトをSSL化する-centos版
- 一番簡単なCentOS PHP7.3から7.4への移行方法
- 一番わかりやすいBracketsの導入とトラブルシューティング
- パソコンへのLinuxの導入
- WordPressを多言語化する
- Wordpressの投稿一覧画面から要らない項目を削除する
- VisualStudio2013にあったセットアッププロジェクトを戻す!
- Visual Studioで使うSSHの秘密鍵をputtygenで作成する方法
- PHPMailerのログ出力をSyslogにする
- Open Graph HTML手書きのウエブサイトをSNSでシェアできるよう…
- MacBookProにBootcampでWindows10を入れる際のポイント
- Let's Encryptのトラブルシューティング
- 無料SSL Let's EncryptでWordpressサイトをSSL化する
- client denied by server configuration
- CentOs8 インストール後にすべきことメモ
- C# でWindowsサービスの「説明」を取得する方法
- C# NotifyIconの実装
- 【Windows10】ホテルのWiFi接続時にWiFiのログイン画面が出ない…