https://github.com/orsinium-labs/pydantic-translations
Translations for pydantic errors
https://github.com/orsinium-labs/pydantic-translations
gettext i18n l10n languages locales pydantic python python3 translation translations
Last synced: 6 months ago
JSON representation
Translations for pydantic errors
- Host: GitHub
- URL: https://github.com/orsinium-labs/pydantic-translations
- Owner: orsinium-labs
- License: mit
- Created: 2023-03-31T12:44:42.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-27T13:59:15.000Z (almost 2 years ago)
- Last Synced: 2024-04-30T06:02:48.168Z (over 1 year ago)
- Topics: gettext, i18n, l10n, languages, locales, pydantic, python, python3, translation, translations
- Language: Python
- Homepage:
- Size: 74.2 KB
- Stars: 9
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pydantic-translations
Translations for pydantic errors.
## Languages
Currently, we have translated pydantic v1.10.2 errors to the following languages:
* `de`: German. 87/87.
* `es`: Spanish. 87/87.
* `fr`: French. 87/87.
* `it`: Italian. 87/87.
* `nl`: Dutch. 87/87.
* `ru`: Russian. 82/87.Need more languages? Contributions are welcome!
## Installation
```bash
python3 -m pip install pydantic-translations
```## Usage
Let's say you have a pydantic model `User`:
```python
from pydantic import BaseModelclass User(BaseModel):
age: int
```The translations are managed by the `Translator` class that is instantiated with the locale (language) you want the messages to be translated to:
```python
from pydantic_translations import Translatortr = Translator('ru')
```You can use translator as a context manager to translate pydantic exceptions raised from the context:
```python
with tr:
User.parse_obj({'age': 'idk'})
# ValidationError: 1 validation error for User
# age
# значение должно быть целым числом (type=type_error.integer)
```Or use the `translate_exception` method to directly translate an exception instance:
```python
from pydantic import ValidationErrortry:
User.parse_obj({'age': 'idk'})
except ValidationError as exc:
exc = tr.translate_exception(exc)
raise exc
```Or use the `translate_error` method to translate a specific error:
```python
try:
User.parse_obj({'age': 'idk'})
except ValidationError as exc:
err = exc.errors()[0]
err = tr.translate_error(err)
print(err)
# {'loc': ('age',), 'msg': 'значение должно быть целым числом', 'type': 'type_error.integer'}
```## Custom translations
If you have translated the errors to a new language, the best you can do is contribute it back here. If, for some (legal?) reason, you can't, you may pass into the Translated as a locale a [l10n](https://github.com/orsinium-labs/l10n) locale with your translations:
```python
from l10n import Localeslocales = Locales()
locale = locales['ua']
tr = Translator(locale)
```## Contributors
1. The original error messages provided by [@samuelcolvin](https://github.com/samuelcolvin) and [pydantic contributors](https://github.com/pydantic/pydantic/graphs/contributors).
1. The Russian translation is provided by [@orsinium](https://github.com/orsinium).
1. The German, Spanish, French, Italian, and Dutch translations are provided by [Andovar](https://andovar.com/) translation agency.Minor corrections and improvements are provided by [the project contributors](https://github.com/orsinium-labs/pydantic-translations/graphs/contributors).