Portál AbcLinuxu, 1. května 2025 11:56
Nedá mi to abych si nepostěžoval na databázi MySQL a její omezené možnosti.
Od byvaleho zaměstnance jsem zdědil projekt postavený nad MySQL a zákaznik společně s vedenim si usmyslel, že by nebyla od věci vícejazyčnost, sice decentně okleštěná pouze na jednu měnu, ale i tak by měl zákazník mít možnost prohlédnout si web a katalog produktů ve více jazycích. Model databáze není sice na tuto podmínku uzpůsoben, ale po přidání potřebných sloupců pro každý jazyk se to dá vyřešit poměrně jednoduše a bez nějaké ho šíleného převodu dat.
Tabulky vypadají tak, že obsahují sloupce name
, text
a nově přidané sloupce name_en
, text_en
, name_de
, text_de
, name_ru
a text_ru
. Pro dotazování se jsmech chtěl použít pohledy, které by se provéděly v závislosti na jazykové verzi nad pohledy tabulka_cs
, tabulka_en
, tabulka_de
a tabulka_ru
.
Bohužel říkám chtěl jsem, protože MySQL umí pohledy až od verze 5.0.1 (kterou na webhostingu nejspíš neseženete), zatímco jiné databáze je zvládají už velmi dlouho. Rovněž řádná podpora UTF-8 byla přidána až ve verzi 4.1, která je poměrně nová.
V zásadě mám dvě možnosti:
Bohužel to asi vidím na bod č. 1. ačkoliv se mi do toho vůbec nechce a aplikaci nehodlám přepisovat, na to nemám čas. Dosti blogování, vzhůru přepisovat dotazy.
Tiskni
Sdílej:
Pánove nevím jestli jste to pochopili nebo vůbec četli, ale pro natvrdlé ještě jednou.
Co mě štve je to, že pohledy jsou v MySQL doplněny až od verze 5.0.1 která je zatím dostupná jako beta. No a do databázového schématu pořádně sahat nemůžu. To mám zakázané, protože tu databázi využívá nějaká windowsí aplikace přes ODBC. Tak mě napadlo použít pohledů pro různé jazykové verze a dotazy by zůstaly skoro stejné, jen misto tabulek by se používaly pohledy. Takhle to budu muset řešit přepisováním názvů sloupců pro různé jazykové verze.
Gettext dokázal občas zazlobit a pěkně potrápit, kdysi jsem s ním měl nepříjemnou zkušenost.
V současné době používám MySQL 4.X na jednu vícejazyčnou aplikaci a zdá se, že funguje velmi dobře. Ale občas mi v MySQL 4.X chybí pohledy a možnost napsat si vlastní uložené procedury abych nemusel řešit některé věci na straně PHP. Bohužel MySQL > 5.0 nemám na webhostingu k dispozici a nemůžu se zbavit dojmu, že se od páté verze konečně MySQL naučilo to, co už dlouho např. FireBird nebo PostgreSQL umí. Faktem je, že od 4.X udělala databáze MySQL obrovské kroky kupředu, doufám že neusne na vavřínech.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.