Files
mai-bot/src/common/i18n/__init__.py
2026-03-12 17:23:17 +09:00

74 lines
2.0 KiB
Python

from __future__ import annotations
from collections.abc import Iterator
from datetime import date, datetime
from decimal import Decimal
from .loaders import DEFAULT_LOCALE
def _get_manager():
from .manager import I18nManager
manager = getattr(_get_manager, "_manager", None)
if manager is None:
manager = I18nManager()
_get_manager._manager = manager
return manager
def set_locale(locale: str) -> str:
return _get_manager().set_locale(locale)
def get_locale() -> str:
return _get_manager().get_locale()
def reload_translations(locale: str | None = None) -> None:
_get_manager().reload(locale)
def t(key: str, locale: str | None = None, **kwargs: object) -> str:
return _get_manager().t(key, locale=locale, **kwargs)
def tn(key: str, count: int | float, locale: str | None = None, **kwargs: object) -> str:
return _get_manager().tn(key, count=count, locale=locale, **kwargs)
def use_locale(locale: str) -> Iterator[None]:
return _get_manager().use_locale(locale)
def format_datetime_localized(value: datetime | date, locale: str | None = None, format: str = "medium") -> str:
from .formatting import format_datetime_localized as _format_datetime_localized
return _format_datetime_localized(value, locale=locale or get_locale(), format=format)
def format_number_localized(value: int | float | Decimal, locale: str | None = None) -> str:
from .formatting import format_number_localized as _format_number_localized
return _format_number_localized(value, locale=locale or get_locale())
def format_decimal_localized(value: int | float | Decimal, locale: str | None = None) -> str:
from .formatting import format_decimal_localized as _format_decimal_localized
return _format_decimal_localized(value, locale=locale or get_locale())
__all__ = [
"DEFAULT_LOCALE",
"format_datetime_localized",
"format_decimal_localized",
"format_number_localized",
"get_locale",
"reload_translations",
"set_locale",
"t",
"tn",
"use_locale",
]