import streamlit as st import google.generativeai as genai from db.mongodb import detect_file_type from powerpoint.pptx import translate_pptx from excel.xlsx import translate_xlsx from excel.excel_translate import translate_csv from word.word_helper import translate_docx import dotenv import os from datetime import datetime, timedelta dotenv.load_dotenv(".env") genai.configure(api_key=os.getenv("GEMINI_API_KEY")) # Cấu hình giao diện st.set_page_config(page_title="Translate Your File", page_icon="🌍", layout="centered") # CSS custom st.markdown(""" """, unsafe_allow_html=True) # Upload file with st.container(): st.markdown("### 📂 Chọn file để dịch") uploaded_file = st.file_uploader("Kéo thả hoặc chọn file", type=['pptx', 'xlsx', 'csv', 'docx']) # Lựa chọn ngôn ngữ with st.container(): col1, col2 = st.columns(2) with col1: st.markdown('

🌐 Ngôn ngữ của tài liệu

', unsafe_allow_html=True) source_lang = st.selectbox(" ", ["Để máy tự xác định", "chinese", "english", "vietnamese", "japanese"], key="source_lang") with col2: st.markdown('

🌐 Ngôn ngữ muốn dịch sang

', unsafe_allow_html=True) target_lang = st.selectbox(" ", ["vietnamese", "chinese", "english", "japanese"], key="target_lang") # Xử lý file trực tiếp def process_file(file, file_type): progress_bar = st.progress(0) file_name = file.name progress_bar.progress(10) with st.spinner("🔍 Đang xử lý và dịch tài liệu..."): if file_type == "PPTX": output_io, output_name = translate_pptx(file, file_name, source_lang=source_lang, target_lang=target_lang) elif file_type == "Excel": output_io, output_name = translate_xlsx(file, file_name, source_lang=source_lang, target_lang=target_lang) elif file_type == "CSV": output_io, output_name = translate_csv(file, file_name, source_lang=source_lang, target_lang=target_lang) elif file_type == "Word": output_io, output_name = translate_docx(file, file_name, source_lang=source_lang, target_lang=target_lang) else: st.error("❌ Loại file không hỗ trợ!") return progress_bar.progress(100) if output_io: st.success("🎉 File đã được dịch thành công!") print(f"✅ File đã dịch: {output_name}") st.download_button("⬇️ Tải file về", data=output_io.getvalue(), file_name=output_name) end_time = datetime.now() + timedelta(hours=5) print(f"🕒 Thời gian upload: {end_time.strftime('%Y-%m-%d %H:%M:%S')}") else: st.error("❌ Xảy ra lỗi khi xử lý file.") # Nút xử lý if uploaded_file and st.button("🚀 Upload và dịch ngay!"): upload_time = datetime.now() + timedelta(hours=5) print("=" * 100) print(f"🕒 Thời gian upload: {upload_time.strftime('%Y-%m-%d %H:%M:%S')}") st.write(f"🕒 **Thời gian upload (UTC+5):** `{upload_time.strftime('%Y-%m-%d %H:%M:%S')}`") with st.spinner("🔎 Đang phát hiện loại file..."): file_type = detect_file_type(uploaded_file) st.write(f"🔍 **Loại file phát hiện:** `{file_type}`") process_file(uploaded_file, file_type)