本日、フロントエンドとWordPress管理画面での文字列の翻訳において、データベース呼び出しを一切行わない、完全に新しい文字列翻訳の最初のパブリックベータ版をリリースしました。
WPMLの文字列翻訳の仕組みは、長年にわたって変化してきました。私たちの目標は常に、サイト上のすべてのテキストを翻訳できるようにしつつ、サーバーへの負荷を最小限に抑えることでした。
近年、プラグインやテーマは大規模になり、翻訳可能な文字列をより多く使用するようになりました。ページビルダー、WooCommerce、およびその他のいくつかの大規模なプラグインを開く一般的な管理画面では、データベースから30K以上の文字列を読み込む可能性があります。このように翻訳可能な文字列の数が増加したことで、文字列翻訳を使用するサイトの動作が遅くなっていました。WPMLではページ上のすべてを翻訳できますが、これほど多くの文字列をフィルタリングすると、CPUとデータベースに負荷がかかります。
本日、文字列翻訳の仕組みを根本的に変える新しいバージョンの準備が整いました。この新しいリリースでは、2つの大きな変更が行われています。
- 翻訳したい文字列のみを処理する
- 翻訳の適用に.moファイルを使用する
1つ目の変更は、デフォルトで文字列翻訳のテーブルにすべてのプラグインとテーマのすべてのテキストが含まれなくなることを意味します。大多数のサイトにおいて、テーマとプラグインには、質が高く完全な翻訳を含む独自の.moファイルが付属しています。WPMLがこれらの文字列をすべてフィルタリングし(翻訳可能にする)必要はありません。プラグインからのテキストの翻訳を上書きしたい場合は、引き続き行うことができます。対象のプラグインを選択できるようになり、WPMLはそこから取得した文字列を登録します。
2つ目の大きな変更は、WPMLが文字列の翻訳のためにデータベースを呼び出さなくなることを意味します。WPMLは翻訳用の.moファイルをコンパイルし、WordPressに読み込ませます。これらの.moファイルのサイズは、翻訳する文字列の数によって異なります。ほとんどのサーバーでは、データベースから複数のエントリを読み込むよりも、ファイルを読み込む方がはるかに高速です(多くのサイトにおいてデータベースはパフォーマンスのボトルネックとなります)。
.moファイルの生成
WPML文字列翻訳は、.moファイルの生成と保守を自動的に処理します。これは、WPML -> 文字列翻訳ページで文字列を翻訳するたびに行われます。
ただし、このベータ版へのアップグレード後、最初にファイルを生成する必要があります。
アップグレード前にサイトに翻訳済みの文字列があった場合、文字列翻訳をアップデートした後の任意の管理画面に以下のダイアログが表示されます。
ベータ版のテスト中に問題が発生した場合は、.moファイルを再生成できます。
再生成するには、以下の手順に従います。
- WPML -> サポートに移動します。
- 「トラブルシューティング」リンクをクリックします。
- ページの下部までスクロールし、「Show custom MO Files Pre-generation dialog box」をクリックします。
- ページを再読み込みします(この手順は最終リリースでは不要になります)。
- .moファイルを再生成するためのダイアログが表示されます。
結果
このバージョンは、すでに私たちのすべての本番サイト(WPML.org、Toolset.com、ICanLocalize.com)で稼働しています。スムーズに動作しており、サーバーも安定しています。私たちのサイトのパフォーマンスにおいて文字列翻訳が大きな要因となることはなかったため、パフォーマンスの分析には他のサイトを使用しています。
クライアントから、文字列翻訳がパフォーマンスに大きな影響を与えていた数十件のサイトを提供していただきました。これらのすべてのサイトで、文字列翻訳によるサーバー負荷が実質的にゼロに低下したことを確認しています。現在、これらのサイトの読み込み時間は以前の約半分になっています(万歳!)。
現在の開発状況
このベータ版はテストの準備が整っています。唯一の注意点は、マルチサイト環境ではまだ動作しないということです。シングルサイト(通常の)WordPressインストール環境で、文字列翻訳によるパフォーマンスの問題が疑われる場合は、このベータ版をお試しください。このベータ版を数週間実行し、その間にクライアントからのフィードバックを収集する予定です。より多くのクライアントのサイトをプロファイリングしながら、マルチサイトのサポートを完了させる予定です。
このベータ版に切り替えても、WPMLに関連する重大なパフォーマンスの問題が引き続き発生する場合は、お客様のサイトを確認させてください。対処が必要な他のパフォーマンスの問題箇所が見つかる可能性があります。これが本番環境に導入されるまでに、WPMLに関連するパフォーマンスの問題が誰にも発生しないようにしたいと考えています。私たちの目標は、9月前半に本番用のWPML 4.3をリリースすることです。
ダウンロードと試用
このバージョンはマルチサイト環境ではまだ動作しないことにご注意ください。開発サイトや本番サイトで使用してもOKですが、いくらかの注意が必要です。
自動アップデート
このベータ版を入手するには、プラグイン -> 新規追加に移動し、「商用」タブをクリックします。

このページから、ベータ版チャンネルを有効にし、プラグインを自動的にアップデートします。
詳細については、WPMLのベータ版のインストールに関するページをご覧ください。
自動アップデートを受け取ったり、ベータ版チャンネルに切り替えたりするには、サイト登録を行う必要があります。
手動アップデート
手動でアップデートすることもできます。
手動でアップデートするには、WPMLの手動アップデートの手順に従ってください(古いバージョンのWPMLについて言及している場合でも、手順はまったく同じです)。
フィードバック
WPMLのこのベータ版をお試しいただいた後、ぜひフィードバックをお寄せください。可能な限りすべての情報を私たちと共有してください。このベータ版によってパフォーマンスの問題が解決したかどうか、また、対処が必要なパフォーマンスの問題が残っているかどうかについて知りたいと考えています。
コメントをお寄せいただければ、こちらから返信いたします。
アップデート – 2019-08-16
以下の問題を修正した新しいベータ版をリリースしました。
- WPML Multilingual & Multicurrency for WooCommerceとの非互換性:現在のリリース、またはこのリリースに含まれるWPML Multilingual & Multicurrency for WooCommerceのベータ版のいずれかをインストールできます。
- 多数のカスタムフィールドを持つ投稿を保存する際のパフォーマンスの低下。
これまでの既知の問題
現在もいくつかの部分の調整を行っています。本日時点での既知の問題のリストは以下のとおりです。
- マルチサイトはまだサポートされていません。
- 文字列翻訳から文字列を削除しても、生成された.moファイルは更新されません。
- ドメインのすべての文字列を削除しても、生成された.moファイルは削除されません。
- ドメインのすべての文字列を削除した後、.moファイルを再生成しても(ファイルの再生成方法については上記の「.moファイルの生成」を参照)、対応する.moファイルは削除されません。
- 翻訳された管理テキストがicl_translate関数で元のテキストを返す問題(WPML Multilingual & Multicurrency for WooCommerceに影響:「新規注文メールのカスタム件名が翻訳されない」)。

