gpt4 book ai didi

php - Zend_Translate - Zend_Navigation 和 Routing 组合问题!

转载 作者:可可西里 更新时间:2023-11-01 12:21:12 26 4
gpt4 key购买 nike

我在结合 Zend_Navigation、Zend_Translate 和所需的路由方面遇到了一些困难。

我的站点导航是通过基于 XML 文件的 Zend_Navigation 完成的。我现在已将翻译添加到基于 Zend_Translate 的站点,并添加到 Bootstrap 的以下路由更改中:

protected function _initRoutes()

$config = new Zend_Config($this->getOptions());
$languages = array_keys($config->languages->toArray());
$zl = new Zend_Locale();
$lang = in_array($zl->getLanguage(), $languages)
? $zl->getLanguage() : 'en';

$zfc = Zend_Controller_Front::getInstance();


// add language to default route
$route = new Zend_Controller_Router_Route(
':lang/:module/:controller/:action/*',
array('controller'=>'index',
'action' => 'index',
'module'=>'default',
'lang'=>$lang));

$router = $zfc->getRouter();
$router->addRoute('default', $route);
$zfc->setRouter($router);

然后我用 preDispatc 方法创建了一个 View_Helper:

    $language = $request->getParam('lang','');

if ($language !== 'en' && $language !== 'da')
$request->setParam('lang','en');

$language = $request->getParam('lang');
if ($language == 'en')
$locale = 'en_EN';
else
$locale = 'da_DK';

$zl = new Zend_Locale();
$zl->setLocale($locale);
Zend_Registry::set('Zend_Locale', $zl);

$translate = new Zend_Translate('csv', APPLICATION_PATH . '/configs/language/'. $language . '.csv' , $language);
Zend_Registry::set('Zend_Translate', $translate);

现在,当我转到:“site/en/module/controller/action”时,它工作正常。

当我转到:“site/da/module/controller/action”时,翻译工作正常,但我来自 Zend_Navigation 的链接指向默认的“en”语言链接“site/< strong>zh/module2/controller2/"

我不知道你在/da/语言。如有任何帮助,我们将不胜感激。

亲切的问候,

莫腾

最佳答案

这并没有直接回答您的问题。但是 Zend_View_Helper_Navigation,导航的 View 助手,有一个 setTranslator() 方法,它将提供您添加到 Zend_Navigation 容器的导航“页面”的隐式翻译。

class MyModule_Bootstrap extends Zend_Application_Module_Bootstrap
{
protected function _initMyModuleNavigation()
{
$langSess = new Zend_Session_Namespace('language');
$translate = $langSess->translate;

$this->getApplication()->bootstrap('navigation');

$view = $this->getApplication()->getResource('view');

$navigationHelper = $view->getHelper('navigation');

$navigation = $navigationHelper->getContainer();

$navigationHelper->setTranslator($translate);

//...
}

这样您就不必为每个项目手动调用翻译

$navigation->addPages(array(
new Zend_Navigation_Page_Mvc(array(
'label' => $translate->_('Wiki'), //<-- This can be eliminated
'action' => 'index',
'controller' => 'article',
'module' => 'wiki',
'pages' => //...

因为它会自动完成,因为 setTranslator() 已完成。

关于php - Zend_Translate - Zend_Navigation 和 Routing 组合问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com