File size: 1,455 Bytes
46f80b5
4b8cdaf
 
 
 
46f80b5
 
4b8cdaf
 
 
 
 
 
 
 
 
46f80b5
 
 
 
 
 
 
 
 
2d8ef64
46f80b5
 
2d8ef64
4b8cdaf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46f80b5
 
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
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)