Files
mealie/mealie/lang/providers.py
Hayden 82dc586bac chores: updates-and-linters (#1868)
* switch to ruff

* add ruff

* run ruff --fix

* update ruff

* resolve ruff errors

* drop isort from CI

* fix decorator order
2022-11-30 20:20:28 -09:00

32 lines
705 B
Python

from abc import abstractmethod
from functools import lru_cache
from pathlib import Path
from typing import Protocol
from fastapi import Header
from mealie.pkgs import i18n
CWD = Path(__file__).parent
TRANSLATIONS = CWD / "messages"
class Translator(Protocol):
@abstractmethod
def t(self, key, default=None, **kwargs):
pass
@lru_cache
def _load_factory() -> i18n.ProviderFactory:
return i18n.ProviderFactory(
directory=TRANSLATIONS,
fallback_locale="en-US",
)
def local_provider(accept_language: str | None = Header(None)) -> Translator:
factory = _load_factory()
accept_language = accept_language or "en-US"
return factory.get(accept_language)