0

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()メソッドを使用するのは、文字列を自動的に検索できるようにするためだけにリソースを浪費しているように思えます。

このような状況で私がすべきことについて、皆様のご意見をお聞きしたいと思います。ありがとう!

4

2 に答える 2

1

常にエラー メッセージをスローします。エラー メッセージの翻訳が本当に必要な場合は、自分で翻訳できます。ただし、s の第一言語Exceptionは常に英語にする必要があります。

そして、誰かが翻訳する必要がある場合Exceptionは、ビュー スクリプトから翻訳できます。

echo $this->translate($e->getMessage());
于 2013-02-07T07:50:15.393 に答える
1

正しいアプローチは、ビュー コンテキスト内で変換する必要があるエラー コードをスローする例外を持つことだと確信しています。

これはリソースの無駄になるというあなたの意見に同意しますが、一方で、アプリケーションの信頼性を高め、モジュール化することが、このアプローチを使用する唯一の提案ですよね?

于 2013-02-07T02:21:54.237 に答える