Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -8,7 +8,7 @@ st.set_page_config(page_title="Kurdish Translator", layout="wide")
|
|
| 8 |
|
| 9 |
# Initialize session state
|
| 10 |
if "theme" not in st.session_state:
|
| 11 |
-
st.session_state.theme = "
|
| 12 |
if "src_lang" not in st.session_state:
|
| 13 |
st.session_state.src_lang = "English"
|
| 14 |
if "tgt_lang" not in st.session_state:
|
|
@@ -65,6 +65,35 @@ h1, h2, h3, p, label {{
|
|
| 65 |
from {{ transform: translateY(0); }}
|
| 66 |
to {{ transform: translateY(-12px); }}
|
| 67 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
.output-box {{
|
| 69 |
padding: 20px;
|
| 70 |
border-radius: 12px;
|
|
@@ -85,7 +114,24 @@ h1, h2, h3, p, label {{
|
|
| 85 |
def get_model():
|
| 86 |
return load_model()
|
| 87 |
|
| 88 |
-
model
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
|
| 90 |
# -----------------------------
|
| 91 |
# CALLBACK FUNCTIONS
|
|
@@ -171,4 +217,4 @@ if st.session_state.output_text:
|
|
| 171 |
|
| 172 |
# Copy section
|
| 173 |
st.code(st.session_state.output_text, language=None)
|
| 174 |
-
st.caption("π Select and copy the text above")
|
|
|
|
| 8 |
|
| 9 |
# Initialize session state
|
| 10 |
if "theme" not in st.session_state:
|
| 11 |
+
st.session_state.theme = "dark"
|
| 12 |
if "src_lang" not in st.session_state:
|
| 13 |
st.session_state.src_lang = "English"
|
| 14 |
if "tgt_lang" not in st.session_state:
|
|
|
|
| 65 |
from {{ transform: translateY(0); }}
|
| 66 |
to {{ transform: translateY(-12px); }}
|
| 67 |
}}
|
| 68 |
+
.model-loader {{
|
| 69 |
+
display: flex;
|
| 70 |
+
flex-direction: column;
|
| 71 |
+
justify-content: center;
|
| 72 |
+
align-items: center;
|
| 73 |
+
height: 60vh;
|
| 74 |
+
}}
|
| 75 |
+
.spinner {{
|
| 76 |
+
width: 60px;
|
| 77 |
+
height: 60px;
|
| 78 |
+
border: 4px solid {card_bg};
|
| 79 |
+
border-top: 4px solid #4A90E2;
|
| 80 |
+
border-radius: 50%;
|
| 81 |
+
animation: spin 1s linear infinite;
|
| 82 |
+
}}
|
| 83 |
+
@keyframes spin {{
|
| 84 |
+
0% {{ transform: rotate(0deg); }}
|
| 85 |
+
100% {{ transform: rotate(360deg); }}
|
| 86 |
+
}}
|
| 87 |
+
.loading-text {{
|
| 88 |
+
margin-top: 20px;
|
| 89 |
+
font-size: 18px;
|
| 90 |
+
color: #4A90E2;
|
| 91 |
+
animation: pulse 1.5s ease-in-out infinite;
|
| 92 |
+
}}
|
| 93 |
+
@keyframes pulse {{
|
| 94 |
+
0%, 100% {{ opacity: 1; }}
|
| 95 |
+
50% {{ opacity: 0.5; }}
|
| 96 |
+
}}
|
| 97 |
.output-box {{
|
| 98 |
padding: 20px;
|
| 99 |
border-radius: 12px;
|
|
|
|
| 114 |
def get_model():
|
| 115 |
return load_model()
|
| 116 |
|
| 117 |
+
# Show custom loader while model is loading
|
| 118 |
+
if "model_loaded" not in st.session_state:
|
| 119 |
+
loader_container = st.empty()
|
| 120 |
+
loader_container.markdown(
|
| 121 |
+
"""
|
| 122 |
+
<div class='model-loader'>
|
| 123 |
+
<div class='spinner'></div>
|
| 124 |
+
<div class='loading-text'>Loading translation model...</div>
|
| 125 |
+
</div>
|
| 126 |
+
""",
|
| 127 |
+
unsafe_allow_html=True
|
| 128 |
+
)
|
| 129 |
+
model = get_model()
|
| 130 |
+
st.session_state.model_loaded = True
|
| 131 |
+
loader_container.empty()
|
| 132 |
+
st.rerun()
|
| 133 |
+
else:
|
| 134 |
+
model = get_model()
|
| 135 |
|
| 136 |
# -----------------------------
|
| 137 |
# CALLBACK FUNCTIONS
|
|
|
|
| 217 |
|
| 218 |
# Copy section
|
| 219 |
st.code(st.session_state.output_text, language=None)
|
| 220 |
+
st.caption("π Select and copy the text above (Ctrl+C / Cmd+C)")
|