Zend Framework 2 を使用していますが、この質問は実際には ZF2 固有のものではありません。
ビュー スクリプトではなくコントローラーで文字列を変換した方が便利な状況があります。通常、私はビュー スクリプトで翻訳しますが、いくつかのシナリオでは、あまり便利ではありません。これは絶対に管理者の仕事ではないように感じますが、これについての意見や推奨事項を聞きたいです。
私が言いたいことを示すために、これが便利なシナリオを次に示します。
public function registerAction() {
try {
$service_layer->registerUser(...);
}
catch (\My\Specific\Exception $e) {
$error = $this->translate('Something specific went wrong');
}
catch (\Exception $e) {
$error = $this->translate('Unfortunately, an error occurred!');
}
return array('error' => $error); // Pass error to view
}
コントローラーで変換する方法を知っているので、心配する必要はありません。ここでは、例外をスローする可能性があるサービス レイヤーを使用します。ユーザーに役立つエラー メッセージを表示できるように、これらをキャッチしたいと思います。いくつかの異なるエラーが発生する可能性があるため、エラーが発生したかどうかを示すブール値をビューに単純に送信することはできません。なぜなら、発生したエラーを区別できないからです。
したがって、コントローラー内の文字列を変換し、ビュー スクリプト内の変数を出力することができました。これにより、poedit を使用して翻訳文字列を検索するときに作業が簡単になります。または、翻訳されていない文字列を返し、$this->translate($error);
ビュー スクリプトで実行することもできます。このアプローチでは、コントローラーで翻訳文字列を検出する際に問題が発生します。この目的のためだけにPHP のgettext()
メソッドを使用するのは、文字列を自動的に検索できるようにするためだけにリソースを浪費しているように思えます。
このような状況で私がすべきことについて、皆様のご意見をお聞きしたいと思います。ありがとう!