diff options
author | Aarni Koskela <akx@iki.fi> | 2022-01-28 17:44:42 +0200 |
---|---|---|
committer | Aarni Koskela <akx@iki.fi> | 2022-01-28 17:44:42 +0200 |
commit | 248fa358dd17f89f72a2cbc5bc29175dcc15be58 (patch) | |
tree | eb7e51a1a1de7de2f34907330e63992419538750 | |
parent | 7533914882b601475258ea0cdb0dfb3f056000be (diff) | |
download | babel-248fa358dd17f89f72a2cbc5bc29175dcc15be58.tar.gz |
Don't assume `_output_charset` is a thing (it's not on Python 3.11)
Fixes #819
-rw-r--r-- | babel/support.py | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/babel/support.py b/babel/support.py index 021c0b1..5b5f8b9 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) |