プラグイン Bogo でWebサイトを多言語化

Webサイトを多言語化するWordpressプラグインはいくつかあるようですが、設計が素晴らしく、使いやすかったBogoを紹介します。

プラグインのインストールと初期設定

公式プラグインディレクトリからダウンロード後インストールする場合は下記から。

Bogo

プラグインページ

言語パックのインストール・アクティベート

言語を設定する場合は、まず言語パックのインストールを、それからアクティベートを行います。

英語パックをアクティベートした状態

キーワードの翻訳設定

「Terms Transition」で言語を選択後、基本情報やカテゴリ(ターム)の設定します。なお、サイトのタイトルやキャッチフレーズの表示はbloginfo() を、アドレス表示はhome_url()使う前提です。

Bogoの挙動

URL

インストールすると、下記のようなURLで言語ごとの表示が可能になります。

英語サイトの場合

http://sample.com/en/

投稿・固定ページの扱い

ページごとに言語ページが作成できます。言語別にページが独立する仕様なのでそれぞれのエディターやカスタムフィールドに異なる情報を入力できます。また、各言語ページ同士の関係は維持されます。

他言語ページの作成は個別管理画面に追加される「Add Transition」からカスタムフィールドの情報も含めて複製扱いで作成します。一覧で言語別絞り込み表示もできるので、作成後は言語ごとの編集もラクに行えます。

Search Everything との併用は不可

サイト内検索用にSearch Everythingと併用した場合、管理画面での言語絞り込み検索時に何も検索に引っかからない不具合が起こります。代わりにCustom Fields Searchを試してみると、このような不具合はありませんでした。

テンプレート内の記述

表示分岐

言語別に表示内容を分岐させたい場合は、専用の変数が用意されているので、それを使用します。

<?php if( 'en_US' == $locale ): ?>
(英語用)
<?php else: ?>
(英語以外用、日本語と英語のみの場合は日本語用)
<?php endif; ?>

ループ

get_postsではなくWP_Queryを使えば、特別な設定無しで言語別の投稿を表示できます。

カスタム投稿での使用

カスタム投稿への対応は、まだ完全ではないようですが最低限動きます。カスタム投稿でBogoを有効にする方法はWordPress Bogo をカスタム投稿タイプでも使う – Qiitaで触れられてます。

タクソノミータームの扱い

投稿に設定されているタームを get_terms で言語別に取得することは、現時点ではできないようでした。日本語投稿で設定済みのタームがあれば、多言語でも「設定済み」の扱いとなるので、方法としては下記のようにするほか無いかと。

  • 使用するタクソノミーを言語ごとに分ける。
  • 日本語の投稿がある場合は、もれなく他言語も作成する。

Custom Post Type Permalinksを使っている場合

カスタムタクソノミーの設定をCustom Post Type Permalinks で行っている場合は、代わりにregister_taxonomyに記述を追加、Toolset を使用中であればタクソノミー設定ページの「オプション」の欄で設定を行います。また、投稿のパーマリンク設定はCustom Post Type Permalinks の作者さんが別に作成されているSimple Post Type Permalinksで行えます。

Toolset の場合

以上です。

Author

  • Shinichi Kuroda - 黒田晋一
  • 香川県高松市 - Takamatsu-shi, Kagawa, Japan.
  • Mail - info@studiobusstop.com