From: Dan Scott Date: Thu, 16 Feb 2012 17:49:54 +0000 (-0500) Subject: Escape content when generating DTD for fieldmapper X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c428b52fd33a231aac0959279c07a1188576bfd3;p=contrib%2FConifer.git Escape content when generating DTD for fieldmapper Noticed by Thomas Berezansky, if a translation in a PO or POT file contains an unescaped left angle bracket, a DTD will be generated that contains the unescaped left angle bracket - and that isn't valid. Signed-off-by: Dan Scott Signed-off-by: Thomas Berezansky --- diff --git a/build/i18n/scripts/fieldmapper.py b/build/i18n/scripts/fieldmapper.py index 385fce5182..51e5ba560f 100755 --- a/build/i18n/scripts/fieldmapper.py +++ b/build/i18n/scripts/fieldmapper.py @@ -24,6 +24,7 @@ import polib import sys import xml.sax import xml.sax.handler +import xml.sax.saxutils class IDL(basel10n.BaseL10N): """ @@ -64,14 +65,14 @@ class IDL(basel10n.BaseL10N): """ Creates an entity definition file based on a translated PO file. """ - entity = '' + entity = '' for entry in self.pot: for name in entry.occurrences: + entdef = xml.sax.saxutils.quoteattr(entry.msgstr) if entry.msgstr == '': # No translation available; use the en-US definition - self.definitions.append(entity % (name[0], entry.msgid)) - else: - self.definitions.append(entity % (name[0], entry.msgstr)) + entdef = xml.sax.saxutils.quoteattr(entry.msgid) + self.definitions.append(entity % (name[0], entdef)) class IDLHandler(xml.sax.handler.ContentHandler): """ diff --git a/build/i18n/tests/data/testidl.ent b/build/i18n/tests/data/testidl.ent index d1cfb57acd..effd5c5316 100644 --- a/build/i18n/tests/data/testidl.ent +++ b/build/i18n/tests/data/testidl.ent @@ -11,7 +11,7 @@ - + @@ -37,6 +37,6 @@ - + diff --git a/build/i18n/tests/data/testidl.po b/build/i18n/tests/data/testidl.po index 744cff41f6..ec4605bfa1 100644 --- a/build/i18n/tests/data/testidl.po +++ b/build/i18n/tests/data/testidl.po @@ -65,7 +65,7 @@ msgstr "neque dolor a nulla" #: field.auoi.id.label:25 msgid "Opt-in ID" -msgstr "Phasellus aliquam vulputate justo" +msgstr "Phasellus \" aliquam vulputate justo" #: field.rodcirc.payment_total.label:86 msgid "Payment Totals" @@ -165,7 +165,7 @@ msgstr "ut ullamcorper faucibus" #: field.rodcirc.renewal_remaining.label:74 msgid "Remaining Renewals" -msgstr "diam felis" +msgstr "diam felis<" #: field.aws.owning_lib.label:46 msgid "Owning Library"