Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: Router – 3 jazyky, rozdílné názvy rout pro stejné stránky

PHP Nette Framework Nette framework Router – 3 jazyky, rozdílné názvy rout pro stejné stránky

Aktivity (1)
Avatar
Jan Vacek
Člen
Avatar
Jan Vacek:27. dubna 20:42

Ahoj,
snažím se udělat web, kde mám 3 jazyky – CS/EN/DE.
v případě popsaném v kódu se vždy pracuje jen s /en routami, ale nejsem schopnej nastavit, že když se ocitnu na *.eu/cs/, aby se mi všechny vygenerované routy na stránce uvedli do českého stavu, to samé s *.eu/de/ a němčinou. Snažil jsem se udělat i něco jako je Route::FILTER_TAB­LE, ale vždy jsem docílil akorát toho, že v odkazech hodnota nahradila klíč, takže jsem byl stále tam, kde jsem začal.

Nemáte někdo nějaký nápad?

Děkuji

public static function createRouter()
    {
        $router = new RouteList;

        $router[] = new Route('[<lang cs|de>]', 'Main:homepage');

        //en
        $router[] = new Route('branches', 'Main:pobocky');
        $router[] = new Route('about-us', 'Main:onas');
        $router[] = new Route('technology', 'Main:technologie');
        $router[] = new Route('prices', 'Main:cenik');


        //cs
        $router[] = new Route('<lang=cs>/o-nas', 'Main:onas');
        $router[] = new Route('<lang=cs>/technologie', 'Main:technologie');
        $router[] = new Route('<lang=cs>/cenik', 'Main:cenik');
        $router[] = new Route('<lang=cs>/pobocky', 'Main:pobocky');

        //de
        $router[] = new Route('<lang=de>/uber-uns', 'Main:onas');
        $router[] = new Route('<lang=de>/technologien', 'Main:technologie');
        $router[] = new Route('<lang=de>/preisliste', 'Main:cenik');
        $router[] = new Route('<lang=de>/idk', 'Main:pobocky');

        //global
        $router[] = new Route('[<lang cs|de>/]vip',"Contact:kontakt");
        return $router;
    }
 
Odpovědět 27. dubna 20:42
Avatar
Odpovídá na Jan Vacek
Martin Konečný (pavelco1998):27. dubna 20:58

Ahoj, nejsem si úplně jistý, ale zkus u těch rout nemít <lang=cs>, ale jen "cs", tedy

$router[] = new Route('cs/o-nas', 'Main:onas');
Nahoru Odpovědět 27. dubna 20:58
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Vacek
Člen
Avatar
Jan Vacek:28. dubna 2:07

no, jde mi o to, že v tomto případě nebudu schopnej ale nijak ovlivnit generování odkazů, nebudu moct zjistit, jestli jsem právě na /de nebo na /cs nebo jen na /<subpage>, nebo snad ano? bez hodnoty parametru $lang

 
Nahoru Odpovědět 28. dubna 2:07
Avatar
Odpovídá na Jan Vacek
Martin Konečný (pavelco1998):28. dubna 14:25

Zkoušel jsem to teď a takhle se mi to zdá v pořádku:

$router[] = new Route("<lang cs>/o-nas", "Homepage:about");
$router[] = new Route("<lang en>/about", "Homepage:about");

Pokud jsem v jazyce /cs, tak je odkaz veden na /o-nas. Pokud jsem v jazyce /en, odkaz vede na /about.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 28. dubna 14:25
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.