From 248fa358dd17f89f72a2cbc5bc29175dcc15be58 Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Fri, 28 Jan 2022 17:44:42 +0200 Subject: [PATCH] Don't assume `_output_charset` is a thing (it's not on Python 3.11) Fixes #819 --- babel/support.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/babel/support.py b/babel/support.py index 021c0b11..5b5f8b92 100644 --- a/babel/support.py +++ b/babel/support.py @@ -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) -- 2.47.2