File size: 2,811 Bytes
636dc45
 
 
 
 
 
 
 
 
 
 
 
b251148
636dc45
 
 
 
 
 
 
 
 
 
 
 
 
b251148
636dc45
 
 
 
 
 
b251148
636dc45
 
b251148
636dc45
 
b251148
636dc45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b251148
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from flask import Flask, request, jsonify
from deep_translator import GoogleTranslator
from langdetect import detect, LangDetectException
import logging

app = Flask(__name__)

# Настройка логирования
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def translate_text(text):
    """
    Определяет язык текста и переводит его на английский, если необходимо.

    Args:
        text (str): Текст для перевода.

    Returns:
        dict: Словарь с результатом перевода или оригинальным текстом, а также информацией об ошибке.
            Формат: {"result": "переведенный текст", "original": "исходный текст", "error": null/сообщение об ошибке}
    """
    try:
        language = detect(text)
        app.logger.info(f"Detected language: {language}")
    except LangDetectException as e:
        app.logger.error(f"Error detecting language: {e}")
        return {"result": text, "original": text, "error": f"Error detecting language: {e}"}

    if language != 'en':
        try:
            translator = GoogleTranslator(source=language, target='en')
            translated_text = translator.translate(text)
            app.logger.info(f"Translated from {language} to en")
            return {"result": translated_text, "original": text, "error": None}
        except Exception as e:
            app.logger.error(f"Error translating prompt: {e}")
            return {"result": text, "original": text, "error": f"Error translating text: {e}"}
    else:
        app.logger.info("Text is already in English")
        return {"result": text, "original": text, "error": None}

@app.route('/', methods=['POST'])
def translate_endpoint():
    """
    Эндпоинт для обработки POST запросов.
    Ожидает текст в теле запроса и возвращает перевод или оригинал в формате JSON.
    """
    if request.is_json:
        try:
            data = request.get_json()
            text = data.get('text')
            if not text:
                return jsonify({"error": "No text provided in request body"}), 400
            
            translation_result = translate_text(text)
            
            return jsonify(translation_result), 200

        except Exception as e:
            app.logger.error(f"Error processing request: {e}")
            return jsonify({"error": f"Error processing request: {e}"}), 500
    else:
      return jsonify({"error": "Request must be in json format"}), 400

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=7860, debug=True)