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 参考。