2012-07-02 5 views
0

Мой Zend_translate работает, но по какой-то причине он переводится только на английский. Даже когда мой локаль установлен на голландский вручную, он показывает английский перевод. Когда я удаляю английские файлы mo/po, он будет использовать голландские переводы.Zend translate переводит на английский язык, в то время как locale установлен на голландский

Это устанавливается в загрузчике:

$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

Вы должны использовать 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); 
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'); 
} 

Сообщите мне, пожалуйста, о новой!

bye

 Смежные вопросы

  • Нет связанных вопросов^_^