67 lines
2.6 KiB
Plaintext
67 lines
2.6 KiB
Plaintext
Bug: https://github.com/itstool/itstool/issues/25
|
|
Bug-Debian: https://bugs.debian.org/912099
|
|
Forwarded: https://github.com/itstool/itstool/issues/25
|
|
|
|
Bug: https://github.com/itstool/itstool/issues/36
|
|
PR: https://github.com/itstool/itstool/pull/47
|
|
|
|
Index: itstool.in
|
|
--- itstool.in.orig
|
|
+++ itstool.in
|
|
@@ -44,9 +44,22 @@ if PY3:
|
|
else:
|
|
return str(s)
|
|
ustr_type = str
|
|
+ def pr_str(s):
|
|
+ """Return a string that can be safely print()ed"""
|
|
+ # Since print works on both bytes and unicode, just return the argument
|
|
+ return s
|
|
else:
|
|
string_types = basestring,
|
|
ustr = ustr_type = unicode
|
|
+ def pr_str(s):
|
|
+ """Return a string that can be safely print()ed"""
|
|
+ if isinstance(s, str):
|
|
+ # Since print works on str, just return the argument
|
|
+ return s
|
|
+ else:
|
|
+ # print may not work on unicode if the output encoding cannot be
|
|
+ # detected, so just encode with UTF-8
|
|
+ return unicode.encode(s, 'utf-8')
|
|
|
|
NS_ITS = 'http://www.w3.org/2005/11/its'
|
|
NS_ITST = 'http://itstool.org/extensions/'
|
|
@@ -1077,9 +1090,9 @@ class Document (object):
|
|
if strict:
|
|
raise
|
|
else:
|
|
- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % (
|
|
+ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % (
|
|
(lang + ' ') if lang is not None else '',
|
|
- msgstr.encode('utf-8')))
|
|
+ msgstr)))
|
|
self._xml_err = ''
|
|
return node
|
|
def scan_node(node):
|
|
@@ -1096,6 +1109,8 @@ class Document (object):
|
|
child.replaceNode(newnode)
|
|
else:
|
|
repl = self.get_translated(ph_node, translations, strict=strict, lang=lang)
|
|
+ if repl == ph_node:
|
|
+ repl = repl.copyNode(1)
|
|
child.replaceNode(repl)
|
|
scan_node(child)
|
|
try:
|
|
@@ -1104,9 +1119,9 @@ class Document (object):
|
|
if strict:
|
|
raise
|
|
else:
|
|
- sys.stderr.write('Warning: Could not merge %stranslation for msgid:\n%s\n' % (
|
|
+ sys.stderr.write(pr_str('Warning: Could not merge %stranslation for msgid:\n%s\n' % (
|
|
(lang + ' ') if lang is not None else '',
|
|
- msgstr.encode('utf-8')))
|
|
+ msgstr)))
|
|
self._xml_err = ''
|
|
ctxt.doc().freeDoc()
|
|
return node
|