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) |