diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-07-23 12:29:08 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-23 12:29:08 (GMT) |
commit | bd72fb19ef1a01fde067109288ecacc62121f0ae (patch) | |
tree | e0c96d7cf1c639b7dfaa50442291670889f36546 | |
parent | af95a1da465da82740541bf011a324fefaf53713 (diff) | |
download | cpython-bd72fb19ef1a01fde067109288ecacc62121f0ae.zip cpython-bd72fb19ef1a01fde067109288ecacc62121f0ae.tar.gz cpython-bd72fb19ef1a01fde067109288ecacc62121f0ae.tar.bz2 |
[3.12] bpo-18319: gettext() can retrieve a message even if a plural form exists (GH-19869) (#107108)
(cherry picked from commit 54632528eeba841e4a8cc95ecbd84c9aca8eef57)
Co-authored-by: Gilles Bassière <gbassiere@gmail.com>
-rw-r--r-- | Lib/gettext.py | 10 | ||||
-rw-r--r-- | Lib/test/test_gettext.py | 4 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2020-05-03-00-33-15.bpo-18319.faPTlx.rst | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/Lib/gettext.py b/Lib/gettext.py index 6c5ec4e..cc938e40 100644 --- a/Lib/gettext.py +++ b/Lib/gettext.py @@ -422,10 +422,12 @@ class GNUTranslations(NullTranslations): missing = object() tmsg = self._catalog.get(message, missing) if tmsg is missing: - if self._fallback: - return self._fallback.gettext(message) - return message - return tmsg + tmsg = self._catalog.get((message, self.plural(1)), missing) + if tmsg is not missing: + return tmsg + if self._fallback: + return self._fallback.gettext(message) + return message def ngettext(self, msgid1, msgid2, n): try: diff --git a/Lib/test/test_gettext.py b/Lib/test/test_gettext.py index 1608d1b..aa3520d 100644 --- a/Lib/test/test_gettext.py +++ b/Lib/test/test_gettext.py @@ -320,6 +320,8 @@ class PluralFormsTestCase(GettextBaseTest): eq(x, 'Hay %s fichero') x = gettext.ngettext('There is %s file', 'There are %s files', 2) eq(x, 'Hay %s ficheros') + x = gettext.gettext('There is %s file') + eq(x, 'Hay %s fichero') def test_plural_context_forms1(self): eq = self.assertEqual @@ -338,6 +340,8 @@ class PluralFormsTestCase(GettextBaseTest): eq(x, 'Hay %s fichero') x = t.ngettext('There is %s file', 'There are %s files', 2) eq(x, 'Hay %s ficheros') + x = t.gettext('There is %s file') + eq(x, 'Hay %s fichero') def test_plural_context_forms2(self): eq = self.assertEqual diff --git a/Misc/NEWS.d/next/Library/2020-05-03-00-33-15.bpo-18319.faPTlx.rst b/Misc/NEWS.d/next/Library/2020-05-03-00-33-15.bpo-18319.faPTlx.rst new file mode 100644 index 0000000..a1a4cf6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-05-03-00-33-15.bpo-18319.faPTlx.rst @@ -0,0 +1,2 @@ +Ensure `gettext(msg)` retrieve translations even if a plural form exists. In +other words: `gettext(msg) == ngettext(msg, '', 1)`. |