返回 Pixelle-Video
header.py
根目录 / web / components / header.py
1 # Copyright (C) 2025 AIDC-AI
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 # http://www.apache.org/licenses/LICENSE-2.0
7 # Unless required by applicable law or agreed to in writing, software
8 # distributed under the License is distributed on an "AS IS" BASIS,
9 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 # See the License for the specific language governing permissions and
11 # limitations under the License.
12
13 """
14 Header components for web UI
15 """
16
17 import streamlit as st
18
19 from web.i18n import tr, get_available_languages, set_language
20 from web.utils.streamlit_helpers import safe_rerun
21
22
23 def render_header():
24 """Render page header with title and language selector"""
25 col1, col2 = st.columns([4, 1])
26 with col1:
27 st.markdown(f"<h3>{tr('app.title')}</h3>", unsafe_allow_html=True)
28 with col2:
29 render_language_selector()
30
31
32 def render_language_selector():
33 """Render language selector at the top"""
34 languages = get_available_languages()
35 lang_options = [f"{code} - {name}" for code, name in languages.items()]
36
37 current_lang = st.session_state.get("language", "zh_CN")
38 current_index = list(languages.keys()).index(current_lang) if current_lang in languages else 0
39
40 selected = st.selectbox(
41 tr("language.select"),
42 options=lang_options,
43 index=current_index,
44 label_visibility="collapsed"
45 )
46
47 selected_code = selected.split(" - ")[0]
48 if selected_code != current_lang:
49 st.session_state.language = selected_code
50 set_language(selected_code)
51 safe_rerun()
52
53
53 lines PYTHON