from typing import Dict, List, Optional from fastapi import APIRouter, Header from pydantic import BaseModel class LanguageStrings(BaseModel): validation: Dict[str, Dict[str, str]] # validation.required.field: {tr: "...", en: "..."} messages: Dict[str, Dict[str, str]] # messages.welcome: {tr: "...", en: "..."} labels: Dict[str, Dict[str, str]] # labels.submit_button: {tr: "...", en: "..."} class LanguageService: def __init__(self): self.strings: Dict[str, Dict[str, Dict[str, str]]] = { "validation": { "required": { "tr": "Bu alan zorunludur", "en": "This field is required" }, "email": { "tr": "Geçerli bir e-posta adresi giriniz", "en": "Please enter a valid email" }, "min_length": { "tr": "En az {min} karakter giriniz", "en": "Enter at least {min} characters" }, # Add more validation messages }, "messages": { "welcome": { "tr": "Hoş geldiniz", "en": "Welcome" }, "success": { "tr": "İşlem başarılı", "en": "Operation successful" }, # Add more messages }, "labels": { "submit": { "tr": "Gönder", "en": "Submit" }, "cancel": { "tr": "İptal", "en": "Cancel" }, # Add more labels } } def get_strings(self, lang: str = "tr") -> LanguageStrings: """Get all strings for a specific language""" return LanguageStrings( validation={k: v[lang] for k, v in self.strings["validation"].items()}, messages={k: v[lang] for k, v in self.strings["messages"].items()}, labels={k: v[lang] for k, v in self.strings["labels"].items()} ) # Create FastAPI router router = APIRouter(prefix="/api/language", tags=["Language"]) language_service = LanguageService() @router.get("/strings") async def get_language_strings( accept_language: Optional[str] = Header(default="tr") ) -> LanguageStrings: """Get all language strings based on Accept-Language header""" lang = accept_language.split(",")[0][:2] # Get primary language code return language_service.get_strings(lang if lang in ["tr", "en"] else "tr")