ray Posted November 3, 2011 Report Share Posted November 3, 2011 (edited) Tātad man ir valodu masīvs $translate, kurā glabājas tulkojumi: $translate['one'] = 'viens'; $translate['name'] = 'Vārds'; $translate['tree'] = 'koks'; utt. No šī masīva klases metodē ir nepieciešams izgūt tulkojumu. class Klase { function metode() { return 'Jums tiek attēlots' . $translate['tree']; } } Kā to būtu vispareizāk izdarīt? "global $translate;" laikam nebūs vislabākais variants, kkā arī nepatīk tas variants, ka katrai klasei ir jāpadod konstruktorā $translate vērtības. Ir alternatīvas ko varētu ieteikt? Edited November 3, 2011 by ray Quote Link to comment Share on other sites More sharing options...
briedis Posted November 3, 2011 Report Share Posted November 3, 2011 Nemokies un izmanto gettext, nenožēlosi :) http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/ Quote Link to comment Share on other sites More sharing options...
Kemito Posted November 3, 2011 Report Share Posted November 3, 2011 varbūt inklūdo pašu failu iekšā klasē. Globāļus īsti prātīgi nebūtu likt. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted November 3, 2011 Report Share Posted November 3, 2011 Kas ir 'masīva klase'? Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted November 4, 2011 Report Share Posted November 4, 2011 varbūt inklūdo pašu failu iekšā klasē. Globāļus īsti prātīgi nebūtu likt. Tieši includot īsti labi nebūtu, jo ja tika minēts, ka tiek izmantotas vairāks klases, un gandrīz katrā shamais jaizmanto, tad globals OBJEKTS iespējams ka būtu piemērots. Protams, jāredz pats kods/struktūra P.S. šādās situācijās var sanākt, ka tas includs tiks izmantots N-tas reizes Quote Link to comment Share on other sites More sharing options...
ray Posted November 4, 2011 Author Report Share Posted November 4, 2011 (edited) Jā, būs vairākas klases, kurās būs nepieciešams šis tulkojums, tāpēc include tiktu izmantots daudz reizes. Neiet pie sirds arī šis variants: class Klase { protected $translate; public function __construct($translate) { $this->translate = $translate; } function metode() { return 'Jums tiek attēlots' . $this->translate->tree; } } būs jāapskatās, kas tas gettext ir, jo līdz šim uz to nebiju skatījies. p.s. nav 'masīva klases' -> "No šī masīva [maza pauze lasot] klases metodē...". Neesmu īpaši spēcīgs lingvistikā, bet man liekas, ka tur komats nebija jāliek. Edited November 4, 2011 by ray Quote Link to comment Share on other sites More sharing options...
Lauris Posted November 4, 2011 Report Share Posted November 4, 2011 Par include_once, statiskajiem propertijiem/metodēm jau neviens nav dzirdējis, ne ? :) Quote Link to comment Share on other sites More sharing options...
briedis Posted November 4, 2011 Report Share Posted November 4, 2011 (edited) Pa fikso sacepu savu vīziju (neesmu testējis, bet varbūt strādās :D ): http://paste.php.lv/...c7d38b?lang=php Var uztaisīt arī aliasu tulkošanai function __($phrase, $lang = null){ return Translate::__($phrase, $lang); } Edited November 4, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted November 4, 2011 Report Share Posted November 4, 2011 briedis: viņam jau nevajadzēja lang. klasi, bet ideju kā izmantot masīvu vairākās pilnīgi dažādās klasēs .. raj: Vispār jau atbilde ir - tāpat kā izmanto DB klasi / objektu ( ja tādu izmanto) , tu taču katru reizi neveido jaunu DB objektu ? Quote Link to comment Share on other sites More sharing options...
briedis Posted November 4, 2011 Report Share Posted November 4, 2011 Nu labi, kā jau minēja Lauris, kā arī, līdzīgi kā manā piemērā - forši var izmantot klasi ar statisku mainīgo. Quote Link to comment Share on other sites More sharing options...
Maris-S Posted November 4, 2011 Report Share Posted November 4, 2011 Briedis, gettext izmantošanai ir daži trūkumi, piemēram valodu failu saturs tiek sakešots, izlabojot jāpārstartē apache, vai jāveido cita veida metodes, kaut vai jaunos failus pārsaucot. Ir arī neērti ar vārdiem, kas vienā valodā ir viens vārds, bet citā valodā var būt arī dažādi, piemēram angļu name uz latviešu valodu var būt iztulkots kā "vārds" un kā "nosaukums". Iespējams ka tagad ir kaut kas mainījies, neesmu labu laiku izmēģinājis. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted November 4, 2011 Report Share Posted November 4, 2011 ...gettext izmantošanai ir daži trūkumi, piemēram valodu failu saturs tiek sakešots, izlabojot jāpārstartē apache... Tas nav trūkums. Tas ir darīts ātruma nolūkos. :) Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted November 4, 2011 Report Share Posted November 4, 2011 gettext jau nav nekāda sakara ar to kā vārds citās valodās tulkojās. Tikpat labi ar masīviem arī name neiztulkosi divos dažādos veidos, jālieto kaut kādi key`i, bet gettext jau ari neaizliedz key`us lietot. Quote Link to comment Share on other sites More sharing options...
Maris-S Posted November 4, 2011 Report Share Posted November 4, 2011 Nu, ja var pārstartēt apache, tad patiešām nekāda trūkuma nav šajā ziņā. Jā, vienādos tulkojumus var atrisināt ar dažādu key vērtību lietošanu, bet šajā gadījumā pazūd viss gettext lietošanas skaistums. Taču tas ir mans viedoklis. Ātrdarbībā patiešām ir laba viņam. Quote Link to comment Share on other sites More sharing options...
briedis Posted November 4, 2011 Report Share Posted November 4, 2011 Briedis, gettext izmantošanai ir daži trūkumi, piemēram valodu failu saturs tiek sakešots, izlabojot jāpārstartē apache, vai jāveido cita veida metodes, kaut vai jaunos failus pārsaucot. Ir arī neērti ar vārdiem, kas vienā valodā ir viens vārds, bet citā valodā var būt arī dažādi, piemēram angļu name uz latviešu valodu var būt iztulkots kā "vārds" un kā "nosaukums". Iespējams ka tagad ir kaut kas mainījies, neesmu labu laiku izmēģinājis. Ziniet ko, izmantoju gettext, un ne reizi adminam neesmu prasījis pārstartēt apachi, kaut kā tie tulkojumi paši visai ātri stājas spēkā. Kā to izskaidrot? Un galu galā, cik tad bieži ir jātulko tā lapa? Parasti to arī dara kāds tulkotājs. Piemēram, es nosūtu PO failiņu tulkotājai un saņemu atpkaāl to pašu failu jau iztulkotu - ļoti ērti! (izmantojot POEdit progu) 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.