Skoči na vsebino

Specifikacija

To knjižnico lahko uporabljate, ne da bi prebrali to stran — vadnica in vodnik pokrivata vsakdanjo rabo. Ta stran je namenjena avtorjem orodij: dogovor, ki ga knjižnica uresničuje, je zapisan kot majhna, stabilna pogodba, da ga lahko druga izvedba — ekstraktor, IDE, preverjevalnik tipov ali prihodnji pygettext — vzame za cilj in z njo sodeluje. Če želite ista pravila razložena z razlogi in videti, kako jih izpelje referenčna izvedba, najprej preberite Kako deluje.

Preberite specifikacijo v1

Pravila na enem zaslonu

Msgid je stik — v vrstnem redu iz izvorne kode — dobesednih odsekov in po ene značke {name} na vsako interpolacijo. Dobesedni zaviti oklepaji so ubežno zapisani ({ postane {{). Ime mora biti preprosto ime ograde — str.isidentifier() je resničen in ime ni Pythonova ključna beseda. Pretvorbe in formatne specifikacije niso del msgida; ostanejo pod nadzorom aplikacije.

t-niz msgid
t"Hello {name}" Hello {name}
t"Total: {amount:,.2f}" Total: {amount}
t"Config {{raw}} is {value}" Config {{raw}} is {value}
t"Hello {user.name}" zavrnjeno — ni preprosto ime

Prevod je veljaven, kadar vsebuje samo gole ograde {name}, se vsako zahtevano ime pojavi vsaj enkrat in se ne pojavi nobeno ime zunaj dovoljene množice. Prerazporejanje in ponavljanje sta namenoma neomejena: oboje je lahko v ciljnem jeziku slovnično nujno.

Pri množini je dovoljeno unija imen obeh vej, zahtevano pa njun presek — tako t"One file" nasproti t"{n} files" pusti n na voljo prevajalcu katere koli oblike, a ga ne zahteva od nobene, in množinska pravila ciljnega jezika se smejo razlikovati od izvornih.

Prazen msgid se nikoli ne išče, ker ga gettext rezervira za glavo s podatki o katalogu.

Skladnost

conformance/v1.json je isti dokument v strojno berljivi obliki: primeri, ki preslikajo statično zgradbo t-niza v msgid, ter msgid skupaj z vzorcem iz kataloga v izrisan niz ali v zavrnitev.

Izvedba je skladna s specifikacijo v1, kadar ponovi vsak primer. Primeri poimenujejo samo tisto, kar specifikacija določa — izpeljane msgide, sprejete in zavrnjene vzorce, izrisan izhod — nikoli pa sporočila o napaki ali vrste izjem, tako da jih izvedba v drugem jeziku lahko požene nespremenjene.

Interpolacije so opisane strukturno, nikoli kot Pythonova izvorna koda:

{
  "spec": "2.2",
  "name": "format spec stays out of the msgid",
  "source": [
    "Total: ",
    {"expression": "amount", "value": 1234.5, "format_spec": ",.2f"}
  ],
  "msgid": "Total: {amount}"
}

Polje "spec" ni verzija specifikacije — vsak primer v v1.json sodi k specifikaciji v1. Poimenuje razdelek datoteke SPEC.md, ki ga primer preverja, zato se "2.2" bere kot §2.2, pravilo za izpeljavo žetona ograde.

Referenčna izvedba poganja to zbirko kot del svoje testne zbirke, tako da se besedilo in koda ne moreta tiho razhajati.

Verzioniranje

To je specifikacija v1. Nazaj nezdružljiva sprememba izpeljave msgida ali preverjanja prevodov poveča verzijo in prinese novo datoteko conformance/vN.json ob obstoječi. Dodatna pojasnila, ki ne spremenijo ne izpeljanih msgidov ne sprejetih vzorcev, tega ne storijo.