File size: 3,380 Bytes
2cd173a
 
91978c4
2cd173a
91978c4
dd0ca62
e189651
 
2cd173a
 
d3eee90
 
4dad974
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f8de688
4dad974
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dd0ca62
 
 
 
 
 
4dad974
 
 
 
 
 
e189651
dd0ca62
f8de688
 
 
4b2018f
f8de688
 
dd0ca62
 
4dad974
 
 
 
 
 
d3eee90
 
2cd173a
 
 
 
 
 
93928ba
 
2cd173a
 
4b2018f
e189651
4b2018f
e189651
4b2018f
e189651
 
4b2018f
e189651
2cd173a
 
 
 
dd0ca62
 
 
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
113
114
115
from flask import Flask, request, jsonify
from transformers import pipeline

app = Flask(__name__)

# Initialize the translation pipeline
sw_to_en = pipeline("translation", model="Bildad/Swahili-English_Translation")
en_to_sw = pipeline("translation", model="Bildad/English-Swahili_Translation")


@app.route("/", methods=["GET"])
def home():

    html_content = f"""
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ChatEasy swa-eng Translation API</title>
        <style>
            body {{
                font-family: Arial, sans-serif;
                line-height: 1.6;
                margin: 0;
                padding: 0;
                background-color: #f4f4f4;
            }}
            .container {{
                width: 80%;
                margin: auto;
                margin-top: 50px;
                overflow: hidden;
                background: #fff;
                padding: 20px;
                border-radius: 8px;
                box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            }}
            h1 {{
                color: #333;
            }}
            h2 {{
                color: #555;
                margin-top: 20px;
            }}
            pre {{
                background-color: #f9f9f9;
                border: 1px solid #ddd;
                padding: 10px;
                border-radius: 4px;
                overflow-x: auto;
            }}
            code {{
                background-color: #f4f4f4;
                padding: 2px 4px;
                border-radius: 4px;
                color: #d14;
            }}
            .payload-key {{
                color: #d14;
            }}
            .payload-value {{
                color: green;
            }}
        </style>
    </head>
    <body>
        <div class="container">
            <h1>ChatEasy swa-eng Translation API</h1>
            <p>Welcome to the ChatEasy swa-eng Translation API documentation.</p>
            <p>To use the API, send a POST request to <code>/translate</code>.</p>
            <h2>Request Payload</h2>
<pre>
&#123; 
"<span class="payload-key">text</span>" : "<span class="payload-value">Siku njema</span>",
"<span class="payload-key">target</span>" : "<span class="payload-value">en</span>"
&#125;
</pre>
            <h2>Expected Response</h2>
            <pre>&#123; "<span class="payload-key">translated_text</span>" : "<span class="payload-value">A good day</span>" &#125;</pre>
        </div>
    </body>
    </html>
    """

    return html_content


@app.route("/translate", methods=["POST"])
def translate():
    data = request.get_json()

    if "text" not in data:
        return jsonify({"error": "No text provided"}), 400
    if "target" not in data:
        return jsonify({"error": "No Target Language Provided"}), 400

    text_to_translate = data["text"]
    target_language = data["target"]

    if target_language == "sw":
        translation = en_to_sw(text_to_translate)[0]
    elif target_language == "en":
        translation = sw_to_en(text_to_translate)[0]
    else:
        return jsonify({"error": "Invalid Target Language"}), 400

    translated_text = translation["translation_text"]

    return jsonify({"translated_text": translated_text})


if __name__ == "__main__":
    app.run(debug=True)