lesson-scheduler

プラグインを作ろう! ~登録編~

2013.10.08(火) WordPress, プラグイン
このエントリーをはてなブックマークに追加

なんか急にやる気を失いましてね・・・いったい前回からどれくらいたったかとかは気にしないようにします。ということで、やっと登録編です。

Step1.まずは多言語化の準備から

やっぱりプラグインを公開するからにはいつどこの国の人に使われるかわかりませんので、基本的には多言語化しておいた方がいいでしょう。プラグインを日本語で作成しておいて、誰か英語化してくださいっていうのでもいいんですが、せっかくなので、今回はプラグインを英語で作って、自ら日本語化してみました。それなら英語の人はそのまま使えますからね(っていってもかなりのカタコトですが)。

具体的には、ブラウザ上に表示する文字列をすべて英語で作っておきます。例えば、こんな感じ。

<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes','lesson-scheduler'); ?>" />
</p>

保存用のsubmitなので、通常はvalue=”保存”としておけばいいのですが、わざわざ_e()をつかって、英語で記載しています。ブラウザ上に表示する文字列に対しては、かならずそのように記載します。

関数名 機能
_e() 第1引数の中身を翻訳してechoします
__() 機能的には_eと同じですが、echoせず戻り値で返却します

引数は「表示する文字列」と、その後変換するための「ドメイン名(これは次の章で説明します)」の2つです。
このまま表示すると当然、そのまま英語で表示されますが、これらの関数を通すことで、後々ここに渡している文字列が変換されて日本語で表示されます。

Step2.日本語化するには

日本語化するには日本語化用のファイルを用意する必要がありますが、その前にload_plugin_textdomain関数を呼び出します。

function lesson_scheduler_load_textdomain() {
	if ( function_exists('load_plugin_textdomain') ) {
		load_plugin_textdomain( 'lesson-scheduler', false, dirname( plugin_basename( __FILE__ )).'/languages' );
	}
}
add_action('init', 'lesson_scheduler_load_textdomain');

引数の中身は以下の通りです。

引数
lesson-scheduler 文字列変換関数(_,_e,_x)に対して渡すドメイン名
false 2.7より非推奨なので必ずfalseでOK
dirname( plugin_basename( __FILE__ )).’/languages’ moファイルのパス

moファイルというのが、英語を日本語にするために必要なファイルです。大抵はプラグインフォルダの下に/languagesや/langといったフォルダがあり、広く使われているプラグインはそこにたくさんファイルがあると思います。日本語化する場合のファイル名は、ドメイン名-ja.moとなり、jaの部分が言語毎に決められており、日本語だとjaと決められています。これでようやくドメイン名がなにかわかったと思いますが、ファイル名と連動しているわけです。ドメインという言葉が好きですよね、あちらの方は。日本じゃなじみないっての。

さて、ではいよいよmoファイルの作成に取り掛かりますが、moファイルを作成するには、poファイルというのを作りまして、poeditというツールで・・・って、この辺の説明にはいいサイトがいくつもあるので省略します。以下を見てもらえば間違いなくできます。

ただ、ボクが悩んだのはpoファイルの作り方。poファイルには、ソースファイル中の変換対象文字列の一覧が記載されているのですが、それをソースから自分で抜き出して作るのは結構大変だし、みんなどうやって作ってるのかしら?と思って、探しに探したらようやくこちらからヒントをいただきました。どうやらxgettextというコマンドツールで作成できるらしい。でも、大抵はLinux上での実行サンプルなので、レンタルサーバーでできないこともあるでしょう。Windows上でできないんかい?と思って調べたらちゃんとありました。こちらの簡素すぎていつ作ったの?みたいなページのSetupからダウンロードできます。

gettext for windows

インストールすると、c:\Program Files\GnuWin32\bin の下にxgettext.exeがありますので、DOSコマンドでそこに移動してから、以下のコマンドを実行します。

xgettext.exe --language=PHP --keyword="_e" --from-code=UTF-8 変換元ファイル.php -o変換先ファイル.pot

変換元ファイルに指定したファイルから、–keywordに設定した関数で呼び出している文字列を、-oで指定した変換先ファイル.potに出力します。出力内容はこんな感じです。


#: C:\lesson-scheduler\trunk\lesson_scheduler.php:121
#: C:\lesson-scheduler\trunk\lesson_scheduler.php:249
#: C:\lesson-scheduler\trunk\lesson_scheduler.php:252
msgid "lesson date"
msgstr ""

#: C:\lesson-scheduler\trunk\lesson_scheduler.php:127
#: C:\lesson-scheduler\trunk\lesson_scheduler.php:249
#: C:\lesson-scheduler\trunk\lesson_scheduler.php:252
msgid "lesson place"
msgstr ""

使っている関数が複数ある場合は、続けて以下のコマンドを実行します。

xgettext.exe --language=PHP --keyword="__" -j --from-code=UTF-8 変換元ファイル.php -o変換先ファイル.pot

-jをつけることで、ファイルに追加することができます。

これで空のpoファイルが作成されました。拡張子をpotとしているのは、potは今後母国語に翻訳してくれる奇特な方用に配信するものですので、コピーしてpoファイルを作成し、msgstrに日本語を一つずつ割り当てていきます。あとは、先ほど紹介したページをみて、moファイルを作成してください。

Step3.いざ申請準備へ

さて、せっかくプラグインを作成し、多言語化までしたので、公式ディレクトリに公開しましょう。
まずは、WordPress.orgのこちらのページから申し込みます。申し込みにはアカウントでログインする必要がありますので、あらかじめ取得しておきましょう。

プラグイン申請

プラグインの名称と、プラグインの簡単な紹介(Readme.txtに記載する内容でOK)、プラグインをダウンロードできる場所を記載します。プラグインをできる場所は、とりあえず審査するのに必要なので、ファイル一式寄越せってことだと思いますが、インターネットにつながっている自分のサーバーにZIPファイルをおいて、そのURLを書けばOKです。僕の場合は、数時間後にもうOKの返信がきて驚きました。

そして苦労するのがReadme.txtだと思いますが、こればかりは頑張って書くしかありません。書式だけはこちらのページからチェックできます。

Validator

結果はこんな感じででます。えっ?Notesでてんじゃないかって?まあ、細かいことは気にしない性格です。

Validator Results

Step4.いよいよ登録

さて、申請もできたしReadme.txtも出来たというかたは、いよいよ公式ディレクトリに登録します。メールで専用URLが来ていますので、そこにファイルを置くわけですが、ただ置くわけではありません。プラグインのディレクトリは、SVNというバージョン管理システムで構築されているため、SVN用のソフトが必要になります。詳しくは、以下のサイトを見ていただければ・・・

これで少しまては、公式プラグインに自分のプラグインが登録されます。キーワードで検索したりして出たときはちょっとした感動です。
公式プラグインのページがちょっと寂しいなと思ったら、バナーをつけましょう。つけ方は、こちらが詳しいですよ。

ただ、1点気を付けて。こちらに乗っているファイル名称をコピーしてつけたら、Xが全角でして・・・待てと暮せど反映されなかった思い出があります。正しいファイル名は以下ですので、ご注意を!

  • banner-772×250.jpg

途中だいぶ省略しましたが、ほかのページが優れていて、あまり書く気がしませんでして・・・ただ、poファイルの作り方だけは参考にしていただければ幸いです。

コメントをどうぞ