WordPressのコアやプラグイン、テーマの翻訳は、GlotPressというWeb上のシステムを使って行うようになっている。聞いたことはあるものの、翻訳ソフトのPoeditに慣れていたので気にしていなかった。
急にそうは言ってられない状況になった。公式ディレクトリのテーマをアップデートするときに、翻訳だけ更新されない事態におちいった。これまでに何度もやってきた作業なのに、いったいどうしたことなのか?
ここでようやくGlotPressを使うときが来た。
公式ディレクトリのテーマを更新
発端は、WordPressの公式ディレクトリに登録しているテーマを更新しようとしたことだ。最低でも2年に1回はアップデートしないと、不適切なテーマとして葬り去られてしまう。古いテンプレートタグを使わないようにして新しいのを利用したり、見た目は変えないようにしながら最新の対応をする。IE対応していた部分はしれっと切り捨ててもいい。
さてテーマアップデートの最終段階として、翻訳の更新がうまくいかず悩んだ。
日本語の翻訳が更新されない
公式ディレクトリにテーマを登録する際は、すべて英語で表記しなければならない。日本語環境で日本語を表示したい部分(「Search」--->「検索」
など)は _e()
や __()
といった翻訳関数を利用し翻訳可能な状態にしておく決まりがある。
Poeditを使った場合の翻訳
オーソドックスなやり方では、以下3つをテーマに添付することで翻訳対応(Translation Ready)かつ日本語対応したテーマとなる。
※作業中のテーマ名をBirdFIELDとした場合
- 翻訳可能なテキスト(英語)を集めた元ファイル
/wp-content/themes/birdfield/languages/birdfield.pot
- 「1」を元にした日本語のファイル
/wp-content/themes/birdfield/languages/ja.po
- 「2」をコンパイルして生成されたファイル
/wp-content/themes/birdfield/languages/ja.mo
コンパイルのためにPoeditというソフトを使う。ところが、テーマ更新のさいに追加したテキスト(具体的には機能追加したテーマオプションの項目名)が日本語にならないのだ!Poeditで何度コンパイルしてもー!!
その翻訳はどこにあるの?
コンパイルがうまくいってないのか、試しにテーマのlanguagesディレクトリを削除してみた。そうするとすべてが英語表記になると予測したのに日本語が表示されるままだ。そして日本語が微妙に足りないままだ。いったいその翻訳はどこに書いてあるのか?
削除したはずの日本語をgrepしてみると、こんなところにあるでなないか!
/wp-content/languages/birdfield-ja.mo
/wp-content/languages/birdfield-ja.po
いつのまにか、テーマ直下でもないディレクトリに翻訳ファイルがあった。ここに翻訳ファイルがあるのは公式ディレクトリのテーマだからなのだろうか?
では削除すればよいかというと、そうでもない。削除して解決されたかに見えて、ちょっと油断したスキにまたダウンロードされてしまうのだ。やめてー!
同じテーマの翻訳ファイルが2箇所にある状態
wordpress
├ wp-content
├ languages
│└ themes
│ birdfield-ja.mo (※1)
│ birdfield-ja.po
└ themes
└ birdfield
└ languages
birdfield.pot
ja.mo (※2)
ja.po
(※1)が優先されており、テーマ直下の(※2)を更新しても反映されない。(※1)はGlotPressよりダウンロードされている。
翻訳システムはGlotPressに移行
テーマの翻訳はWebの翻訳システム「GlotPress」に移行していた。いつからかわからない。
公式ディレクトリのテーマだから自動的に移行していたのか?体調崩した2年のブランクで気づかなかったのか。ともかく私が作ったテーマはGlotPressで翻訳できる、いやGlotPressでしか翻訳が反映されない状態になっていた。
GlotPressを使ってみた
GlotPressを利用するには、WordPress.org のアカウントが必要だ。
自分が公開したテーマを翻訳したい場合は、さらにPTE 権限をリクエストする必要がある。私がすでにPTE権限を持っているのは、 過去にテーマを公開しているからだろうか?
» WordPress の翻訳
Webベースで翻訳する
テーマディレクトリの右サイトバーの「BirdFIELDを翻訳」からGlotPressの画面に移る。
日本語にしたいので[Japanese]を見る。
[Details]で確認。
権限を持っている場合は、ここで日本語を入力・修正することができる。
[View original in consistency tool]を見ると、
他のテーマはどんな翻訳をしているかを参照することができる。
あら便利!
翻訳ファイルは添付しなくていい
ここでちょうどWordPress の翻訳に詳しい森山さんに確認する機会があった。
GlotPressを使う場合は、テーマに翻訳ファイルを添付しなくていいそうだ。なんと!.pot
も .po
も .mo
もいらないという。テーマのなかで翻訳関数が使われている部分を、GlotPressが自動的に検出してくれるそう。
テキストドメインを設定(style.cssに宣言)しておくだけで、Translation Readyなテーマになるのだ。すごい!
これまで翻訳ファイルにはどのテキストがどのテンプレートの何行目にあって…というのを記載せねばならず、プログラムの何行目なんていうのは最後まで分からないわけだから、面倒くさくて仕方なかった。もうやらなくていいんだ〜
困ってから知ることばかり、
目の前に課題があればなんとか進むものですね。