/** * Traktas <variablonomo> el la gramatiko cxe * transformu_tekston(). */ function &teksttransformo_donu_datumon_rek($variablonomo, &$datumoj) { if ($variablonomo == "") { return $datumoj; } list($komenco, $resto) = explode('.', $variablonomo, 2); if (is_array($datumoj)) { return teksttransformo_donu_datumon_rek($resto, $datumoj[$komenco]); } else { if (is_object($datumoj)) { if (isset($datumoj->{$komenco})) { return teksttransformo_donu_datumon_rek($resto, $datumoj->{$komenco}); } if ($komenco == 'peto') { $peto =& $datumoj->sercxu_invitpeton(); return teksttransformo_donu_datumon_rek($resto, $peto); } if (isset($datumoj->datoj[$komenco])) { return teksttransformo_donu_datumon_rek($resto, $datumoj->datoj[$komenco]); } if ($resto == "" and substr($komenco, -1) == '#') { // tradukenda $tradukilo =& kreuTradukilon(); return $datumoj->tradukita($komenco, $tradukilo->aktuala_lingvo()); } return null; } else { return $datumoj; } } // teorie ni ne devus veni cxi tien ... if ($resto and is_array($datumoj[$komenco])) { return teksttransformo_donu_datumon_rek($resto, $datumoj[$komenco]); } else { return $datumoj[$komenco]; } }
function landonomo_en_lingvo($lingvo = "") { if ($lingvo == "") { $trad = kreuTradukilon(); $lingvo = $trad->aktuala_lingvo(); } return traduku_datumbazeron("landoj", "nomo", $this->datoj['lando'], $lingvo); }
/** * informas la traduksistemon, ke ni ne plu volas tradukojn * al la lasta lingvo, do resxaltas al antauxa lingvo. */ function eliru_lingvon() { $ilo =& kreuTradukilon(); $ilo->eliru_lingvon(); }
/** * donas tradukitan version de iu kampo de tiu ĉi objekto. * * @param string $kamponomo * @param string $lingvo la ISO-kodo de la lingvo. * * @return eostring la traduko (se ĝi mankas, la originala * teksto kun indiko, ke la traduko mankas). */ function tradukita($kamponomo, $lingvo = '') { if (!$lingvo) { $tradukilo =& kreuTradukilon(); $lingvo = $tradukilo->aktuala_lingvo(); } $nia_traduko =& $this->tradukoj[$lingvo][$kamponomo]; // ni jam antaŭe serĉis kaj trovis (aŭ ne trovis) tiun // tradukon if (!isset($nia_traduko)) { // TODO: elpensu alian manieron eltrovi, ĉu temas pri flag-kampo. if (substr($kamponomo, -1) == '#') { // flag-kampo. $kamponomo = substr($kamponomo, 0, -1); $cxenoID = "flag:" . $this->datoj[$kamponomo]; $nia_traduko = traduku_datumbazeron($this->tabelnomo, $kamponomo, $cxenoID, $lingvo); if (!isset($nia_traduko)) { $nia_traduko = traduku_datumbazeron($this->tabelnomo, $kamponomo, $cxenoID, 'eo'); } if (!isset($nia_traduko)) { $nia_traduko = $this->datoj[$kamponomo]; } } else { $nia_traduko = traduku_datumbazeron($this->tabelnomo, $kamponomo, $this->datoj['ID'], $lingvo); if (!$nia_traduko) { $nia_traduko = $this->datoj[$kamponomo]; $GLOBALS['bezonis-eo-tekston'] = true; if (marku_traduko_eo_anstatauxojn) { $nia_traduko .= "¹"; } } } /* $nia_traduko = "(traduko mankas: [" . $lingvo . "](" . $this->datoj[$kamponomo] . "))"; */ debug_echo("<!-- " . $this->tabelnomo . "[" . $this->datoj['ID'] . "]->tradukita(" . $kamponomo . ", " . $lingvo . ") ==> '" . $nia_traduko . "' -->"); } return $nia_traduko; }