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参考指南.我做错了什么?
我用下面的代码解决了这个问题:
\n\npublic 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}\nRun Code Online (Sandbox Code Playgroud)\n\n我编写了一个插件,只需传递 GET 变量即可在运行时更改语言,例如:&lang=en
\n\nclass 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}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10996 次 |
| 最近记录: |