/** * informas la traduksistemon, ke ni nun eniris/eniros novan dosieron. * * @param urlstring $dosiero la (interna) nomo de la nova dosiero, * eble ankaŭ relativa al la antaŭa loko. * se ne donita, ni prenas la nomon de tiu dosiero, * kiu vokas tiun funkcion. * @see eliru_dosieron() */ function eniru_dosieron($dosiero="") { global $traduko_dosieroj; // echo "<!--\n eniru_dosieron(" . $dosiero . "); antauxe: " . var_export($traduko_dosieroj, true) . " -->"; if ($dosiero == "") { $dosiero = absoluta_dosiernomo_al_interna(eltrovu_vokantan_dosieron()); } $traduko_dosieroj[]= kunmetu_uri_relative($dosiero, end($traduko_dosieroj)); // echo "<!-- eniru_dosieron(...), poste: " . // var_export($traduko_dosieroj, true) . " -->"; }
/** * Analizas ĉenon. * * Eblaj formato de ĉenoj: * * - ĉeno (prenas ĝin el la lasta per * {@link eniru_dosieron} anoncita dosiero) * - #ĉeno (identa) * - dosiero#ĉeno (prenas la dosieron en la sama dosierujo) * - dosierujo/dosiero#ĉeno (iras al alia dosierujo, relative) * - /dosierujo/dosiero#ĉeno (duon-absoluta, uzas la saman * "protokolon") * - proto:/dosierujo/dosiero#ĉeno (indikas absolutan lokon) * * - ~#ĉeno malatentas la dosieron de {@link eniru_dosieron}, * sed provas mem eltrovi, kiu dosiero vokas nin. * * @param tradcheno $origina_cheno la ĉeno analizenda * @param string|array $baza_dosiero Se estas cxeno, uzenda en * ghisdatigo-moduso, tiam ni uzas tiun * (internan) nomon kiel bazon (por ĉiuj * formoj krom proto:/...) * Se estas array, ni uzas la lastan elementon * de gxi, krom en la '~#'-kazo, kiam ni prenas * la vokantan dosieron. * Se "" (aux ne donita), ni prenas la lastan * elementon de $GLOBALS['traduko_dosieroj'] * kiel bazo. * @return array <code> * array('dosiero' => tuta_dosiernomo, * 'cheno' => ĉeno), * </code> * kie tuta_dosiernomo enhavas proto:/dosierujo/dosiero. */ function analizu_chenon($origina_cheno, $baza_dosiero = "") { debug_echo("<!-- analizu_chenon('" . $origina_cheno . "', " . var_export($baza_dosiero, true) . ")-->"); // echo ("<!--(ac) origina_cheno: " . $origina_cheno . // ($baza_dosiero? ", baza_dosiero: " . $origina_cheno : "") . // " \n-->"); list($dosiero, $cxeno) = explode('#', $origina_cheno, 2); debug_echo("<!--(ac) dosiero: " . $dosiero . ", cxeno: " . $cxeno . "\n-->"); if ($dosiero == '~') { // formo "~#cheno" if (is_string($baza_dosiero)) { return array('dosiero' => $baza_dosiero, 'cheno' => $cxeno); } $abs_dosiero = eltrovu_vokantan_dosieron(); $dosiero = absoluta_dosiernomo_al_interna($abs_dosiero); debug_echo("<!--(ac) dosiero: " . $dosiero . ", cxeno: " . $cxeno . "\n-->"); return array('dosiero' => $dosiero, 'cheno' => $cxeno); } // if ~ if (is_array($baza_dosiero)) { $baza_dosiero = end($baza_dosiero); } if (!$baza_dosiero) { darf_nicht_sein(); $baza_dosiero = end($GLOBALS['traduko_dosieroj']) or $baza_dosiero = 'nedifinita:/nedifinita'; } debug_echo("<!--(ac) baza_dosiero: " . $baza_dosiero . "\n-->"); if ($cxeno == "") { // formo "ĉeno" sen #, do ĉeno estas en $dosiero return array('dosiero' => $baza_dosiero, 'cheno' => $dosiero); } return array('dosiero' => kunmetu_uri_relative($dosiero, $baza_dosiero), 'cheno' => $cxeno); }
/** * informas la traduksistemon, ke ni nun eniris/eniros novan dosieron. * * @param urlstring $dosiero la (interna) nomo de la nova dosiero, * eble ankaŭ relativa al la antaŭa loko. * se ne donita, ni prenas la nomon de tiu dosiero, * kiu vokas tiun funkcion. * @see eliru_dosieron() */ function eniru_dosieron($dosiero) { if ($dosiero == "") { $dosiero = absoluta_dosiernomo_al_interna(eltrovu_vokantan_dosieron()); } else { $dosiero = kunmetu_uri_relative($dosiero, $this->aktuala_dosiero()); } $this->dosierstoko[] = $dosiero; }