millers Posted March 10, 2010 Report Share Posted March 10, 2010 Sveiki vēlētos dzirdēt jūsu domas par šo valodas maiņas sistēmu .. http://devzone.zend.com/article/4469 varbūt ir kādi ieteikumi kādu veidu izmantot varbūt pat ir kādi paraugi ? Quote Link to comment Share on other sites More sharing options...
briedis Posted March 10, 2010 Report Share Posted March 10, 2010 Es kad taisīju multi-valodu, tad visādos sīkās vārdus, frāzes glabāju masīvā, failā. Datubāzē glabāju lielākus tekstu gabalus, tā kā tavā dotajā linkā pa kolonnām... $lang_arr['ru']['hello'] = "Privet!"; $lang_arr['lv']['hello'] = "Sveiki!"; $lang_arr['en']['hello'] = "Hello!"; $lang = "lv"; //ru, lv, en $l = $lang_arr[$lang]; echo $l['hello']; Nedomāju, ka ir īpaši labāki veidi... Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted March 10, 2010 Report Share Posted March 10, 2010 Interfeisa valoda, labāks par masīviem, noteikti ir http://lv.php.net/manual/en/function.gettext.php Quote Link to comment Share on other sites More sharing options...
2easy Posted March 10, 2010 Report Share Posted March 10, 2010 define() ftw un inklūdo atbilstošo failu ar valodas konstantēm priekšrocības salīdzinot ar array: konstante ir pieejama visur. tb nevajag nekādu global $arr; Quote Link to comment Share on other sites More sharing options...
black Posted March 10, 2010 Report Share Posted March 10, 2010 (edited) Runājot par masīviem - iedomāsimies, ka mums ir lapa, kur ir ~1500 stringu (ņemu par piemēru vienu no savām lapām). Tas tagad nozīmē, ka katras lapas sākumā jāiekļauj masīvs ar 1500 ierakstiem. No atmiņas un resursu viedokļa tas varētu nebūt ideāli. Vēl, protams, ir jautājums, kā organizēt masīvu tulkošanu - kādam noteikti aizmirsīsies kāds ieraksts kādā no valodām un izmantojot masīvus, grūti izdomāt, kuri stringi lapā nav notulkoti. Protams, vienreiz tulkojot tas ir vienkārši, bet pieņemsim, ka lapa nepārtraukti mainās (kura gan nemainās) un kādi 3-4 tulkotāji strādā paralēli... Par gettext - jāņem vērā, ka mainot tulkojumus, jāpārstartē Apache. Tas attiecīgi nozīmē, ka vajag atsevišķu serveri, jo šārēta hostinga gadījumā neviens netaisās restartēt Apache katru reizi, kad tiek uzlabots tulkojums (piemēram, 5x dienā). Edited March 10, 2010 by black Quote Link to comment Share on other sites More sharing options...
briedis Posted March 10, 2010 Report Share Posted March 10, 2010 Nu tad var provēt ielādēt no db tajā masīvā, atkarībā no kontekta. (Vai tad katrā lapā būs pa 1500 ierakstiem?) Quote Link to comment Share on other sites More sharing options...
black Posted March 10, 2010 Report Share Posted March 10, 2010 Nu tad var provēt ielādēt no db tajā masīvā, atkarībā no kontekta. (Vai tad katrā lapā būs pa 1500 ierakstiem?) To var, bet tad jāpadomā, cik būs kontekstu. Katrai lapai savs vai pa lapu grupām? Kā tiks nodrošināts tas, ka kontekstu vērtības nepārklājas (piem. Username tulkojums var parādīties gan reģistrācijas, gan administrēšanas lapās). Tas, savukārt, izskatās pēc samērā nopietnas datubāzes. Piedevām, parādās jautājums par to, vai nolasīt 100 ierakstus no datubāzes (DB serveris parasti ir uz cita datora) ir ātrāk, nekā iekļaut 1500 stringu masīvu. Quote Link to comment Share on other sites More sharing options...
briedis Posted March 10, 2010 Report Share Posted March 10, 2010 (edited) Un kāds būtu tavs piedāvātais universālais risinājums? Pēc tevis teiktā, es sāktu štukot - laikam jāmet monēta.. Edited March 11, 2010 by Aleksejs Quote Link to comment Share on other sites More sharing options...
black Posted March 10, 2010 Report Share Posted March 10, 2010 Es tikai piedāvāju savas domas par augstākminētajām idejām. Quote Link to comment Share on other sites More sharing options...
briedis Posted March 10, 2010 Report Share Posted March 10, 2010 Es jau tā arī sapratu. Tik, pie kādas būs arī jāpaliek :) Viss tomēr atkarīgs no lapas apjoma... Kā nez to realizē, piemēram, facebook.com? Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 11, 2010 Report Share Posted March 11, 2010 Es dariju shadi: Katrai valodai veidoju savu failu, kura ir tas pats masiivs: tas tika dariits lai samazinatu masiiva apjomu ( nav dubultais/triskarshais, vai nedod dies'5 un vairakkartiigs) Faila nosaukum iekljaujot eng/ ru / lv etc ttieciigi nepieciesamo ( piem. langu_eng.php ) attieciigi includo nepieciesmo valodu. Ja ir liels datu apjoms ( daudz lapas) tad 1. reali atlasa potenciali tos vardus kas buus lielk dalj lapu, un toos includo jau indexaa 2. visus kljudas/Ok. pazinjojumus atseviskji 3. parejam lapam incluudo peec lapu grupas ( parasti teiksim ir kadas lielakas sadaljas, Raksti/joki etc ...) Protams pastav iespeja kad kada masiva dalja nodublesies, bet nu arii 1500-2000 nav tik taraki lai nevaretu izsekot liidz. -- Lai noteiktu kur kas nav iztulkots ( ielikts vajadzigais mainigais) daros shadi , izveidoju 1 valodu, parejos tukshus failus, parsledzos uz valodu kurai vel nav izveidots masiivs, un atri vien var redzet ja kautkur , kas truukst. Glabajot atseviskja falaa katru valodu ir velviena pozitiva lieta --> var dood tulkot tekstus cilvekam kursh ir stipri attalu no programmesanas, bet labi parzin doto valodu , tik vieniigi jaiemaca rikoties ar primitiivu text redaktoru ( UTF-8 delj), un japaskadro ka MASIVU nevajag tuulkot ( tikai to kas ir aiz = zimes, --- Protams nesaku ka shis nu buutu labakais risinajums , bet tikai viens No... Quote Link to comment Share on other sites More sharing options...
Kaklz Posted March 11, 2010 Report Share Posted March 11, 2010 Datus glabā datubāzē, uzbūvē editoru, kas labo datubāzes datus + export skripts, kas saglabā datus atkarībā no moduļa(konteksta) failos ar var_export($module_texts, 1). Katrai valodai un katram modulim savs fails + pa virsu tam PHP klase, kam tu prasi tulkojumu no konkrētā moduļa. Ja modulis netiek izmantots, arī fails ar nodefinēto masīvu netiek iekļauts. Ja kādā valodā kāds teksts nav iztulkots, tad to mierīgi ar PHP līdzekļiem var pārķert. Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted March 11, 2010 Report Share Posted March 11, 2010 ... Par gettext - jāņem vērā, ka mainot tulkojumus, jāpārstartē Apache. Tas attiecīgi nozīmē, ka vajag atsevišķu serveri, jo šārēta hostinga gadījumā neviens netaisās restartēt Apache katru reizi, kad tiek uzlabots tulkojums (piemēram, 5x dienā). Var arī bez tā iztikt, ja izmanto kaut kādu šādu workaroundu - http://blog.ghost3k.net/articles/php/11/gettext-caching-in-php Vienīgi tad nedrīkst aizmirst patīrīt no vecajiem failiem, lai neveidotos pārāk liela miskaste. Quote Link to comment Share on other sites More sharing options...
404 Posted March 11, 2010 Report Share Posted March 11, 2010 (edited) Man arī šobrīd šī lieta ir aktuāla.Uzrakstīts ir stipri līdzīgi Grey_Wolf aprakstītajam variantam.Manuprāt ļoti ērts risinājums-valodas glabāt ne tikai katru savā 1 failā,bet atvēlēt viņām savu folderi(lv,eng,ru u.t.t),kuros glabāt vairākus txt failus ar frāzēm,kuras ir atbilstošas tekošajiem failiem.Tad tikai atliek no sesijas vai settingiem nolasīt valodas kodu,un izsaukt: if(file_exists(site_path.'/languages/'.$language.'/'.$template.'.php')) include 'languages/'.$language.'/'.$template.'.php'; Bet tas ko gribēju pie reizes uzjautāt,kā būtu labāk glabāt "lielos" sadaļu datus,kurus nebūtu prāta darbs stūķēt masīvos.Saitā jau katrai lappusei jau ir arī intro,content,un cits info,kas tiek lasīts no datubāzes.Kāds būtu optimālākais variants mysql pusē? * Taisīt katrai valodai savu tabulu ar valodu prefiksiem nosaukumā? * Glabāt tajās pašās,bet dublēt kolonnas: lv_content,eng_content u.t.t? * Katrai valodai vispār savu db? * Varbūt lielo kontentu arī pa folderiem vienkārši iemest vienā .txt failā un kā include? Kādi vēl varētu būt varianti? Realizējami būtu visi,bet negribētos uzrauties uz kaut ko neizdomātu,kas baigi varētu vēlāk iegriezt :) Edited March 11, 2010 by 404 Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 11, 2010 Report Share Posted March 11, 2010 kā būtu labāk glabāt "lielos" sadaļu datus,kurus nebūtu prāta darbs stūķēt masīvos.Saitā jau katrai lappusei jau ir arī intro,content,un cits info,kas tiek lasīts no datubāzes. Nee lielus text gbalus netmaksajas glabaat masiivaa -- parasti jau konkretam saitam valodas nenaak klaat ( ja arii nak tad tas buus Extra varjants) Es glabatu shaadi: id | ... | text_lv | text_ru | text_eng | ... Un pie izvilksanas : SELECT text_$valoda AS tekstc ... tas ir noraadiitu konkretoo lauku ko jatlasa.. piedevam vinjam iedodot nosaukumu, lai talak shamo var izmantot PHP -- Tas ir lieliem tekstiem & pasham saita contentam ... -- 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.