🌍 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.
nice
ReplyDeleteperfect!
ReplyDeleteAdding internationalization at the API level is a practical requirement when an application needs to serve users across different languages. The tutorial keeps the implementation straightforward by using JSON locale files, a fallback language, and FastAPI middleware to read the Accept-Language header and set the appropriate locale for each request.
ReplyDeleteThe combination of Python backend development and API functionality makes Python Full Stack Course particularly relevant here. The example shows how a Python-based application can incorporate a cross-cutting feature such as localization without changing the basic API structure.
Using FastAPI directly for the multilingual API also makes FastAPI Course a strong connection. The middleware approach demonstrates how request information can be processed before reaching an endpoint, while the translation files keep the language-specific content separate from the application logic.
ReplyDeleteThe use of request headers and API responses further connects the example with RESTful API Training. Reading Accept-Language from each request is a simple but effective way to let clients indicate their preferred language while keeping the API interface consistent.
ReplyDelete