2012-02-29 3 views
0

私はこれをしばらく疑問に思っています。この例を考えてみましょう:長いコードを短くする方法はありますが、Zendフレームワークの哲学をそのままにしてください。

<?= Zend_Registry::get('translate')->_('translate me!'); 

私はこのようなコードで私の意見を抱いています。私の同僚はまた、多くの場合、翻訳を取得するために多くのタイプのjusteにそれが退屈な場所に繰り返されるので、不平を言う。

function t($text){ 
    return Zend_Registry::get('translate')->_($text); 
} 

しかし、私には、これは良いデザインではないとちょっとレジストリに私の翻訳オブジェクトを置くのアイデアを破る:

そのうちのいくつかは次のように短い名前ですべてを包み込み、いくつかのグローバル機能を大好きです。

私はこの不必要なコードをすべて記述するのを避けるために他の人が何をしているのだろうと思っていました。

一つの解決策は、私のコントローラで行うには、次のようになります。ただ

私の見解で
$this->view->t = Zend_Registry::get('translate); 

、その後:

<?= $this->t('translate me!'); ?> 

は別の仕事をしてビューヘルパーを作成するために、次のようになります。

<?= this->translate('translate me!');?> 

しかし、それはもっと仕事であり、すでにかなり丈夫で魅力的なものの上に論理層を追加します最後にZend_Registry + ZendTranslate。

+0

これはおそらくhttp://codereview.stackexchange.comに適しています。 FWIW、私は読みやすさにもっと関心があると思います。その観点から、私は最後の例が好きです。それは最初のものよりもはっきりしています。 't'ではなく' translate'という名前のグローバル関数も私には受け入れられるかもしれません。 – tvanfosson

+0

閉鎖された場合は、codereviewに質問を投稿してください。入力いただきありがとうございます! – Iznogood

+0

実際にcodereviewに投稿しました。 :) – Iznogood

答えて

3

あなたのビュースクリプト内で以下のコードを使用することができます変換するためには、デフォルトの設定方法を使用する場合:

<?= $this->translate('TEXT_SETUP_HELP_SERVERNAME'); ?> 

かさえ短い:のapplication.iniから

<?= $this->_('TEXT_SETUP_HELP_SERVERNAME'); ?> 

例:

; Setup Zend_Translate 
resources.translate.registry_key = "Zend_Translate" 
resources.translate.adapter = "array" 
resources.translate.options.logUntranslated = false 
resources.translate.options.scan = "filename" 
resources.translate.options.disableNotices = 0 
resources.translate.data = APPLICATION_PATH "/languages" 
resources.translate.locale = "en_EN" 
+1

ビューヘルパーにリンクする - http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.translate – Phil

関連する問題