2012-07-02 56 views
0

我的Zend_translate正在工作,但由於某種原因,它只能翻譯成英文。即使當我的語言環境設置爲荷蘭語時,它也會顯示英語翻譯。當我刪除英文mo/po文件時,它將使用荷蘭語翻譯。Zend翻譯爲英文,而語言環境設置爲荷蘭語

這是設置在引導:

$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

相關問題