スパムおよびその他の悪意のある文字列のチェック

翻訳者がローカリゼーションを提出する際には、必ず彼らの翻訳にスパムやその他の悪意のある単語が含まれていないか確認してください。彼らの翻訳をあなたの母国語に再翻訳するために Google Translate を使用することで、元の文字列と翻訳された文字列を簡単に比較できます。

国際化された文字列のエスケープ

翻訳者が無害なテキストのみをローカリゼーションに追加するとは限りません。彼らが望めば、悪意のあるJavaScriptやその他のコードを追加することも可能です。それに対抗するためには、国際化された文字列を他の信頼できない入力と同様に扱うことが重要です。

文字列を出力する場合、それらはエスケープされるべきです。

安全でない:

  1. _e( 'The REST API content endpoints were added in WordPress 4.7.', 'your-text-domain' );

安全:

  1. esc_html_e( 'The REST API content endpoints were added in WordPress 4.7.', 'your-text-domain' );

あるいは、コードにエスケープを追加するのではなく、翻訳検証メカニズムに依存する人もいます。検証メカニズムの一例は、WordPress Polyglotsチームが translate.wordpress.org に使用している エディターロール です。これにより、信頼できない貢献者によって提出された翻訳が、受け入れられる前に信頼できるエディターによって検証されることが保証されます。

URLのためのプレースホルダーを使用する

国際化された文字列にURLを含めないでください。悪意のある翻訳者がそれらを異なるURLに変更する可能性があります。代わりに、printf() または sprintf() のためのプレースホルダーを使用してください。

安全でない:

  1. _e(
  2. 'Please <a href="https://login.wordpress.org/register"> register for a WordPress.org account</a>.',
  3. 'your-text-domain'
  4. );

安全:

  1. printf(
  2. esc_html__( 'Please %1$s register for a WordPress.org account %2$s.', 'your-text-domain' ),
  3. '<a href="https://login.wordpress.org/register">',
  4. '</a>'
  5. );

.moバイナリを自分でコンパイルする

翻訳者はしばしばコンパイルされた .mo ファイルとプレーンテキストの .po ファイルを送信しますが、彼らの .mo ファイルは破棄し、自分でコンパイルするべきです。なぜなら、対応する .po ファイルからコンパイルされたのか、別のものであるのかを知る方法がないからです。もし異なるものでコンパイルされていた場合、あなたの知らないうちにスパムやその他の悪意のある文字列が含まれている可能性があります。

PoEditを使用してバイナリを生成すると、.poファイルのヘッダーが上書きされるため、代わりにコマンドラインからコンパイルする方が良いです:

  1. msgfmt -cv -o /path/to/output.mo /path/to/input.po