File size: 3,361 Bytes
a5b0d33
 
8289ab0
2c9474d
a5b0d33
2c9474d
a5b0d33
 
29e3aa5
a5b0d33
2c9474d
a5b0d33
 
8289ab0
a5b0d33
 
2c9474d
30e9d58
 
 
 
 
 
 
 
 
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
104
105
106
107
108
109
110
111
112
"""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."""
    try:
        from_lang = str(from_lang).strip()
    except Exception:
        from_lang = "auto"
    try:
        to_lang = str(to_lang).strip()
    except Exception:
        to_lang = "auto"

    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)