i18n: crowdin integration
This commit is contained in:
73
src/common/i18n/__init__.py
Normal file
73
src/common/i18n/__init__.py
Normal file
@@ -0,0 +1,73 @@
|
||||
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",
|
||||
]
|
||||
Reference in New Issue
Block a user