1

PHP のビルトイン Gettext / PO サポートを使用して国際化された Web サイトを持っています

echo _("string to be translated");

サイトはベータ版であるため、翻訳されない文字列がいくつかあります。デバッグを支援するために、gettext エラーをログに記録する方法はありますか? つまり、PO ファイル内で一致するエントリが見つからない PO の文字列をログに記録する方法はありますか?

4

2 に答える 2

7

あなたがしたいことの問題は、実行時に未翻訳の文字列しか見つからず、実際に実行されたコード パスだけを見つけることです。すべての文字列を見つけるには何年もかかる場合があります。それまでの間、ログ ファイルを定期的に確認し、更新された翻訳をログ ファイルの内容と同期させる必要があります。それは翻訳に対する決定論的なアプローチではありません。

gettext を使用している場合は、それに適したワークフローを確立する必要があります。また、gettext ワークフローとツールチェーンはよく考え抜かれ、長年にわたってテストされています。

  1. gettext 関数で文字列をラップして、ソース コードを準備します。
  2. 準備された文字列を POT ファイルに抽出します。通常は、カスタム パーサー/エクストラクタとKunststube\POTools (恥知らずなセルフ プロモーション)などのライブラリを使用します。xgettext
  3. を使用msginitして、抽出したテンプレート ファイルから PO ファイルを作成します。
  4. PO ファイルを翻訳します。
  5. を使用しmsgmergeて、更新されたソース/POT ファイルを PO ファイルと同期させます。
  6. を使用しmsgfmtて PO ファイルを MO ファイルにコンパイルします。
  7. すすぎ、繰り返します。

これは一言で言えば適切な gettext ワークフローであり、翻訳プロセスのほとんどの問題を説明しています。特に、翻訳者を分散させている場合は、通常、ソース コードの更新と翻訳の到着の間にタイム ラグと重複があります。自動化された文字列抽出とmsgmergeユーティリティがなければ、このプロセスは混乱に陥りやすいため、上記に固執する必要があります。ステップ。

その場合、gettext ユーティリティまたはPoeditなどのツールを使用していつでも PO ファイルをチェックし、どの文字列が翻訳されていないかを確認できるため、質問は無関係になります。

于 2012-12-30T15:09:52.420 に答える
0

ベータ版では、 podebugなどのツールを使用して、疑似ローカリゼーションを実行することがおそらくより重要になります。したがって、PO文字列を抽出したら、それらをローカライズして、すべての文字列がUIで抽出されているかどうかを確認できます。

于 2012-09-22T15:20:31.860 に答える