]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
fix babel.support for py3 strings/bytes
authorAlex Morega <alex@grep.ro>
Sun, 7 Jul 2013 09:47:48 +0000 (11:47 +0200)
committerAlex Morega <alex@grep.ro>
Sun, 7 Jul 2013 09:47:48 +0000 (11:47 +0200)
babel/_compat.py
babel/support.py
tests/test_support.py

index 0a26e8e9299dd8b2423a720901807845aa6bb804..147f2a58c52b437ac5eae63579e9932d8594dc37 100644 (file)
@@ -24,6 +24,8 @@ if not PY2:
     string_types = (str,)
     integer_types = (int, )
 
+    text_to_native = lambda s, enc: s
+
     iterkeys = lambda d: iter(d.keys())
     itervalues = lambda d: iter(d.values())
     iteritems = lambda d: iter(d.items())
@@ -42,6 +44,8 @@ else:
     string_types = (str, unicode)
     integer_types = (int, long)
 
+    text_to_native = lambda s, enc: s.encode(enc)
+
     iterkeys = lambda d: d.iterkeys()
     itervalues = lambda d: d.itervalues()
     iteritems = lambda d: d.iteritems()
index 24866ff5bac1333426b70fe2017c377d7cc2e9a1..8e4f40fd71816a9708e2b9f52c59febc42575f1e 100644 (file)
@@ -25,7 +25,7 @@ from babel.dates import format_date, format_datetime, format_time, \
                         format_timedelta
 from babel.numbers import format_number, format_decimal, format_currency, \
                           format_percent, format_scientific
-from babel._compat import PY2
+from babel._compat import PY2, text_type, text_to_native
 
 __all__ = ['Format', 'LazyProxy', 'NullTranslations', 'Translations']
 
@@ -375,9 +375,9 @@ class NullTranslations(gettext.NullTranslations, object):
             return message
         # Encode the Unicode tmsg back to an 8-bit string, if possible
         if self._output_charset:
-            return tmsg.encode(self._output_charset)
+            return text_to_native(tmsg, self._output_charset)
         elif self._charset:
-            return tmsg.encode(self._charset)
+            return text_to_native(tmsg, self._charset)
         return tmsg
 
     def lpgettext(self, context, message):
@@ -411,9 +411,9 @@ class NullTranslations(gettext.NullTranslations, object):
         try:
             tmsg = self._catalog[(ctxt_msg_id, self.plural(num))]
             if self._output_charset:
-                return tmsg.encode(self._output_charset)
+                return text_to_native(tmsg, self._output_charset)
             elif self._charset:
-                return tmsg.encode(self._charset)
+                return text_to_native(tmsg, self._charset)
             return tmsg
         except KeyError:
             if self._fallback:
@@ -455,7 +455,7 @@ class NullTranslations(gettext.NullTranslations, object):
         if tmsg is missing:
             if self._fallback:
                 return self._fallback.upgettext(context, message)
-            return unicode(message)
+            return text_type(message)
         return tmsg
 
     def unpgettext(self, context, singular, plural, num):
@@ -476,9 +476,9 @@ class NullTranslations(gettext.NullTranslations, object):
             if self._fallback:
                 return self._fallback.unpgettext(context, singular, plural, num)
             if num == 1:
-                tmsg = unicode(singular)
+                tmsg = text_type(singular)
             else:
-                tmsg = unicode(plural)
+                tmsg = text_type(plural)
         return tmsg
 
     def dpgettext(self, domain, context, message):
index d20e9df7288b11751e2dc09d84aac2cf7bb1ad9a..8c182fc7756ee89ab0b112a64eaf447f9b10637b 100644 (file)
@@ -22,7 +22,7 @@ from datetime import date, datetime, timedelta
 from babel import support
 from babel.messages import Catalog
 from babel.messages.mofile import write_mo
-from babel._compat import StringIO
+from babel._compat import BytesIO
 
 
 @pytest.mark.usefixtures("os_environ")
@@ -49,8 +49,8 @@ class TranslationsTestCase(unittest.TestCase):
             catalog1.add(ids, **kwargs)
         for ids, kwargs in messages2:
             catalog2.add(ids, **kwargs)
-        catalog1_fp = StringIO()
-        catalog2_fp = StringIO()
+        catalog1_fp = BytesIO()
+        catalog2_fp = BytesIO()
         write_mo(catalog1_fp, catalog1)
         catalog1_fp.seek(0)
         write_mo(catalog2_fp, catalog2)
@@ -187,7 +187,7 @@ class TranslationsTestCase(unittest.TestCase):
 
 class NullTranslationsTestCase(unittest.TestCase):
     def setUp(self):
-        fp = StringIO()
+        fp = BytesIO()
         write_mo(fp, Catalog(locale='de'))
         fp.seek(0)
         self.translations = support.Translations(fp=fp)