]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Plural-Forms: Fix missing trailing semicolon
authorfarhan5900 <farhan5900@gmail.com>
Mon, 28 Mar 2022 05:32:39 +0000 (11:02 +0530)
committerAarni Koskela <akx@iki.fi>
Fri, 8 Apr 2022 10:34:45 +0000 (13:34 +0300)
Adds missing semicolon in the code that generates the header that
is Catalog.plural_forms as well as in plural.to_gettext function.
Also modifies all the concerning test cases as well as test data files.

Closes https://github.com/python-babel/babel/issues/836

12 files changed:
babel/messages/catalog.py
babel/plural.py
tests/messages/data/project/i18n/de/LC_MESSAGES/messages.po
tests/messages/data/project/i18n/de_DE/LC_MESSAGES/bar.po
tests/messages/data/project/i18n/de_DE/LC_MESSAGES/foo.po
tests/messages/data/project/i18n/de_DE/LC_MESSAGES/messages.po
tests/messages/data/project/i18n/ru_RU/LC_MESSAGES/messages.po
tests/messages/test_catalog.py
tests/messages/test_checkers.py
tests/messages/test_frontend.py
tests/messages/test_pofile.py
tests/test_plural.py

index 342f7377bf2e16716a5e49c4f63c1c8eb6fdfa17..f9e377dc054b054f493c459cf63529167c56d724 100644 (file)
@@ -474,7 +474,7 @@ class Catalog(object):
     Last-Translator: John Doe <jd@example.com>
     Language: de_DE
     Language-Team: de_DE <de@example.com>
-    Plural-Forms: nplurals=2; plural=(n != 1)
+    Plural-Forms: nplurals=2; plural=(n != 1);
     MIME-Version: 1.0
     Content-Type: text/plain; charset=utf-8
     Content-Transfer-Encoding: 8bit
@@ -524,12 +524,12 @@ class Catalog(object):
         """Return the plural forms declaration for the locale.
 
         >>> Catalog(locale='en').plural_forms
-        'nplurals=2; plural=(n != 1)'
+        'nplurals=2; plural=(n != 1);'
         >>> Catalog(locale='pt_BR').plural_forms
-        'nplurals=2; plural=(n > 1)'
+        'nplurals=2; plural=(n > 1);'
 
         :type: `str`"""
-        return 'nplurals=%s; plural=%s' % (self.num_plurals, self.plural_expr)
+        return 'nplurals=%s; plural=%s;' % (self.num_plurals, self.plural_expr)
 
     def __contains__(self, id):
         """Return whether the catalog has a message with the specified ID."""
index 93a8d2b8f7043769ccf49aad1c457fcd87ee5131..241629985e7c21fbc905d647081b23cb2fd1bf47 100644 (file)
@@ -233,7 +233,7 @@ def to_gettext(rule):
     technically limited to integers and returns indices rather than tags.
 
     >>> to_gettext({'one': 'n is 1', 'two': 'n is 2'})
-    'nplurals=3; plural=((n == 1) ? 0 : (n == 2) ? 1 : 2)'
+    'nplurals=3; plural=((n == 1) ? 0 : (n == 2) ? 1 : 2);'
 
     :param rule: the rules as list or dict, or a `PluralRule` object
     :raise RuleError: if the expression is malformed
@@ -247,7 +247,7 @@ def to_gettext(rule):
     result = ['nplurals=%d; plural=(' % len(used_tags)]
     for tag, ast in rule.abstract:
         result.append('%s ? %d : ' % (_compile(ast), _get_index(tag)))
-    result.append('%d)' % _get_index(_fallback_tag))
+    result.append('%d);' % _get_index(_fallback_tag))
     return ''.join(result)
 
 
