Ako nastaviť Router tak, aby pri zmene jazyka preložil URL?

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

Ahojte, snažím sa rozbehnúť jazykové mutácie pre svoj projekt a teda podľa článku https://doc.nette.org/…tion/routing sa snažím upraviť Router. Cieľom má byť, že keď v šablone kliknem na odkaz EN, načíta sa mi .../en/contact-form a ak kliknem na SK tak sa mi načíta .../sk/kontakt

Mám vytvorené dve šablony pre contact-form aj pre kontakt. Keď klikám EN či SK, vždy mám v URL iba contact-form (či už je pred tým sk/ alebo en/). Keď do prehliadača natvrdo zadám .../sk/kontakt, tak ma správne routuje na slovenskú mutáciu.

Prosím, poraďte mi (najlepšie rovno s vysvetlením, aby som tomu rozumel), ako donútim Router, aby zmenil adresu.

BasePresenter.php obsahuje perzistentný parameter:

/** @persistent */
public $lang;

Bootstrap.php obsahuje túto routu:

$frontRouter[] = new Route('<lang (?-i)sk|en>/<action>[/<id>]',
    array(
        'presenter' => array(
            Route::VALUE => 'Default',
            Route::FILTER_TABLE => array(
                'kontakt' => 'contact-form',
                'vyhladavanie' => 'search',
            ),
        ),
        'action' => 'default',
        'lang' => 'sk'
    ),
    $secured
);

V šablone mám tieto linky:

<li><a n:href="this, lang => sk">SK</a></li>
<li><a n:href="this, lang => en">EN</a></li>

Taktiež by som sa chcel opýtať na <lang (?-i)sk|en> v Routeri, videl som to v source kóde http://davidgrudl.com/ (zrejme to bude nejaký regulárny výraz, ale neprišiel som na to čo presne znamená, viem len, že funguje).

Majkl578
Moderator | 1364
+
0
-

Taktiež by som sa chcel opýtať na <lang (?-i)sk|en> v Routeri, videl som to v source kóde http://davidgrudl.com/ (zrejme to bude nejaký regulárny výraz, ale neprišiel som na to čo presne znamená, viem len, že funguje).

Lokální vypnutí case insensitivity pro danou část regulárního výrazu (globálně je pro routy defaultně zapnuto).

pseudonym
Člen | 57
+
0
-

Čiže to vypnutie je konkrétne celá tá zátvorka? Teda konkrétne toto (?-i)?
Viem si niekde presne pozrieť ako sa používajú takéto „prepínače“? Nejaká dokumentácia?

Edit:
Toto bola len taká podotázka. Nevieš/te náhodou pomôcť aj s tou hlavnou otázkou?

Editoval pseudonym (27. 8. 2013 12:44)

pseudonym
Člen | 57
+
0
-

Skusim sa opytat este raz a mozno trocha inak.

Vie mi niekto poradit, co mam spravit pre to, aby pri zmene jazyka (perzistentny atribut $lang) router vybral zo „slovnika“ Route::FILTER_TABLE kluc a nie hodnotu (teda prelozeny text a nie ten anglicky)?]

Resp. ako inak sa tento „slovnik“ da vyuzit? Ako a kde mam naimplementovat podmienenu funkcnost na zaklade vyberu jazyka? Potrebujem nejako manualne vytvarat template tak ako to robi David Grudl na svojej stranke v sources (davidgrudl.com)

// create template
    $template = $presenter->createTemplate()
        ->setFile(__DIR__ . '/app/' . $lang . '.latte');

s tym, ze si povytvaram sablony typu nazov_sablony.latte a en.nazov_sablony.latte?