π Adding Internationalization (i18n) in FastAPI
If you're building a multi-lingual API with FastAPI, it's essential to support internationalization. In this guide, we'll use the python-i18n library — a simple and effective tool for managing translations in Python using JSON files.
π¦ Step 1: Install python-i18n
pip install python-i18n
π Step 2: Create Locale Files
Create a locales
directory and add your language JSON files:
locales/
├── en.json
└── fr.json
en.json:
{
"greeting": "Hello"
}
fr.json:
{
"greeting": "Bonjour"
}
⚙️ Step 3: Configure i18n in FastAPI
import i18n
from fastapi import FastAPI, Request
app = FastAPI()
# Load translation files
i18n.load_path.append('locales')
i18n.set('fallback', 'en')
π Step 4: Detect Language from Request
@app.middleware("http")
async def add_language_to_request(request: Request, call_next):
lang = request.headers.get("Accept-Language", "en").split(",")[0]
i18n.set("locale", lang)
response = await call_next(request)
return response
π¨ Step 5: Use Translations in Your API
from fastapi.responses import JSONResponse
@app.get("/greet")
async def greet():
message = i18n.t("greeting")
return JSONResponse(content={"message": message})
π Resources
π Conclusion
With just a few steps, you've added internationalization support to your FastAPI application! Using python-i18n
, you can easily expand your app to support more languages and provide localized content.
Comments
Post a Comment