Skip to main content

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

  1. set accept-language header to your request
  2. set an API with locale in path
  3. set locale query parameter to your request

you can see the example for more detail

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_validation_i18n-0.4.2.tar.gz (40.8 kB view details)

Uploaded Source

Built Distribution

fastapi_validation_i18n-0.4.2-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_validation_i18n-0.4.2.tar.gz.

File metadata

File hashes

Hashes for fastapi_validation_i18n-0.4.2.tar.gz
Algorithm Hash digest
SHA256 aa3cb9353c7d449c70735621582052da8df632eaf4b2f6de2211186bf3373170
MD5 44a57ca2119c09a4aff0266f8dd9b1b7
BLAKE2b-256 2818c1c5bc632dc3bcba627d818469f11fbbdbef058203d640cbe64507cf5c4d

See more details on using hashes here.

File details

Details for the file fastapi_validation_i18n-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_validation_i18n-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a6f61cd2de84858b78dd59dca882fabee2904e9dd0042a8dc3ff2b32da870135
MD5 45f61baf91c4f0fdba14cd12b1e0c9d4
BLAKE2b-256 290ba9d65189fe9ed1d155f513b12acb5bb8920f36917482b0c5eff2ab216020

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page