import gettext
import json

from discord.ext import commands


class Texts:
    def __init__(self, base: str = 'base', ctx: commands.Context = None):
        self.locale = self.get_locale(ctx)
        self.base = base

    def get(self, text: str) -> str:
        texts = gettext.translation(self.base, localedir='utils/locales',
                                    languages=[self.locale])
        texts.install()
        return texts.gettext(text)

    def set(self, lang: str):
        self.locale = lang

    @staticmethod
    def get_locale(ctx: commands.Context):
        lang = 'fr'
        if ctx is not None:
            try:
                with open(f'./configs/guilds/{ctx.guild.id}.json', 'r') as f:
                    data = json.load(f)

                lang = data['lang']

            except FileNotFoundError:
                pass

        return lang