Ruka hadi kwenye maudhui

Ainisho

Unaweza kutumia maktaba hii bila kusoma ukurasa huu — mafunzo na mwongozo hufunika matumizi ya kila siku. Ukurasa huu ni kwa ajili ya waandishi wa zana: makubaliano ambayo maktaba huyatekeleza yameandikwa kama mkataba mdogo na thabiti ili utekelezaji mwingine — kitoaji, IDE, kikaguzi cha aina, au pygettext ya siku zijazo — uweze kuyalenga na kushirikiana. Kwa kanuni zilezile zikielezwa pamoja na sababu zake, na jinsi utekelezaji wa marejeo unavyozitekeleza, soma Jinsi inavyofanya kazi kwanza.

Soma ainisho v1

Kanuni katika skrini moja

msgid ni muunganiko, kwa mpangilio wa chanzo, wa vipande halisi pamoja na alama moja ya {name} kwa kila kiingizio. Mabano halisi hukwepeshwa ({ huwa {{). Jina lazima liwe jina rahisi la kishika nafasi — str.isidentifier() ni kweli nalo si neno la msingi la Python. Ubadilishaji na maainisho ya umbizo si sehemu ya msgid; hubaki chini ya udhibiti wa programu.

t-string 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}" imekataliwa — si jina rahisi

Tafsiri ni halali inapokuwa na vishika nafasi vya {name} tupu pekee, kila jina linalohitajika linaonekana angalau mara moja, na hakuna jina lililo nje ya seti inayoruhusiwa linaloonekana. Kupanga upya na kurudia hakuna vizuizi kwa makusudi: vyote viwili vinaweza kuwa vya lazima kisarufi katika lugha lengwa.

Kwa wingi, kinachoruhusiwa ni muungano wa majina ya matawi nacho kinachohitajika ni mwingiliano wao — hivyo t"One file" dhidi ya t"{n} files" huacha n ikipatikana kwa mfasiri wa umbo lolote lakini haihitajiki katika lolote, na kanuni za wingi za lugha lengwa zinaweza kutofautiana na za chanzo.

msgid tupu haitafutwi kamwe, kwa sababu gettext huihifadhi kwa kichwa cha metadata cha katalogi.

Utiifu

conformance/v1.json ni hati ileile katika umbo linalosomeka na mashine: kesi zinazoramanisha muundo tuli wa t-string kwenda msgid, na msgid pamoja na muundo wa katalogi kwenda mfuatano ulioonyeshwa au kukataliwa.

Utekelezaji hutii ainisho v1 unapozalisha tena kila kesi. Kesi hutaja tu kile ainisho hulibainisha — msgid zilizotokezwa, miundo iliyokubaliwa na iliyokataliwa, matokeo yaliyoonyeshwa — na kamwe si ujumbe wa hitilafu au aina ya hitilafu, hivyo utekelezaji katika lugha nyingine unaweza kuziendesha bila kuzibadilisha.

Viingizio huelezwa kimuundo, kamwe si kama msimbo chanzo wa Python:

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

Sehemu ya "spec" si toleo la ainisho — kila kisa katika v1.json ni cha ainisho v1. Hutaja sehemu ya SPEC.md ambayo kisa hicho hujaribu, hivyo "2.2" husomeka kama §2.2, kanuni ya kutokeza tokeni ya kishika nafasi.

Utekelezaji wa marejeo huendesha seti hiyo kama sehemu ya seti yake ya majaribio, hivyo maandishi na msimbo haviwezi kutengana kimyakimya.

Utoaji wa matoleo

Hili ni ainisho v1. Mabadiliko yasiyooana na ya nyuma katika utokezaji wa msgid au katika uthibitishaji wa tafsiri huongeza toleo na husafirisha conformance/vN.json mpya kando ya iliyopo. Ufafanuzi wa nyongeza usiobadilisha wala msgid zilizotokezwa wala miundo inayokubaliwa haufanyi hivyo.