我想知道zf2中是否有可能为路线/ uris使用翻译工具。我想要例如路线en.domain.tld/article/show/1
来翻译,例如de.domain.tld/artikel/anzeigen/1
。我不认为正则表达式是去这里的方式,因为它可能导致像en.domain.tld/artikel/show/1
。另外我想避免为每种语言创建路由,因为随着系统规模的扩大,它会变得非常混乱。Zend Framework 2 - 翻译路线
回答
我能够得到它的工作!
首先,添加一个'router_class' => 'Zend\Mvc\Router\Http\TranslatorAwareTreeRouteStack',
您module.config.php
这样的:
return array (
'router' => array (
'router_class' => 'Zend\Mvc\Router\Http\TranslatorAwareTreeRouteStack',
'routes' => array(),
)
);
其次,你必须提供一个转换器(最好在你的module.php)以及翻译文件:
class Module
{
public function onBootstrap(MvcEvent $e)
{
// Load translator
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator->setLocale('de_DE');
// setup the translation file. you can use .mo files or whatever, check the translator api
$translator->addTranslationFile('PhpArray', __DIR__.'/language/routes/de_DE.php', 'default', 'de_DE');
$app = $e->getTarget();
// Route translator
$app->getEventManager()->attach('route', array($this, 'onPreRoute'), 100);
}
public function onPreRoute($e){
$app = $e->getTarget();
$serviceManager = $app->getServiceManager();
$serviceManager->get('router')->setTranslator($serviceManager->get('translator'));
}
}
现在,您应该能够在您的路线定义中使用翻译,如下所示:
return array (
'router' => array (
'routes' => array(
'login' => array (
'type' => 'Zend\Mvc\Router\Http\Segment',
'may_terminate' => true,
'options' => array (
'route' => '/{login}',
'defaults' => Array(
'controller' => '...',
)
),
),
)
);
创建翻译(在这个例子中位于模块/语言/路由/ de_DE.php一个phpArray):
<?php
return array(
'login' => 'anmelden',
);
如果我没有忘记什么,你要善于去。我在我的情况下工作,所以如果它不符合上述说明,请不要犹豫,我会解决问题。
已经有一个实现,你会发现起始ZF 2.2.0。至于我可以告诉有此功能没有文档,但是看着单元测试时,你应该能够给这个一杆:
我要设法弄今天某个时候设置的一个工作示例,但不能做出任何承诺 - 测试应该让你开始寿命!
看起来很有希望,并且肯定值得一试!谢谢! – machete
作为除上述onPreRoute回调:
您可能需要添加:
$ serviceManager-> GET( '路由器') - > setTranslatorTextDomain( 'TEXT_DOMAIN_HERE');
Upvoted这个答案给了我一个单独的文本域只用于URL的想法。 –
- 1. Zend Framework 2 - 翻译过的路线
- 2. Zend Framework 2 - 表单翻译
- 3. Zend Framework - Zend_Measure翻译问题
- 4. Zend-Framework -Forms和翻译
- 5. Zend Framework 2路由
- 6. Zend的翻译航线
- 7. Zend Framework 2 - 每模块翻译文件与全局翻译文件
- 8. Zend的2翻译setFallbackLocale
- 9. Zend Framework 2库路径
- 10. Zend Framework 2路由错误
- 11. Zend Framework 2 - 分段路由
- 12. Zend Framework 2路由器
- 13. Zend Framework翻译语言文本
- 14. 如何翻译URL在Zend Framework的1.11
- 15. 来自DB的Zend Framework 3翻译器
- 16. Zend Framework添加路线
- 17. Zend Framework的后备路线
- 18. Zend framework 2翻译在jquery中使用getttext
- 19. 如何将这个查询翻译成zend framework 2语法?
- 20. Zend Framework 2翻译使用gettext变量的文本
- 21. 如何翻译Zend Framework 2中的表单标签?
- 22. Zend Framework 2 - 翻译标准表单验证和错误消息
- 23. Zend Framework 2 - 视图中的翻译和文本域
- 24. 在Zend Framework 2上翻译Breadcrumbs(视图助手)
- 25. Zend Framework 2翻译单选按钮的文本
- 26. Zend Framework 2 Htaccess
- 27. Zend Framework vs Zend Framework 2
- 28. Zend框架无法路由翻译的子路线
- 29. Zend Framework 2
- 30. Zend Framework 2 Part Route Assembly
这不适用于额外的控制台路由,对吧? '未捕获异常'Zend \ Mvc \ Router \ Exception \ RuntimeException''消息'没有翻译器提供' – MaiKaY