この記事は最後に更新してから1年以上経過しています。

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

説明

バージョン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


お勧め

has_category(2012年1月17日 更新)

bool has_category( [ mixed $category = '' [ , mixed $post = null ] ] )
投稿記事がカテゴリーに属しているか調べる。

comments_template(2018年5月27日 更新)

void comments_template( string $file = '/comments.php' , bool $separate_comments = false )
投稿ページ(post)または単一ページ(page)のコメント情報を取得し、コメント表示・投稿用のテンプレートファイルを読み込んで表示する。

is_taxonomy_hierarchical(2018年5月27日 更新)

bool is_taxonomy_hierarchical( string $taxonomy )
タクソノミーに階層(親子)関係があるか調べる。

send_confirmation_on_profile_email(2018年5月27日 更新)

void send_confirmation_on_profile_email()
メールアドレス変更を確認するメールを送信する。

get_the_modified_time(2023年9月20日 更新)

string | int | false get_the_modified_time( [ string $format = '' [ , int | WP_Post $post = null ] ] )
パラメータ$formatで指定したフォーマットで投稿の更新時刻を取得する。