Multijazyčná aplikace na 2 doménách

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Maekoboss
Člen | 36
+
0
-

Ahoj,

mám domény example.cz a example.sk. Obě směřují na stejný hosting. Dále mám multijazyčnou aplikaci, která má všude perzistentní parametr lang. Všechno funguje v pohodě na adrese example.cz/neco mám český obsah a na adrese example.cz/neco?lang=sk mám slovenský obsah. Nicméně potřebuji, aby to fungovalo tak, že pro .cz se zobrazí cz obsah a pro .sk se zobrazí sk obsah.

Router

// ziskani url a presenteru z db
	$database = $databaseObject;
	$structure = $database->table('structure')->where('lang', 'cz');
	$filterTable = array();
	if ($structure) {
	    foreach ($structure as $item) {
		if (($item->presenter != null || $item->presenter != '') && ($item->uri != null || $item->uri != '')) {
		    $presenterName = explode(':', $item->presenter);
		    $filterTable[$item->uri] = $presenterName[2];
		}
	    }
	}

	// vlastni router
	$router = new RouteList();

	$router[] = $adminRouter = new RouteList('Admin');
	$adminRouter[] = new Route('admin/<presenter>/<action>', 'Dashboard:default');

	$router[] = $frontRouter = new RouteList('Front');
	$frontRouter[] = new Route('<presenter>/<action>', array(
	    'presenter' => array(
		Route::VALUE => 'Homepage',
		Route::FILTER_TABLE => $filterTable,
	    ),
	    'action' => 'default',
	));

Jde mi jenom o front routu, díky za rady

Majkl578
Moderator | 1364
+
+3
-

Musíš v routě uvést i doménu, něco takového:

//example.<language cz|sk>/<presenter>/<action>
mkoubik
Člen | 728
+
0
-

Kdybys chtěl být akurátní, tak si tam ještě přidej překladovou tabulku cz -> cs, sk -> sk, ale asi to je jedno.

Majkl578
Moderator | 1364
+
0
-

@mkoubik: Jasná věc, nechtěl jsem to komplikovat. :) Naposledy jsem používal něco takového:

new Route('//example.<language>/<presenter>/<action>', [
	'language' => [
		Route::FILTER_STRICT => TRUE,
		Route::FILTER_TABLE => [
			'cz' => 'cs',
			'sk' => 'sk',
		],
	],