「WordPressのローカライズ、つまり日本語化」は3部に分けて書いています。
WordPressのローカライズ、つまり日本語化 – その1 _関数と_e関数
WordPressのローカライズ、つまり日本語化 – その2 gettextとPoeditとpot
今回は「WordPressのローカライズ、つまり日本語化 – その3 poとmo」です。
POは、原文の文字列を抜き出したカタログファイルのPOTに、抜き出した文字列それぞれに対応する翻訳文字列を付け加えたものです。
POTもPOもテキストデータですから、ファイルはテキストエディタで開いて見る事が出来ます。
POT(wp-slimstat.pot)
1 2 3 |
#: ../admin/config/index.php:48 msgid "Read access: username not found" msgstr "" |
PO(wp-slimstat-ja.po)
1 2 3 |
#: ../admin/config/index.php:48 msgid "Read access: username not found" msgstr "リード アクセス: ユーザー名が見つかりません" |
これは WP SiteManager のPOTとPOの一部です。
#: ../admin/config/index.php:48 は、(wp-content > plugins に有る) wp-sitemanagerディレクトリの admin > config の index.php の48行目の意味。
msgid の後に、その上の行に書き込まれている翻訳するファイルの目的の行の、翻訳する文字列。
msgstr の後に、翻訳した他言語(この場合は日本語)が入ります。
POTはこの msgstr が空欄のままで、POでは翻訳された文字列が入っています。
この
1 2 3 |
#: gettextで他言語化(日本語化)させるファイルまでのパス:翻訳する文字列の有る行 msgid 翻訳する文字列 msgstr 翻訳した文字列 |
が1組となり、ファイル内の全翻訳元文字列の位置する行・翻訳する文字列・翻訳した文字列の一覧が作成されています。
POTのmsgstr 欄に、翻訳された文字列を入れて行く事がPO作成になります。
MOはPOをバイナリにしたものですから、
となり、修正にはバイナリエディタなどが必要です。
POならPoeditなどの言語ファイル用エディターで簡単に編集出来るし、msgid と msgstr の関係が判っていれば、テキストエディターでも編集できます。
実際にWordPressが使うのはMOファイルだけですが、編集・修正をし易い様に、POとMOをセットでプラグインの languagesディレクトリに置く事になっています。
PoeditでのPOTからPOを作成するのは簡単です。
まずPoeditを立ち上げ、メニューバーの ファイル > POT ファイルを元に更新… を選択し、表れたメニューウインドウから編集したいPOTファイルを選択してやります。
PoeditでPOTファイルの翻訳させたい部分が一覧となって表示されます。
そのウインドウ下部の「新しい翻訳を作成」ボタンをクリックすると、「翻訳の言語」ダイアログが表示されるので、「日本語(日本)」を選択し、「OK」ボタンをクリックします。
すると、このPOTファイルを元に翻訳した文字列を書き込んだPOファイルを作成出来る様になります。
上部の「ソーステキスト – 英語」内の翻訳する元の文字列を選択すると、その下の「ソーステキスト:」に選択した文字列が表示されます。
その文字列の翻訳(日本語訳)文字列を、さらに下の「翻訳:」に書き込みます。
これをメニューバーの ファイル > 保存 を選択し、「ドメイン名-ja.po」としてPOファイルを保存してやります。
そしてさらにメニューバーの ファイル > MO にコンパイル…を選択すると保存ウインドウが表示され、ファイル名も自動的に「ドメイン名-ja.mo」になるので、そのまま保存します。
(フランス語に翻訳したものは -ja の代わりに -fr_FR、イタリア語なら -it_IT、ロシア語なら -ru_RU、中国語は -zh_CNとなります。)
多言語化を考慮されていないプラグインのPOTやPO、MOを作成する場合、プラグインのスクリプト(プラグインディレクトリ名が your-plugin なら your-plugin.php)で load_plugin_textdomain()関数を使ってドメイン名と翻訳ファイルを格納するディレクトリを設定するので、その第1引数を見れば、ドメイン名がわかります。
また、既にPOTやPOが生成されている場合、プラグインのスクリプト(wp-slimstatならwp-slimstat.php)のヘッダー部分の Text Domain に記述されている事が多いです。
1 2 3 4 5 6 7 8 9 10 |
/* Plugin Name: WP Slimstat Analytics Plugin URI: http://wordpress.org/plugins/wp-slimstat/ Description: The leading web analytics plugin for WordPress Version: 4.3.2.2 Author: Camu Author URI: http://www.wp-slimstat.com/ Text Domain: wp-slimstat ←ここに記述されている Domain Path: /languages */ |
それが見当たらない場合は、コード内を「__(」や「_e(」で検索し、見つかったものの第2引数にドメイン名が記載されています。
最後に、POファイルとMOファイルをWordPressサイトにアップロードします。
wp-contents > pluginsにある日本語化するプラグインディレクトリにアップロードするのですが、プラグインスクリプト(プラグインディレクトリが your-plugin なら、プラグインスクリプトは your-plugin.php)に load_plugin_textdomain()関数を使ってドメイン名やPOファイルとMOファイルを格納するディレクトリを設定した場合、サイトにあるプラグインスクリプトをこのスクリプトに置き換えます。
そしてPOファイルとMOファイルを格納した languagesディレクトリを、そのプラグインディレクトリにアップロードします。
既にサイトのプラグインディレクトリに languagesディレクトリとPOファイル・MOファイルが有る場合は、修正したものに入れ替えるだけです。
今までプラグインの日本語化を説明してきましたが、テーマの日本語化も同様な手順で行えます。
load_plugin_textdomain()関数の代わりに load_theme_textdomain()関数を使う点などは違いますが、日本語化ファイルのPOとMOを作成し、そのテーマディレクトリにある languagesディレクトリにアップロードするだけです。
作成したテーマやプラグインの国際化も結構簡単に出来ますね。