Függvény hívás helyének megállapítása
Nos, a következő problémám akadt. Van egy t() fv-em, ami "fordít". Van hozzá egy gyűjtő, ami azt csinálja, hogy ha olyan szöveget talál (kap paraméterként), aminek nincs fordítása és még forrásként sem szerepel az adatbázisban, akkor azt beleteszi. Csakhogy én most szeretném ezt kibővíteni azzal, hogy elmentem, honnan került meghívásra. Van vkinek bármilyen ötlete erre?
Mondok egy példát, hátha így nem érthető egészen:
Van egy func.t.php fájl, ebben van definiálva a t() fv.
Van még egy index.php. Ez hívja meg a cikk.php-t, az URL-t "értelmezve".
A cikk.php 20. sora pedig ez: t('Ez a cikk címe').
Ez még nem szerepel az adatbázisban. Ekkor a program elmenti a fordítandók közé. Szeretném, ha azt is mellé mentené, hogy ezt a szöveget a cikk.php 20. sorában találta. De a __FILE__ a func.t.php-t adja vissza, a $_SERVER['PHP_SELF'] pedig az index.php-t :-/
Persze csinálhatnám, hogy minden t hívásnál paraméterként átadom a helyet is, de az eléggé munkaigényes, közel 1000 fájlról beszélek.
■ Mondok egy példát, hátha így nem érthető egészen:
Van egy func.t.php fájl, ebben van definiálva a t() fv.
Van még egy index.php. Ez hívja meg a cikk.php-t, az URL-t "értelmezve".
A cikk.php 20. sora pedig ez: t('Ez a cikk címe').
Ez még nem szerepel az adatbázisban. Ekkor a program elmenti a fordítandók közé. Szeretném, ha azt is mellé mentené, hogy ezt a szöveget a cikk.php 20. sorában találta. De a __FILE__ a func.t.php-t adja vissza, a $_SERVER['PHP_SELF'] pedig az index.php-t :-/
Persze csinálhatnám, hogy minden t hívásnál paraméterként átadom a helyet is, de az eléggé munkaigényes, közel 1000 fájlról beszélek.
debug_backtrace
Köszi!
Fejlesztés
:?
3 helyen kerülhet hívásra a "fordítás" fv:
- php kódban
- Smarty sablonban
- FormML sablonban (saját fejlesztés)
Úgy csináltam, hogy van egy Translation osztály, és annak egy translate() metódusa. Ezt hívogatom más-más módszerekkel a különböző "környezetekben":
- php kódban: t('vmi') fv.
- Smarty sablonban: {t}vmi{/t}
- FormML: <t>vmi</t>
Nagyon leegyszerűsítve.
Automatikusan gyűjtöm az új "forrásokat", amik még nincsenek az adatbázisban. Amikor az illető emberke belép, az adminisztrációs oldalon ki tudja listázni, hogy mely forrásokhoz nincs még a saját nyelvén fordítás. Előfordulhat viszont, hogy egy már nem akuális forrás értelemszerűen benne marad az adatbázisban. A folyamatos "üzemnél" ez nem probléma, mert volt időszak, amikor annak volt létjogosultsága. De most jött a német, ami eddig nem volt, tehát egyszerre kell nagyon sokat lefordítania és nekiállt hisztizni, hogy minek kell olyat lefordítania, ami már úgyse kell. Ezért gondoltam, hogy elmentem azt is, melyik fájlban, melyik sorban található az adott forrás és vhogy, vmikor ellenőrzőm, megvan-e még, és ha nincs, akkor törlöm. De jobban belegondolva, annyira bonyolult lett és munkaigényes, hogy inkább mégse. Fordítsa le azt is, ami már nem aktuális, így is jóval kevesebb, mint 1%-ról lehet szó.
Egyébként jelenleg 2554 "szöveg blokk" van az adatbázisban, mint fordítandó.
Van jobb ötlet?
Chris :)
__FUNCTION__ ?
hívó
Üdv,
Felhő
Debug...
Jogos