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

1from abc import abstractmethod 

2from functools import lru_cache 

3from pathlib import Path 

4from typing import Protocol 

5 

6from fastapi import Header 

7 

8from mealie.pkgs import i18n 

9 

10CWD = Path(__file__).parent 

11TRANSLATIONS = CWD / "messages" 

12 

13 

14class Translator(Protocol): 

15 @abstractmethod 

16 def t(self, key, default=None, **kwargs) -> str: 

17 pass 

18 

19 

20@lru_cache 

21def _load_factory() -> i18n.ProviderFactory: 

22 return i18n.ProviderFactory( 

23 directory=TRANSLATIONS, 

24 fallback_locale="en-US", 

25 ) 

26 

27 

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) 

32 

33 

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}