streamlit-gettext 文件
streamlit-gettext 是一個用於 Streamlit 的擴充套件,可協助應用程式實作在地化。它會參考瀏覽器的語言偏好,向使用者顯示相應的翻譯。
如果應用程式只在啟動時讀取一次瀏覽器語言,這個值可能會由所有使用者共用,導致大家看到第一位開啟應用程式的使用者所使用的語言。streamlit-gettext 會在每次翻譯訊息時檢查目前使用者的瀏覽器語言,因此同一個執行中的應用程式可以為不同使用者顯示不同語言。
本專案仍在開發中,文件內容和功能可能會有所變動。
這個套件可以做什麼?
- 翻譯文字。 使用
gettext標記需要翻譯的字串,通常會將它匯入為_。 - 處理單複數。 使用
ngettext根據數量選擇合適的訊息形式。 - 選擇語言。 套件可以參考瀏覽器的語言偏好。
簡單範例
以下示範如何在 Streamlit 應用程式中使用翻譯函式:
import streamlit as st
from i18n import gettext as _
from i18n import ngettext
st.write(_("Squirrel application"))
squirrels = st.slider(_("How many squirrels to show?"), 1, 100, 1)
st.write(
ngettext(
"There's %(num)d squirrel:",
"There're %(num)d squirrels:",
squirrels,
)
% {"num": squirrels},
)
st.write("🐿️" * squirrels)
_() 用來標記需要翻譯的文字。ngettext() 會根據松鼠的數量選擇合適的訊息形式,滑桿則可用來調整數量。
這只是程式碼範例,並非完整的設定指南。若要執行在地化應用程式,還需要翻譯檔案和專案設定。
手動切換語言
在這個範例中,使用者可以從選單選擇語言。所選語言會傳入 set_preferred_languages(),讓應用程式顯示相應的翻譯:
import streamlit as st
from i18n import get_available_languages, ngettext, set_preferred_languages
from i18n import gettext as _
language = st.segmented_control(
"Language",
options=get_available_languages(),
label_visibility="collapsed",
required=True,
)
if language:
set_preferred_languages([language])
st.write(_("Squirrel application"))
squirrels = st.slider(_("How many squirrels to show?"), 1, 100, 1)
st.write(
ngettext(
"There's %(num)d squirrel:",
"There're %(num)d squirrels:",
squirrels,
)
% {"num": squirrels},
)
st.write("🐿️" * squirrels)
試用範例應用程式
可在 Streamlit 示範應用程式查看實際效果。
範例原始碼位於範例目錄。
API 參考
函式與其他介面的說明請參閱 API 參考。