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:
(('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)
@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)