Make SubFox production-ready with parallel translation and UI controls
This commit is contained in:
parent
c40b8bed2b
commit
2b1d05f02c
6046 changed files with 798327 additions and 0 deletions
102
.venv/lib/python3.10/site-packages/deep_translator/cli.py
Normal file
102
.venv/lib/python3.10/site-packages/deep_translator/cli.py
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
"""Console script for deep_translator."""
|
||||
|
||||
__copyright__ = "Copyright (C) 2020 Nidhal Baccouri"
|
||||
|
||||
import argparse
|
||||
from typing import Optional
|
||||
|
||||
from deep_translator.engines import __engines__
|
||||
|
||||
|
||||
class CLI(object):
|
||||
translators_dict = __engines__
|
||||
translator = None
|
||||
|
||||
def __init__(self, custom_args: Optional[list] = None):
|
||||
self.custom_args = custom_args
|
||||
self.args = self.parse_args()
|
||||
translator_class = self.translators_dict.get(
|
||||
self.args.translator, None
|
||||
)
|
||||
if not translator_class:
|
||||
raise Exception(
|
||||
f"Translator {self.args.translator} is not supported."
|
||||
f"Supported translators: {list(self.translators_dict.keys())}"
|
||||
)
|
||||
self.translator = translator_class(
|
||||
source=self.args.source, target=self.args.target
|
||||
)
|
||||
|
||||
def translate(self) -> None:
|
||||
"""
|
||||
function used to provide translations from the parsed terminal arguments
|
||||
@return: None
|
||||
"""
|
||||
res = self.translator.translate(self.args.text)
|
||||
print(f"Translation from {self.args.source} to {self.args.target}")
|
||||
print("-" * 50)
|
||||
print(f"Translation result: {res}")
|
||||
|
||||
def get_supported_languages(self) -> None:
|
||||
"""
|
||||
function used to return the languages supported by the translator service
|
||||
from the parsed terminal arguments
|
||||
@return: None
|
||||
"""
|
||||
|
||||
translator_supported_languages = (
|
||||
self.translator.get_supported_languages(as_dict=True)
|
||||
)
|
||||
print(f"Languages supported by '{self.args.translator}' are :\n")
|
||||
print(translator_supported_languages)
|
||||
|
||||
def parse_args(self) -> argparse.Namespace:
|
||||
"""
|
||||
function responsible for parsing terminal arguments and provide
|
||||
them for further use in the translation process
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=True,
|
||||
description="Official CLI for deep-translator",
|
||||
usage="dt --help",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--translator",
|
||||
"-trans",
|
||||
default="google",
|
||||
type=str,
|
||||
help="name of the translator you want to use",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--source",
|
||||
"-src",
|
||||
default="auto",
|
||||
type=str,
|
||||
help="source language to translate from",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--target", "-tg", type=str, help="target language to translate to"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--text", "-txt", type=str, help="text you want to translate"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--languages",
|
||||
"-lang",
|
||||
action="store_true",
|
||||
help="all the languages available with the translator"
|
||||
"Run the command deep_translator -trans <translator service> -lang",
|
||||
)
|
||||
parsed_args = (
|
||||
parser.parse_args(self.custom_args)
|
||||
if self.custom_args
|
||||
else parser.parse_args()
|
||||
)
|
||||
return parsed_args
|
||||
|
||||
def run(self) -> None:
|
||||
if self.args.languages:
|
||||
self.get_supported_languages()
|
||||
else:
|
||||
self.translate()
|
||||
Loading…
Add table
Add a link
Reference in a new issue