Autor Zpráva
libris
Profil
Ahoj, pokouším se dělat stránky s několika zakykovými mutacemi. Doposud jse je dělal přes url adresy a pomocí mod_rewrite. Problém je ale v tom že někdo chce jednojazyčné stránky, někdo zase vícejazyčné. Když vytvořím třeba aktuality pro vícejazyčný web a potřebuju ho použít jen pro jednojazyčný, tak ho musím kompletně ošetřit, tzn. všechny proměnné ve kterých mám překlady vyhodit a napsat to tam na tvrdo. Nebo aktuality nechat pro vícejazyčný web, ale v url adrese bych musel pořád udržovat /cs/, aby se mi do proměnných načítal český text. Napadlo mě proč to neudělat přes session. Sice hledání chyb bude zřejmě složitější, ale mělo by to vyřešit můj problém.

Napsal jsem si kod, který by měl do $_SESSION vložit aktuální jazyk. Chci se zeptat zkušenějších programátorů, zda by to tak mohlo být nebo by kód napsali jinak?

session_start();
if(isset($_GET["lg"])):
$_SESSION["lg"] = $_GET["lg"];
elseif(!isset($_SESSION["lg"])):
$_SESSION["lg"] = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$_SESSION["lg"] = strtolower(substr(chop($_SESSION["lg"][0]),0,2));
elseif(($_SESSION["lg"]<>"cs")&&($_SESSION["lg"]<>"de")&&($_SESSION["lg"]<>"en")):
$_SESSION["lg"]="en";
endif;
require("config".$_SESSION["lg"].".php"); //nahraje se config s aktualni mutaci
ninja
Profil
Resit jazyk pres session a ne pomoci URL je u vetsiny webovych stranek velmi spatny napad.
tiso
Profil
libris - týmto spôsobom odstrihneš robotov od ostatných jazykových verzií, takže vo vyhľadávačoch budeš mať len jednu. Okrem toho je blbosť mať pod jednou url rôzny obsah, nebude sa dať na ne odkazovať.
libris
Profil
Resit jazyk pres session a ne pomoci URL je u vetsiny webovych stranek velmi spatny napad.
Tak jak jinak udělat třeba e-shop aby fungoval jak jen pro jednu jazykovou verzi tak jako vícejazyčný. Teď to třeba řeším tak že když mám jen jednujazyčnou verzi tak je adresa www.nazev.cz/cs/ abych nemusel přepisovat proměnné za skutečné texty, ale mohl to tahat ze souboru configcs.php. Protože už mám nachystaný e-shop jako vícejazyčný.
srigi
Profil
libris
Tak ako pisu ninja a tiso, neprenasaj jazykovu mutaciu v SESSION! Ak nekces pri jednojazykovej stranka mat identifikator jazyka v URL, kukni sa na moje riesenie.
ninja
Profil
libris: co je spatneho na adrese http://www.example.com/cs/ ? Nebo to jde delat parametrem - http://www.example.com?hl=cs
libris
Profil
ninja: Mě osobně tam nevadí /cs/, ale klientům. Proč tam má být /cs/, když jsou stránky jen v češtině. A vysvětlujte jim pak že modul pro jejich stránky je nachystaný pro vícejazyčný web, tak abych to nemusel předělávat... Jde mi o to abych měl určitý modul nachystaní jak pro jednojazyčnou verzi stránek, tak pro vícejazyčné stránky a nemusel to při každých nových stránkách předělávat.
imploder
Profil
libris
nevyřešil by to v tom případě rewrite na "/" - že by se přistoupilo na /cs/ (které je asi dál rozepsané rewritem na skript s parametrama), ale nebylo by vidět?
tiso
Profil
libris - takže chyba je v tom, že tvoj modul nefunguje pri jednojazyčnej verzii. Porozmýšľaj ako ho upraviť.
libris
Profil
imploder: to mě taky napadlo jestli by to nešlo jen v .htaccess nastavit tak, že když bude $lg=cs, tak by se /cs/ vůbec nezobrazilo. Ale to nevím jak udělat (pokud by to šlo).

v .htaccess používám toto:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ index\.php?lg=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)?/?$ $2\.php?lg=$1 [L,QSA]
avaster
Profil
skus im vystvetlit ze je to pre ich dobro; ze ked budu chciet rozsirovat web tak maju o starost menej a teda aj menej nakladov s tym spojenych...
tiso
Profil
avaster - to nie je správne riešenie problému...
Mastodont
Profil
No a co takhle se úplně vykašlat na .htaccess a udělat to v aplikaci? Rozdělit _SERVER['REQUEST_URI'] na jednotlivé díly, první by byl implicitně jazyk, pokud by první díl neobsahoval žádný jazyk, nastavit jazyk na default ...
srigi
Profil
Mastodont
Presne tak to riesim v tom mojom clanku. Identifikator jazyka sa overuje reularnym vyrazom.
Mastodont
Profil
srigi
JJ, akorát to array_shift - array_unshift nechápu, stačí přece testovat $parts[0] ...
libris
Profil
srigi
Opravdu pěkný článek, hned jsem ho přes víkend studoval a zkoušel. Kdy uveřejníš třetí část kapitoly? Mám menší problém s OOP, teoreticky ho trochu chápu, ale neumím ho použít v praxi :-(.
srigi
Profil
libris
Vdaka za prijemnu odozvu. Ja som naopak vikend stravil reinstalom systemu, az teraz (Nedela vecer 9:00pm) mam vsetko rozbehane a nastavene, takze do prace na programovani sa mozem pustit az odteraz. Este musim premysliet, co to vlasnte bude robit, kcel by som totiz predviest Zend_Db v plnej parade (kaskadovanie nad MyIsam tabulkami a pod.).

Ale snad uz coskoro.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: