add CLI for translation and update dependencies
This commit is contained in:
48
cli/translate.py
Normal file
48
cli/translate.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import asyncio
|
||||
import click
|
||||
|
||||
from greek_lang.container import init_main_container
|
||||
from greek_lang.languages import LanguageEnum
|
||||
from greek_lang.translator import translate
|
||||
|
||||
|
||||
async def _translate(word: str, source_code: str, target_code: str) -> None:
|
||||
try:
|
||||
source_lang = LanguageEnum(source_code.lower())
|
||||
target_lang = LanguageEnum(target_code.lower())
|
||||
except KeyError as exc:
|
||||
raise click.BadParameter(f"Unsupported language code: {exc.args[0]}") from exc
|
||||
|
||||
async with init_main_container():
|
||||
result = await translate(word, source_lang, target_lang=target_lang)
|
||||
|
||||
click.echo(result)
|
||||
|
||||
|
||||
@click.command(help="Перевод слова между языками библиотеки greek_lang.")
|
||||
@click.argument("word")
|
||||
@click.option(
|
||||
"-s",
|
||||
"--source",
|
||||
"source_code",
|
||||
default="el",
|
||||
show_default=True,
|
||||
type=click.Choice([lang.name for lang in LanguageEnum], case_sensitive=False),
|
||||
help="Код исходного языка (ISO-639-1, как в LanguageEnum).",
|
||||
)
|
||||
@click.option(
|
||||
"-t",
|
||||
"--target",
|
||||
"target_code",
|
||||
default="ru",
|
||||
show_default=True,
|
||||
type=click.Choice([lang.name for lang in LanguageEnum], case_sensitive=False),
|
||||
help="Код языка перевода (ISO-639-1, как в LanguageEnum).",
|
||||
)
|
||||
def cli(word: str, source_code: str, target_code: str) -> None:
|
||||
"""Обёртка, которая запускает асинхронный перевод через asyncio."""
|
||||
asyncio.run(_translate(word, source_code, target_code))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cli()
|
||||
Reference in New Issue
Block a user