Sveiki, programmisti! :)
Es daru tā. Man viss iet uz templeitiem. Kaut kas līdzīgs populārajam template variantam, ko daudzas sistēmas izmanto, bet tā kā man ir alerģija pret visu svešo kodu, tad pašam ir savs, bet ar uzlabojumiem.
Templeitā rakstu, piemēram, formas ievadlauku nosaukumus -
{t}Vārds{/t}: input lauks
{t}Uzvārds{/t}: input lauks
un inkludu direktorijā ir iespējamo valodu "vārdnīcas", piemēram, lang_eng.inc (jebšu 'lang_'. $_SESSION['lang'] .'.inc', vai ne?! :) ), kas ir apmēram šāds:
$src = array();
$dst = array();
$src[] = 'Vārds';
$dst[] = 'Name';
$src[] = 'Uzvārds';
$dst[] = 'Lastname';
$src[] = 'Vēl viens alus šovakar būs tieši laikā';
$dst[] = 'Another beer tonight will be just in time'; // Google labi iztulkoja, nu ja, kas sirdij tuvāks!!!
u.t.t.
Protams, var vēl savādāk, tjipa $src['Vārds'] = 'Name', bet ātruma ziņā iegūst pirmais variants, ja ir ļoti daudz frāžu, jo kodā tieši tajā brīdī, kad sagremo templeitu, ar preg_match atlasu visus pēc šablona {t}kaut kas{/t}, saturu meklēju iekš $src, iegūstu indeksu un ar to izvelku no $dst tulkoto vērtību. Šķiet, ka ar ciparisko indeksu php atrod ātrāk, nekā ar simbolisko, nu, tā vajadzētu būt.
Darbojas mērkaķa ātrumā. Un galvenais, ka nenoslogo datubāzi.
Protams, ja taisa universālu sistēmu, kur viss ir datubāzē, tad pirmkārt, ir čakaris visu iespējamo iebliezt tabulā, bet nu ja dara, tad dara, otrkārt, templeitā tad jāizmanto kas? - indeksi, kodi, pēc kuriem datubāzē meklēt? Vai arī {t}...{/t} sistēma, bet tad templeita apstrādes brīdī tev uz katru preg_match atrasto frāzi/vārdu ir jātaisa pieprasījums datubāzei un tad jau nav tālu līdz pilnīgam ablomam. Var arī savādāk. Administrēšanu taisa kā priekš datubāzes, bet kad tulkošanas darbi pabeigti, tad ģenerē katrai valodai .inc failu minētā formātā. Principā tāds arī ir vienīgais variants, lai būtu gan ātrdarbība produktā, gan ērtība administrēšanā. Pirmajā reizē var nolasīt templeitu - atlasa visus tulkojamos gabalus un iebliež datubāzē un tad ar CMSu labo un ģenerē .inc failu.
Upsss, sanāca visai gari priekš pirmā posta :)