プラグインのヘッダー情報を国際化対応しよう

説明

バージョン4.8がリリースされてひと段落。あらためてプラグイン一覧ページを見てみると「Akismet」が「Akismet Anti-Spam (アンチスパム)」と表示されていた。説明文だけじゃなくプラグイン名も国際化対応できたのね。

国際化対応はどこで

さてプラグイン一覧ページに表示される基礎情報は、そのプラグインのメインファイルの冒頭部分にコメントとして記述することになっている。「Akismet」の場合は次の通りである。

/*
Plugin Name: Akismet Anti-Spam
Plugin URI: https://akismet.com/
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.
Version: 3.3.2
Author: Automattic
Author URI: https://automattic.com/wordpress-plugins/
License: GPLv2 or later
Text Domain: akismet
*/

これらの内容がプラグイン一覧ページでは、「Akismet Anti-Spam (アンチスパム)」だったり、「何百万もの利用実績がある Akismet は……」といった感じに表示されている。

プラグインのヘッダー情報は get_file_data関数で取得でき、これで取得した情報はまだ英語のままである。ではどこで国際化対応しているのかと調べてみると、管理画面用関数のget_plugin_data関数(/wp-admin/includes/plugin.php)でget_file_data関数を呼び出し、その後で国際化対応していた。現状、国際化の対象は次の6つだった。

キー内容
Plugin Nameプラグイン名
Plugin URIプラグイン紹介ページのアドレス
Versionバージョン
Description説明文
Author作者名
Author URI作者紹介ページのアドレス

この国際化対応には各プラグインの国際化ファイルを利用するが、その国際化ファイルが読み込まれているかをis_textdomain_loaded関数で調べ、読み込まれていなければ load_plugin_textdomain関数で読み込むようになっていた。その際に重要になるのが、次に示す2つのヘッダー情報である。

キー内容
Text Domainテキストドメイン名
Domain Path国際化ファイルのパス名

「Text Domain」の内容は自プラグインのテキストドメイン名をそのまま指定すればよい。「Domain Path」については国際化ファイルが自プラグインとメインファイルと同じディレクトリ内か、Akismetと同じように/wp-content/languages/pluginsディレクトリにあるのであれば指定する必要はない。自プラグイン以下のディレクトリにあるのであればそのディレクトリ名を指定しなければならない。例えば、「languages」ディレクトリに国際化ファイルがあるのであれば「/languages」と記述する。これらを適宜追加しておくことで、プラグインの有効・無効状態に関わらず国際化対応することができる。

現在、私自身いくつかのプラグインを公開しているが、国際化対応は各プラグインのプロパティページのようなプログラム部分のみで、ヘッダー情報については未対応だった。ここで深く反省し、今後アップデートする際は忘れずに対応していきたい。


最終更新 : 2018年05月27日 10:43


お勧め

get_comment_id_fields(2014年10月6日 更新)

string get_comment_id_fields( [ int $id = 0 ] )
コメント投稿フォームの隠しフィールドを取得する。

has_header_image(2018年5月27日 更新)

bool has_header_image( )
現在のテーマがヘッダー画像を持っているか調べる。

wp_generator(2018年5月27日 更新)

void wp_generator( )
XHTMLのgeneratorタグを表示する。

get_userdata(2018年5月27日 更新)

mixed get_userdata( int $user_id )
ユーザIDを指定し、マッチするユーザ情報を取得する。

get_the_content(2014年3月3日 更新)

string get_the_content( [ string $more_link_text = null [ , bool $strip_teaser = false ] ] )
現在の投稿情報のコンテンツを取得する。