21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Lukas111
Profil *
Ahoj, začal jsem se zajímat o vývoj multijazyčných webových stránek.

Jde mi o to, že si chci vytvořit multijazyčnou webovou stránku, která bude řekněme SEO kompatibilní a jde mi o to si ji nejprve kvalitně navrhnout a poté tento návrh aplikovat.

Bude vyvíjena v Pythoním frameworku Django.

Zatím jsem si do Djanga nainstaloval middleware localeurl, které mi umožňuje mít identifikátor jazyka v url a ještě jsem to poupravil tak, že se to přesměruje podle informace HTTP_ACCEPT_LANGUAGE, která je nastavena v prohlížeči.

Takže když zadáte domain.tld přesměruje vás to na http://domain.tld/cs/
Každá stránka má pak identifikátor jazyka v url a identifikátor jazyka je pak i v hlavičce XHTML kódu.
Také se pomocí context preprocesorů generuje zvlášť boční menu pro každý jazyk, takže například česká a anglická stránka na téže doméně může mít rozdílný obsah.
A tím se pomalu dostávám k jádru věci, chtěl bych navrhout databázi tak aby, když má nějaké např česká stránka ekvivalentní anglickou stránku, tak aby byly ty dvě stránky nějakým způsobem na sebe navázány, podotýkám, že chci aby nebyl stejný slug, např. /cs/o-nas/ vs. /en/about-us/

Tak se vás chci zeptat, jestli nemůžete doporučit nějakou kvalitní literaturu či odkazy, nějakou studii nějaké univerzity, či nějaký open source cms, který má toho dobře vyřešené, abych si mohl nastudovat informace potřebné k vývoji té mé aplikace.

Pozn.: Google používat umím, ale myslím, že je dost těžké najít nějakou kvalitní a relevantní studii na toho téma.
fojcek
Profil *
Ahoj, nevim, jestli je to presne to, co hledas. Ja na vicejazykove stranky mam figl:

$lang = $_GET['lang']; If ($lang == ""){$lang = $_POST['lang']; } If ($lang == ""){$lang = "en"; } //zjisteni language
include "dic/index.$lang"; //includuje slovnikovy soubor

V samotnem zdrojaku pak napriklad misto "Vítejte na našich stránkách" pouziji <? echo $UVITANI_STRANKA_TEXT; ?>
- která je v dic/index.cz deklarována:
<?
$UVITANI_STRANKA_TEXT = "Vítejte na našich stránkách";
?>
Lukas111
Profil *
fojcek: Tak to co jsi zde uvedl už mám, ale hledám ještě nějaké pokročílejší věci, především s návrhem databáze atd.

A jak píšeš
V samotnem zdrojaku pak napriklad misto "Vítejte na našich stránkách" pouziji <? echo $UVITANI_STRANKA_TEXT; ?>
- která je v dic/index.cz deklarována:

Tak to má Django mnohem lépe vyšešeno.

Nejde tak ani o implementaci ale o obecné informace k tomu návrhu. Nemusí to být vázáno na konkrétní jazyk.
blaaablaaa
Profil
Ohledne db mas prakticky mas dve moznosti
- pro kazdy jazyk pridas sloupec _jazyk (IDarticle, name_cz, name_en, text_cz, text_en) - jednoducha rezie, jednoduche dotazy, ale neprakticke, pokud budes pridavat/odebirat jazyky
- pro kazdy jazyk pridat novy radek (IDarticle, name, text, id_lang) - redundance dat, jejich nekonzistence, apod. Jednoduche pridavani dalsich jazyku

Propojeni en a cz stranek provadim tak, ze mam v tabulce strukturu webu:
IDmenu, IDparent, title_cz, title_en, link_cz, link_en (1, 0, 'Úvod', 'Intro', '/uvod/', /en/intro/'), kde si vytvorim strukturu webu a v tabulce articles k nim pak priradim clanky:
IDarticle, IDmenu, name_cz, name_en, text_cz, text_en, ...
Ale je to opet reseni pro omezeny pocet jazyku

Jinak ohledne webu pozivam strukturu odkazu:
/uvod/ - primarni jazyk
/en/introduction/ - konkretni jazyk
Lukas111
Profil *
blaaablaaa:
Nad tou strukturou pro primární jazyk bez identifikátora jazyka a pro ostatní s identifikátorem jsem také přemýšlel.
srigi
Profil
Navrh databazoveho modelu je podrobne prebrany v Symfony book

ad schema URL
/uvod/ - primarni jazyk
/en/introduction/ - konkretni jazyk

je to IMO zbytocnost, clovek sa uprogramuje aby to bolo bezchybne a SEO prinos to nema skoro ziadny. Preto odporucam mat identifikator jazyka pritomny vzdy, aj na homepage.
Lukas111
Profil *
srigi:
Díky za odkaz.
Jinak s tím identifikátorem máš pravdu.
blaaablaaa
Profil
srigi:
proc uprogramuje?
bud si primo v htaccessu overis, zda url zacina na ([a-z]{0,2})/, popr. si to ve skriptu rozdelis podle lomitek (coz stejne musis udelat) a porovnas, jestli je na prvnim miste nektery z tvych jazyku, pokud ne, zvolis vychozi.
Nox
Profil
http://php.vrana.cz/storing-multilingual-records-in-the-mysql-database.php
srigi
Profil
blaaablaaa:
Ono vsetky tie "pseudo riesenia" su dobre kym clovek nenasadi framework. A garantujem vam, ze ak si v tomto konkretnom pripade prinesiete uvahu
/uvod/ - primarni jazyk
/en/introduction/ - konkretni jazyk 


do nejakeho pokrocileho FW s pokrocilym Routerom, velmi rychlo vyhorite. Kym sa programator potaca vo vlastom PHP kvaziframeworku, ide spravit takmer vsetko. Ale ak prejde na FW (Symfony, Nette, Zend), mal by sa svojich navykov zbavit. FW mu proste taky volnost neda (editovat si nieco v .htacces) a musi sa pohybovat v ramci jeho barier.
Lukas111
Profil *
srigi:
Ano, naprostá pravda, již na začátku jsem psal, že to dělám v Djangu.

Ještě dotaz, jak vyřešit XML sitemap.
1. Mám udělat jednu sitemap.xml hned v kořeni - např.: example.com/sitemap.xml kde budou všechny verze, takže tam bude <loc>http://example.com/cs/cesky-post/</loc> i <loc>http://example.com/en/english-post/</loc>
2. Nebo udělat sitemapy na adresách example.com/cs/sitemap.xml kde budou jen ty české <loc>http://example.com/cs/cesky-post/</loc> a example.com/en/sitemap.xml kde budou jen ty anglické<loc>http://example.com/en/english-post/</loc>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0