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
+
0
-

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');
honos
Člen | 109
+
0
-
martin.knor
Člen | 17
+
0
-

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
+
0
-

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
+
0
-

V čem by to nové řešení bylo jednodušší? Kód bude vypadat víceméně stejně.

Jan Tvrdík
Nette guru | 2595
+
0
-

@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.

David Grudl
Nette Core | 8218
+
0
-

Spíš naopak ne? Programátor určitě zapomene volat původní filtr.