# Copyright (C) 2025 AIDC-AI # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Header components for web UI """ import streamlit as st from web.i18n import tr, get_available_languages, set_language from web.utils.streamlit_helpers import safe_rerun def render_header(): """Render page header with title and language selector""" col1, col2 = st.columns([4, 1]) with col1: st.markdown(f"

{tr('app.title')}

", unsafe_allow_html=True) with col2: render_language_selector() def render_language_selector(): """Render language selector at the top""" languages = get_available_languages() lang_options = [f"{code} - {name}" for code, name in languages.items()] current_lang = st.session_state.get("language", "zh_CN") current_index = list(languages.keys()).index(current_lang) if current_lang in languages else 0 selected = st.selectbox( tr("language.select"), options=lang_options, index=current_index, label_visibility="collapsed" ) selected_code = selected.split(" - ")[0] if selected_code != current_lang: st.session_state.language = selected_code set_language(selected_code) safe_rerun()