Poeditを使ってWordPressの翻訳ファイルを編集する

この記事では、翻訳ツールであるPoeditを使って、WordPressの翻訳ファイルを編集し、Webサイトを国際化対応するやりかたをご紹介します。

Poeditを使った翻訳ファイルを編集する前に、そもそも国際化とは何か、WordPressの国際化はどのようになっているのかを知っておくのが近道です。Poeditの前に、WordPressの国際化の仕様をご説明します。

WordPressと国際化

国際化(Internationalization : i18n)とは、テーマやプラグインを開発するプロセスであり、他の言語に簡単に翻訳できます。

WordPressは世界のあらゆる言語圏で使用されており、WordPressプラグインの文字列は、他の言語に簡単に翻訳できるように、WordPressが提供する特別な方法でコーディングする必要があります。

WordPressの国際化方法

テーマやプラグインのテキストを簡単に翻訳するには、テキストをハードコードせずに、WordPressの国際化機能を介して、引数として渡す必要があります。

<h1>Profile Page</h1>

文字列を国際化関数に渡すことで、簡単に解析して翻訳できます。

<h1><?php _e( 'Profile Page' ) ?></h1>

テキストドメイン

テキストドメインは、国際化関数の2番目の引数です。テキストドメインはWordPressで構築したサイト全体の識別子であり、WordPressが読み込まれた全ての翻訳を区別できるようになります。

多くの場合、テーマやプラグインの名前を使えば良いでしょう。

例えば、sample-pluginというプラグイン名で開発していれば、それを国際化関数の引数として指定します。

<h1><?php _e( 'Profile Page', 'sample-plugin' ) ?></h1>

テキストドメインを指定することで、sample-themeドメインのProfile Pageというテキストを翻訳できます。

テキストドメイン名は、アンダースコアではなくダッシュを使い、また小文字にする必要があります。

翻訳ファイルのローディング

WordPressの翻訳は、.poファイルと.moファイルという翻訳ファイルに保存され、ロードする必要があります。

WordPressの翻訳ファイル

WordPressは、フリーソフトウェアの国際化で最も普及しているツールである、GNUのgettext()という仕組みを使っています。.poファイルや.moファイルはWordPress独自ではなく、gettext()に従ったものです。

.poファイル

Portable Objectファイル。

人間が読み取って編集することを目的としており、特定のパッケージの元の翻訳可能な文字列を特定のターゲット言語での翻訳に関連付けるテキストファイルです。サポートされている言語ごとに1つの.poファイルがあります。

.moファイル

Machine Objectファイル。

.poファイルをコンパイルして作成します。プログラムによって読み取られることを目的としており、バイナリファイルです。読み込み専用であり、基本的に編集はできません。また、.moファイルの形式はシステムごとに異なることが多く、移植性がありません。

.potファイル

Portable Object Templateファイル。

.poファイルのテンプレートです。翻訳ファイルの編集ソフトによって、.potファイルを読み込んで.poファイルを生成できます。

翻訳ファイルは、多くの場合は.poファイルと.moファイルであり、.poファイルのテンプレートとなる.potファイルは含まれません。

これらは、load_theme_textdomain()やload_child_theme_textdomain()、またはload_plugin_textdomain()を使用してロードできます。

次の例は、プラグインの翻訳ファイルを読み込む例です。3番目の引数で翻訳ファイルを読み込むベースディレクトリを指定しています。

load_plugin_textdomain(
    'sample-plugin' // slug
    ,false          // deprecated
    ,dirname( plugin_basename( __FILE__ ) ).'/languages/' // dir
);

また、翻訳ファイルを /wp-content/languages/themes/ や /wp-content/languages/plugins/に置いた場合は、load_theme_textdomain()やload_plugin_textdomain()で指定したベースディレクトリも先に、翻訳ファイルがロードされます。

翻訳ファイルのファイル名

翻訳ファイルは、load_theme_textdomain()やload_child_theme_textdomain()、またはload_plugin_textdomain()で指定したベースディレクトリから、

  • {言語コード}.mo
  • {テキストドメイン}-{言語コード}.mo

のいずれかで読み込まれす。

今回の例では、

  • ja_JP.mo(またはja.mo)
  • sample-plugin-ja_JP.mo(またはsample-plugin-ja.mo)

となります。

なお、{locale}は言語を表すコードですが、日本国内は日本語しかないため、{locale}はjaで問題ありません。上記の例では、sample-plugin-ja.moが良いでしょう。

.poファイルの翻訳設定

では実際に、次の国際化関数を使った場合の翻訳ファイルの中身を見てみましょう。

<h1><?php _e( 'Profile Page', 'sample-plugin' ) ?></h1>

.poファイルの中身は次のようになります。

msgid “Profile Page”
msgstr “プロフィールページ”

sample-plugin-ja.po

msgidは翻訳する文字列のキーであり、msgstrは翻訳後の文字列です。

今回の例では、Profile Pageというキーを、日本語のプロフィールページという文字列に変換します。

Poeditを使った翻訳ファイルの作成

.poファイルをコンパイルして.moファイルを作るには、msgfmtコマンド、もしくはPoeditというツールを使います。ただし、msgfmtコマンドを使うにはgettext()コマンドをインストールするなどの手間があるため、Poeditの利用をお勧めします。

Poeditとは

Poeditとは、.poファイルを.moファイルにコンパイルできる、クロスプラットフォーム(Windows、Mac)に対応した無料ツールです。有料版もありますが、多くの場合はその機能は不要でしょう。

WordPressの開発者によれば、Poeditは.poファイルを編集するための「最も人気があるツールの一つ」とのことです。

Poeditを使った翻訳

.poファイルを読み込んで編集する

Poeditで.poファイルを開くと、ソーステキストと翻訳の一覧が表示されます。ソーステキストを選択すると、その対訳が編集できます。なお、ソーステキストはPoeditでは編集できません。

気になる対訳があれば、右側の「要確認」トグルをONにすれば、後ほど確認できます。

翻訳の編集を終えて保存すると、自動的に.moファイルも生成されます。

.potファイルから.poファイルを作成する

新しい言語を追加する場合は、Poeditで.potファイルを開いて.poファイルを生成します。

.poファイルの作成時の言語を選択します。

.poファイルが生成されたら翻訳を編集します。

翻訳ファイルのアップロード

編集した.poファイルと.moファイルを、WordPressにアップロードします。

テーマやプラグインが継続的にアップデートされることを想定し、WordPressの言語フォルダにアップロードするのが望ましいでしょう。テーマやプラグインのフォルダにアップロードした場合、アップデート時に翻訳ファイルが削除されるので注意してください。

  • テーマの言語フォルダ:/wp-content/languages/themes/
  • プラグインの言語フォルダ: /wp-content/languages/plugins/

まとめ

WordPressは日本国内でもかなり普及していますが、良質なプラグインは英語圏が多く、日本語の対応は進んでいないのが現状です。

WordPressを使ったWebサイトをお客様にご提供する際は、フロントエンド画面はもちろん、WordPressの管理メニューも日本語化されるべきです。これは、ブラウザの翻訳では限界があり、またブラウザの翻訳がお客様の望む日本語になっていないこともあるからです。

この記事が、みなさまのお役に立てれば幸いです。