jurchiks Posted July 4, 2013 Report Posted July 4, 2013 (edited) Filozofiskas dabas jautājums. @Kavacky - kur kādas problēmas? Edited July 4, 2013 by jurchiks Quote
codez Posted July 4, 2013 Report Posted July 4, 2013 Ja nav templeiti, tad PHP visdrīzāk, es darītu tā: Būtu tulkošanas objekts, kurš tulko, piem., $t = new Translator($lang); echo $t('login'); $t() ņemtu skatītos, ka atbilstošai $lang un 'login' kombinācijai ir tulkojums APC kešā, ja nav, ielādē no db un iemet kešā. $t objekts būtu pieejam vai nu konteksta objetkā, vai globāls singletons, atkarībā no kopējās aplikācijas arhitektūras. Quote
Kavacky Posted July 4, 2013 Report Posted July 4, 2013 Filozofiskas dabas jautājums. @Kavacky - kur kādas problēmas? Nu te tulkošana, piemēram. Quote
jurchiks Posted July 4, 2013 Report Posted July 4, 2013 (edited) Kāpēc tulkošana ir problēma? @codez - skaidrs, tātad tavs risinājums ir APC. It kā kaut kas tāds man uz servera ir uzlikts, jāskatās. Vienīgais, vai ir vērts, ja man visi tulkojumi patreiz sver tikai 12kb... Edited July 4, 2013 by jurchiks Quote
Kavacky Posted July 4, 2013 Report Posted July 4, 2013 Es taču nezinu, kāpēc te jau otrā lapa ar atbildēm ir sarakstīta par tulkošanas problēmu... Quote
Mr.Key Posted July 8, 2013 Report Posted July 8, 2013 Interesants temats, paldies par padalīšanos. PHP laikā darīju tā, ka katru templeitu prekompilēju katrai valodai ar jau no db paņemtiem tulkojumiem. Respektīvi, ja ir index.tpl.php templeits, tad, to prekopilēju index.en.tpl.php, index.lv.tpl.php, utt. Ja izmainu templeitu, tulkotie templeiti tiek prekompilēti, ja izmainu tulkojumus db, tad jāpārkompilē visi templeiti. Parkompilēšana protams notika uz pirmo requestu uz šo templeitu. Vai veici benchmarkus, kāds bija ieguvums? Quote
codez Posted July 8, 2013 Report Posted July 8, 2013 Vai veici benchmarkus, kāds bija ieguvums? Benchmark-us neveicu, bet galvenā mana vēlme bija, lai tulkojumi glabātos db. Un tas nozīmē, ka tulkojumi ir jākešo, jo pieprasīt katru reizi tos no db būtu pārāk neefektīvi. Principā ir divi kaut cik derīgi varianti: 1)glabāt tulkojumu operatīvajā atmiņā, piemēram, APC. 2)tulkot visu templeitu. Tā kā 1. variants ietver visas tās pašas darbības, kuras 2. un vēl papildus, tad 2. izvēlējos kā efektīvāko. Quote
F3llony Posted July 8, 2013 Report Posted July 8, 2013 1. Kā tu atseko, kādi tulkojumi ir izmantoti kados templeitos? 2. Cik miljonus gadu aizņem viss tas error-proof pārbaudes kods, erm, vai viss ir up to date? 3. Kāpēc tu pie katra requesta pieprasi atjaunošanas laiku tulkojumiem db? Kur un kā tu nodrošini šo atjaunošanas laiku un tā ieguvi? 4. Kas notiks, ja APC nebūs stat? Erm, mana implementācija: tulkojumi db, pie izmaiņām tiek ielādēti kešā - atkarībā no kastes: failu sistēma, memcache, memory tabula, apc user store. Templeits pie tulkojuma maiņām netiek aiztikts, jo, imho tas ir lieki. Ielādēti tiek tikai tie tulkojumi, kas ir konkrētajā aplikācijas skoupā vai tiek atsevišķi pieprasīti - eg. nav milzīgs masīvs ar 10k teksta biksītēm. Translācija notiek caur statisku metodi kura pieņem tulkojuma atslēgu, skoupu un kontekstu, saņem tulkojumu, ja eksistē, ja neeksistē paņem defaultu, pēc tam pārbauda, vai tekstā ir ievietoti kādi mainīgie, kuri būtu aizstājami, ja ir, tie tiek aizstāti un tulkotais teksts atgriezts. Tulkošanas metode tiek kompilēta no templeita tega templeita kešā. Closures un anonīmās funkcijas tulkojuma tekstā ir very welcome. Sintakse šādi {% translate "hello_user" "Hello, %user%, how is your day? You have %array.has.dot.notation% something." %} Puslīdz tā. Ja neko nepiemirsu. Quote
codez Posted July 8, 2013 Report Posted July 8, 2013 1. Kā tu atseko, kādi tulkojumi ir izmantoti kados templeitos?Pie templeita kompilācijas, tiek veikti attiecīgo tulkojumu ieraksti db.2. Cik miljonus gadu aizņem viss tas error-proof pārbaudes kods, erm, vai viss ir up to date?Ir komanda, pārkompilēt visus templeitus.3. Kāpēc tu pie katra requesta pieprasi atjaunošanas laiku tulkojumiem db? Kur un kā tu nodrošini šo atjaunošanas laiku un tā ieguvi?Ir tulkojumu CMS, kurā var tulkot, pie tam ar lietotāju privilēģijām, gan tulkot konkrētu valodu. Kad tulkotājs iztulko, admins piespiež komandu - pārkompilēt templeitus. Bet tieši šī pati problēma pastāv kešojot katru tulkojumu atsevišķi. 4. Kas notiks, ja APC nebūs stat?A, kas notiks, ja admins izraus servera vadu? Un būs tas pats, kas tavā variantā, kurā arī templeita fails ir jānolasa no diska. Quote
F3llony Posted July 9, 2013 Report Posted July 9, 2013 Vispār jau APC ar stat-off ir normāls produkcijas iestatījums. ;) E.g katru reizi, kad kāds juzers nomaina kādu simbolu tulkojumos, tad adminam manuāli jaatjauno tulkojumi? Thats kinda sad. Quote
marrtins Posted July 9, 2013 Report Posted July 9, 2013 Ja jau piep*ies pie produkcijas, tad arī produkcijā tulkojumi nebūtu jāmaina :D Quote
F3llony Posted July 9, 2013 Report Posted July 9, 2013 Ja jau piep*ies pie produkcijas, tad arī produkcijā tulkojumi nebūtu jāmaina :D Mh, tulkojumu maiņa ar web ui pamatā paredzēta lai end jūzers varētu kaut ko pamainīt pēc savām velmēm neraustot supportu. Tik pat labi jau var arī vispār nekam tulkojumus neturēt. Arī lapām kas ir tikai latviski lieku tulkojumu moduli, lai pilsoņi paši var tekstus uz saviem pamainīt. Quote
Kavacky Posted July 10, 2013 Report Posted July 10, 2013 Pieeja "end jūzers kaut ko var pamainīt" ir garām saknē. Kaut kāds sovjetu atavisms. Quote
rpr Posted July 10, 2013 Report Posted July 10, 2013 Un kā tu to pamato klientam, ka viņš grib palabot? Quote
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.