WordPress国際化(i18n)のメモ : WordPress

Pocket

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ファイル作成(ソフト xgettext)

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

po, moファイル作成(ソフトPoedit)

Poeditでpotファイルからpoファイル、moファイルを作成する。

  • poファイルはpotファイルに翻訳文を記入したファイル。
  • moファイルはpoファイルから作成されたバイナリファイル。WordPressが参照するファイル。

最初にpotファイルから特定言語に翻訳していないdefault.po/default.moを作成する。
その後default.poから特定言語へ翻訳したpo, moファイルを作成する。

  1. potファイルから翻訳していない英語のpo,moファイルを作成する(default.po, default.mo)。
  2. default.poから日本語の翻訳ファイル(ja.po, ja.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を配布する。

  • default.po
  • ja.po
  • ja.mo

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ファイルも更新される)。

  1. Poedit > ファイル > 開くでja.poを選択
  2. Poedit > カタログ > POTファイルを元に更新します…を選択

他言語のpo, moファイルが配布されているとき

他言語のpo, moファイルが配布されているときのメモ。

  1. ja.poにリネーム
  2. ja.poを編集
    msgstr “日本語の訳”
  3. ja.poからja.moを作成
    Poeditのファイル -> 開くからja.poを開く。保存するたびにmoファイルが作成される。

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。