Testing01 / app.py
D-Jaden02's picture
Update app.py
9bc7af0 verified
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)