Language localization fastapi
Project description
fastapi_localization
fastapi_localization - provides a simple language localization from Accept-Language header in your application.
Installation
$ pip install fastapi-localization
Example with small fastapi application
from typing import List
from pydantic import BaseModel
from fastapi_localization import TranslateJsonResponse
from fastapi_localization import TranslatableStringField
class LanguageTranslatableSchema(BaseModel):
code: str
title: TranslatableStringField
@app.get(
'/language',
response_class=TranslateJsonResponse,
response_model=List[LanguageTranslatableSchema])
async def languages():
return [{'code': 'ru', 'title': 'Russia'},
{'code': 'en', 'title': 'English'}]
# Russia
$ curl --location --request GET 'http://127.0.0.1:8000/language' \
--header 'Accept-Language: ru'
[{"code":"ru","title":"Русский"},{"code":"en","title":"Английский"}]
# English
$ curl --location --request GET 'http://127.0.0.1:8000/language' \
--header 'Accept-Language: en'
[{"code":"ru","title":"Russia"},{"code":"en","title":"English"}]
manual partial translation
from fastapi_localization import TranslateJsonResponse
from fastapi_localization import lazy_gettext as _
@app.get(
'/country',
response_class=TranslateJsonResponse)
async def countries():
return [{'code': 'ru', 'title': _('Russia')},
{'code': 'us', 'title': 'USA'}]
# Russian
$ curl --location --request GET 'http://127.0.0.1:8000/country' \
--header 'Accept-Language: ru'
[{"code":"ru","title":"Русский"},{"code":"us","title":"USA"}]
# English
$ curl --location --request GET 'http://127.0.0.1:8000/country' \
--header 'Accept-Language: en'
[{"code":"ru","title":"Russia"},{"code":"us","title":"USA"}]
error validation
from pydantic import BaseModel, EmailStr
from fastapi_localization import TranslateJsonResponse
class InputSchema(BaseModel):
email = EmailStr()
@app.post(
'/input',
response_class=TranslateJsonResponse)
async def countries(value: InputSchema):
return value
# Russia
$ curl --location --request POST 'http://127.0.0.1:8000/input' \
--header 'Accept-Language: ru' \
--header 'Content-Type: application/json' \
--data-raw '{"email": "invalid_email"}'
{
"detail": [
{
"loc": [
"body",
"email"
],
"msg": "значение не является действительным адресом электронной почты",
"type": "value_error.email"
}
]
}
# English
$ curl --location --request POST 'http://127.0.0.1:8000/input' \
--header 'Accept-Language: en' \
--header 'Content-Type: application/json' \
--data-raw '{"email": "invalid_email"}'
{
"detail": [
{
"loc": [
"body",
"email"
],
"msg": "value is not a valid email address",
"type": "value_error.email"
}
]
}
Application source code
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for fastapi-localization-0.0a2.dev3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ade508d602083d948a90a5fdf259c24f7b55609437c2180cc26da23df41e05c3 |
|
MD5 | 79a2d57b59fafad256c49d671794b91e |
|
BLAKE2b-256 | 1ffa6dd859ec41cd413b0a913ca75b82a6284c1e40b7ab2e2b7e2b8fcdbd0ff3 |
Close
Hashes for fastapi_localization-0.0a2.dev3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 512160db955a2cdc077c11e682f09f113c2a4cca3f8d570627a5d8ed1f341417 |
|
MD5 | bc4d2528518f06716a485b960708c090 |
|
BLAKE2b-256 | a978a0f3144138c1ba20c1bec19ad46247f7aec1638d0a9f1751cf94baeea702 |