i18n: posplit writes a warning for translators before rst directives
authorSimon Heimberg <simohe@besonet.ch>
Mon, 03 Feb 2014 21:31:35 +0100
changeset 20359 ff6ab0b2ebf7
parent 20358 4276c906d90e
child 20360 1267c1bd01f8
i18n: posplit writes a warning for translators before rst directives rst directives like this one have been translated: .. note:: To help the translator include a comment before such messages. An entry containing a rst directive now looks like this: #. do not translate: .. note:: #: path/to/file:75 msgid = ".. note:: to think about" msgstr = ...
i18n/posplit
--- a/i18n/posplit	Sun Nov 17 20:16:14 2013 +0100
+++ b/i18n/posplit	Mon Feb 03 21:31:35 2014 +0100
@@ -5,6 +5,7 @@
 # license: MIT/X11/Expat
 #
 
+import re
 import sys
 import polib
 
@@ -30,6 +31,7 @@
     cache = {}
     entries = po[:]
     po[:] = []
+    findd = re.compile(r' *\.\. (\w+)::') # for finding directives
     for entry in entries:
         msgids = entry.msgid.split(u'\n\n')
         if entry.msgstr:
@@ -51,6 +53,14 @@
         for msgid, msgstr in zip(msgids, msgstrs):
             if msgid:
                 newentry = mkentry(entry, delta, msgid, msgstr)
+                mdirective = findd.match(msgid)
+                if mdirective:
+                    directive = mdirective.group(1)
+                    comment = 'do not translate: .. %s::' % directive
+                    if not newentry.comment:
+                        newentry.comment = comment
+                    elif comment not in newentry.comment:
+                        newentry.comment += '\n' + comment
                 addentry(po, newentry, cache)
             delta += 2 + msgid.count('\n')
     po.save()