tx3bas commited on
Commit
7b54c20
·
verified ·
1 Parent(s): b31ca93

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -0
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from mtranslate import translate
3
+ import re
4
+
5
+ # Diccionario de idiomas y sus códigos
6
+ lang_dict = {
7
+ 'Español': 'es',
8
+ 'English': 'en',
9
+ 'Mandarín': 'zh',
10
+ 'Hindi': 'hi',
11
+ 'Árabe': 'ar',
12
+ 'Portugués': 'pt',
13
+ 'Bengalí': 'bn',
14
+ 'Ruso': 'ru',
15
+ 'Japonés': 'ja',
16
+ 'Panyabí': 'pa',
17
+ 'Alemán': 'de',
18
+ 'Javanés': 'jw',
19
+ 'Coreano': 'ko',
20
+ 'Francés': 'fr',
21
+ 'Vietnamita': 'vi',
22
+ 'Turco': 'tr',
23
+ 'Italiano': 'it',
24
+ 'Ucraniano': 'uk',
25
+ 'Tailandés': 'th',
26
+ 'Guyaratí': 'gu',
27
+ 'Polaco': 'pl',
28
+ 'Griego': 'el',
29
+ 'Neerlandés': 'nl',
30
+ 'Sueco': 'sv',
31
+ 'Rumano': 'ro',
32
+ 'Checo': 'cs',
33
+ 'Húngaro': 'hu',
34
+ 'Hebreo': 'he',
35
+ 'Indonesio': 'id',
36
+ 'Nepalí': 'ne',
37
+ 'Gallego': 'gl',
38
+ 'Catalán': 'ca',
39
+ 'Vasco': 'eu'
40
+ }
41
+
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
+ lang_code = lang_dict[lang]
60
+ chunks = split_text(text)
61
+ translated_chunks = [translate(chunk, lang_code) for chunk in chunks]
62
+ translated_text = ''.join(translated_chunks)
63
+ return translated_text
64
+
65
+ def main():
66
+ st.markdown('<link href="https://cdn.jsdelivr.net/npm/flag-icons/css/flag-icons.min.css" rel="stylesheet">', unsafe_allow_html=True)
67
+
68
+ st.title("Traducción sin límites")
69
+
70
+ text = st.text_area("Texto a traducir", height=200)
71
+
72
+ lang = st.selectbox("Idioma", lang_list, format_func=lambda x: f'<span class="fi fi-{lang_dict[x]}"></span> {x}', key='selectbox_lang')
73
+
74
+ if st.button("Traducir"):
75
+ translated_text = translate_text(lang, text)
76
+
77
+ st.write("Texto traducido:")
78
+ st.write(translated_text)
79
+ st.write(f'<button onclick="navigator.clipboard.writeText(\'{translated_text}\')">Copiar al portapapeles</button>', unsafe_allow_html=True)
80
+
81
+ if __name__ == "__main__":
82
+ main()