Autor Zpráva
majo80
Profil *
Zdravím.
Vytvoril som si funkciu na preklad textov na web stránke, ktorú volám takto:

<?echo preloz('Anketa','en');?>

A teraz k samotnej funkcii a spôsobu vybratia správneho textu. Prvý spôsob je pri každom volaní funkcie vybrať iba jeden text z db:

function preloz($prekladany_text,$do_jazyka)
{
       $sql2 = "SELECT * FROM translate WHERE text_svk='$prekladany_text' AND lang='$do_jazyka' ";
       mysql_query("SET NAMES 'cp1250'");
       mysql_set_charset("cp1250");
       $vysledek2 = mysql_query("$sql2");
       while($riadok2 = mysql_fetch_array($vysledek2))
       {
       $prelozeny_text = $riadok2["preklad"];
       } while (false);
if ($prelozeny_text<>""){return $prelozeny_text;}else{return $prekladany_text;}
}

alebo druhý spôsob, na začiatku každej stránky includovať súbor, ktorý všetky texty vo zvolenom jazyku vloží do poľa v tvare:
function preloz($prekladany_text,$do_jazyka)
{
$alltext = array (
"Najnovšie produkty" => "Latest Products", 
"Kategórie" => "Category", 
"Nákupný košík" => "Shopping cart"
);

$vystup = $alltext[$prekladany_text];
if (!$vystup){$vystup=$prekladany_text;} 
return $vystup;
}

Tak otázka, ktorý spôsob je podľa vás lepší čo sa týka záťaže na server resp. rýchlosti celej aplikácie?
Volať databázu pri každom použití funkcie preklad() a vytiahnuť iba ten text, ktorý je preložený, alebo pri otvorení každej stránky vytiahnuť z DB všetky texty, uložiť ich do poľa a na stránke potom pristupovať k položkám tohoto poľa?
final
Profil
myslím si, že druhé riešenie
jozin
Profil *
Zdravím,

z Vašeho řešení bych každopádně upřednostnil řešení druhé, jako kolega.

Pokud však mohu radit, bylo by možná vhodnější zvážit konstantu, kde bude vybraný jazyk specifikován a tím se zruší nutnost druhého parametru. Navíc by se dal includovaný script volat s parametrem, do kterého jazyku chcete překládat. Pak je funkci, která překládá jedno, jestli má být web v CZ nebo EN a bude podávat korektní výstupy. Samozřejmě lze mít jednu proměnnou $lang například a dát ji jako parametr dané funkce, ale proč dělat funkci zbytečně složitější. Dále bych jako vylepšení popřemýšlel nad cache, je zbytečně při každém requestu se ptát na stejná data, když budou stránky statické.

Snad jsem alespoň trochu pomohl,
Jozin.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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