]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-18319: gettext() can retrieve a message even if a plural form exists (#19869)
authorGilles Bassière <gbassiere@gmail.com>
Sun, 23 Jul 2023 09:59:19 +0000 (11:59 +0200)
committerGitHub <noreply@github.com>
Sun, 23 Jul 2023 09:59:19 +0000 (11:59 +0200)
Lib/gettext.py
Lib/test/test_gettext.py
Misc/NEWS.d/next/Library/2020-05-03-00-33-15.bpo-18319.faPTlx.rst [new file with mode: 0644]

index 6c5ec4e517f63728232e7d4ddefb5a7fb72fa4c7..cc938e40028c240ea0f459b3715a481b9a875ec6 100644 (file)
@@ -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:
index 1608d1b18e98fb6e64d815145da3b2a3b79f1c5a..aa3520d2c142e485066ad56d20c2ffaae4489771 100644 (file)
@@ -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 (file)
index 0000000..a1a4cf6
--- /dev/null
@@ -0,0 +1,2 @@
+Ensure `gettext(msg)` retrieve translations even if a plural form exists. In
+other words: `gettext(msg) == ngettext(msg, '', 1)`.