FastAPI request validation with i18n error message
Project description
error message with i18n support in FastAPI
response example
{
"errors": [
{
"loc": [
"body",
"string"
],
"msg": "確保此值最多有 10 個字符",
"type": "value_error.any_str.max_length",
"ctx": {
"limit_value": 10
}
},
{
"loc": [
"body",
"nested",
"body"
],
"msg": "確保此值最多有 2 個字符",
"type": "value_error.any_str.max_length",
"ctx": {
"limit_value": 2
}
},
{
"loc": [
"body",
"nested",
"inner",
"inner_body"
],
"msg": "確保此值最多包含 2 個項目",
"type": "value_error.list.max_items",
"ctx": {
"limit_value": 2
}
},
{
"loc": [
"body",
"nested",
"inner",
"cat"
],
"msg": "鑑別器 'color' 和值 'ccc' 不匹配(允許的值: 'black', 'white')",
"type": "value_error.discriminated_union.invalid_discriminator",
"ctx": {
"discriminator_key": "color",
"discriminator_value": "ccc",
"allowed_values": "'black', 'white'"
}
}
]
}
parameters
all parameters are optional
param | description | default |
---|---|---|
locale_path | the path of your locale files | locales |
locale_list | support locales in your app in tuple | ('zh-TW', 'ja-JP', 'en-US') |
bind_to_life_span | set to True if you want the translator instance be created when on app startup |
False |
Attention
- For FastAPI >=0.100.0 and pydantic v2, please use ^0.4.0
- For FastAPI < 0.100.0 nad pydantic v1, please use ^0.3.0
- built-in locales are zh-TW, en-US, ja-JP, you can change the locales by yourself
How to run
- use
setup
from fastapi_validation_i18n import setup
from fastapi import FastAPI
app = FastAPI()
setup(app, locale_path=..., locale_list=...)
- use middleware and exception handler
from fastapi import FastAPI
from fastapi_validation_i18n import I18nMiddleware, i18n_exception_handler
from fastapi.exceptions import RequestValidationError
app = FastAPI()
app.add_middleware(I18nMiddleware, locale_path='your-publish-path')
app.add_exception_handler(
RequestValidationError,
i18n_exception_handler
)
Other
- publish locales to your app path
# default to "locale" in your project path
poetry run publish-locale <your-path> [--locale]
- how to set locale
there are 3 ways to set locale
- set
accept-language
header to your request - set an API with
locale
in path - set
locale
query parameter to your request
you can see the example for more detail
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_validation_i18n-0.4.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa3cb9353c7d449c70735621582052da8df632eaf4b2f6de2211186bf3373170 |
|
MD5 | 44a57ca2119c09a4aff0266f8dd9b1b7 |
|
BLAKE2b-256 | 2818c1c5bc632dc3bcba627d818469f11fbbdbef058203d640cbe64507cf5c4d |
Close
Hashes for fastapi_validation_i18n-0.4.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6f61cd2de84858b78dd59dca882fabee2904e9dd0042a8dc3ff2b32da870135 |
|
MD5 | 45f61baf91c4f0fdba14cd12b1e0c9d4 |
|
BLAKE2b-256 | 290ba9d65189fe9ed1d155f513b12acb5bb8920f36917482b0c5eff2ab216020 |