Autor Zpráva
tomstryja
Profil
Řeším prvně cms pro vícejazyčný web a stojím před tímto problémem:
Pro představu:
stránky budou třeba v cs a en, CMS bude také v cs a en.
Strukturu dat v databázi mám v duchu řešení 1. i 3. (jak popisují zde).

Mám tabulku "oblasti" se sloupci "id, oblast_cs, oblast_en".

Jak vyřešit, že když vytvořím novou oblast (insertem) a CMS mám v českém jazyce, abych po přepnutí CMS do en věděl, že mám updatovat řádek s daným id, a přidat tak anglický název do "oblast_en"?

Nebo jak se vlastně v CMS tyto jazykové verze řeší?

Díky za vaše zkušenosti.
tomstryja
Profil
Hrubku v nadpise přehlédněte, díky.
Mastodont
Profil
Mám tabulku "oblasti" se sloupci "id, oblast_cs, oblast_en".

To máš z hlediska teorie blbě. Opakované atributy stejného významu patří do jiné tabulky, každý v jednom řádku:

id oblasti, jazyk, název
----------------------------
1, EN, My home
1, CZ, Můj domov
...

A při vytváření nové oblasti bych já vyplnil rovnou všechny názvy, proč to odkládat?
tomstryja
Profil
Dobře, ale když anglickou verzi bude spravovat někdo jiný, který doplní překlad později, tak jak to pořešit?
tomstryja
Profil
Co mě napadá je duplikovat na každou jazykovou verzi stejné tabulky, pak by se nemuselo řešit jestli už záznam v nějakém jazyce existuje, ale to by třeba při 4 jazycích bylo 4x tolik tabulek.
tomstryja
Profil
Tak jsem se poučil od příspěvku Mastodonta. Díky za radu.

Skutečně je toto řešení výhodnější, než nový sloupec pro novou jazykovou verzi, hlavně pokud budete vytvářet objekty a procedury v databázi.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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