index c5c9748923acd7306daffffd403c3ad506ae564a..8fbefdb87162a279d1f2ee144179decea3b1ad03 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "PO-Revision-Date: 2007-07-30 22:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: de_DE <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index c5c9748923acd7306daffffd403c3ad506ae564a..8fbefdb87162a279d1f2ee144179decea3b1ad03 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "PO-Revision-Date: 2007-07-30 22:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: de_DE <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index c5c9748923acd7306daffffd403c3ad506ae564a..8fbefdb87162a279d1f2ee144179decea3b1ad03 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "PO-Revision-Date: 2007-07-30 22:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: de_DE <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index aa49563ff1b73142c957cea1d14f5f81b7388c72..2cd26186beaf54302700ed78ba7585ddfa0ff4eb 100644 (file)
@@ -13,7 +13,7 @@ msgstr ""
 "PO-Revision-Date: 2007-07-30 22:18+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: de_DE <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 05a9d3d1bc6b8ac8ac9242ae5b39f892150eaa10..7403a95ec4f21b7f207c3c9ef37dd2d1c32f2675 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: ru_RU <LL@li.org>\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 2d36809de84fc04622db319c658cf20b105b2117..830cabf1ba6cb25e702af3daaeb5d0e63268e1a2 100644 (file)
@@ -386,7 +386,7 @@ def test_catalog_mime_headers_set_locale():
         ('Last-Translator', 'John Doe <jd@example.com>'),
         ('Language', 'de_DE'),
         ('Language-Team', 'de_DE <de@example.com>'),
-        ('Plural-Forms', 'nplurals=2; plural=(n != 1)'),
+        ('Plural-Forms', 'nplurals=2; plural=(n != 1);'),
         ('MIME-Version', '1.0'),
         ('Content-Type', 'text/plain; charset=utf-8'),
         ('Content-Transfer-Encoding', '8bit'),
@@ -407,9 +407,9 @@ def test_catalog_plural_expr():
 
 def test_catalog_plural_forms():
     assert (catalog.Catalog(locale='en').plural_forms
-            == 'nplurals=2; plural=(n != 1)')
+            == 'nplurals=2; plural=(n != 1);')
     assert (catalog.Catalog(locale='pt_BR').plural_forms
-            == 'nplurals=2; plural=(n > 1)')
+            == 'nplurals=2; plural=(n > 1);')
 
 
 def test_catalog_setitem():
index 07286b17cdfc10c4e4c77573d0c2ce1eecc8a2df..b709d4b7e17aa8cc0f085fdf6737f189c9f8c945 100644 (file)
@@ -50,7 +50,7 @@ msgstr ""
 "PO-Revision-Date: %(date)s\\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
 "Language-Team: %(locale)s <LL@li.org>\n"
-"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s\\n"
+"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s;\\n"
 "MIME-Version: 1.0\\n"
 "Content-Type: text/plain; charset=utf-8\\n"
 "Content-Transfer-Encoding: 8bit\\n"
@@ -117,7 +117,7 @@ msgstr ""
 "PO-Revision-Date: %(date)s\\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
 "Language-Team: %(locale)s <LL@li.org>\\n"
-"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s\\n"
+"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s;\\n"
 "MIME-Version: 1.0\\n"
 "Content-Type: text/plain; charset=utf-8\\n"
 "Content-Transfer-Encoding: 8bit\\n"
@@ -168,7 +168,7 @@ msgstr ""
 "PO-Revision-Date: %(date)s\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: %(locale)s <LL@li.org>\n"
-"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s\n"
+"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -219,7 +219,7 @@ msgstr ""
 "PO-Revision-Date: %(date)s\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: %(locale)s <LL@li.org>\n"
-"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s\n"
+"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -271,7 +271,7 @@ msgstr ""
 "PO-Revision-Date: %(date)s\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: %(locale)s <LL@li.org>\n"
-"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s\n"
+"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -324,7 +324,7 @@ msgstr ""
 "PO-Revision-Date: %(date)s\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: %(locale)s <LL@li.org>\n"
