見出し画像

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は、フリーソフトウェアの国際化で最も普及しているツールである、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 “プロフィールページ”

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ファイルとPOファイルを、WordPressにアップロードします。

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

  • テーマの言語フォルダ:/wp-content/languages/themes/

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

まとめ

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

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

Matchfyでは翻訳ファイルを販売しています

Matchfyのテンプレート販売サイトMatchfy TemplateではWordPressの翻訳ファイルを販売しています。

翻訳ファイルの編集はとても単調な作業です。もし、求めているWordPressプラグインの翻訳ファイルが(比較的安価で)販売されているのであれば、ぜひ購入すべきです。みなさまの大変貴重なお時間は、みなさまにしかできない生産性が高い作業に割り当てて、翻訳ファイルの編集に割り当てるべきではありません

ぜひご購入をご検討ください!

この記事が気に入ったらサポートをしてみませんか?