2014年版: WordPress プラグイン・テーマの翻訳を始めてみよう

5月17日に予定されている WordBench 地域合同企画「春の翻訳&ドキュメンテーション祭り」(現在12地域が参加中!)に向けて、プラグイン・テーマの翻訳で参考になる記事を連載形式で書いてみたいと思います。

第一弾として、ここではプラグイン・テーマ翻訳をスタートしてみたい人のための最新版情報をまとめました。それぞれに関する説明はざっくりしたものですので、必要があれば追い追い書き足していきます。

それでは、最初のステップから!

WordPress プラグイン・テーマの翻訳ファイルの位置を理解する

WordPress.org の公式プラグイン・テーマディレクトリで「translation-ready」タグ()がついているものは、基本的に翻訳の準備ができています。

翻訳の準備ができたテーマの例

まず理解しておきたいのがプラグインやテーマの翻訳ファイルはどこにあるのか?ということ。一般的に言うと、それぞれのディレクトリ内の /languages/ フォルダです。

プラグイン(plugin-name というディレクトリ名とする)の場合:

wp-content/plugins/plugin-name/languages

テーマ(theme-name というディレクトリ名とする)の場合:

wp-content/themes/theme-name/languages

通常、このディレクトリ内に .po や .mo で終わる名称の各言語ファイルと、.pot で終わる(翻訳が含まれていない)テンプレートファイルがあるはずです。

WP Multibyte Patch の言語ファイル
WP Multibyte Patch の言語ファイルの位置

ただし、デフォルトテーマや Akismet プラグインでは wp-content/languages のサブディレクトリに置いてあったり、古いプラグイン・テーマでは /langs/ とか適当な位置になっている場合もあります。標準的な位置に翻訳ファイルがないと追加対応のために知識が必要なこともあるので、最初に手を付けるものとしてはこの形式でファイルが置かれてあるものがオススメです。

WordPress プラグイン・テーマの翻訳を始める5つの方法

翻訳したいプラグイン・テーマの準備状態によって、使える方法とそうでないものがあるので5つに分けてみました。翻訳ファイルの操作は gettext パッケージがあればできますが、コマンドラインに不慣れな人は Poedit という無料のソフトがあると役に立つでしょう。

(6と7は5月4日に追記しました)

  1. 一部翻訳された PO ファイルを使う
  2. 用意された POT ファイルを使う
  3. コマンドラインから i18n Tools を使って翻訳部分を抽出する
  4. Poedit の有料版を使って翻訳部分を抽出する
  5. Poedit の無料版を使って翻訳部分を抽出する
  6. Grunt Task で抽出する
  7. Codestyling Localization プラグインで抽出する

その1: 一部翻訳された PO ファイルを使う

一番手軽に翻訳を始められるのがこのやり方です。プラグイン・テーマに plugin-name-ja.po/theme-name-ja.po というような日本語の「PO ファイル」が含まれている必要があります。

この翻訳ファイルをテキストエディタまたは Poedit で開きます。翻訳がない部分や修正したい部分を埋めてファイルを保存すれば、新しい「MO ファイル」(plugin-name-ja.mo/theme-name-ja.mo など)が自動で生成されるので、この MO ファイルを翻訳ファイルの位置に置けばサイトに反映できるはずです。

注意したいのは、PO ファイルが最新の POT ファイルに更新されていない場合がある点。Poedit では、メニューの「カタログ → POT ファイルから更新」で更新できます。

その2: 用意された POT ファイルを使う

プラグイン・テーマに「POT ファイル」が含まれている状態なら、日本語訳がまだ存在しなくても比較的簡単に作成できます。例えばそれが plugin-name.pot という名称なら、plugin-name-ja.po (拡張子にも注意)に変更して Poedit で開き、「カタログ → 設定」から言語を指定すれば翻訳が開始できます。

Poedit プロジェクト設定

その3: コマンドラインから i18n Tools を使って翻訳部分を抽出する

