|
"""Console script for deep_translator.""" |
|
|
|
import click |
|
from .google_trans import GoogleTranslator |
|
from .mymemory import MyMemoryTranslator |
|
from .deepl import DeepL |
|
from .qcri import QCRI |
|
from .linguee import LingueeTranslator |
|
from .pons import PonsTranslator |
|
from .yandex import YandexTranslator |
|
from .microsoft import MicrosoftTranslator |
|
from .papago import PapagoTranslator |
|
|
|
CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) |
|
@click.group() |
|
def cli(): |
|
pass |
|
|
|
@cli.command(context_settings=CONTEXT_SETTINGS, no_args_is_help=True) |
|
@click.argument('translator', required=True, default='google', type=str) |
|
@click.option("--source", "-src", required=True, type=str, help="source language to translate from") |
|
@click.option("--target", "-tgt", required=True, type=str, help="target language to translate to") |
|
@click.option("--text", "-txt", type=str,required = True,prompt="Enter the text you want to translate",help="text you want to translate") |
|
@click.option("--api-key",type=str,help="required for DeepL, QCRI, Yandex, Microsoft and Papago translators") |
|
def translate(translator, source, target, text, api_key): |
|
""" |
|
Use TRANSLATOR to translate source material into another language. |
|
\f |
|
Directory function to send arguments to the correct translator. |
|
@param translator: translator name parsed from terminal arguments |
|
@return: None |
|
""" |
|
api_key_required = ["deepl", "qcri", "yandex", "microsoft", "papago"] |
|
if translator in api_key_required and not api_key: |
|
click.echo( |
|
"This translator requires an api key provided through --api-key") |
|
else: |
|
pass |
|
|
|
if translator == "google": |
|
translator = GoogleTranslator(source=source, target=target) |
|
elif translator == "mymemory": |
|
translator = MyMemoryTranslator(source=source, target=target) |
|
elif translator == "deepl": |
|
translator = DeepL(source=source, target=target, api_key=api_key) |
|
elif translator == "qcri": |
|
translator = QCRI(source=source, target=target, api_key=api_key) |
|
elif translator == "linguee": |
|
translator = LingueeTranslator(source=source, target=target) |
|
elif translator == "pons": |
|
translator = PonsTranslator(source=source, target=target) |
|
elif translator == "yandex": |
|
translator = YandexTranslator( |
|
source=source, |
|
target=target, |
|
api_key=api_key) |
|
elif translator == "microsoft": |
|
translator = MicrosoftTranslator( |
|
source=source, |
|
target=target, |
|
api_key=api_key) |
|
elif translator == "papago": |
|
translator = PapagoTranslator( |
|
source=source, |
|
target=target, |
|
api_key=api_key) |
|
else: |
|
raise AttributeError("The given translator is not supported.") |
|
|
|
res = translator.translate(text) |
|
click.echo(f" | Translation from {source} to {target} |") |
|
click.echo(f"Translated text: \n {res}") |
|
return 0 |
|
|
|
@cli.command(context_settings=CONTEXT_SETTINGS, no_args_is_help=True) |
|
@click.argument('translator') |
|
@click.argument('api_key', required=False) |
|
def languages(translator, api_key): |
|
""" |
|
Retrieve the list of available languages from the given translator. |
|
@param translator: Translator given by the user. |
|
@param api_key: Optional API key given by the user. Required for some translators. |
|
@return: None |
|
""" |
|
translator = translator.lower() |
|
api_key_required = ["deepl", "qcri", "yandex", "microsoft", "papago"] |
|
if translator in api_key_required and not api_key: |
|
click.echo("This translator requires an api key provided through --api-key") |
|
else: |
|
pass |
|
|
|
if translator == "google": |
|
translator = GoogleTranslator |
|
elif translator == "mymemory": |
|
translator = MyMemoryTranslator |
|
elif translator == "qcri": |
|
translator = QCRI(api_key=api_key) |
|
elif translator == "linguee": |
|
translator = LingueeTranslator |
|
elif translator == "pons": |
|
translator = PonsTranslator |
|
elif translator == "yandex": |
|
translator = YandexTranslator(api_key=api_key) |
|
elif translator == "microsoft": |
|
translator = MicrosoftTranslator(api_key=api_key) |
|
elif translator == "papago": |
|
translator = PapagoTranslator(api_key=api_key) |
|
else: |
|
raise AttributeError("The given translator is not supported.") |
|
|
|
supported_languages = translator.get_supported_languages(as_dict=True) |
|
click.echo(f"Languages supported by '{translator}' are :") |
|
for k, v in supported_languages.items(): |
|
click.echo(f"|- {k}: {v}") |
|
return 0 |
|
|
|
@cli.command() |
|
def list(): |
|
"""Lists available translators.""" |
|
click.echo("Available translators include: Google, MyMemory, QCRI, Linguee, Pons, Yandex, Microsoft (Bing), and Papago.") |
|
return 0 |
|
|
|
if __name__ == "__main__": |
|
cli() |
|
|