File size: 3,164 Bytes
a5b0d33
 
8289ab0
2c9474d
a5b0d33
2c9474d
a5b0d33
 
29e3aa5
a5b0d33
2c9474d
a5b0d33
 
8289ab0
a5b0d33
 
2c9474d
a35ce19
8289ab0
 
 
 
 
 
 
 
 
a5b0d33
8289ab0
 
 
 
 
a5b0d33
 
 
 
 
 
 
 
 
1f758c0
a5b0d33
 
 
8289ab0
 
a5b0d33
 
 
2c9474d
a5b0d33
 
 
2c9474d
a5b0d33
2c9474d
a5b0d33
 
a8fe3e5
a5b0d33
 
 
2c9474d
a5b0d33
 
 
8289ab0
 
2c9474d
1f758c0
 
2c9474d
a8fe3e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a5b0d33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"""Prep gradio API."""
# pylint: diable=invalid-name
from typing import List, Optional, Union

import gradio as gr
from easynmt import EasyNMT
from logzero import logger

translate = EasyNMT("opus-mt").translate


def opusmt(
    text: str,
    from_lang: Optional[str] = None,
    to_lang: str = "zh",
) -> Union[str, List[str]]:
    """Translate via easyntm-opus-mt."""
    logger.debug("%s, %s, %s", text[:100], from_lang, to_lang)
    if to_lang in ["auto"]:
        if from_lang in ["zh"]:
            to_lang = "en"
        else:
            to_lang = "zh"

    if from_lang in ["auto"]:
        from_lang = None

    try:
        res = translate(
            text,
            target_lang=to_lang,
            source_lang=from_lang,
        )
    except Exception as e:
        logger.error(e)
        res = f"errors: {e}"
    return res


inputs = [
    gr.Textbox(
        label="text to translate",
        value="",
        lines=7,
        max_lines=200,
    ),
    gr.Textbox(label="from-lang", value="auto"),
    gr.Textbox(label="to-lang", value="zh"),
]
outputs = [
    gr.Textbox(
        label="translated",
        lines=7,
        max_lines=200,
    ),
]

description = """Supported languages: aav, aed, af, alv, am, ar, art, ase, az, bat, bcl, be, bem, ber, bg, bi, bn, bnt, bzs, ca, cau, ccs, ceb, cel, chk, cpf, crs, cs, csg, csn, cus, cy, da, de, dra, ee, efi, el, en, eo, es, et, eu, euq, fi, fj, fr, fse, ga, gaa, gil, gl, grk, guw, gv, ha, he, hi, hil, ho, hr, ht, hu, hy, id, ig, ilo, is, iso, it, ja, jap, ka, kab, kg, kj, kl, ko, kqn, kwn, kwy, lg, ln, loz, lt, lu, lua, lue, lun, luo, lus, lv, map, mfe, mfs, mg, mh, mk, mkh, ml, mos, mr, ms, mt, mul, ng, nic, niu, nl, no, nso, ny, nyk, om, pa, pag, pap, phi, pis, pl, pon, poz, pqe, pqw, prl, pt, rn, rnd, ro, roa, ru, run, rw, sal, sg, sh, sit, sk, sl, sm, sn, sq, srn, ss, ssp, st, sv, sw, swc, taw, tdt, th, ti, tiv, tl, tll, tn, to, toi, tpi, tr, trk, ts, tum, tut, tvl, tw, ty, tzo, uk, umb, ur, ve, vi, vsl, wa, wal, war, wls, xh, yap, yo, yua, zai, zh, zne. Refer to [https://github.com/UKPLab/EasyNMT](https://github.com/UKPLab/EasyNMT) for details. Estimated speed 6-60 sents/sec.
"""

_ = """
iface = gr.Interface(
    fn=opusmt,
    inputs=inputs,
    outputs=outputs,
    title="opus mt",
    description=description,
    examples=[
        ["This is a test.", "en", "zh"],
        ["This is a test.", "en", "de"],
    ],
    allow_flagging="never",
    cache_examples=False,
)
# """

with gr.Blocks() as iface:
    with gr.Row():
        text = gr.Textbox(
            label="text to translate",
            value="",
            lines=7,
            max_lines=200,
        )
        out = gr.Textbox(
            label="translated",
            lines=7,
            max_lines=200,
        )
    with gr.Row():
        from_lang = gr.Textbox(label="from-lang", value="auto")
        to_lang = gr.Textbox(label="to-lang", value="zh")
        btn = gr.Button("Translate")
    btn.click(
        fn=opusmt,
        inputs=[text, from_lang, to_lang],
        outputs=out,
        api_name="opusmt",
    )
    gr.Markdown(f"{description}")

iface.launch(enable_queue=True)