WordPressプラグインを多言語化に対応する

WordPressにはテーマやプラグインを多言語化(翻訳)するための機能が備わっています。より多くの人がテーマやプラグインを使用できるよう、多言語化することが推奨されています。今回、はじめてプラグインの多言語化に挑戦してみたので、方法をまとめてみました。環境はMac OS X 10.7.4です。

多言語化にあたっては、下記のリソースが参考になりました。

プラグインの多言語化

翻訳する文字列をマークする

WordPressでは、gettextというライブラリを用いて国際化を実現します。翻訳したい部分を関数に通すことで、適切な文字列に翻訳されます。ここで使用する関数は主に下記の2つです。

__( ‘文字列’, ドメイン ) 文字列の訳を返します。第2引数は一意な識別子のことで、これに基づいてロードする翻訳ファイルが決定されます。プラグインのベースネームが推奨されてるようです。
_e( ‘文字列’, ドメイン ) 文字列の訳を出力します。

ドメインの選択と読み込み

翻訳ファイルを読み込むために、プラグインのはじめのほうに「load_plugin_textdomain」関数を記述します。

// 翻訳ファイルはプラグインディレクトリ内の「languages」というディレクトリに保存するのが慣例のようです。
load_plugin_textdomain( ドメイン, false, basename( dirname( __FILE__ ) ) . '/languages' );

プラグインのヘッダーコメント部分も国際化対応する

プラグインの管理画面に表示するプラグインの説明や作者情報なども翻訳可能です。プラグインのヘッダーコメント部分にドメインとパスを追加することで対応できるようです。

/**
 * Plugin Name: 〜
 * 〜
 * Text Domain: 多言語化ファイルのドメイン
 * Domain Path: /languages/
 */

POTファイルを作成する

WordPress 日本語版チーム資料/リリース作業 – WordPress Codex 日本語版」に「補足1:手元で pot を作成する」としてPOTファイルの作成方法が掲載されていましたので、その方法で行います。Suvbersionやphpといったコマンドを使用しますが、Macのターミナルから普通に実行できました(恐らくXcodeのインストールが必要です)。

# ツールのチェックアウト
$ svn checkout http://svn.automattic.com/wordpress-i18n/tools/trunk/tools
# POTファイルを作成
# テーマの場合は wp-plugin の部分を wp-theme とするようです。
$ php tools/makepot.php wp-plugin プラグインの保存ディレクトリ

Macのphpの設定をしていないためか、timezoneを設定してくださいといったWarningがでましたが、ホームディレクトリにPOTファイルは作成されていましたので、そのままそれを使うことにします。

POTファイルを開き、念のため上部の設定部分をWordPress本体のPOTファイルを参考に追記します。

"Last-Translator: 翻訳者名 <翻訳者のメールアドレス>\n"
"Language-Team: 翻訳者のURL\n"
"Plural-Forms: nplurals=1; plural=0\n"
"X-Poedit-Language: Japanese\n"
"X-Poedit-Country: JAPAN\n"
"X-Poedit-SourceCharset: utf-8\n"

PoeditでPOファイルとMOファイルを作成

WordPressで翻訳を行うためには、翻訳のためのファイルであるPOファイルとMOファイルが必要です。PoeditはPOファイルとMOファイルを作成するツールです。Windows、Mac、Linuxに対応しています。

初期設定

インストールして起動すると英語表記でした。Poedit > Preference > Personalize > Change UI Language から日本語に変更できます。その下に自動更新のチェックもあるので、ついでにチェックしておきましょう。再起動すると設定が反映されます。

POTファイルを読み込む

POTファイルとは翻訳ファイルの基となるファイルのことです。これがあると、誰かが他言語の翻訳ファイルを作るときに便利なのだそうです。そのため、「languages」ディレクトリに保存し、プラグイン本体と一緒に配布すると良いようです。

ファイル > POTファイルを元に新しいカタログを作成します をクリックします。すると、「Poeditエラー done…」というダイアログが表示されます。エラーというのが気になりますが、特に問題なさそうです。

Poedit エラー

ちなみに、プラグインの説明部分で、「Plugin URI」と「Author URI」が同じだと本当のエラーとなるようで、POTファイルが読み込めませんでした。「Plugin URI」と「Author URI」は異なるURLを指定する必要があるようです。

読み込むと下記のようになります。

プロジェクト設定

パスの設定

次に、「パス」というボタンをクリックします。ここでプラグインのディレクトリを指定することで、プラグインが読み取られ、翻訳部分が読み込まれます。

「ベースのパス」の部分にプラグインのディレクトリが格納されているディレクトリを、「パス」の部分にプラグインのディレクトリを指定します(追記:記事を書いた後に思いましたが、POTファイルをちゃんと「languages」の中に保存していれば、「ベースのパス」を「.」、「パス」を「..」でいけますね)。

パス

キーワードの設定

次に、「キーワード」ボタンをクリックし、翻訳に使用する関数名を入力します。ここでは「__」と「_e」を入力します。

キーワード

「OK」をクリックすると、POファイルの保存場所を聞かれます。翻訳ファイルのファイル名は「 {ドメイン}-{ロケール}.mo」という規則があるようなので、それに従い保存します。ドメイン部分は、プラグインのコードの中で指定したものを指定します。

翻訳する

保存すると、下記の翻訳画面が表示されます。

翻訳画面

上部が元文章の一覧、中央が選択した文章、下部が翻訳文章の入力欄です。全て入力して保存すると、POファイルと同時にMOファイルも生成され保存されます。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく