Przejdź do treści

Dokumentacja streamlit-gettext

streamlit-gettext to rozszerzenie do Streamlit, które ułatwia dodawanie tłumaczeń do aplikacji. Biblioteka uwzględnia preferencje językowe przeglądarki i wyświetla użytkownikowi odpowiednie tłumaczenie.

Jeśli język przeglądarki zostanie odczytany tylko raz przy uruchomieniu aplikacji, ta wartość może zostać użyta dla wszystkich użytkowników — każdy zobaczy język pierwszej osoby, która otworzyła aplikację. streamlit-gettext rozwiązuje ten problem: przy każdym tłumaczeniu sprawdza język przeglądarki bieżącego użytkownika. Dzięki temu ta sama uruchomiona aplikacja może wyświetlać różne języki różnym osobom.

Projekt jest nadal rozwijany, dlatego dokumentacja i dostępne funkcje mogą się zmieniać.

Co potrafi biblioteka?

  • Tłumaczy tekst. Oznaczaj ciągi do tłumaczenia za pomocą gettext, zwykle importowanej pod krótką nazwą _.
  • Obsługuje liczbę mnogą. Funkcja ngettext wybiera odpowiednią formę komunikatu w zależności od liczby.
  • Wybiera język. Biblioteka może uwzględniać preferencje językowe przeglądarki.

Prosty przykład

Oto jak użyć funkcji tłumaczących w aplikacji 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)

Wywołanie _() oznacza tekst do przetłumaczenia. ngettext() dobiera formę komunikatu do liczby wiewiórek, a suwak pozwala zmieniać ich liczbę.

To tylko przykład kodu, a nie pełna instrukcja konfiguracji. Do uruchomienia zlokalizowanej aplikacji potrzebne są również pliki tłumaczeń i konfiguracja projektu.

Ręczna zmiana języka

W tej wersji użytkownik sam wybiera język z menu. Wybrany język jest przekazywany do set_preferred_languages(), dzięki czemu aplikacja wyświetla odpowiednie tłumaczenie:

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)

Wypróbuj aplikację

Zobacz, jak to działa, w demonstracyjnej aplikacji Streamlit.

Kod źródłowy znajdziesz w katalogu z przykładem.

Dokumentacja API

Opis funkcji i pozostałych interfejsów biblioteki znajdziesz w dokumentacji API.