Dobrý večer.
Pokud bych chtěl mít web ve více jazycích, jaký je nejlepší způsob to vytvořit?
Mám pocit, že nejlepší řešení je ukládat do do databáze a poté podle výběru jazyka vybírat texty z tabulek.
Pokud je nejlepší tento způsob, pak bych se rád zeptal, jak mám udělat texty, které se samotné vybírají z databáze?
Například kdybych chtěl vypsat informace o přihlášeném uživateli (z DB se vybírá jméno, poslední login apod.), mám to také dělat přes databázi nebo to hodit například do switche?
switch ($jazyk)
{
case CZ:
$info = "Uživatel ".$vysledek_z_databaze['jmeno'];
break;
case EN:
$info = "User ".$vysledek_z_databaze['jmeno'];
break;
}
Podle mne by mohlo být nejvýhodnější mít pro každý jazyk jednu databázi. Otevřeš pak jen tu, kterou zrovna potřebuješ. Na WZ se pro tento účel skvěle hodí např. databáze SQLite, INIFILE nebo GDBM. Můžeš použít i CDB. Každá má jiné výhody a limity.
Parametrizování uděláš snadno tím, že v databázi budeš mít např. takový řetězec: "Uživatel: %s", který si vyzvedneš do proměnné $form. Při výstupu pak použiješ printf():
$db=dba_open('texty_'.$jazyk.'.gdbm','r');
$form=dba_fetch($klic,$db);
printf($form,$vysledek_z_databaze['jmeno']);
<HTML>Podle mě nejrychlejší cesta je textový soubor. Vzhledem k realistickému předpokladu, že texty ve hře nebude najednou upravovat X lidí, stačí jakékoliv víceméně statické úložiště. Takže to můžeš mít v texťáku co řádek, to nějaká hláška, nebo to můžeš mít přímo jako PHP soubor určený k includnutí a obsahující asociativní pole ;)
Rozhodování je otázkou prirorit - snadnosti manipulace nebo rychlost přístupu?</HTML>
Záleží na množství hlášek. Zhruba do 1000 hlášek je lepší je mít v PHP. Případně v souboru INI a číst je funkcí parse_ini_file(). V obou případech se dá potřebný soubor selektivně vybrat podle požadovaného jazyka. Pokud by těch hlášek bylo víc než 1000, je rozumné použít databázi. Jenom ne MySQL.
<HTML>S tím souhlasím. Taky může mít ty soubory rozčleněné podle dalších kritérií, nejen podle jazyka ;)</HTML>
Samozřejmě se to dá rozčlenit. A to až na úroveň, kdy klíčem je název souboru a hodnotou je obsah toho souboru. Vždyť i některé redakční systémy ukládají svá data přímo do souborového systému. Jenom není dobré to s tím rozčleňováním přehánět, aby se během zobrazení jedné stránky nenahrávalo těch souborů příliš mnoho.
Například chybové hlášky mohou být v samostatném souboru, aby se nenahrávaly pokaždé, ale jen při potřebě vypisování chyb. Ovšem stejně dobře se dají vložit přímo do objektu, který se stará o výpis chybových hlášek a nahrávat ho přes autoload, tedy jen v případě potřeby.