プラグイン・テーマに POT ファイルが存在しない場合は自分で生成することになります。一つの方法は、POT ファイルを生成するための WordPress 開発者向けツールを使うことです。コマンドラインに抵抗がないなら、これが一番確実で簡単です(英語の詳細説明はこちら)。手順は以下のとおり。

i18n Toools を含む WordPress のソースをダウンロード。

$ svn checkout http://develop.svn.wordpress.org/trunk/

trunk 内の tools/i18n へ移動して、makepot.php の wp-plugin を実行(パスが your-plugin-directory のプラグインの場合)。

$ php makepot.php wp-plugin your-plugin-directory

または、wp-theme を実行(パスが your-theme-directory のテーマの場合)。

$ php makepot.php wp-theme your-theme-directory

その4: Poedit の有料版を使って翻訳部分を抽出する

有料アップグレード版の Poedit Pro を使う方法もあります。やり方については別途詳しく記事を書きましたのでそちらをどうぞ → WordPress プラグイン・テーマ翻訳対応を強化した有料版 Poedit Pro を使ってみました 

宮さんから聞かれて気づいたんですが、現在プラグイン・テーマヘッダー(管理画面に表示されるプラグイン説明文など)内のテキストの抽出には対応していません。Poedit 作者さんに問い合わせたところ、近いうちに対応は予定しているということですが、i18n Tools を使った場合とその点で数行程度の差異が発生することになりますのでご注意ください。

Poedit Pro ですが、通常 $19.99 のところが現在 $11.99 になっているみたいです(約800円お得)。

その5: Poedit の無料版を使って翻訳部分を抽出する

ちょっと手間は増えますが無料版でも抽出は可能です。頻繁にやらないのであればこちらの方法でも良いかもしれません。この項目だけ長くなりそうなので別途書きたいと思いますが、「Poedit POT 作成」で検索しても色々出てくると思います。

その6: Grunt Task で抽出する

node.js と Grunt をインストールし、grunt-wp-i18n & grunt-pot を使うという方法もあります(詳細の英語ドキュメンテーション)。

その7: Codestyling Localization プラグインで抽出する

Codestyling Localization という、管理画面から翻訳を行うプラグインもあります。


WordPress プロジェクトの将来の計画では GlotPress を使ってオンラインでプラグイン・テーマの翻訳ができるようにする、というのも含まれているらしいと耳にしたりしますが、その仕組みができるまでまだしばらくはかかりそうです。公式ディレクトリに最近追加・更新されたプラグイン・テーマでは翻訳の準備ができているものがだいぶ増えてきているので、日本語で使いたいものがあったら今回ご紹介した方法を試してみてください。

「翻訳祭り」、私は WordBench 東京のイベントに参加する予定です。各地域との動画中継もやってみるということなので、質問・役に立つ TIPS などあれば共有しましょう!


Comments

“2014年版: WordPress プラグイン・テーマの翻訳を始めてみよう” への3件のフィードバック

  1. […] こういったテクニカルな日本語翻訳は至って初心者な私。手始めにNaoさんが書いた翻訳ガイド記事いくつかを読んでみて、基本的なやり方であるPoedit(無料版)をインストールしてローカルでやってみました。はい、予想通り悪戦苦闘ですよ(笑)っていうのも、テーマ作者が同胞してた.poファイルを訳しても、なぜか翻訳したそのファイルがサイトに反映されません。ちゃんと指定されたディレクトリーに入れたのにな~って思い、いろいろググってみたけど、初心者なもんだから、なにが原因で解決策なのかわからない。じゃあ、違うやり方でもやってみるか?と思い付き、今度はWordPress公式のGlotPressから有志たちが翻訳したファイルをダウンロードしてみました。 […]

  2. […] これ以降の作業はココとココを参考にさせて頂きました。(感謝 […]

  3. […] 2014年版: WordPress プラグイン・テーマの翻訳を始めてみよう […]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください