ugrás a tartalomhoz

Pszeudo-nyelv

N0r3i · 2008. Feb. 11. (H), 16.26
Sziasztok!

A nyelvi fordítást előkészítendő szeretném a forrásomból tömbbe kigyűjtött szövegeket egy pszeudo-nyelvre fordítani, aminek annyi a lényege, hogy minden karaktert véletlenszerű másik karakterre cserélek.

Ez megy is, csakhogy vannak kivételek, amiket nem kellene fordítani:
- HTML tag-ek
- %s
- %1$s, %2$s, stb.
- szóköz (opcionális, nem feltétlenül akarok az eredetitől eltérő hosszú szavakat)

Az egésznek csak annyi a jelentősége, hogy az így "lefordított" lap számomra pont annyira értelmetlen, mintha egy igazi nyelvre lenne fordítva. Ha valahol mégsem értelmetlen, akkor az kimaradt a fordításból.

Hogy állnátok neki? Most egy elég bonyolult cserélgetős módszerrel dolgozok, de nem az igazi...

Köszönöm a segítséget:
Norbi
 
1

Nem egészen értem...

vbence · 2008. Feb. 11. (H), 16.48
Ha jól gondolom, a kindulás HTML. A tagek nevét és attribútumait is érintetlenül hagyod. A lap szöveges tartalmát fordítanád, egy előre (randomban) feltöltött fordító tábla segítségével (karakter alapon). Vannak speciális RegEx-szel definiálható "szavak" (space-től space-ig), amiket nem szeretnél lefordítani.

Én úgy csinálnám, hogy először elkészíteném a fordító táblát. Majd a HTML-t XML-lé beolvasnám: DOMDocument->loadHTML(), majd végigmennék rajta (rekurzívan, vagy valami sax-szal), és a text node-okat szavakká alakítanám (explode), ellenőrizném, hogy nincsenek-e a tilott regex-ek listáján. Ha nem, akkor elvégezném a karakterekre az átalakítást.

Az eredményt vissa menteném HTML-ként. (Persze pár kisebb átalakítást lehet, hogy csinál a PHP DOM-ja rajta, de a struktúra nem igazán változik - mint amikor IE-vel elmented egy lap forrását. Nem 100%ra ugynaaz, mint az eredeti, de HTML-ként ugyanúgy néz ki).
2

Egyszerűbb

N0r3i · 2008. Feb. 11. (H), 16.54
Ennél egyszerűbb a helyzet, mint azt írtam, a szövegek (néha egész mondatok, néha csak szavak) ki vannak már gyűjtve egy tömbbe. Ezeket a szavakat, mondatokat kellene fordítani, amik maguk is tartalmazhatnak HTML tageket, az eredményt a tömbbe kell visszaírni.

Tulajdonképpen az explode-hoz hasonló dolog megoldaná a gondjaimat, de hogy robbantok általában tag-ek mentén?
3

preg_split?

vbence · 2008. Feb. 11. (H), 16.58
Mondjuk ezzel. Amúgy nem feltétlenül egyszerübb, mert az xml olvasó alapból megoldaná a tagek kérdését.
4

Köszönöm

N0r3i · 2008. Feb. 11. (H), 19.29
Köszönöm, azt hiszem a preg_split lesz a barátom PREG_SPLIT_DELIM_CAPTURE flag-gel. Így már egyszerűen tudom minden második eredménytömb-elemet fordítani, a közbülsőket meg csak visszarakni.

Még egyszer köszönöm a segítséget!

Norbi