wordpressの日本語化

Linuxを使った自宅ウェブサーバ上でwordpressを稼動させてます。今のバージョンでは、多言語対応しており、日本語での使用も可能なのですが、日本語の内容を変更したい場合や独自に日本語化したい場合についてまとめます。

wordpressでは、PHP-gettextというライブラリを利用して多言語表記に対応しているのですが、その仕組みでは、テキストエディタベースのファイルの修正だけで、日本語を簡単に変更できます。その変更方法をまとめておきます。

poファイルの変更

変更するファイルは、「wordpress/wp-content/languages/ja.po」ファイルです。ファイルの内容は、次のとおりです。

#: wp-admin/admin-ajax.php:307
#: wp-admin/admin-ajax.php:360
#: wp-admin/includes/taxonomy.php:119
msgid "You did not enter a category name."
msgstr "カテゴリー名が入力されませんでした。"

「#:」で始まる行には、日本語に変換されるキーワードが記載されているファイル名と行番号が示されています。「msgid」で始まる行には、日本語に変換されるキーワードが記載されています。「msgstr」で始まる行には、変換に使う日本語が記載されています。なので、現在のpoファイルの設定では、「You did not enter a category name.」は、「カテゴリー名が入力されませんでした。」と表記されることになります。

このファイルで、「msgstr」で始まる行に、変換に使う日本語名が設定されていない場合は、日本語を設定すれば良いし、内容を変更したい場合は、変更するだけで良いです。

moファイルの作成

内容を変更したpoファイルから、moファイルを作成することによってその変更が反映されます。poファイルからmoファイルを作成するには、「msgfmt」コマンドを使います。Debianでは、「gettext」パッケージをインストールすれば使用可能となります。「ja.po」ファイルから「ja.mo」ファイルを作るには、次のようにします。

msgfmt -o ja.mo ja.po

あとは、wordpressを確認すれば、修正が反映されているはずです。

日本語変換語句の追加

日本語変換のキーワードは、実際のphpファイル上では、「__()」と「_e()」の関数で使用されている文字列のことで実際に、「__()」関数は、次のように使われています。

	if ( category_exists( trim( $_POST['cat_name'] ) ) ) {
		$x = new WP_Ajax_Response( array(
			'what' => 'cat',
			'id' => new WP_Error( 'cat_exists', __('The category you are trying to create already exists.'), array( 'form-field' => 'cat_name' ) ),
		) );
		$x->send();

4行目の「__(‘The category you are trying to create already exists.’)」が実際に使用されている部分です。また、「_e()」関数は、次のように使われています。

<a href="#post_status" class="cancel-post-status hide-if-no-js"><?php _e('Cancel'); ?></a>

「__()」と「_e()」の違いは、以下の内容です。

_e()
変換された日本語を標準出力に出力する関数です。HTMLとして直接表示したい日本語を表示するのに使います。
__()
変換された日本語を戻り値として返す関数です。他の関数の引数として渡したい場合に使います。標準出力には、出力しないので「_e()」関数のように使っても何も表示されません。

日本語変換したいキーワードが、HTMLとして表示されている文字列なのか、関数の引数としての使用されている文字列なのかを判定して「_e()」関数か、「__()」関数を使えば新たに日本語変換したいキーワードを追加できます。その場合には、poファイルにも「msgid」や「msgstr」の追加を行いmoファイルを作成する必要があります。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする