Coverage for opt/mealie/lib/python3.12/site-packages/mealie/lang/providers.py: 87%
23 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from abc import abstractmethod
2from functools import lru_cache
3from pathlib import Path
4from typing import Protocol
6from fastapi import Header
8from mealie.pkgs import i18n
10CWD = Path(__file__).parent
11TRANSLATIONS = CWD / "messages"
14class Translator(Protocol):
15 @abstractmethod
16 def t(self, key, default=None, **kwargs) -> str:
17 pass
20@lru_cache
21def _load_factory() -> i18n.ProviderFactory:
22 return i18n.ProviderFactory(
23 directory=TRANSLATIONS,
24 fallback_locale="en-US",
25 )
28def local_provider(accept_language: str | None = Header(None)) -> Translator:
29 factory = _load_factory()
30 accept_language = accept_language or "en-US"
31 return factory.get(accept_language)
34@lru_cache
35def get_all_translations(key: str) -> dict[str, str]:
36 factory = _load_factory()
37 return {locale: factory.get(locale).t(key) for locale in factory.supported_locales}