summaryrefslogtreecommitdiff
path: root/textproc/itstool/files/patch-itstool.in
blob: ea6ed79c3781285fa7c7e88fe3a62f38c8a59b24 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Workaround https://github.com/itstool/itstool/issues/25
# Obtained from Fedora

--- itstool.in.orig	2018-08-21 15:27:24 UTC
+++ 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/'
@@ -1060,9 +1073,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):
@@ -1087,9 +1100,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