Skip to main content

FastAPI request validation with i18n error message

Project description

PyPI - Downloads

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
uv 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.3.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_validation_i18n-0.4.3-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_validation_i18n-0.4.3.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fastapi_validation_i18n-0.4.3.tar.gz
Algorithm Hash digest
SHA256 c1bfe69743e6ddfc8b932cdb0425f7edba53455c8727e9384645da93f4e8f97a
MD5 160555a0c82a19b9050996eeddc8f28c
BLAKE2b-256 d89d6211c8ff1c649ea6a8e22b362e61a8eb9545e1571eae21e07e995022fa13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fastapi_validation_i18n-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6d762165de5a96dd1a159a224f0a14a752a76cf6a3ac9d14f7d3c1f5f6301f12
MD5 87c8393bc1f3f30b02ab88254f30f420
BLAKE2b-256 4c8881c4f08692027f4279c75c36a46d0b6babbe4911ca5786b276ba78e1d129

See more details on using hashes here.

Supported by

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