WordPressの国際化(Internationalization: I18n)のメモ。WordPressはPHP-gettextという仕組みで多言語化を行っている。
I18n for WordPress Developers – WordPress Codex 日本語版
mytheme
|
|-- languages
| |
|-- tmp
|
|-- phplist.txt
|
|
|-- functions.php
|
|-- index.php
|
|-- style.css
/**
* Load text domain
*/
function mytheme_load_domain()
{
load_theme_textdomain( 'mytheme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'mytheme_load_domain' );
potファイルはpoファイルの元になるファイル(テキストファイル)。xgettextでpotファイルを作成する。
$ cd mytheme
$ find . -iname "*.php" > ./languages/tmp/phplist.txt
$ xgettext --language=php --keyword=__ --keyword=_e --keyword=_n:1,2 --keyword=_x -f ./languages/tmp/phplist.txt -o ./languages/default.pot
Poeditでpotファイルからpoファイル、moファイルを作成する。
最初にpotファイルから特定言語に翻訳していないdefault.po/default.moを作成する。
その後default.poから特定言語へ翻訳したpo, moファイルを作成する。
potファイルからdefault.po/default.moを作成する際に下記エラーが発生した。
poedit invalid nplural
Project-Id-Versionに関するエラーとpoedit invalid npluralというエラーが表示されたので、potファイルを該当部分を下記のように書き換えた。
"Project-Id-Version: mytheme 1.0.0\n" ..... ..... "Plural-Forms: nplurals=2; plural=(n != 1);\n"
上記エラーへの対処が記載されているサイト。
CakePHP 日本語化翻訳データの編集にPoeditを使う -でじうぃき
特定言語の翻訳ファイルがないときはdefault.poのみを配布する。
日本語の翻訳ファイルがある場合はdefault.po, ja.po, ja.moを配布する。
以下の方法で更新している。
(Poeditのカタログマネージャー機能で直接更新するのかもしれないが方法が解らなかった。)
(1) potファイルの更新
$ cd mytheme
$ find . -iname "*.php" > ./languages/tmp/phplist.txt
$ xgettext --language=php --keyword=__ --keyword=_e --keyword=_n:1,2 --keyword=_x -f ./languages/tmp/phplist.txt -o ./languages/default.pot
(2) ja.po/moをPoeditで更新
ja.moファイルを更新するためPoeditでja.poを編集する(ja.poを保存すると自動でja.moファイルも更新される)。
他言語のpo, moファイルが配布されているときのメモ。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。