現在、私はcakephpソリューション(残念ながらクローズドソース)を使用していますが、poファイルにmsgidエントリが含まれていても、文字列が変換されない場合があります。これは、ソース参照がエントリにない場合に発生することに気付きました。その文字列へのソース参照を入力するか、エントリからすべてのソース参照を削除すると、翻訳されます。
これをテストするために、(__()関数を使用して)翻訳可能な文字列を使用して小さなcakephpアプリを作成しましたが、同じ動作を得ることができません。
例えば:
#: /views/view1/add.ctp:6
#: /views/view1/edit.ctp:6
#: /views/view2/add.ctp:5
#: /views/view2/edit.ctp:5
msgid "Name"
msgstr "localized name string"
App1:view1の参照を削除すると、view1のそのロケールでは翻訳は行われませんが、view2は翻訳されて機能します。すべての参照を削除すると、両方が機能します。
App2(私のテスト):参照は影響を与えず、すべて翻訳されています
どうでしょうか?私は最初のアプリでテーマを使用していますが、文字列はテーマによって異なります。これはそのような振る舞いを引き起こす可能性がありますか?
その他の質問:ビューに新しい文字列を作成した場合、poファイルに新しい文字列を挿入するためのベストプラクティスは何ですか?新しい空のポットを抽出できます。問題ありませんが、常にpoファイルを検索し、手動で挿入するのは非常に時間がかかります。私が見つけられなかったより良い自動方法があるはずです。GNU / gettextのマニュアルは複雑すぎて、このプロセスを理解できません:(