Zend翻译转换为英语,而语言环境设置为荷兰语

时间:2012-07-02 11:38:50

标签: php locale gettext zend-translate poedit

我的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。

我做错了什么?

2 个答案:

答案 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);