0

在我看来,这个电话$this->translate('test')不起作用。

在引导程序中,我有以下代码来启动翻译:

protected function _initTranslate() {
    $apc = $this->getOption('enable_apc_cache');
    if ($apc) {
        $cache = Zend_Registry::get('cache');
        Zend_Translate::setCache($cache);
    }

    // Set the correct locale
    $locale = new Zend_Locale('nl');
    Zend_Registry::set('Zend_Locale', $locale);


    // Form error translations
    $translator = new Zend_Translate(
        'array',
        APPLICATION_PATH.'/../resources/languages',
        'auto',
        array('scan' => Zend_Translate::LOCALE_DIRECTORY)
    );
    Zend_Form::setDefaultTranslator($translator);

    // All other translations, including form labels
    $translate = new Zend_Translate(
        'gettext',
        APPLICATION_PATH.'/../resources/languages/',
        'auto',
        array('scan' => Zend_Translate::LOCALE_DIRECTORY));
    Zend_Registry::set('Zend_Translate', $translate);
}

如果我理解正确(已经在 stackoverflow 和 Google 上搜索过),将翻译器放入注册表中,键Zend_Translate应该是诀窍。

现在在我看来,当我打电话<?php echo $this->translate->_('Purchaseorder'); ?><?php echo $this->translate->('Purchaseorder'); ?>它给我一个错误。

Call to a member function _() on a non-object有下划线调用和Parse error: syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$'没有下划线调用。

我在做什么错/错过了什么?根据http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.translate这应该可以解决问题。

4

1 回答 1

4

正确的语法应该是:

<?php echo $this->translate('Purchaseorder'); ?>

您确实在帖子的顶部使用了这种语法,但从您稍后提到的代码看来,您实际上在那里使用了不同的语法。

于 2012-07-19T19:46:44.237 回答