1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- from subprocess import Popen, PIPE
- import glob
- OUT_CPP="src/qt/ecoinstrings.cpp"
- EMPTY=['""']
- def parse_po(text):
- messages = []
- msgid = []
- msgstr = []
- in_msgid = False
- in_msgstr = False
- for line in text.split('\n'):
- line = line.rstrip('\r')
- if line.startswith('msgid '):
- if in_msgstr:
- messages.append((msgid, msgstr))
- in_msgstr = False
- in_msgid = True
- msgid = [line[6:]]
- elif line.startswith('msgstr '):
- in_msgid = False
- in_msgstr = True
- msgstr = [line[7:]]
- elif line.startswith('"'):
- if in_msgid:
- msgid.append(line)
- if in_msgstr:
- msgstr.append(line)
- if in_msgstr:
- messages.append((msgid, msgstr))
- return messages
- files = glob.glob('src/*.cpp') + glob.glob('src/*.h')
- child = Popen(['xgettext','--output=-','-n','--keyword=_'] + files, stdout=PIPE)
- (out, err) = child.communicate()
- messages = parse_po(out)
- f = open(OUT_CPP, 'w')
- f.write("""#include <QtGlobal>
- // Automatically generated by extract_strings.py
- #ifdef __GNUC__
- #define UNUSED __attribute__((unused))
- #else
- #define UNUSED
- #endif
- """)
- f.write('static const char UNUSED *ecoin_strings[] = {')
- for (msgid, msgstr) in messages:
- if msgid != EMPTY:
- f.write('QT_TRANSLATE_NOOP("ecoin-core", %s),\n' % ('\n'.join(msgid)))
- f.write('};')
- f.close()
|