36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
# libs/manage_languages.py
|
|
|
|
from langdetect import detect
|
|
from fastapi import HTTPException
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def validate_language(language: str) -> None:
|
|
"""Validate the language parameter. Throws an HTTPException if the language is invalid."""
|
|
valid_languages = {"french", "italian", "english", "german", "auto"}
|
|
if language not in valid_languages:
|
|
raise HTTPException(
|
|
status_code=400,
|
|
detail="Invalid language. Must be one of: french, italian, english, german, or auto"
|
|
)
|
|
|
|
def detect_language(current_message: str) -> str:
|
|
"""Detect the language of the current message. Defaults to French if detection fails."""
|
|
try:
|
|
detected_lang = detect(current_message)
|
|
if detected_lang == "fr":
|
|
language = "french"
|
|
elif detected_lang == "it":
|
|
language = "italian"
|
|
elif detected_lang == "en":
|
|
language = "english"
|
|
elif detected_lang == "de":
|
|
language = "german"
|
|
else:
|
|
language = "french"
|
|
logger.info(f"Detected language: {language}")
|
|
return language
|
|
except Exception as e:
|
|
logger.error(f"Language detection failed: {str(e)}")
|
|
return "french"
|