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)