bfj Posted August 13, 2009 Report Share Posted August 13, 2009 (edited) Sveicināti, man ir radusies dilemma. Nekādi nevaru tikt skaidrībā, kā realizēt vairāku valodu atbalstu ar dinamiskiem datiem. Situācija ir sekojoša. Lapas administrācijas daļā nodrošināta iespēja veidot dažādas lapas sadaļas, to saturu (tiek izmantots WYSIWYG teksta redaktors), formas (atbilstoši arī to laukus). Jābūt iespējai katru no tām (sadaļas, saturs, formas) veidot vairākās valodās. Ja lietotājs aizpilda admin daļā veidoto formu, tad jābūt iespējai aizpildīt laukus visās valodās, kurās veidota forma, ne tikai rādīt lauku nosaukumus izvēlētajā valodā (lauks lv: "blabla", lauks en: "blablabla"). Vēl lapā ir paredzēta meklēšana pēc aizpildīto formu datiem (nefiltrējot, pēc kura lauka) un šo aizpildījumu arī varētu būt samērā daudz, tā kā jādomā arī par ātrdarbību. + vēl jāņem vērā arī tas, ka admin daļā jābūt iespējai pievienot jaunu valodu. Pašai admin daļai arī jābūt vairāku valodu atbalstam, bet ar to problēmu nav, jo dati ir statiski un tiek glabāti valodu "resursu" failos. Problēma ir ar lietotāju ievadītiem un admin daļā veidotiem (dinamiskiem) datiem. Esmu izkristalizējis dažus uzmetuma variantus, taču kaut kā neliekas, ka eju pareizā virzienā. Šis gan vairāk attiektos uz datubāzi, taču no tā arī izriet risinājums iekš PHP. Būtu ļoti pateicīgs, ja kāds padalītos pieredzē un dotu jebkādu padomu. Edited August 13, 2009 by bfj Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted August 14, 2009 Report Share Posted August 14, 2009 Sveiks! Par daudzvalodām vajadzīgo DB struktūru nesen spriedām šeit: http://php.lv/f/topic/14023-daudzvalodu-atbalsts-identiskam-saturam Ir jāizdala divas lietas: interfeisa vairākvalodu atbalsts (resursu faili vai DB) un satura vairākvalodu atbalsts (visticamāk tikai DB). Attiecībā uz ievadi vairākām valodām uzreiz: Esmu redzējis, piemēram, šādu WYSIWYG komponenti - tai uzreiz viena teksta ievades lauka ietvaros, var pārslēgties starp valodām: http://spaweditor.com/en/disp.php/en_products/en_spaw/en_spaw_demo - kā redzi tur ir tabi (cilnes ;) ), kas ļauj pārslēgties starp vairākākām daļām/valodām. Quote Link to comment Share on other sites More sharing options...
Web Developer Posted August 14, 2009 Report Share Posted August 14, 2009 Kur problēma? Ja tev dati ir simetriski - respektīvi - vajadzīgs katrā valodā vienkārši tulkojums (kas ir visloģiskākais), nevis atsevišķi veidots saturs katrā valodā, tad vienkārši katrai db tabulai, kur veidojas saturs, pievieno lauku "Lang", kurš satur valodas alias, piemēram, "lv" vai "en" vai "ru" utt... Atlasot pieprasījumus no datubāzes ņem vērā valodas parametru. Atgādināšu tikai, ka tik un tā katram ierakstam nepieciešams savs ID - vienīgais unikālais identifikators, bet šai gadījumā vari veidot kombinēto ID - ID+Lang - unikālai jābūt kombinācijai ID (vienalga ko tur raksti) un Lang (valodas parametrs). Tad varēsi viegli pārslēgties simetriski no konkrētas lapas vienā valodā uz otru. Šai variantā ir iespējams arī bezgalīgs valodu skaits un to jebkurā gadījumā var papildināt! Var pat uztaisīt (ar FK palīdzību) datubāzē, ka dzēšot konkrētu valodu, izdzēšās visi ieraksti, kas ir šai valodā ievietoti datubāzē. Kā to izdarīt tehniski sīkāk izskaidrot nav laika. Quote Link to comment Share on other sites More sharing options...
bfj Posted August 14, 2009 Author Report Share Posted August 14, 2009 Paldies par padomiem. Jau sāk veidoties jaunas idejas :) Var pat uztaisīt (ar FK palīdzību) datubāzē, ka dzēšot konkrētu valodu, izdzēšās visi ieraksti, kas ir šai valodā ievietoti datubāzē. Ar šo varētu būt domāts ON DELETE (vai ON UPDATE) CASCADE? Attiecībā uz ievadi vairākām valodām uzreiz: Esmu redzējis, piemēram, šādu WYSIWYG komponenti - tai uzreiz viena teksta ievades lauka ietvaros, var pārslēgties starp valodām: http://spaweditor.co...aw/en_spaw_demo - kā redzi tur ir tabi (cilnes ;) ), kas ļauj pārslēgties starp vairākākām daļām/valodām. Žēl, ka tas redaktors ir par maksu (manā gadījumā :) ). Laikam būs vien pašam jāmodificē jau esošais. Quote Link to comment Share on other sites More sharing options...
Web Developer Posted August 14, 2009 Report Share Posted August 14, 2009 Ar šo varētu būt domāts ON DELETE (vai ON UPDATE) CASCADE? Tieši tā, lai gan sākumā svarīgākais ir pareiza un loģiska db struktūra, kas ievēro vismaz pirmās 4 normālformas. Quote Link to comment Share on other sites More sharing options...
bubu Posted August 14, 2009 Report Share Posted August 14, 2009 Nu, nu.. 4NF ir jau daudz par traku. Vairums veidotās DB nav pat 3NF, kur nu vēl 4NF. Un tās strādā un funkionē visai normāli. Pirmās divas NF gan der ievērot (ar trešo jāskatās saprāta robežās). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.