Documentação do streamlit-gettext
streamlit-gettext é uma extensão para Streamlit que facilita a localização de aplicativos. A biblioteca considera as preferências de idioma do navegador e exibe a tradução adequada para cada pessoa.
Se o aplicativo consultar o idioma do navegador apenas uma vez ao iniciar, esse valor poderá ser reutilizado para todas as pessoas: todos verão o idioma da primeira pessoa que abriu o aplicativo. streamlit-gettext evita esse problema verificando o idioma do navegador de cada usuário sempre que traduz uma mensagem. Assim, o mesmo aplicativo pode ser exibido em idiomas diferentes para pessoas diferentes.
O projeto ainda está em desenvolvimento, então a documentação e os recursos disponíveis podem mudar.
O que a biblioteca faz?
- Traduz textos. Marque as frases que precisam de tradução com
gettext, geralmente importado com o nome curto_. - Trata singular e plural. Use
ngettextpara escolher a forma adequada da mensagem de acordo com a quantidade. - Escolhe o idioma. A biblioteca pode considerar as preferências de idioma do navegador.
Exemplo simples
Veja como usar as funções de tradução em um aplicativo 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)
A chamada _() marca o texto que será traduzido. ngettext() escolhe a forma da mensagem de acordo com a quantidade de esquilos, e o controle deslizante permite alterar esse número.
Este é apenas um exemplo de código, não um guia completo de configuração. Para executar um aplicativo localizado, também são necessários os arquivos de tradução e a configuração do projeto.
Troca manual de idioma
Nesta versão, a pessoa escolhe o idioma em um menu. A seleção é passada para set_preferred_languages() para que o aplicativo exiba a tradução correspondente:
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)
Experimente o aplicativo
Veja como funciona no aplicativo de demonstração no Streamlit.
O código-fonte está disponível no diretório do exemplo.
Referência da API
Consulte a referência da API para ver a descrição das funções e de outras interfaces da biblioteca.