Zdravím vás , chcem si na svoj web spraviť multijazyčnosť a neviem ako ju integrovať ... nechcem vytvárať ďaľšie indexi s prekladom chcem radšej nejaký XML súbor a radu ako ho zadefinovať alebo niečo také ... predom ďakujem za odpoveď.
Fórum › HTML / XHTML
Multijazyčnosť www stránky
Mě osobně se líbí toto řešení:
- pro jazyk používat kódy podle ISO 639-1, s jedním defaultním (u tebe asi "sk")
- daný jazyk uchovávat v session (například $_SESSION["language"])
- na začátku skripu zkontrolovat, zda-li je specifikován v URL. Je-li, změnit session
- na začátku poté kontrolovat, zda-li daný jazyk k dispozici. Není-li, přepnout na defaultní
- u překladů rozlišuji statický text (definován ve skriptu) a dynamický text (vytvořen v CMS)
Statický text:
- vytvořím si pro každý jazyk soubor, který budu includovat. Název souboru pro jednoduchost zvolím tak, aby obsahoval kód jazyka.
- do souboru každého jazyka dám definici asociativního pole, které bude obsahovat překlady
- toto pole je globání proměná (v rámci skriptu, nebo - uděláš-li si to tak - v rámci objektu nebo jmenného prostoru)
- klíče tohoto pole jsou textové a jsou to přímo hlášky v defaultním jazyce; hodnoty pole jsou překlady do daného jazyka
- (dále ve skriptu) vytvořím funkci s jedním parametrem, která jednoduše vrátí překlady (tedy hodnoty z globálního pole překladů). A v případě, že prvek neexistuje, vrátí samotný parametr. (Této vlastnosti půjde využít pro překladový soubor defaultního jazyka, kde bude stačit vlastně jenom deklarace prázdného pole.)
- všude tam, kde v hlavním skriptu chci vypsat nějaký statický text, resp. jeho překlad v daném jazyce, zavolám výše zmíněnou funkci a jako parametr ji dám text v defaultním jazyku
Dynamický text:
- dynamický text (články, aktuality, zprávičky, ...) si připravím už v návrhu databáze, kdy sloupce v tabulkách, kterých se to týká (např. nazev, perex, clanek, aktualita, zprava, obsah, ...) rozšířím o přípony v zamýšlených jazycích (např. "nazev_sk", "nazev_en", "nazev_cz", "nazev_de", atd.)
- všude dodržuju konvenci a názvosloví, takže i tady kódy jazyků odpovídají těm, co uchovávám v session a poli překladů
- pro vypsání dynamického textu v daném jazyce vybírám sloupce, které chci vypsat, podle jazykového kódu, který mám v session. Pro ještě větší pohodlnost používám alias. Příklad: "SELECT obsah_" . $_SESSION["language"] . " AS obsah FROM clanky"; Výsledek mám v poli pod indexem ["obsah"], ať už je aktuální jazyk jakýkoli
edit: Teď si uvědomuju, že odpověď, kterou jsem ti poslal, je řešení specificky pro PHP a databáze. Jsou i jiná řešení k vyzkoušení, například node.js, který u mnoha lidí získává na oblibě.
Statický text:
- Soubory s prekladem bych rozhodne neresil polem, pokud to neni php soubor. Ty to pak naincludujes a pokud do toho souboru nekdo pripise php kod (vir, hacker), tak se spusti i ten.
- A kdyz nenajde preklad ani original, tak se zobrazi co?
Dynamický text:
- Jestli by treba nebylo rozumnejsi vytvorit jeden radek pro stranku a k nemu navazat text podle id stranky, bud original nebo prelozeny? Takhle budes mit jedno id pro stranku a druhe id pro jazyk
tab1: id stranky (mozna dalsi spolecne sloupce pro vsechny preklady)
tab2: id stranky, id jazyk, text nadpis, text obsah
tab3: id jazyky
Ciselny udaj se hleda rychleji nez textovy (nazev_cz) v db.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Www stránky na zakázku — založil Dominik
Nebezpečné www stránky — založil ano
Hledám brigádu-www stránky — založil Malirka
Www stránky offline v mobilu — založil Janina
Kdo vytvoří WWW stránky? — založil marpit
Moderátoři diskuze