WordPressのdefaultテーマに出てくる__(アンダーバー2つ)の表記について
defaultテーマのcomments.phpの25行目あたりに
<?php comments_number(__('No Responses', 'kubrick'), __('One Response', 'kubrick'), __('% Responses', 'kubrick')); ?>
という表記があり、「この引数の書き方はなんだ?」と思ったのでメモ
参考
WordPress › フォーラム » テーマ「default」内に有る、kubrick.pot 等の役割に関して
Gettextによるウェブアプリケーションの国際化と地域化 (1/4):CodeZine
言語のローカライズ(翻訳?)の為の物
WordPressはGettextという文字列ローカライズ用のフレームワークを使っているそうです。__()って表記はその為のものらしい。
defaltテーマのフォルダの中に入ってる以下の3ファイルはGettextに関連したファイルです。
- kubrick.pot
- ja.po
- ja.mo
このGettextの仕組は以下のようになっています。
- phpコードに翻訳文字列を特定する文字列idを記述する
- 訳を記述する為のテンプレートファイル(pot形式)を生成する
- 翻訳者がテンプレートをコピーして翻訳を記述する(po形式)
- poファイルからmoファイルを生成(訳はこのファイルから読み込まれる)
こうする事によって、開発者と翻訳者の作業を分けることができるとか
1.phpコードに翻訳文字列を特定する文字列idを記述する
<?php comments_number(__('No Responses', 'kubrick'), __('One Response', 'kubrick'), __('% Responses', 'kubrick')); ?>
(このcomments_number()というテンプレートタグは、記事のコメント数を数えて、その数により表示する文字列を指定できる。引数1はコメントなしの場合、引数2はコメントが1つの場合、引数3はコメントが2つ以上の場合)
コードの「No Responses」「One Response」「% Responses」が文字列idです。文字列idは翻訳した文字列を挿入したい場所に記述します。
後の「kubrick」は翻訳ファイルを読み込むためのものらしいけど良くわからん。
2.訳を記述する為のテンプレートファイル(pot形式)を生成する
生成作業については略
生成されたpot形式のファイル(defaltテーマではkubrick.pot)は以下のようになっています(kubrick.potの245〜255行)
#: comments.php:21 msgid "No Responses" msgstr "" #: comments.php:21 msgid "One Response" msgstr "" #: comments.php:21 msgid "% Responses" msgstr ""
「No Responses」「One Response」「% Responses」の文字列idが指定されていますが、テンプレートなので翻訳を記述するmsgstrの部分は空です。
3.翻訳者がテンプレートをコピーして翻訳を記述する(po形式)
翻訳者は2のkubrick.potをコピーしてja.poファイルを作り、そこに訳を記述していきます(ja.poの245〜255行)。
#: comments.php:21 msgid "No Responses" msgstr "コメント / トラックバックはありません" #: comments.php:21 msgid "One Response" msgstr "コメント / トラックバック1件" #: comments.php:21 msgid "% Responses" msgstr "コメント / トラックバック%件"
先ほどは空だったmsgstrに訳が記述されています。
(「% Responses」の訳にある%マークはcomments_numberでコメント数を表示させる為の物)