Skip to main content

FastAPI Internationalization (i18n)

Project description

FastAPI Internationalization (i18n)

Build Status Sonarcloud Status PyPI - Version LICENSE status: active

This package is implemented as a FastAPI dependency which initializes translations using the gettext module and makes them available throughout the request lifecycle using a Conext Variable.

Installation

uv add fastapi-i18n

Prerequisites

A locale directory adhering to the GNU gettext message catalog API containing translated messages. See chapter on Babel for more details.

Configuration

export FASTAPI_I18N__LOCALE_DIR="paht/to/locale/dir"  # required
export FASTAPI_I18N__LOCALE_DEFAULT="de"  # defaults to "en"

Usage

from fastapi import FastAPI, Depends

from fastapi_i18n import i18n, _

app = FastAPI(dependencies=[Depends(i18n)])


@app.get("/")
def root():
    return _("Hello from fastapi-i18n!")

Set Accept-Language header for requests to get a translated version of the response.

For a complete example see tests.

Babel

Babel is useful for working with GNU gettext message catalogs.

To add new locale and use babel to extract messages from Python files run:

echo "[python: **.py]" > babel.cfg

pybabel extract -F babel.cfg -o messages.pot .
pybabel init -i messages.pot -d locale -l de

# Now translate messages in locale/de/LC_MESSAGES/messages.po

# Then compile locale:
pybabel compile -d locale

To update existing locale run update instead of init run:

pybabel extract -F babel.cfg -o messages.pot .
pybabel update -i messages.pot -d locale

Development Setup

uv run pre-commit install
uv run pytest
uv run pybabel compile -d tests/locale
FASTAPI_I18N__LOCALE_DIR=tests/locale uv run --with fastapi[standard] fastapi dev tests/main.py

Roadmap

  • Support configuration via pyproject.toml
  • Validate locale string
  • Support setting locale using query parameter
  • Support configuration of domain (currently defaults to "messages")

Alternatives

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_i18n-0.12.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

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

fastapi_i18n-0.12.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_i18n-0.12.0.tar.gz.

File metadata

  • Download URL: fastapi_i18n-0.12.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for fastapi_i18n-0.12.0.tar.gz
Algorithm Hash digest
SHA256 0e3b3a0e29c842ef4bf40a7b60f9e002c3e63578897c5fae2f7e2fe54bc8e3bc
MD5 664d75632a9d4ccd3c26636165b54068
BLAKE2b-256 80d615c5a77130c6bde5485d376b07d4a9c9c1b20f96433dc411dd83d1e6b25b

See more details on using hashes here.

File details

Details for the file fastapi_i18n-0.12.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_i18n-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20f0fcc2d8b5d66cf1dd562253927ebd8e0e1979d01c3fe73fad5412d1e572b5
MD5 00ff844468486ec826ec5016ec65c6bb
BLAKE2b-256 9dc0b5eb0a56fccf2e478e220f18d8e66e7305eb82a5f66ca4ec872dd23e0b7d

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