Hack to work around occurrence IDs containing colons (which confuse upstream polib)
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 4 Dec 2008 18:13:54 +0000 (18:13 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 4 Dec 2008 18:13:54 +0000 (18:13 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@11404 dcc99617-32d9-48b4-a31d-7c20da2025e4

build/i18n/scripts/db-seed-i18n.py

index 9aed152..865700c 100755 (executable)
@@ -74,11 +74,16 @@ class SQL(basel10n.BaseL10N):
                     fq_field = "%s.%s" % (fi18n.group('class'), fi18n.group('property'))
                     # Unescape escaped SQL single-quotes for translators' sanity
                     msgid = re.compile(r'\'\'').sub("'", fi18n.group('string'))
+
+                    # Hmm, sometimes people use ":" in text identifiers and
+                    # polib doesn't seem to like that; urlencode the colon
+                    occurid = re.compile(r':').sub("%3A", fi18n.group('id'))
+
                     if (msgid in serts):
-                        serts[msgid].occurrences.append((fq_field, fi18n.group('id')))
+                        serts[msgid].occurrences.append((fq_field, occurid))
                     else:
                         poe = polib.POEntry()
-                        poe.occurrences = [(fq_field, fi18n.group('id'))]
+                        poe.occurrences = [(fq_field, occurid)]
                         poe.msgid = msgid
                         serts[msgid] = poe
             except:
@@ -99,10 +104,14 @@ class SQL(basel10n.BaseL10N):
             for fq_field in entry.occurrences:
                 # Escape SQL single-quotes to avoid b0rkage
                 msgstr = re.compile(r'\'').sub("''", entry.msgstr)
+
+                # And unescape any colons in the occurence ID
+                occurid = re.compile(r'%3A').sub(':', fq_field[1])
+
                 if msgstr == '':
                     # Don't generate a stmt for an untranslated string
                     break
-                self.sql.append(insert % (fq_field[0], fq_field[1], locale, msgstr))
+                self.sql.append(insert % (fq_field[0], occurid, locale, msgstr))
 
 def main():
     """