import discord from googletrans import Translator, LANGUAGES from functions.stringFormatters import title_case from typing import Optional class Translation: def __init__(self, text: str, fr: str, to: str): self.text = text self.fr = fr self.to = to self.embed: Optional[discord.Embed] = None self.translation = None self.translate(text, fr, to) def translate(self, query: str, fr: str, to: str): """ Translate [query] into [to] """ try: translator = Translator() self.translation = translator.translate(query, to, fr) except ValueError as e: message = str(e) if "destination" in message: self._create_error_embed(f"{title_case(to)} is geen geldige taal.") return if "source" in message: self._create_error_embed(f"{title_case(fr)} is geen geldige taal.") return raise e def _create_error_embed(self, message): embed = discord.Embed(colour=discord.Colour.red()) embed.set_author(name="Didier Translate") embed.description = message self.embed = embed def to_embed(self) -> discord.Embed: # There's an error embed to show if self.embed is not None: return self.embed embed = discord.Embed(colour=discord.Colour.blue()) embed.set_author(name="Didier Translate") if self.fr == "auto": language = self.translation.src embed.add_field(name="Gedetecteerde taal", value=title_case(LANGUAGES[language])) if self.translation.extra_data["confidence"] is not None: embed.add_field(name="Zekerheid", value="{}%".format(self.translation.extra_data["confidence"] * 100)) embed.add_field(name="Origineel ({})".format(self.translation.src.upper()), value=self.text, inline=False) embed.add_field(name="Vertaling ({})".format(self.to.upper()), value=self.translation.text) return embed