かなり昔(10年前!?)の記事になりますが、WordPress.org のプラグインディレクトリに自作プラグインを登録する方法(Windowsユーザー向け、TortoiseSVN使用)で、WordPress の公式プラグインディレクトリへのプラグインの登録方法を解説しました。基本的な流れは今も変わらないので、今回はプラグインディレクトリで利用できるアセット(assets)の使い方や GlotPress による翻訳方法の解説をしていきたいと思います。

プラグインの登録申請(2018年現在)

その前に、プラグインの登録申請部分を見てみましょう。2018年10月現在、56,000以上のプラグインが公式プラグインディレクトリに登録されており、似たような機能を持つプラグインが多数あるわけですが、最初の第一歩の審査は割とすんなりいく気がします。昔はプラグインファイルと一緒にプラグイン名やプラグインの説明を登録する必要がありましたが、最近はプラグインファイルをアップロード登録するのみになったようです。WordPress.org にログインした状態で、Add Your Plugin にアクセスすると以下のように、ファイルのアップロードフォームが表示されます。

プラグインファイルアップロードフォーム

この例でいけば、3つのプラグインがレビュー待ちという表示で、場合によっては20プラグイン以上待っている場合もありますが、割と早くレビューしてくれるようで、1日2日程度で審査完了でメールが届くと思います。

アップロード後は審査完了するまで待ちましょう

プラグインファイルをアップロード後は上記のような画面表示になるので、複数のプラグインファイルを用意している場合でも審査完了までしばらく待ちましょう。審査完了後の SVN の使い方等は前回の記事を参照してください。

新着のプラグインを確認する方法

余談ですが、プラグインディレクトリを見ると、Featured Plugins、Popular Plugins、Beta Plugins の3つの項目しかなく、新着のプラグインを一覧で確認するリンクが見当たりません。昔は新着のプラグイン一覧ページにリンクが張ってあったのですが、いつの間にかなくなったようです。

新着プラグイン一覧

でも安心してください。こちらの New ページから新着順のプラグイン一覧を確認することができます。プラグインを登録したら、まずは新着のプラグイン一覧を見てみてください。

アイコン画像、バナー画像、スクリーンショットを assets (アセット) に保存

SVN で assets フォルダーに保存できるのは、アイコン画像とプラグインページのヘッダーのバナー画像、スクリーンショットになります。ファイル名や画像サイズに指定があるので注意が必要です。詳細は assets の解説ページを見ていただければ、と思いますが、以下の通りです。

プラグインページのヘッダーバナー画像

プラグインページのヘッダー用バナー画像
ノーマルバナー: banner-772×250.(jpg|png)
高画質バナー: banner-1544×500.(jpg|png)

プラグインのアイコン画像

アイコン画像
ノーマル: icon-128×128.(png|jpg)
高画質: icon-256×256.(png|jpg)
SVG: icon.svg

スクリーンショット
screenshot-1.(png|jpg)
screenshot-2.(png|jpg)

ファイル名は小文字で、assets フォルダーに SVN でアップロードすれば自動的にプラグインページに反映されます。

GlotPress によるプラグインの翻訳方法の解説

WordPress の公式プラグインディレクトリ(テーマもですが)で、GlotPress という翻訳プラットフォームによる翻訳の場が用意されたのは3年ほど前からでしょうか。プラグインファイルの中に Poedit などのツールを使用して生成した .po や .mo ファイルを置いて読み込むというプラグインの翻訳を行っていた方法(参照 : 翻訳ファイルを用意してプラグインを日本語化する)とは別に、プラグインディレクトリ上に翻訳できる機能が追加されていたのですが、ずっと試していませんでしたので、やり方などを見ていきたいと思います。

プラグインファイルに必要な記述

GlotPress によるプラグインの翻訳をするには、プラグインファイル側の準備が必要です。

Text Domain にプラグインのスラッグを指定

まずは、プラグインファイルのヘッダーに Text Domain を追加しましょう。(といっても、WordPress 4.6 以降、プラグインのスラッグと Text Domain が一致するのであれば必要ない、と書いてあるので省略してもいいかもしれませんが)

/*
Plugin Name: Plugin Information Card
Author: Hiroaki Miyashita
Text Domain: plugin-information-card
*/

翻訳ファイルの読み込みには、load_plugin_textdomain() という関数を使用します。第3引数は、プラグインの相対パスを指定します。

add_action( 'plugins_loaded', 'plugin_information_card_plugins_loaded' );
function plugin_information_card_plugins_loaded() {
	load_plugin_textdomain( 'plugin-information-card', false, dirname( plugin_basename(__FILE__) ) );
}

GlotPress によるプラグインの翻訳だけであれば、第2、第3引数は省略して、以下だけでよいみたいです。

