Routovanie s prekladmi presentera v závislosti od jazyka

minimal
Člen | 12
+
0
-

Ahojte,

rád by som sa opýtal ako by ste riešili nasledujúci problém.

Mám vytvorenú takúto routu:

$frontendRouter[] = new Route('[<locale=sk en|cs|sk>/]blog',
				[
					'presenter' => 'Blog',
					'action' => 'default',
				]);

Teda môžu existovať nasledujúce url:
www.localhost.sk/blog
www.localhost.sk/en/blog
www.localhost.sk/cs/blog

Potreboval by som tieto URL staticky preložiť v závislosti od jazyka napríklad takto:
www.localhost.sk/blog
www.localhost.sk/en/articles
www.localhost.sk/cs/clanky

Našiel som sekciu v dokumentácii https://doc.nette.org/…tion/routing#… a však nepodarilo sa mi z toho nič funkčné vysmoliť.

Ďakujem veľmi pekne za každú pomoc.

Polki
Člen | 553
+
+2
-
$sections = [
	'cs' => 'clanky',
	'sk' => 'blog',
	'en' => 'articles',
];

$router->addRoute('[<locale=sk en|cs|sk>/]<section clanky|blog|articles>', [
	'presenter' => 'Blog',
	'action' => 'default',
	null => [
		Route::FILTER_IN => function (array $params) use ($sections) {
			$params['section'] = $sections[$params['locale'] ?? 'sk'];
			return $params;
		},
		Route::FILTER_OUT => function (array $params) use ($sections) {
			$params['section'] = $sections[$params['locale'] ?? 'sk'];
			return $params;
		},
	],
]);

Editoval Polki (24. 7. 2021 5:13)

minimal
Člen | 12
+
+1
-

Funguje ďakujem veľmi pekne :)