Coverage for src / ezqt_app / services / translation / translation_service.py: 78.95%

19 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-06 13:12 +0000

1# /////////////////////////////////////////////////////////////// 

2# SERVICES.TRANSLATION.SERVICE - Translation service 

3# Project: ezqt_app 

4# /////////////////////////////////////////////////////////////// 

5 

6"""Translation service implementation.""" 

7 

8from __future__ import annotations 

9 

10# /////////////////////////////////////////////////////////////// 

11# IMPORTS 

12# /////////////////////////////////////////////////////////////// 

13# Local imports 

14from ...domain.ports.translation_service import TranslationServiceProtocol 

15from .manager import get_translation_manager 

16 

17 

18# /////////////////////////////////////////////////////////////// 

19# CLASSES 

20# /////////////////////////////////////////////////////////////// 

21class TranslationService(TranslationServiceProtocol): 

22 """Service wrapper around translation management.""" 

23 

24 def change_language(self, language_name: str) -> bool: 

25 """Switch application language using its display name.""" 

26 return get_translation_manager().load_language(language_name) 

27 

28 def change_language_by_code(self, language_code: str) -> bool: 

29 """Switch application language using ISO code (e.g. ``"fr"``).""" 

30 return get_translation_manager().load_language_by_code(language_code) 

31 

32 def get_available_languages(self) -> list[str]: 

33 """Return available language codes.""" 

34 return get_translation_manager().get_available_languages() 

35 

36 def get_current_language_name(self) -> str: 

37 """Return the current language display name.""" 

38 return get_translation_manager().get_current_language_name() 

39 

40 def get_current_language_code(self) -> str: 

41 """Return the current language code.""" 

42 return get_translation_manager().get_current_language_code() 

43 

44 def translate(self, text: str) -> str: 

45 """Translate a text using the active language context.""" 

46 return get_translation_manager().translate(text) 

47 

48 

49# /////////////////////////////////////////////////////////////// 

50# FUNCTIONS 

51# /////////////////////////////////////////////////////////////// 

52def get_translation_service() -> TranslationService: 

53 """Return the singleton translation service.""" 

54 from .._registry import ServiceRegistry 

55 

56 return ServiceRegistry.get(TranslationService, TranslationService)