Skip to content

Commit fd8b40a

Browse files
authored
Merge pull request #9 from nrozanov/fix-translations-with-context
Fixed translations with context but without pluralization
2 parents 598b248 + 1768a3e commit fd8b40a

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

pydantic_translations/_translator.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,11 @@ def maybe_translate_error(self, err: ErrorDict) -> ErrorDict | None:
135135
n = err.get('ctx', {}).get('limit_value')
136136
if n is not None:
137137
n = int(n) if isinstance(n, str) else n
138-
trans_pattern = locale.get(eng_pattern, n=n, plural=eng_pattern).format(limit_value=n)
138+
trans_pattern = locale.get(eng_pattern, n=n, plural=eng_pattern)
139+
if trans_pattern == eng_pattern:
140+
# No plural translation found, try singular
141+
trans_pattern = locale.get(eng_pattern)
142+
trans_pattern = trans_pattern.format(limit_value=n)
139143
else:
140144
trans_pattern = locale.get(eng_pattern)
141145

tests/test_translate.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@ def test_format() -> None:
1818

1919
@pytest.mark.parametrize('lang, given, expected', [
2020
('ru', {'name': 'Aragorn', 'age': 88}, None),
21+
('ru', {'name': 'Aragorn', 'age': 0}, 'значение должно быть больше 0'),
2122
('ru', {'name': '', 'age': 'hi'}, 'значение должно быть целым числом'),
2223
('en', {'name': '', 'age': 'hi'}, 'value is not a valid integer'),
2324
])
2425
def test_translator(lang: str, given: object, expected: str | None) -> None:
2526
class User(pydantic.BaseModel):
2627
name: str
27-
age: int = 21
28+
age: int = pydantic.Field(..., gt=0)
2829

2930
tr = Translator(lang)
3031
try:

0 commit comments

Comments
 (0)