WordPressを含む、ソフトウェアの翻訳の仕組み
Webサイトの翻訳には大きく分けて二つの翻訳があります。それは、CMS(WordPress, ソフトウェア)としての翻訳と、Webサイト(コンテンツ)としての翻訳です。今回は、ソフトウェアの翻訳についての記事となります。
最初に、ソフトウェアの翻訳の仕組みについて説明します。一般的に、コンピュータのソフトウェアでは、アメリカ英語以外の言語を表示する場合、多言語対応をするための対照表ファイルを利用した翻訳処理を行います。これはWordPressでも例外ではなく、WordPressにおいて標準の場合、アクセスがあるごとにその対照表ファイルにアクセスし、随時参照することで翻訳を行っています。日本語のような英語ではないWordPressの環境の場合、この翻訳処理に時間がかかってしまうことがあります。
WordPress 6.5は前バージョンより翻訳処理が高速。その理由は?
さて、WordPress 6.5は、アメリカ英語以外の環境においては、前バージョンであるWordPress 6.4に比べ、読込時間が23.5%高速化され、メモリ使用量は41.4%も削減されました。
これには、WordPress 6.5における翻訳の性能が改善されたことが大きく貢献しています。技術的に言うと、gettext
というシステムからPHPコードへ翻訳の仕組みを変更したことによって改善されました。この点、少し詳しく説明します。
WordPress 6.4まではgettext
を利用していました。ですが、この機能を利用した場合、PHPの実行コード単位でのキャッシュ(OPCache
というものです)が翻訳には利用できません。そこで、WordPress 6.5からは翻訳文をPHPのコードとして読み込めるようにしてOPCache
も活用できるようにすることで、このオーバーヘッドを改善することとしました。
どのようにこの改善策を見つけたのか?
どのようにこのソリューションを発見したのか。それは、翻訳を利用しているWordPress環境でのパフォーマンス低下に気がついたWordPress
コア開発チームのメンバーが原因を調べていたところ、gettext(というか、PHPを積極的に利用していないこと)が原因であることがわかったようでした。gettext
が原因とわかった結果、彼らがPerformant Translations
(旧Ginger MO
)プラグインとして後付でPHPファイルベースの翻訳を導入可能な仕組みを2023年の夏~秋頃に作成しました。そして、今回この機能を本体に統合し、全ユーザーが高速化できるようにした次第です。
過去のWordPress翻訳ファイルからの新形式へのマイグレーション方法
さて、この機能を活用するには、運営者や開発者の協力も不可欠となります。というのも、gettext
形式からPHP
形式へのファイル変換は原則として自動では行われません。ついては、プラグインやテーマの翻訳ファイル(poファイル)があるフォルダの下で
wp i18n make-php .
を実行する必要があります。なお、WP-CLI
の2.10.0以上で対応しているため、バージョンがそれ以下の場合WP-CLI
のアップデートも忘れずに行ってください。
上記コマンドラインを何かの理由により利用できない場合は、プラグインやテーマのアップデートを待つのが一番安全な選択肢と言えるでしょう。
KUSANAGIとWordPress 6.5による翻訳機能アップデートについて
さて、KUSANAGIでは、今回のコアアップデート前から翻訳キャッシュの機能をAPCu
というPHP
のキャッシュ機能を活用して提供しており、翻訳機能を利用しているソフトウェアのパフォーマンスを改善しているので、KUSANAGIを利用した場合は、WordPress 6.4以前でも、通常のWordPressページより高速に表示することが可能となっていました。
なお、今回のアップデートによるKUSANAGIのこの翻訳キャッシュ機能への影響は調査中です。
また、KUSANAGIにはbcache
(WordPressのページ内容キャッシュ)やfcache
(Nginxのページ内容キャッシュ)といった機能があり、これによって、翻訳の高速化以外の手法でもWordPressの動作速度の向上も引き続き行えるようにもなっています。活用を検討してみてはいかがでしょうか。
まとめ
競合CMSへの優位性を失わないようにするためにも、WordPress
のコア開発チームも日々機能やセキュリティのみならずパフォーマンスの改善にも力を入れていることがわかりました。また、翻訳の専門機能であるgettext
を利用するよりもPHP
のコードベースで記述するほうがパフォーマンスが高いのは、新たな知見でありました。KUSANAGI開発チームも新しいアプローチで機能実装を進めてまいります。