tx3bas commited on
Commit
a0ca30c
·
verified ·
1 Parent(s): 15c8645

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -18
app.py CHANGED
@@ -9,7 +9,6 @@ lang_dict = {
9
  'Auto': 'auto',
10
  'Español': 'es',
11
  'English': 'en',
12
- # Agrega más idiomas según necesites
13
  }
14
 
15
  lang_list = [k for k in lang_dict.keys() if k != 'Auto']
@@ -32,30 +31,30 @@ def split_text(text, limit=4000):
32
 
33
  def translate_html_content(text, source_lang, target_lang):
34
  soup = BeautifulSoup(text, 'html.parser')
35
-
36
  # Traducir nodos de texto
37
  for node in soup.find_all(text=True):
38
  if isinstance(node, NavigableString) and node.strip():
39
- # Obtener el texto a traducir
40
- text_to_translate = node.strip()
41
- # Dividir en fragmentos si es necesario
42
- chunks = split_text(text_to_translate)
43
  translated_chunks = [translate(chunk, target_lang, source_lang) for chunk in chunks]
44
  translated_text = ''.join(translated_chunks)
45
- # Reemplazar el texto, preservando espacios originales
 
 
 
 
 
 
46
  node.replace_with(translated_text)
47
-
48
- # Asegurar que los espacios alrededor de las etiquetas se conserven
49
  for element in soup.find_all(['p', 'span', 'b', 'strong']):
50
- # Verificar el nodo anterior
51
  if element.previous_sibling and isinstance(element.previous_sibling, NavigableString):
52
- if not element.previous_sibling.endswith(' '):
53
- element.previous_sibling += ' '
54
- # Verificar el nodo siguiente
55
  if element.next_sibling and isinstance(element.next_sibling, NavigableString):
56
- if not element.next_sibling.startswith(' '):
57
- element.next_sibling = ' ' + element.next_sibling
58
-
59
  return str(soup)
60
 
61
  def main(Texto, source_lang, target_lang):
@@ -64,7 +63,7 @@ def main(Texto, source_lang, target_lang):
64
 
65
  translated_text = translate_html_content(Texto, source_code, target_code)
66
  element_id = f"text-{uuid.uuid4()}"
67
-
68
  html_output = f"""
69
  <div style="position: relative; min-height: 100px;">
70
  <div id="translated-content">{translated_text}</div>
@@ -91,4 +90,4 @@ iface = gr.Interface(
91
  article="Desarrollada por © Artxe Web"
92
  )
93
 
94
- iface.launch()
 
9
  'Auto': 'auto',
10
  'Español': 'es',
11
  'English': 'en',
 
12
  }
13
 
14
  lang_list = [k for k in lang_dict.keys() if k != 'Auto']
 
31
 
32
  def translate_html_content(text, source_lang, target_lang):
33
  soup = BeautifulSoup(text, 'html.parser')
34
+
35
  # Traducir nodos de texto
36
  for node in soup.find_all(text=True):
37
  if isinstance(node, NavigableString) and node.strip():
38
+ original_text = node.strip()
39
+ chunks = split_text(original_text)
 
 
40
  translated_chunks = [translate(chunk, target_lang, source_lang) for chunk in chunks]
41
  translated_text = ''.join(translated_chunks)
42
+
43
+ # Asegurar que se mantengan los espacios antes y después del nodo
44
+ if node.previous_sibling and not node.previous_sibling.endswith(' '):
45
+ translated_text = ' ' + translated_text
46
+ if node.next_sibling and not node.next_sibling.startswith(' '):
47
+ translated_text = translated_text + ' '
48
+
49
  node.replace_with(translated_text)
50
+
51
+ # Asegurar espacios alrededor de etiquetas de bloque
52
  for element in soup.find_all(['p', 'span', 'b', 'strong']):
 
53
  if element.previous_sibling and isinstance(element.previous_sibling, NavigableString):
54
+ element.insert_before(NavigableString(' ')) # Añadir espacio antes si no hay
 
 
55
  if element.next_sibling and isinstance(element.next_sibling, NavigableString):
56
+ element.insert_after(NavigableString(' ')) # Añadir espacio después si no hay
57
+
 
58
  return str(soup)
59
 
60
  def main(Texto, source_lang, target_lang):
 
63
 
64
  translated_text = translate_html_content(Texto, source_code, target_code)
65
  element_id = f"text-{uuid.uuid4()}"
66
+
67
  html_output = f"""
68
  <div style="position: relative; min-height: 100px;">
69
  <div id="translated-content">{translated_text}</div>
 
90
  article="Desarrollada por © Artxe Web"
91
  )
92
 
93
+ iface.launch()