我的Zend_translate正在运作,但由于某种原因它只能翻译成英语。即使我的语言环境手动设置为荷兰语,它也会显示英语翻译。当我删除英文mo / po文件时,它将使用荷兰语翻译。
这是在bootstrap中设置的:
$translate = new Zend_Translate('gettext',
APPLICATION_PATH . "/languages/",
null,
array('scan' => Zend_Translate::LOCALE_DIRECTORY));
$registry = Zend_Registry::getInstance();
$registry->set('Zend_Translate', $translate);
//$translate->setLocale('nl_NL');
在语言目录中有:en_US.mo,en_US.po,nl_NL.mo,nl_NL.po。
我做错了什么?
答案 0 :(得分:1)
这是我的解决方案: 在bootstrap.php文件中添加此方法。
protected function _initTranslate()
{
$locale = new Zend_Locale(Zend_Locale::BROWSER);
$langcode = $locale->getLanguage();
$translate = new Zend_Translate(
array(
'adapter' => 'gettext',
'content' => APPLICATION_PATH . "/langs/$langcode/$langcode.mo",
'locale' => $langcode,
));
$registry = Zend_Registry::getInstance();
$registry->set('Zend_Translate', $translate);
$translate->setLocale('en');
}
让我了解这个问题的最新消息!
再见
答案 1 :(得分:0)
您需要使用Zend_Translate :: LOCALE_FILENAME而不是Zend_Translate :: LOCALE_DIRECTORY,如下所示:http://framework.zend.com/manual/1.12/en/zend.translate.additional.html#zend.translate.additional.options
正确的代码是:
$translate = new Zend_Translate('gettext',
APPLICATION_PATH . "/languages/",
null,
array('scan' => Zend_Translate::LOCALE_FILENAME));
$registry = Zend_Registry::getInstance();
$registry->set('Zend_Translate', $translate);