| 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()) |
|
|
|
|
| |
|
|
| @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 |
|
|
|
|
| |
|
|
| @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, |
| }) |
|
|
|
|
| |
|
|
| @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) |