from flask import Flask, render_template, request, jsonify from transformers import MarianMTModel, MarianTokenizer from langdetect import detect from sacremoses import MosesTokenizer, MosesDetokenizer app = Flask(__name__) # Supported languages for translation SUPPORTED_LANGUAGES = { "en": "English", "fr": "French", "es": "Spanish", "de": "German", "it": "Italian" } @app.route("/") def index(): return render_template("index.html") @app.route("/translate", methods=["POST"]) def translate_text(): data = request.get_json() text = data["text"] target_lang = data["target_language"] translated_text = translate_text_function(text, target_lang) return jsonify({"translated_text": translated_text}) def translate_text_function(text, target_lang="fr"): # Detect input text language input_lang = detect(text) # Load pre-trained translation model model_name = f'Helsinki-NLP/opus-mt-{input_lang}-{target_lang}' model = MarianMTModel.from_pretrained(model_name) tokenizer = MarianTokenizer.from_pretrained(model_name) # Tokenize input text inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True) # Translate input text translated = model.generate(**inputs) # Decode translated text translated_text = tokenizer.decode(translated[0], skip_special_tokens=True) return translated_text if __name__ == "__main__": app.run(debug=True)