2009-08-25 18 views
0

Ich habe eine PO-Datei mit einem Inhalt wie:Verwenden von regulären Ausdrücken mit ‚msggrep‘

msgid "or" 
msgstr "or-translation" 

msgid "orand" 
msgstr "orand-translation" 

ich die Übersetzung eines bestimmten msgid erhalten muß. Mit dem Befehl "msggrep -K -e 'orand' template2.pot" bekomme ich die Übersetzung für 'orand', und das ist ok.

Aber wenn ich "msggrep -K -e 'oder' template2.pot" verwende, wenn beide Übersetzungen ('oder' und 'orand') zurückgibt. Der Befehl "msggrep -K -e '^ oder' template2.pot" funktioniert wie erwartet und gibt beide Übersetzungen zurück, aber "msgrep-K -e '^ oder $' template2.pot" scheitern einfach, weil nichts zurückgegeben wird. Es scheint so, als ob das '$' Zeichen msggrep Regular-Expression Parser bricht.

Ich habe versucht mit anderen msggrrep Flags (wie -F, -E ...) aber alle von ihnen liest Testmuster aus einer Datei, und es ist nicht akzeptabel für meine tatsächlichen Bedürfnisse. Ich benutze msggrep 0.14.6 (und ich kann nicht auf eine neuere Bibliothek aktualisieren).

Weiß jemand, wie ich die Übersetzung für 'orand' mit msggrrep bekommen kann?

Antwort

1

Sie können eine End-of-Wort anstelle Scheck verwenden:

msggrep -K -e 'or\b' template2.pot 

die dafür sorgt, eine Wortgrenze nach 'or' ist, so dass es nicht 'orand' übereinstimmen.

+0

Danke für Ihre Antwort. Es ist eine 'böse' Lösung (msgid wie '.or.' Würde auf '\ bor \ b' gefunden werden), aber es ist besser als nichts :) –

Verwandte Themen