私たちは多言語(PHP)アプリケーションを持っており、i18nにはgettextを使用しています。バックエンド/モデルにはprintf()のメッセージやメッセージ形式を返すクラスがいくつかあります。メッセージ文字列の翻訳先 - ビューまたはモデル内?
xgettextを使用して、翻訳したい文字列を抽出します。
フロントエンド/ビューでgettext関数T_()を適用します。これは、それが属する場所のようです。これまでのところ、T_()呼び出しからバックエンドをきれいにしました。この方法で、ユニットテストメッセージを作成することもできます。
我々はいくつかのダミーTを入れない限り、フロントエンドで我々は
echo T_($mymodel->getMessage());
または
printf(T_($mymodel->getMessageFormat()), $mymodel->getValue());
のようなものを持っている。これは、それが不可能な文字列を抽出するためにxgettextを適用することができます_( "私のメッセージ% MyModelクラス内の "s to translate")コールを呼び出します。
これは、より一般的な質問につながる:
あなたはバックエンドクラス、RESPで翻訳を適用してください。あなたはどこで翻訳を適用しますか?翻訳する文字列をどのように把握していますか?
は(私はQuestion: poedit workaround for dynamic gettextの認識しています。)
これは私たちのやり方とほぼ同じです。あなたはどのように文字列を追跡していますか?翻訳する "%iポイントを持っているよ" – GrGr
多くの場合、テキストを囲んでテキスト!>と表示されるので、簡単にグロッピングしてから、翻訳APIレベルでと!>にグローバル置換します。 –