from abc import ABC, abstractmethod

from cpl_translation.translation_settings import TranslationSettings


class TranslationServiceABC(ABC):
    @abstractmethod
    def __init__(self):
        pass

    @abstractmethod
    def set_default_lang(self, lang: str):
        pass

    @abstractmethod
    def set_lang(self, lang: str):
        pass

    @abstractmethod
    def load(self, lang: str):
        pass

    @abstractmethod
    def load_by_settings(self, settings: TranslationSettings):
        pass

    @abstractmethod
    def translate(self, key: str) -> str:
        pass
