from transformers import pipeline import gradio as gr # Define el modelo de traducción inglés-español modelo_traduccion = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es") # Define el modelo de clasificación de idiomas modelo_idioma = pipeline("text-classification", model="papluca/xlm-roberta-large-language-detection") def detectar_idioma(texto): """ Detecta el idioma del texto utilizando un modelo de clasificación. Args: texto (str): El texto del cual se quiere detectar el idioma. Returns: str: El código del idioma detectado (ej: 'en', 'es'). """ try: resultado = modelo_idioma(texto, top_k=1)[0] return resultado['label'] except Exception as e: print(f"Error en la detección de idioma: {e}") return None def traducir_texto(texto_en): """ Traduce el texto de entrada del inglés al español, previa verificación del idioma. Args: texto_en (str): El texto en inglés que se va a traducir. Returns: str: El texto traducido al español o un mensaje de error si el idioma no es inglés. """ if not texto_en.strip(): return "" idioma_detectado = detectar_idioma(texto_en) if idioma_detectado == 'en': try: resultado = modelo_traduccion(texto_en) return resultado[0]['translation_text'] except Exception as e: return f"Error en la traducción: {e}" else: return "Por favor, introduce texto en inglés para traducir." def borrar_entrada(texto_entrada): """ Borra el texto del cuadro de texto de entrada. Args: texto_entrada (str): El texto actual en el cuadro de texto de entrada. Returns: str: Una cadena vacía. """ return "" with gr.Blocks() as interfaz_traductor: """ Define la interfaz gráfica de la aplicación de traducción de inglés a español con detección de idioma y título estándar. """ gr.Markdown("# Traductor Inglés a Español") with gr.Row(): with gr.Column(): texto_entrada_en = gr.Textbox(label="Texto en inglés", placeholder="Pega aquí el texto en inglés", lines=10) boton_borrar = gr.Button("Borrar todo") with gr.Column(): texto_salida_es = gr.Textbox(label="Traducción al español", placeholder="La traducción aparecerá aquí", interactive=False, lines=10) gr.Markdown("*Puedes copiar el texto traducido seleccionándolo y usando Ctrl+C (o Cmd+C en macOS).*") texto_entrada_en.change(traducir_texto, inputs=texto_entrada_en, outputs=texto_salida_es) boton_borrar.click(borrar_entrada, inputs=texto_entrada_en, outputs=texto_entrada_en) interfaz_traductor.launch()