ホームページの価値を最大化するCMS、WordPress(ワードプレス)。WordPressに関する情報をまとめておりますので是非ご活用ください。JavaScript多言語化の新しい形Gutenbergはそのソースの多くがJavaScriptから構成されている。そこで問題となるのが多言語対応(Internationalizationを略してi18nなどと書く)なのだが、これまでは次のようにやや迂遠な方法を使っていた。);要するに、これまではPHPで翻訳した文字列を定義し、それをwp_localize_script関数でパスしていたわけだ。この方法のダルいところは、JavaScriptを書いている最中に、わざわざPHPファイルを開かなければならないところである。いったりきたりしているうちに、「あれ、なにしようとしてたんだっけ?」と記憶喪失になってしまい、twitterやfacebookで時間を潰し始め、気づいたら2時間ぐらい経っていたという事態がよく発生する。5.0ではJavaScriptに直接翻訳関数を書くことができる。5.0ではちょっとやり方が異なるのだが、基本的にはPHPで利用していたのと同じドメイン指定でできる形に変わった。JS読み込み時に、wp-i18nを依存関係に追加する。}このように書いておくと、JavaScript内で見慣れた__や_xといった翻訳関数が使えるようになる。);これでPHPとJSを行ったり来たりすることによる記憶喪失も防げるだろう。5.0がリリースされたが、SnowMonkeyの北島氏よりツッコミが入った。5.0に対応したところ、翻訳が聞いていないことが判明。公式ブログのリリース確認したところ、以下のようなことがわかった。wp-i18nスクリプトを依存関係に読み込めば、moファイルの翻訳が適用される(ように筆者は読めた)しかし、上記のような状態は確認されていない。weeks”とのことなので、まだリリースされていないのだろう。commit.要するに、上記で紹介した方法ではまだ翻訳されないようだ。GlotPress経由でも翻訳が変更された印象はない。Usageとして紹介される情報によると翻訳用のJSONを作成し、それを指定することで翻訳が適用される。上記で紹介した方法は「WordPress.orgで公開されるプラグイン・テーマ」に限る。したがって、自分で販売しているテーマやプラグインは別の方法を取る必要がある。翻訳用JSONを作成するさて、これまでになかった処理として、poファイルから翻訳用JSONを生成しなければならない。これにはnpmパッケージを利用する。po2jsonこのコマンドをnpmスクリプトなどに追加して、翻訳対象のpoファイルを指定すると、JSONが生成される。JSONの命名規則は{$domain}-{$locale}-{$handle}.jsonとなる。翻訳を読み込む続いて、wp_enqueue_scriptで読み込む時に、wp_set_script_translationsを実行する。ハンドルごとに実行することを忘れないように。引数の順番はハンドル名、ドメイン、翻訳ファイルのディレクトリ。);これで無事翻訳が適用された。雑感さて、実際にやってみて、問題がありそうだなと思ったのは下記の点だ。この方法だと、翻訳対象言語と同じ数だけJSONを生成しなければならない。自作テーマなどでは2,3ヶ国語に対応していれば済むので、問題はないか。翻訳を新たに追加する方法がよくわからない。筆者はWooCommerceなどのプラグインを購入し、後から翻訳ファイルを追加するということをやっているので、その場合どうしたものだろう。PHPとJSで翻訳ファイルをわけるのがめんどくさすぎるので、WordPress.orgの翻訳機能がリリースされればありがたいことことの上ないのだが、いつになるのだろうか。翻訳対象のスクレイピングさて、テーマやプラグインを作っている方は、翻訳対象となる文字列をpotファイルなどに書き出していることだろう。WordPressの公式翻訳プラットフォームであるGlotPressを使えば悩むことはないだろうが、自作テーマや販売用テーマなどを使っている方は、potファイルを作成する方法がこれまでとは変わることになる。いままではPHPファイルだけをスクレイピングすればよかったのだが、今度はJSが追加されるからだ。Birchlerが勧めるように、WP-CLIのパッケージコマンドを追加することで、翻訳対象をいい感じに抽出できる。make-potnpmスクリプトと組み合わせれば、自動で書き出すこともできるだろう。PoEditPoEditは古くからあるGUIの翻訳カタログエディタである。続いて、これはgettext業界ではわりと知られたハックらしいのだが、翻訳対象の抽出としてJavaScriptは入っていないので、表記が似ているPythonを採用するようだ。抽出ツール」を選んでPythonを編集し、次のような設定にする。Pytonの設定部分を書き換えるとJSも有効になる。これで今まで通りのワークフローが使えるはずだ。5.0からは気軽にJSに文字列を書くことができるだろう。最初に表示されました。ホームページの価値の最大化をさせるCMS、WordPress(ワードプレス)。フリーのブログとは違い、いくらか敷居の高い印象がありますが、一つ一つクリアにしてみるときっとあなたもWordPressのパワーの恩恵に預かれると思います。