# Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse # SPDX-License-Identifier: GPL-3.0-or-later import gettext as gt from typing import Any, List class Translator: """ This module uses gettext to translate strings. Translator.setlocale defines the language of the strings, then gettext() translates the message. """ SUPPORTED_LOCALES: List[str] = ["en", "fr"] locale: str = "en" translators: dict = {} for language in SUPPORTED_LOCALES: translators[language] = gt.translation( "squirrelbattle", localedir="locale", languages=[language], ) @classmethod def setlocale(cls, lang: str) -> None: """ Define the language used to translate the game. The language must be supported, otherwise nothing is done. """ lang = lang[:2] if lang in cls.SUPPORTED_LOCALES: cls.locale = lang @classmethod def get_translator(cls) -> Any: return cls.translators.get(cls.locale) def gettext(message: str) -> str: """ Translate a message. """ return Translator.get_translator().gettext(message)