Zend Translate找不到语言

dex*_*vip 5 zend-framework internationalization zend-translate

我有一个Zend翻译问题.我已经在bootstrap中配置了zend translate,如下所示

public function _initTranslate() {
    $locale = new Zend_Locale();
    Zend_Registry::set('Zend_Locale', $locale);

    $translate = new Zend_Translate(array(
                'adapter' => 'ini'
                    )
    );

    $translate->addTranslation(
            array(
                'content' => APPLICATION_PATH . '/configs/languages/pt.ini',
                'locale' => 'pt'
            )
    );
    $translate->addTranslation(
            array(
                'content' => APPLICATION_PATH . '/configs/languages/en.ini',
                'locale' => 'en'
            )
    );

    $translate->setLocale($locale);
    Zend_Registry::set('Zend_Translate', $translate);
}
Run Code Online (Sandbox Code Playgroud)

我添加了语言,在我的视图中我使用了翻译助手,但它向我展示了以下错误

Notice: The language 'en' has to be added before it can be used. 
in C:\xampp\ZendFramework-1.11.10\library\Zend\Translate\Adapter.php 
on line 443
Notice: No translation for the language 'en' available. 
in C:\xampp\ZendFramework-1.11.10\library\Zend\Translate\Adapter.php 
on line 456
Run Code Online (Sandbox Code Playgroud)

我遵循了zendframework参考指南.我做错了什么?

dex*_*vip 1

我用下面的代码解决了这个问题:

\n\n
public function _initTranslate() {\n    $this->bootstrap('locale');\n    if($this->hasResource('locale')){\n        $locale = $this->getResource('locale');\n    }\n\n    $translate = new Zend_Translate(array(\n                'adapter' => 'ini',\n                'disableNotices' => true,\n                )\n    );\n\n    $translate->getAdapter()->addTranslation(\n            array(\n                'content' => APPLICATION_PATH . '/configs/languages/pt.ini',\n                'locale' => 'pt'\n            )\n    );\n    $translate->getAdapter()->addTranslation(\n            array(\n                'content' => APPLICATION_PATH . '/configs/languages/en.ini',\n                'locale' => 'en'\n            )\n    );\n    if($translate->getAdapter()->isAvailable($locale->getLanguage())){\n        $translate->getAdapter()->setLocale($locale->getLanguage());\n    }else{\n        $translate->getAdapter()->setLocale('en');\n    }\n    Zend_Registry::set('Zend_Locale', $locale);\n    Zend_Registry::set('Zend_Translate', $translate);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我编写了一个插件,只需传递 GET 变量即可在运行时更改语言,例如:&lang=en

\n\n
class Sistema_Plugin_Translate extends Zend_Controller_Plugin_Abstract {\n\n    public function preDispatch(Zend_Controller_Request_Abstract $request) {\n\n        $translate = Zend_Registry::get('Zend_Translate');\n        $locale = Zend_Registry::get('Zend_Locale');\n        $session = new Zend_Session_Namespace('language');\n\n        //verifica se existe GET e valida\n        if ($request->isGet()) {\n            $filter = new Zend_Filter_Alpha();\n            $param = $filter->filter($request->getParam('lang'));\n            if (!empty($param) && $locale->isLocale($param) && $translate->getAdapter()->isAvailable($param)) {\n                $translate->getAdapter()->setLocale($param);\n                $session->language = $param;\n            }\n        }\n\n        //verifica se o idioma do browser est\xc3\xa1 disponivel se n\xc3\xa3o coloca um idioma padr\xc3\xa3o\n        if (!$translate->getAdapter()->isAvailable($locale->getLanguage())) {\n            //linguagem n\xc3\xa3o disponivel,seta idioma en\n            $translate->getAdapter()->setLocale('en');\n        }\n\n        //verifica se h\xc3\xa1 sess\xc3\xa3o com idioma definido\n        if (isset($session->language)) {\n            if ($translate->getAdapter()->isAvailable($session->language)) {\n                $translate->getAdapter()->setLocale($session->language);\n\n            }\n        }\n\n\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n