add_action( 'plugins_loaded', 'plugin_information_card_plugins_loaded' );
function plugin_information_card_plugins_loaded() {
	load_plugin_textdomain( 'plugin-information-card' );
}

プラグイン内の翻訳ファイルと GlotPress による翻訳ファイルのどちらが優先されるかは後述しますが、GlotPress によるプラグインの翻訳を行うのであれば、プラグイン内に翻訳ファイルを持たせる意味はなさそうな気がします。

Domai Path は不要!?

ちなみに、プラグインファイルのヘッダーに記述する Domain Path という項目がありますが、これも GlotPress によるプラグインの翻訳を行うのであれば、省略して問題ありません。公式プラグインディレクトリに掲載しないようなプラグインで翻訳ファイルの位置を特定するのに指定します。

/*
Plugin Name: Plugin Information Card
Author: Hiroaki Miyashita
Text Domain: plugin-information-card
Domain Path: /languages
*/

翻訳ファイルの位置が /languages フォルダにある場合、以下のように load_plugin_textdomain() の第3引数に /languages を追加していたりしますが、Domain Path を使用していれば、/languages/ を指定しなくてもプラグインの相対パスだけで問題なく翻訳されるみたいです。

add_action( 'plugins_loaded', 'plugin_information_card_plugins_loaded' );
function plugin_information_card_plugins_loaded() {
	load_plugin_textdomain( 'plugin-information-card', false, dirname( plugin_basename(__FILE__) ) . '/languages/' );
}

逆を言えば、Domain Path を指定していない場合は、ちゃんと翻訳ファイルのあるディレクトリを load_plugin_textdomain() に渡しておかないといけない、ということでしょうか。

プラグインの翻訳権限 PTE 権限を Slack で申請する

やってみて初めて知りましたが、プラグインの作者でも、デフォルトでは翻訳権限がありません。そのため、自作のプラグインを GlotPress 上で翻訳しても Waiting 状態になります。

GlotPress 上の翻訳画面

翻訳権限のある方に翻訳を承認してもらう必要が出てきますが、承認がいつになるかは分かりません。そのため、プラグインの作者には、リクエストすればプラグインの翻訳権限である PTE 権限を付与してくれる仕組みになっています。PTE 権限を申請する場合でもまずは一通り翻訳しておきましょう。承認者の方が添削してくれるかもしれません。

翻訳について詳しく(翻訳ルールがあるので従いましょう)は、WordPress の翻訳 – WordPress Codex 日本語版を確認していただければ、と思いますが、承認者には2種類あります。

  • GTE (Global Translation Editors)
    コア、および、すべてのプラグインとテーマを承認可能
  • PTE (Project Translation Editors)
    個別のプラグイン、テーマを承認可能

今回、申請するのは下の PTE 権限になります。ちなみに、日本語の GTE 権限を持った方は6人います。PTE 権限は現在97人に付与されているみたいです。Translation Teams をご覧ください。

さて、PTE 権限の申請をするには、WordPress 日本版コミュニティの非公式 Slack に登録する必要があります。Slack への登録の仕方は詳しく解説されているのでそちらをご確認ください。

WordSlack にログインできるようになったら、#requests チャンネルで PTE 権限の申請をしましょう。間違って、#general チャンネルで申請すると注意されちゃいます!#requests チャンネルで作成したプラグインの URL と自分の WordPress.org ユーザー名を含めて「PTE 権限を付与してください」とリクエストすると、GTE 権限を持った方が承認してくれると思います。上述の通り、GTE 権限を持った方は6人しかいないので連絡を気長に待ちましょう。

#requests チャンネルで PTE 権限の申請

PTE 権限が付与されると GlotPress 上で翻訳しても、Waiting にならずにすぐに確定されるようになります。翻訳が利用可能になるのはプラグイン・テーマの場合、翻訳の95%以上が承認されて、約30分後にダッシュボードの更新ボタンからダウンロード・利用できるようになる、とのことです。

プラグイン内の翻訳ファイルと GlotPress による翻訳ファイル、優先されるのはどっち?

結論から言うと、GlotPress による翻訳ファイルの方が優先されるようです。プラグイン内に翻訳ファイルを含めていても、GlotPress による翻訳ファイルがあればそちらが採用されることになります。ちなみに GlotPress による翻訳ファイルは以下の場所にダウンロードされているようです。

/wp-content/languages/plugins/

WordPress.org の公式プラグインディレクトリを利用しないのであればこれまで通り、Poedit などのツールで翻訳ファイルを用意することになりますが、WordPress の公式プラグインディレクトリを利用するのであれば、これからはローカルで翻訳ファイルを用意せずに GlotPress 上で翻訳するのが多言語化にとって一番よさそうです。公式プラグインディレクトリにプラグインを登録予定の方はぜひ利用してみてください。

関連する記事