Gå till innehållet

API

Allt nedan exporteras från gettext_tstrings. Ingenting annat är publikt. Den här sidan är signaturreferensen; för utarbetade exempel på varje funktion, se guiden.

Översätta

Varje funktion tar sin t-string som positionsargument och accepterar två nyckelordsargument: translations (som faller tillbaka till kontextbindningen, sedan till standardbibliotekets globala funktioner) och strict (se Guide).

Funktion Signatur
gettext (template, /, *, translations=None, strict=False) -> str
ngettext (singular, plural, n, /, *, translations=None, strict=False) -> str
pgettext (context, template, /, *, translations=None, strict=False) -> str
npgettext (context, singular, plural, n, /, *, translations=None, strict=False) -> str
tr alias för gettext
ntr alias för ngettext

Translator

En frusen dataklass som binder ett översättningsobjekt, så att anropsplatserna inte upprepar det.

Translator(translations, strict=False)

Den är anropbar (_(t"…")) och bär gettext, ngettext, pgettext, npgettext samt aliasen tr / ntr.

Kontextbindning

Namn Syfte
use_translations(translations) Bind under ett with-blocks varaktighet, återställ sedan.
set_translations(translations) Bind utan block, för ramverksstyrda livscykler.
get_translations() Läs den aktuella bindningen, eller None.

Bindningen är en ContextVar, så den är per kontext och säker under samtidighet.

Uppskjutna strängar

Namn Syfte
lazy_gettext(template, /, *, strict=False) Skjut upp översättningen till varje rendering.
lazy_pgettext(context, template, /, *, strict=False) Den kontextuella formen.
LazyString Vad båda returnerar. Renderar genom str() och format() på det språk som är bundet i det ögonblicket, jämförs lika med sin renderade text, och är avsiktligt ohashbar.

Utarbetade exempel, inklusive varför strict hör hemma vid definitionen, finns under Uppskjuten översättning.

Lägre nivå

compile_template(template, /) -> CompiledTemplate

Kompilera en t-string, med återanvändning av dess cachade statiska plan.

CompiledTemplate

Medlem Betydelse
.msgid Den stabila gettext-meddelandeidentifieraren.
.placeholders Platshållarnamnen i första förekomstens ordning.
.render(pattern) Validera ett mönster och rendera det. Kastar alltid vid en missmatchning.

Typer och fel

Translations

Ett runtime_checkable Protocol för de fyra standardmetoderna, alla med enbart positionsargument:

class Translations(Protocol):
    def gettext(self, message: str, /) -> str: ...
    def ngettext(self, singular: str, plural: str, n: int, /) -> str: ...
    def pgettext(self, context: str, message: str, /) -> str: ...
    def npgettext(self, context: str, singular: str, plural: str, n: int, /) -> str: ...

gettext.NullTranslations, gettext.GNUTranslations och Babels Translations uppfyller det alla.

Undantag

Klass Kastas när
TStringError Basklass för de två nedan.
InvalidTemplateError Käll-t-strängen bryter konventionen — en komplex interpolation, eller ett upprepat namn med olika formatering.
InvalidTranslationError Översättningen gör det. Under det överseende standardläget loggas detta och källtexten renderas i stället.

Ingångspunkter för extrahering

Registreras automatiskt vid installation; du hänvisar till dem med namn, inte genom import.

Grupp Namn Används av
babel.extractors gettext_tstrings method i babel.cfg.
babel.checkers gettext_tstrings pybabel compile, automatiskt.

Prestanda

Hela redogörelsen — vad som cachas, vad cacharna nycklas på, och de uppmätta siffrorna — är Den heta vägen. Den korta versionen: valideringen cachas, hoppas aldrig över, och hela renderingen kostar en bråkdel av en mikrosekund. Kör mätningen på ditt eget mål:

uv run python benchmarks/runtime.py