import streamlit as st from streamlit_option_menu import option_menu from utils.functions import ( get_phone_info, simple_checks, analyze_message, init_stats_file, update_stats, add_to_history, is_fake_number, init_fake_numbers_file, init_history_file ) import os # 1. Konfiguracja strony - musi by膰 pierwszym poleceniem Streamlit st.set_page_config( page_title="馃摫 Detektor Fa艂szywych Wiadomo艣ci SMS", page_icon="馃摫", layout="wide" ) # 2. Inicjalizacja plik贸w init_stats_file() init_fake_numbers_file() init_history_file() # 3. Ukrycie bocznego menu Streamlit za pomoc膮 CSS hide_sidebar_style = """ """ st.markdown(hide_sidebar_style, unsafe_allow_html=True) # 4. Definiowanie t艂umacze艅 translations = { 'Polish': { 'menu_analysis_sms': 'Analiza wiadomo艣ci', 'menu_about': 'O Projekcie', 'menu_education': 'Edukacja', 'menu_statistics': 'Statystyki', 'menu_contact': 'Kontakt', 'language_select': 'Wybierz j臋zyk / Sprache ausw盲hlen / Select language', 'separator': '---', 'language_selected': 'Wybrany j臋zyk: ' }, 'German': { 'menu_analysis_sms': 'SMS-Analyse', 'menu_about': '脺ber das Projekt', 'menu_education': 'Bildung', 'menu_statistics': 'Statistiken', 'menu_contact': 'Kontakt', 'language_select': 'Wybierz j臋zyk / Sprache ausw盲hlen / Select language', 'separator': '---', 'language_selected': 'Ausgew盲hlte Sprache: ' }, 'English': { 'menu_analysis_sms': 'SMS Analysis', 'menu_about': 'About the Project', 'menu_education': 'Education', 'menu_statistics': 'Statistics', 'menu_contact': 'Contact', 'language_select': 'Wybierz j臋zyk / Sprache ausw盲hlen / Select language', 'separator': '---', 'language_selected': 'Selected Language: ' } } # 5. Wyb贸r j臋zyka z flagami w jednym wierszu if 'language' not in st.session_state: st.session_state.language = 'Polish' # Nowy spos贸b na wyb贸r j臋zyka bez u偶ycia przycisk贸w "POST" selected_language = st.selectbox( translations[st.session_state.language]['language_select'], options=['Polish', 'German', 'English'], index=['Polish', 'German', 'English'].index(st.session_state.language) ) # Zapis wybranego j臋zyka w sesji st.session_state.language = selected_language st.markdown(f"**{translations[selected_language]['language_selected']} {selected_language}**") # Dodanie separatora pod wyborem j臋zyka st.markdown("---") # 6. Pobranie przet艂umaczonych opcji menu menu_keys = ['menu_analysis_sms', 'menu_about', 'menu_education', 'menu_statistics', 'menu_contact'] menu_options = [translations[selected_language][key] for key in menu_keys] # 7. Dodanie niestandardowego CSS do wzmocnienia styl贸w menu custom_css = """ """ st.markdown(custom_css, unsafe_allow_html=True) # 8. Tworzenie poziomego menu w kontenerze with st.container(): selected = option_menu( menu_title=None, # Brak tytu艂u menu options=menu_options, icons=["shield-check", "info-circle", "book", "bar-chart", "envelope"], menu_icon=None, # Usuni臋cie ikony menu default_index=0, orientation="horizontal", styles={ "container": {"padding": "0!important", "background-color": "transparent"}, "icon": {"color": "inherit", "font-size": "18px"}, "nav-link": { "font-size": "16px", "text-align": "center", "margin": "0px", "padding": "10px 20px", "border-radius": "5px", "background-color": "transparent", "color": "inherit", "transition": "background-color 0.3s ease, color 0.3s ease" }, "nav-link-selected": { "background-color": "#02ab21", "color": "#ffffff", "border-radius": "5px", "padding": "10px 20px" }, } ) # 9. Dodanie separatora st.markdown("---") # Dodaje poziom膮 lini臋 # 10. Importowanie i wywo艂ywanie modu艂贸w dla ka偶dej zak艂adki try: if selected == translations[selected_language]['menu_analysis_sms']: from pages.Analysis import show_analysis show_analysis(selected_language) elif selected == translations[selected_language]['menu_about']: from pages.About import main as show_about show_about(selected_language) elif selected == translations[selected_language]['menu_education']: from pages.Education import main as show_education show_education(selected_language) elif selected == translations[selected_language]['menu_statistics']: from pages.Statistics import main as show_statistics show_statistics(selected_language) elif selected == translations[selected_language]['menu_contact']: from pages.Contact import main as show_contact show_contact(selected_language) except ImportError as e: st.error(f"B艂膮d importu: {e}") except TypeError as e: st.error(f"B艂膮d wywo艂ania funkcji: {e}")