Jump to content
php.lv forumi

Masīvā / mainīgā mantošana klasē


ray

Recommended Posts

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 by ray
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by ray
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

...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. :)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...