[ Nemanja Avramović @ 22.05.2006. 22:47 ] @
Pozdrav ljudi, imam ovakav fajl koji služi za prevođenje aplikacija, a ja bih da pravim web-based prevođenje:

Code:
msgid "english text"
msgstr "srpski tekst"

msgid "english text 2"
"second row"
msgstr "srpski tekst 2"
"drugi red"


E sad, problemčić mi pravi to što može da ima koliko hoćeš stringova za prevesti i svaki može imati koliko hoćeš redova. Ja sam krenuo da radim ovo, i bilo je lako dok nisam skontao da svaki string može imati više redova. Pošto u početku samo importujem stringove, deo na srpskom mi ne treba, znači ja treba da izvučem sve od "msgid" do "msgstr" i da vratim to, ali kao jedan string (jedna promenljiva). Onda treba proći kroz sve stringove koji se prevode i vratiti sve vrednosti kao jedan array. Hmm... Neke ideje?

p.s. Imaću uskoro još neka parsiranja (a njih mrzim) tako da ću se u ovoj temi obratiti za pomoć
[ cartmanlee @ 23.05.2006. 14:56 ] @
Ne želim ti sad soliti pamet, ali zašto ne koristiš npr. getText za te multijezične opcije, i onda samo ispišeš vrijednost sa echo _("keyvalue")?
Ovako ti je to sve labavo. U jednom trenutku će raditi, ali ako nešto promijeniš, čitav sustav će pasti. A ovako možeš izbjeći sve te probleme.

Što se tiče parsiranja ovog fajla - malo ti je nezgodan format, možda bi bilo zgodnije da imaš nekakav limiter u tekstu kao | ili #, da ti stringovi budu u istom redu kao i msgid, pa onda s explodeom parsaš redak po redak.

Za ovaj fajl još možeš da od početka retka tražiš prvi prazni znak, sve do njega uzmeš kao id, i onda sve dok redak ne započne sa brojem uzimaš "" vrijednosti i stavljaš ih u neki string array. Ne znam što još da ti kažem, vidiš da sam se i sam pogubio
[ Nemanja Avramović @ 23.05.2006. 20:29 ] @
Ovakav file format je već ustaljen za gnu gettext tako da ne mogu da menjam format fajla. Ne radim ja višejezičnu aplikaciju u PHP-u nego web-based aplikaciju za prevođenje stringova. Nešto kao ovo, samo za svoje potrebe.

Pozdrav,
očekujem još predlogaaaaa
[ Nemanja Avramović @ 25.05.2006. 17:59 ] @
E ljudi, nešto sam razmišljao da učitam čitav fajl u string i onda sa preg_match_all da pokupim sve između msgid i msgstr. Posle ću, kad dobijem stringove u array-u, lako da odbacim višak i da sve to izgleda lepo. Naravno (kao i uvek), problem mi je RegEx. Pokušao sam nešto kao ^msgid(.*)msgstr$ (to mi je radilo u .htaccess fajlovima ) ali mi vraća prazan niz. Tako da, ako *neko* zna RegEx (a znam da vas ima na forumu ) - molim ga za pomoć.

Hvala
[ Br@nkoR @ 26.05.2006. 06:17 ] @
Code:

$string = 'msgid "english text"
msgstr "srpski tekst"

msgid "english text 2"
"second row"
msgstr "srpski tekst 2"
"drugi red"';
preg_match_all('/msgid(.*)msgstr/Us', $string, $bre);
echo '<pre>'.print_r($bre, true).'</pre>';
[ Nemanja Avramović @ 26.05.2006. 11:28 ] @
Hvala Branko, to je to!