tx3bas commited on
Commit
f805301
·
verified ·
1 Parent(s): 4a000a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -57
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  from mtranslate import translate
3
- import streamlit as st
4
- import re
5
  # Diccionario de idiomas y sus códigos
6
  lang_dict = {
7
  'Español': 'es',
@@ -42,65 +42,24 @@ lang_dict = {
42
  lang_list = list(lang_dict.keys())
43
 
44
  def split_text(text, limit=4000):
45
- sentences = re.split(r'([;.])', text)
46
- chunks = []
47
- chunk = ''
48
- for i in range(0, len(sentences), 2):
49
- sentence = sentences[i] + (sentences[i+1] if i+1 < len(sentences) else '')
50
- if len(chunk) + len(sentence) > limit:
51
- chunks.append(chunk)
52
- chunk = ''
53
- chunk += sentence
54
- if chunk:
55
- chunks.append(chunk)
56
- return chunks
57
 
58
  def translate_text(lang, text):
59
- # Obtener el código del idioma
60
- lang_code = lang_dict[lang]
61
-
62
- # Dividir el texto en fragmentos que no superen el límite de 4000 caracteres
63
- chunks = split_text(text)
64
-
65
- translated_chunks = [translate(chunk, lang_code) for chunk in chunks]
66
- translated_text = ''.join(translated_chunks)
67
- return translated_text
68
 
69
  def copy_to_clipboard(text):
70
  # Esta función se ejecutará al hacer clic en el botón de copiar
71
- st.write(f"Texto copiado al portapapeles: {text}")
72
- st.write("¡Ahora puedes pegar el texto donde lo necesites!")
73
- st.text(text)
74
-
75
- with gr.Blocks(analytics_enabled=False) as app:
76
- gr.HTML("<h3><center>🌐 Traducción sin límites<h3><center>")
77
- Source = gr.Textbox(label="Introduce el texto a traducir")
78
- Language = gr.Dropdown(lang_list, label="Idioma", default="Español")
79
- Translate = gr.Button("Traducir 💬")
80
- gr.HTML("<br>")
81
- Result = gr.Textbox(label="Resultado")
82
-
83
- Translate.click(
84
- translate_text,
85
- inputs=[Language, Source],
86
- outputs=[Result],
87
- api_name="translate",
88
- )
89
 
90
- gr.HTML("<div><b>Copiar al Portapapeles:</b> <span id='copy_text'></span> <button class='lg secondary svelte-cmf5ev' style='font-size: small; padding: 2px; color: #808080ba; border: none; margin-left: 5px;' onclick='copyToClipboard()'>✂</button></div>")
 
 
 
 
 
 
 
 
91
 
92
- # Agregar una función JavaScript para copiar al portapapeles
93
- gr.HTML("""
94
- <script>
95
- function copyToClipboard() {
96
- var textToCopy = document.querySelector("textarea[data-testid='gr-textarea-1']").value;
97
- navigator.clipboard.writeText(textToCopy).then(function() {
98
- alert('Texto copiado al portapapeles');
99
- }).catch(function(err) {
100
- console.error('No se pudo copiar el texto: ', err);
101
- });
102
- }
103
- </script>
104
- """)
105
-
106
- app.launch(inline=True)
 
1
  import gradio as gr
2
  from mtranslate import translate
3
+ import pyperclip
4
+
5
  # Diccionario de idiomas y sus códigos
6
  lang_dict = {
7
  'Español': 'es',
 
42
  lang_list = list(lang_dict.keys())
43
 
44
  def split_text(text, limit=4000):
45
+ # Tu función split_text sigue igual
 
 
 
 
 
 
 
 
 
 
 
46
 
47
  def translate_text(lang, text):
48
+ # Tu función translate_text sigue igual
 
 
 
 
 
 
 
 
49
 
50
  def copy_to_clipboard(text):
51
  # Esta función se ejecutará al hacer clic en el botón de copiar
52
+ pyperclip.copy(text)
53
+ return "Texto copiado al portapapeles."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
+ iface = gr.Interface(
56
+ fn=translate_text,
57
+ inputs=[gr.Dropdown(lang_list, label="Idioma de Origen", default="Español"), gr.Textbox(label="Texto a Traducir")],
58
+ outputs=[gr.Textbox(label="Resultado de la Traducción"), gr.Button("Copiar al Portapapeles")],
59
+ title="🌐 Traducción sin límites",
60
+ description="Ingresa el texto que deseas traducir y selecciona el idioma de destino.",
61
+ article="Desarrollado por © Tu Nombre",
62
+ capture_session=True # Habilita la captura de sesión para acceder al botón de copiar.
63
+ )
64
 
65
+ iface.launch()