在我看来,电话$this->translate('test')
无效。
在bootstrap中,我有以下代码来启动翻译:
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 '$'
没有下划线调用。
我做错了什么/失踪了?根据{{3}},这应该可以解决问题。
答案 0 :(得分:4)
正确的语法应该是:
<?php echo $this->translate('Purchaseorder'); ?>
你确实在帖子的顶部使用了这种语法,但是从你稍后提到的代码看来,你实际上在那里使用了不同的语法。