Multijazyčné routování na moduly
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- martin.knor
- Člen | 17
Ahoj, lze nějak docílit toho abych měl překlady u multijazyčných rout pokud mám v routě statický text? abych nemusel vypisovat pro každý jazyk jednu routu?
$frontRouter[] = new Route('[<lang us>/]product/<url>', 'Product:category');
$frontRouter[] = new Route('[<lang cz>/]produkt/<url>', 'Product:category');
- martin.knor
- Člen | 17
Tohle mi fungovalo akorát pomocí překladové tabulky se vždy přesměrovalo na poslední překlad vedoucí na presenter, takže ho to vzalo ale nezůstal v adrese.
- Jan Tvrdík
- Nette guru | 2595
martin.knor: Zrovna lobuji, aby to šlo vyřešit ještě jednodušeji. Viz https://github.com/…te/pull/1440.
Momentálně to jde řešit globálními filtry:
$frontRouter[] = new Route('[<lang us>/]<presenter>/<url>', [
NULL => [
Route::FILTER_IN => function ($params) {
if ($params['lang'] === 'cs' && $params['presenter'] === 'Produkt') {
$params['presenter'] = 'Product';
}
return $params;
},
Route::FILTER_OUT => function ($params) {
// ...
}
]
]);
- David Grudl
- Nette Core | 8218
V čem by to nové řešení bylo jednodušší? Kód bude vypadat víceméně stejně.
- Jan Tvrdík
- Nette guru | 2595
@David Grudl: Bude to lépe čitelné, protože
filtrování parametru <presenter>
bude nastaveno přímo
u toho parametru. Navíc nebude trpět aplikací dvou filtrů, což může taky
někoho zmást.