File size: 3,359 Bytes
9bc7af0
 
bddacee
 
9bc7af0
 
 
bddacee
9bc7af0
 
 
 
 
 
bddacee
 
9bc7af0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bddacee
9bc7af0
 
 
 
 
bddacee
9bc7af0
 
 
 
 
 
 
bddacee
9bc7af0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from flask import Flask, request, jsonify
from flask_cors import CORS
from deep_translator import GoogleTranslator

app = Flask(__name__)
CORS(app)

LANGUAGES = {
    "hindi":     "hi",
    "tamil":     "ta",
    "malayalam": "ml",
    "telugu":    "te",
    "bengali":   "bn",
    "kannada":   "kn",
}


def get_lang_code(target_language: str):
    """Return the language code or None if unsupported."""
    return LANGUAGES.get(target_language.lower().strip())


# ── Single translation ────────────────────────────────────────────────────────

@app.route('/translate', methods=['POST'])
def translate():
    data = request.get_json()
    text = data.get('text', '').strip()
    target_language = data.get('target_language', '').strip()

    if not text:
        return jsonify({'error': 'No text provided'}), 400

    lang_code = get_lang_code(target_language)
    if not lang_code:
        return jsonify({
            'error': f'Unsupported language "{target_language}". '
                     f'Choose from: {", ".join(LANGUAGES.keys())}'
        }), 400

    try:
        translated = GoogleTranslator(source='en', target=lang_code).translate(text)
        return jsonify({
            'original_text':   text,
            'translated_text': translated,
            'target_language': target_language.lower(),
            'lang_code':       lang_code,
        })
    except Exception as e:
        return jsonify({'error': str(e)}), 500


# ── Batch translation ─────────────────────────────────────────────────────────

@app.route('/batch_translate', methods=['POST'])
def batch_translate():
    data = request.get_json()
    texts = data.get('texts', [])
    target_language = data.get('target_language', '').strip()

    if not texts:
        return jsonify({'error': 'No texts provided'}), 400

    lang_code = get_lang_code(target_language)
    if not lang_code:
        return jsonify({
            'error': f'Unsupported language "{target_language}". '
                     f'Choose from: {", ".join(LANGUAGES.keys())}'
        }), 400

    translator = GoogleTranslator(source='en', target=lang_code)
    results = []

    for text in texts:
        try:
            translated = translator.translate(text.strip())
            results.append({'original_text': text, 'translated_text': translated})
        except Exception as e:
            results.append({'original_text': text, 'error': str(e)})

    return jsonify({
        'target_language': target_language.lower(),
        'lang_code':       lang_code,
        'results':         results,
    })


# ── Supported languages list ──────────────────────────────────────────────────

@app.route('/languages', methods=['GET'])
def languages():
    """Returns all supported languages β€” useful for populating buttons in the frontend."""
    return jsonify({
        'languages': [
            {'name': name, 'code': code}
            for name, code in LANGUAGES.items()
        ]
    })


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=7860)