Integration — Aquilia Documentation
Comprehensive guide and documentation for Integration in the Aquilia framework. View API reference, examples, and implementation patterns.
i18n / Integration i18n Integration Guide i18n is integrated at server startup, then exposed through middleware state, template helpers, and DI providers. This page covers default wiring and manual integration patterns. Server-Level Wiring cfg = I18nConfig.from_dict(config_loader.get_i18n_config()) service = create_i18n_service(cfg) register_i18n_providers(container, service, cfg) resolver = build_resolver(cfg) middleware_stack.add(I18nMiddleware(service, resolver), priority=24) register_i18n_template_globals(template_env, service) When enabled=True, the resolved locale and I18nService context become available in the request state dict for all downstream handlers. Middleware Order and State Contract # I18nMiddleware at priority 24 # request.state after middleware: request.state["locale"] # str request.state["locale_obj"] # Locale request.state["i18n"] # I18nService from aquilia import Controller, GET, RequestCtx class WelcomeController(Controller): @GET("/welcome") async def welcome(self, ctx: RequestCtx): i18n = ctx.request.state["i18n"] locale = ctx.request.state.get("locale", "en") return Template Integration } } } } } Template globals automatically bound to the Jinja sandbox environment include _, _n, _p, and filters include translate, format_number, format_currency, and format_date. DI Integration # App-scope registration register_i18n_providers(container, service, config) # Request-scope locale registration register_i18n_request_providers(request_container, locale, service) Manual Integration Pattern from aquilia.i18n.service import I18nConfig, create_i18n_service from aquilia.i18n.middleware import I18nMiddleware, build_resolver from aquilia.i18n.di_integration import register_i18n_providers from aquilia.i18n.template_integration import register_i18n_template_globals cfg = I18nConfig(default_locale="en", available_locales=["en", "fr"], catalog_dirs=["locales"]) svc = create_i18n_service(cfg) register_i18n_providers(app_container, svc, cfg) resolver = build_resolver(cfg) middleware_stack.add(I18nMiddleware(svc, resolver), scope="global", priority=24, name="i18n") register_i18n_template_globals(template_env, svc) )
Go to Homepage