diff options
Diffstat (limited to 'po/update_pot.py')
-rwxr-xr-x | po/update_pot.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/po/update_pot.py b/po/update_pot.py new file mode 100755 index 00000000000..616443edc4a --- /dev/null +++ b/po/update_pot.py @@ -0,0 +1,61 @@ +#!/usr/bin/python + +# update the pot file according the POTFILES.in + +import os + +GETTEXT_XGETTEXT_EXECUTABLE="xgettext" +SOURCE_DIR=".." +DOMAIN="blender" + +cmd = "%s --files-from=%s/po/POTFILES.in --keyword=_ --keyword=N_ --directory=%s --output=%s/po/%s.pot --from-code=utf-8" % ( + GETTEXT_XGETTEXT_EXECUTABLE, SOURCE_DIR, SOURCE_DIR, SOURCE_DIR, DOMAIN) + +os.system( cmd ) + +def stripeol(s): + if line.endswith("\n"): + s = s[:-1] + + if line.endswith("\r"): + s = s[:-1] + + return s + +pot_messages = {} +reading_message = False +message = "" +with open("blender.pot", 'r') as handle: + while True: + line = handle.readline() + + if not line: + break + + line = stripeol(line) + if line.startswith("msgid"): + reading_message = True + message = line[7:-1] + elif line.startswith("msgstr"): + reading_message = False + pot_messages[message] = True + elif reading_message: + message += line[1:-1] + +# add messages collected automatically from RNA +with open("blender.pot", "a") as pot_handle: + with open("messages.txt", 'r') as handle: + while True: + line = handle.readline() + + if not line: + break + + line = stripeol(line) + line = line.replace("\\", "\\\\") + line = line.replace("\"", "\\\"") + + if not pot_messages.get(line): + pot_handle.write("\n#: Automatically collected from RNA\n") + pot_handle.write("msgid \"%s\"\n" % (line)) + pot_handle.write("msgstr \"\"\n") |