0

我的 Zend_translate 正在工作,但由于某种原因它只能翻译成英文。即使我的语言环境手动设置为荷兰语,它也会显示英文翻译。当我删除英语 mo/po 文件时,它将使用荷兰语翻译。

这是在引导程序中设置的:

    $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。

我究竟做错了什么?

4

2 回答 2

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');
}

让我及时了解问题!

再见

于 2013-04-27T19:23:34.050 回答
0

您需要使用 Zend_Translate::LOCALE_FILENAME 而不是 Zend_Translate::LOCALE_DIRECTORY,如您在此处看到的: http://framework.zend.com/manual/1.12/en/zend.translate.additional.html#zend.translate.additional 。选项

正确的代码是:

$translate = new Zend_Translate('gettext',
                APPLICATION_PATH . "/languages/",
                null,
                array('scan' => Zend_Translate::LOCALE_FILENAME));

$registry = Zend_Registry::getInstance();
$registry->set('Zend_Translate', $translate);
于 2012-09-27T14:34:45.920 回答