]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Don't assume `_output_charset` is a thing (it's not on Python 3.11) 835/head
authorAarni Koskela <akx@iki.fi>
Fri, 28 Jan 2022 15:44:42 +0000 (17:44 +0200)
committerAarni Koskela <akx@iki.fi>
Fri, 28 Jan 2022 15:44:42 +0000 (17:44 +0200)
Fixes #819

babel/support.py

index 021c0b11ac75c6bda777158035f373989d73bb62..5b5f8b92db688b32b154ad61faf6f3ea4f6e9ebe 100644 (file)
@@ -387,16 +387,9 @@ class NullTranslations(gettext.NullTranslations, object):
         import warnings
         warnings.warn('lpgettext() is deprecated, use pgettext() instead',
                       DeprecationWarning, 2)
-        ctxt_msg_id = self.CONTEXT_ENCODING % (context, message)
-        missing = object()
-        tmsg = self._catalog.get(ctxt_msg_id, missing)
-        if tmsg is missing:
-            if self._fallback:
-                return self._fallback.lpgettext(context, message)
-            return message
-        if self._output_charset:
-            return tmsg.encode(self._output_charset)
-        return tmsg.encode(locale.getpreferredencoding())
+        tmsg = self.pgettext(context, message)
+        encoding = getattr(self, "_output_charset", None) or locale.getpreferredencoding()
+        return tmsg.encode(encoding)
 
     def npgettext(self, context, singular, plural, num):
         """Do a plural-forms lookup of a message id.  `singular` is used as the
@@ -432,9 +425,8 @@ class NullTranslations(gettext.NullTranslations, object):
         ctxt_msg_id = self.CONTEXT_ENCODING % (context, singular)
         try:
             tmsg = self._catalog[(ctxt_msg_id, self.plural(num))]
-            if self._output_charset:
-                return tmsg.encode(self._output_charset)
-            return tmsg.encode(locale.getpreferredencoding())
+            encoding = getattr(self, "_output_charset", None) or locale.getpreferredencoding()
+            return tmsg.encode(encoding)
         except KeyError:
             if self._fallback:
                 return self._fallback.lnpgettext(context, singular, plural, num)