I am wondering if it is possible to use translational tools for routes/uris in zf2. I want for example the route en.domain.tld/article/show/1
to translate for example to de.domain.tld/artikel/anzeigen/1
. I don't think regex is the way to go here, because it could result in something like en.domain.tld/artikel/show/1
. Also I want to avoid creating routes for every language, because it is going to get quite messy as the system scales.
相关问题
- Views base64 encoded blob in HTML with PHP
- Laravel Option Select - Default Issue
- PHP Recursively File Folder Scan Sorted by Modific
- Can php detect if javascript is on or not?
- Using similar_text and strpos together
I was able to get it working!
First, add a
'router_class' => 'Zend\Mvc\Router\Http\TranslatorAwareTreeRouteStack',
yourmodule.config.php
like this:Second, you must provide a translator (preferably in your module.php) as well as a translation file:
now, you should be able to use translations in your route definitions like the following:
create the translation (in this example a phpArray located in module/language/routes/de_DE.php):
If I didn't forget anything, you should be good to go. I got it working in my case, so if it doesn't with the instructions above, don't hesitate to comment and I'll sort things out.
There is a implementation already which you will find starting ZF 2.2.0. As far as i can tell there is no Documentation for this feature, however when looking at the unit tests you should be able to give this a shot:
ZendTest\Mvc\Router\Http\SegmentTest
I'll try to get a working example setup sometime today, but can't make any promises - the test should get you started tho!
As an addition to the onPreRoute callback above:
You may need to add:
$serviceManager->get('router')->setTranslatorTextDomain('TEXT_DOMAIN_HERE');