diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2012-04-13 08:45:26 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2012-04-14 08:46:16 +0200 |
commit | 3fddc8effca227707773b5655c4cae4acb8396a6 (patch) | |
tree | 27e25d70af6de0e7a38a919b8865edee347ba4c8 /share/qt/extract_strings_qt.py | |
parent | c3c203ccd9ce9ee958cdf090b2cdf038554c038d (diff) |
Update translations for bitcoin core
- Move scripts/qt to share/qt, to clean up toplevel directories
- Update english ts file which is used to source messages for Transifex
- In extract_strings_qt.py use a glob *.h *.cpp, this is safe now that the Wx UI files are removed
Diffstat (limited to 'share/qt/extract_strings_qt.py')
-rwxr-xr-x | share/qt/extract_strings_qt.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/share/qt/extract_strings_qt.py b/share/qt/extract_strings_qt.py new file mode 100755 index 0000000000..03d3a1ba37 --- /dev/null +++ b/share/qt/extract_strings_qt.py @@ -0,0 +1,64 @@ +#!/usr/bin/python +''' +Extract _("...") strings for translation and convert to Qt4 stringdefs so that +they can be picked up by Qt linguist. +''' +from subprocess import Popen, PIPE +import glob + +OUT_CPP="src/qt/bitcoinstrings.cpp" +EMPTY=['""'] + +def parse_po(text): + """ + Parse 'po' format produced by xgettext. + Return a list of (msgid,msgstr) tuples. + """ + 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 + # message start + 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') + +# xgettext -n --keyword=_ $FILES +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>\n') +f.write('// Automatically generated by extract_strings.py\n') +f.write('static const char *bitcoin_strings[] = {') +for (msgid, msgstr) in messages: + if msgid != EMPTY: + f.write('QT_TRANSLATE_NOOP("bitcoin-core", %s),\n' % ('\n'.join(msgid))) +f.write('};') +f.close() |