From: Tomas R. Date: Fri, 7 Mar 2025 14:53:51 +0000 (+0100) Subject: Check all plurals in python format checker (#1188) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2b93a4a2b8fcc51e530c28a94b55485ad0c0a50e;p=thirdparty%2Fbabel.git Check all plurals in python format checker (#1188) --- diff --git a/babel/messages/checkers.py b/babel/messages/checkers.py index c2490f62..072a48a9 100644 --- a/babel/messages/checkers.py +++ b/babel/messages/checkers.py @@ -54,9 +54,12 @@ def python_format(catalog: Catalog | None, message: Message) -> None: if not isinstance(msgstrs, (list, tuple)): msgstrs = (msgstrs,) - for msgid, msgstr in zip(msgids, msgstrs): - if msgstr: - _validate_format(msgid, msgstr) + if msgstrs[0]: + _validate_format(msgids[0], msgstrs[0]) + if message.pluralizable: + for msgstr in msgstrs[1:]: + if msgstr: + _validate_format(msgids[1], msgstr) def _validate_format(format: str, alternative: str) -> None: diff --git a/tests/messages/test_checkers.py b/tests/messages/test_checkers.py index bba8f145..e4559f7e 100644 --- a/tests/messages/test_checkers.py +++ b/tests/messages/test_checkers.py @@ -337,6 +337,8 @@ class TestPythonFormat: (('foo %s', 'bar'), ('foo', 'bar')), (('foo', 'bar %s'), ('foo', 'bar')), (('foo %s', 'bar'), ('foo')), + (('foo %s', 'bar %d'), ('foo %s', 'bar %d', 'baz')), + (('foo %s', 'bar %d'), ('foo %s', 'bar %d', 'baz %d', 'qux')), ]) def test_python_format_invalid(self, msgid, msgstr): msg = Message(msgid, msgstr) @@ -346,9 +348,13 @@ class TestPythonFormat: @pytest.mark.parametrize(('msgid', 'msgstr'), [ ('foo', 'foo'), ('foo', 'foo %s'), + ('foo %s', ''), (('foo %s', 'bar %d'), ('foo %s', 'bar %d')), - (('foo %s', 'bar %d'), ('foo %s', 'bar %d', 'baz')), + (('foo %s', 'bar %d'), ('foo %s', 'bar %d', 'baz %d')), (('foo', 'bar %s'), ('foo')), + (('foo', 'bar %s'), ('', '')), + (('foo', 'bar %s'), ('foo', '')), + (('foo %s', 'bar %d'), ('foo %s', '')), ]) def test_python_format_valid(self, msgid, msgstr): msg = Message(msgid, msgstr)