Module

i18n

Chirp internationalization (i18n).

Locale detection, message translation, and basic formatting.

Usage::

app = App(AppConfig(
    i18n_enabled=True,
    i18n_supported_locales=("en", "es", "ja"),
))

In templates::

<h1>{{ t("Welcome to Chirp") }}</h1>
<p>{{ t("Hello, {name}!", name=user.name) }}</p>

In handlers::

from chirp.i18n import get_locale, t
locale = get_locale()  # "es"
message = t("Hello, {name}!", name="Alice")

Functions

init_catalog 1 MessageCatalog
Initialize the global message catalog.
def init_catalog(directory: str = 'locales') -> MessageCatalog
Parameters
Name Type Description
directory str Default:'locales'
Returns
MessageCatalog
get_catalog 0 MessageCatalog | None
Return the global message catalog.
def get_catalog() -> MessageCatalog | None
Returns
MessageCatalog | None
get_locale 0 str
Return the current request locale. Returns "en" if no locale has been set (out…
def get_locale() -> str

Return the current request locale.

Returns "en" if no locale has been set (outside request context).

Returns
str
set_locale 1 None
Set the locale for the current context.
def set_locale(locale: str) -> None
Parameters
Name Type Description
locale str
t 2 str
Translate a key using the current locale. Template global: ``{{ t("Hello, {nam…
def t(key: str, **kwargs) -> str

Translate a key using the current locale.

Template global:{{ t("Hello, {name}!", name=user.name) }}

Returns the key itself if no catalog is configured or key is missing.

Parameters
Name Type Description
key str
**kwargs
Returns
str