多言語 (PHP) アプリケーションがあり、i18n に gettext を使用しています。バックエンド/モデルには、printf() のメッセージまたはメッセージ形式を返すクラスがいくつかあります。
xgettext を使用して、翻訳したい文字列を抽出します。
フロントエンド/ビューに gettext 関数 T_() を適用します - これはそれが属する場所のようです。これまでのところ、T_() 呼び出しからバックエンドをきれいに保ちました。このようにして、メッセージの単体テストも行うことができます。
したがって、フロントエンドには次のようなものがあります
echo T_($mymodel->getMessage());
また
printf(T_($mymodel->getMessageFormat()), $mymodel->getValue());
これにより、MyModel クラスにダミーの T_("my message %s to translate") 呼び出しを配置しない限り、xgettext を適用して文字列を抽出することができなくなります。
したがって、これはより一般的な質問につながります。
バックエンド クラスで翻訳を適用しますか。どこに翻訳を適用し、翻訳する必要がある文字列をどのように追跡しますか?
(質問: poedit 動的 gettext の回避策を認識しています。)