-"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s\n"
+"Plural-Forms: nplurals=%(num_plurals)s; plural=%(plural_expr)s;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index ba78f502c5b56037fe3078f90d39df3f83e6c14c..f8a58dd21f563dc722c6a9f975c5b7cf082a72a6 100644 (file)
@@ -404,7 +404,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en_US\n"
 "Language-Team: en_US <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -456,7 +456,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en_US\n"
 "Language-Team: en_US <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -509,7 +509,7 @@ msgstr ""
 "Language: lv_LV\n"
 "Language-Team: lv_LV <LL@li.org>\n"
 "Plural-Forms: nplurals=3; plural=(n%%10==1 && n%%100!=11 ? 0 : n != 0 ? 1 :"
-" 2)\n"
+" 2);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -562,7 +562,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: ja_JP\n"
 "Language-Team: ja_JP <LL@li.org>\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -621,7 +621,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en_US\n"
 "Language-Team: en_US <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -681,7 +681,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en_US\n"
 "Language-Team: en_US <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -985,7 +985,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: en_US\n"
 "Language-Team: en_US <LL@li.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -1033,7 +1033,7 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language: ja_JP\n"
 "Language-Team: ja_JP <LL@li.org>\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -1081,7 +1081,7 @@ msgstr ""
 "Language: lv_LV\n"
 "Language-Team: lv_LV <LL@li.org>\n"
 "Plural-Forms: nplurals=3; plural=(n%%10==1 && n%%100!=11 ? 0 : n != 0 ? 1 :"
-" 2)\n"
+" 2);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index ff0295ad614021cf1fb381efef8b8348062e956b..b154c0909b601967281e6a9bbf359558a75fdaa1 100644 (file)
@@ -58,7 +58,7 @@ msgstr ""
 "PO-Revision-Date: 2007-09-27 21:42-0700\\n"
 "Last-Translator: John <cleese@bavaria.de>\\n"
 "Language-Team: German Lang <de@babel.org>\\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\\n"
 "MIME-Version: 1.0\\n"
 "Content-Type: text/plain; charset=iso-8859-1\\n"
 "Content-Transfer-Encoding: 8bit\\n"
@@ -127,7 +127,7 @@ msgstr ""
 "Last-Translator: John <cleese@bavaria.de>\n"
 "Language: de\n"
 "Language-Team: German Lang <de@babel.org>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=iso-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -392,7 +392,7 @@ msgstr[1] "Vohs [text]"''')
         buf = StringIO('''\
 msgid ""
 msgstr ""
-"Plural-Forms: nplurals=3; plural=(n < 2) ? n : 2\n"
+"Plural-Forms: nplurals=3; plural=(n < 2) ? n : 2;\n"
 
 msgid "foo"
 msgid_plural "foos"
@@ -412,7 +412,7 @@ msgstr[1] "Vohs [text]"
         buf = StringIO('''\
 msgid ""
 msgstr ""
-"Plural-Forms: nplurals=3; plural=(n < 2) ? n : 2\n"
+"Plural-Forms: nplurals=3; plural=(n < 2) ? n : 2;\n"
 
 msgid "foo"
 msgid_plural "foos"
index 5dbe311a126ce201ff110743f24528a70da64cbf..dd28dc1e680e0c8611443c8eec44025846f915cd 100644 (file)
@@ -84,7 +84,7 @@ def test_to_python():
 
 def test_to_gettext():
     assert (plural.to_gettext({'one': 'n is 1', 'two': 'n is 2'})
-            == 'nplurals=3; plural=((n == 1) ? 0 : (n == 2) ? 1 : 2)')
+            == 'nplurals=3; plural=((n == 1) ? 0 : (n == 2) ? 1 : 2);')
 
 
 def test_in_range_list():
@@ -120,7 +120,7 @@ def test_plural_within_rules():
         " ? 'few' : (n == 1) ? 'one' : 'other'; })")
     assert plural.to_gettext(p) == (
         'nplurals=3; plural=(((n == 2) || (n == 4) || (n >= 7 && n <= 9))'
-        ' ? 1 : (n == 1) ? 0 : 2)')
+        ' ? 1 : (n == 1) ? 0 : 2);')
     assert p(0) == 'other'
     assert p(1) == 'one'
     assert p(2) == 'few'