2

私のプロジェクトでは Smarty で ZendTranslate(csv アダプター) を使用しています。私は ZendTranslate をすべての Zend ではなくスタンドアロンとして使用しています。しかし、私には問題があります。すべてのコンテンツを取得して Smarty に送信する最善の方法を見つけることができません。私の簡単なコード:

require_once 'Smarty/libs/Smarty.class.php';
require_once 'Zend/Translate.php';
$lang = $_GET["lang"];
$translate = new Zend_Translate(
    array(
        'adapter' => 'csv',
        'content' => 'csv/lang_eng.csv',
        'locale'  => 'en'
    )
);
$translate->addTranslation(
    array(
        'content' => 'csv/lang_' . $lang . '.csv',
        'locale' => $lang
    )
);
$smarty->assign("m2", "" . $translate->translate('m2', $lang));
$smarty->display("views/page.tpl");

これは 1 つの翻訳で問題ありませんが、1 ページに 30 以上あります。そのすべてを最良の方法で取得して Smarty に送信する方法は?

4

2 に答える 2

1

smarty 改造登録したほうがいいです。Smarty を初期化するときに、これを配置に追加します。

require_once 'Smarty/Smarty.class.php';
// ...
$this->Smarty();
// ...
$obj = new TemplateTranslate();
$this->register_modifier('translate', array($obj, 'translate' ));

主な翻訳クラス:

class TemplateTranslate
{
    public static $zt;

    public function __construct()
    {
        self::$zt = new Zend_Translate(array(
            'adapter' => 'csv',
            'content' => 'csv/lang_eng.csv',
            'locale' => 'en'
        ));
    }

    public static function translate($string)
    {
        return self::$zt->_($string);
    }
}

lang_eng.csv:

"Text on another language";"English text"

次に、次のように使用できます。

<p>{'Text on another language'|translate}</p> 
于 2012-09-14T09:33:43.977 に答える
1

これは、Smarty の最新バージョンで修飾子を登録する方法です。

$smarty ->registerPlugin('modifier','translate', array($obj, 'translate' ));

誰かがこれを役に立つと思うかもしれません!

于 2012-09-15T14:37:38.463 に答える