Mitego¶
Tovuti hii imetafsiriwa katika lugha thelathini na tano, na kila toleo lilizalishwa kwa kuendesha mzunguko ambao nyaraka hizi hufundisha. Kwa vipimo vya sekta hii ni mkusanyiko mdogo wa maandishi, na hata hivyo ulitosha kuingia katika mingi kati ya mitego inayoifanya i18n kuwa ngumu kuliko inavyoonekana.
Kila sehemu iliyo hapa chini ni jambo lililokwenda kombo hapa kwa kweli, jinsi lilivyoonekana wakati huo, na mahali mstari unapopita kati ya kile maktaba inachokukagulia na kile ambacho bado kinahitaji hukumu ya binadamu.
Kubadili jina la kigezo hutafsiri sentensi upya¶
msgid ndio ufunguo wa katalogi, nalo jina lililoingizwa liko ndani yake.
Kuhamisha kigezo kimoja kisichobadilika hadi ngazi ya moduli na kukiandika kwa
herufi kubwa jinsi mtindo wa Python unavyotaka — author kuwa AUTHOR —
kuligeuza Copyright © 2026 {author} · MIT License kuwa ujumbe ambao hakuna
katalogi iliyowahi kuuona. Kila tafsiri ya mstari huo ingelazimika kupitia
mzunguko wa fuzzy tena, katika kila lugha, kwa ajili ya kubadili jina ambako
hakukubadilisha chochote ambacho msomaji angeweza kukiona.
Maktaba haitakuzuia: tahajia zote mbili ni majina halali ya vishika nafasi. Kinachofanya ni kulifanya jina listahili kulindwa — uingizaji lazima uwe jina rahisi, hivyo kilicho ndani ya ufunguo wa katalogi ni neno ambalo mfasiri anaweza kulisoma, si usemi.
Kesi ya kinyume ni salama kwa muundo wenyewe. Ubadilishaji na maainisho ya
umbizo si sehemu ya msgid, hivyo kukaza {amount:,.2f} kuwa {amount:,.0f}
hakubadilishi ufunguo wowote wala hakubatilishi tafsiri yoyote popote.
nplurals=2 haimaanishi mifuatano miwili tofauti¶
Kituruki, Kihungari, Kiajemi na Kibengali vyote hutangaza maumbo mawili ya
wingi, na katika lugha zote nne maumbo mawili ya ujumbe unaohesabu kihalali ni
mfuatano uleule — nomino hubaki katika umoja baada ya nambari, hivyo
{n} sayfa ni sahihi kwa ukurasa mmoja na kwa kurasa kumi. Mkaguzi
"anayerekebisha" urudufu huo huivunja tafsiri.
Kosa la kinyume ni rahisi vivyo hivyo. Umbo la tatu la Kilatvia lipo kwa ajili
ya sifuri pekee; la pili la Kislovenia ni uwili, kwa mbili hasa; umbo
la mwisho la Kiromania linahitaji neno de ambalo mawili yake ya kwanza
hayapaswi kuwa nalo. Kujaza nafasi hizo kwa umbo la umoja na la wingi
huzalisha katalogi ambayo ni batili kwa idadi zile tu ambazo hakuna mtu
huzijaribu.
Vibaya zaidi, mpangilio wa nafasi hizo si wa kimaana. Kiwelisi huyapanga
maumbo yake matano hivi kwamba msgstr[0] ndilo umbo la jumla nalo
msgstr[1] ndilo la umoja. Kuyajaza kwa mfuatano ulio dhahiri huweka umbo la
umoja pale ambapo kila ujumbe usiohesabu utalipata.
Maktaba haichukui lolote kati ya haya juu yake, na hilo ndilo lengo: kanuni ya wingi ya lugha lengwa hukaa katika kichwa cha katalogi yake yenyewe, nayo kanuni ya muungano/mwingiliano huruhusu tafsiri kuwa na maumbo mengi zaidi, au machache zaidi, kuliko chanzo. Kinachokaguliwa ni kitu pekee kinachoweza kukaguliwa bila kuijua lugha — kwamba kila umbo huhifadhi vishika nafasi linavyohitaji.
Maumbo mawili yanaweza kufanana kwa sababu¶
Kiayalandi kina maumbo matano ya wingi, na katika ripoti ya ujenzi ya tovuti
hii kadhaa kati yake huandikwa vilevile. Hilo si kosa la kunakili na kubandika:
leathanach huanza na l, nayo mabadiliko mawili ya mwanzo ambayo nambari za
Kiayalandi huyachochea hayaandikwi kamwe juu ya l. Maumbo hayo bado hufanya
kazi halisi — shina hupishana kati ya leathanach na leathanaigh, nazo idadi
zilizo zaidi ya kumi hurejea kwenye umoja — lakini hakuna nomino yenye maana ya
"ukurasa" ambayo ingeonyesha tofauti hiyo.
Ukaguzi wowote unaotia alama maumbo yanayojirudia kuwa ya kutiliwa shaka utakitia alama Kiayalandi kilicho sahihi. Mtu anayeijua lugha ndiye mkaguzi pekee kwa jambo hili.
Ujumbe unaweza kukubaliana na idadi moja tu¶
Ripoti ya ujenzi ya tovuti hii husema kurasa ngapi zilionyeshwa na ilichukua
muda gani. Kuiandika kama "Rendered {n} pages in {seconds} seconds" huonekana
kuwa jambo lisilo na madhara, kumbe hakutafsiriki: gettext huchagua umbo moja
kutokana na idadi moja, nayo idadi hiyo ni n. Neno seconds lingelazimika
kukubaliana na nambari ambayo mfumo wa wingi hauioni kamwe.
Suluhisho ni kukifanya kiasi cha pili kuwa alama ya kipimo badala ya neno, nazo
alama za vipimo zenyewe hutafsiriwa: katalogi za tovuti hii hubeba s, с,
ث, שנ׳ na mp, nayo taipografia ya Kifaransa, Kihispania na Kiswidi hutaka
nafasi kabla ya alama pale ambapo Kiingereza hakitaki. Hakuna hata mojawapo ya
hayo iliyo shughuli ya maktaba — lakini kutambua kwamba ujumbe unahitaji
makubaliano mawili ni shughuli yake, nacho kifaa pekee cha kufanya hivyo ni
kuuandika ujumbe kwa namna tofauti.
Kuhariri sentensi ya Kiingereza huhariri sarufi ya kigeni¶
Ukurasa wa mwanzo hapo awali ulisema "all ten language editions". Kuondoa nambari — uhariri wa neno moja katika Kiingereza, uliofanywa kwa sababu nambari hiyo iliendelea kupitwa na wakati — kuligeuza kiima cha wingi kuwa cha umoja. Kihispania, Kiitaliano, Kireno, Kirusi, Kiukreni, Kigiriki, Kiholanzi na Kiebrania vyote vililazimika kukikubalisha kitenzi upya; kadhaa vilihitaji shirikishi kibadilishwe pia.
Uhariri wa chanzo unaosomeka kama wa kawaida katika Kiingereza si wa kawaida
kwa walio chini ya mkondo. Kuutia alama ya fuzzy, jambo ambalo pybabel update
hulifanya, ndiyo mbinu inayompa kila mfasiri nafasi ya kulitambua.
Tofauti zisizoonekana hunusurika kila kunakili na kubandika¶
Mwongozo hunukuu uchunguzi wa hitilafu wenye (nаme) — ukwepaji wa makusudi,
kwa sababu herufi ambayo ukwepaji huo huitaja ni а ya Kisirili ambayo hakuna
msomaji anayeweza kuitofautisha na ile ya Kilatini. Wafasiri wa tovuti hii
waligeuza ukwepaji huo kuwa herufi halisi mara tano tofauti, katika lugha
tano tofauti, kila mara wakizalisha ukurasa ulioonekana sahihi kumbe ulikuwa na
kasoro.
Huu ndio maktaba huunasa, nayo ndiyo sababu uchunguzi wa hitilafu umeundwa jinsi ulivyo: kishika nafasi ambacho herufi zake huchanganya mifumo ya uandishi huripotiwa mara mbili, mara moja kwa namna inayosomeka na mara moja kwa namna iliyokwepwa, kwa sababu namna iliyokwepwa ndiyo tahajia pekee inayozitofautisha. Nafasi isiyokatika iliyo ndani ya mabano huchapishwa kwa nukta ya msimbo kwa sababu ileile. Kikaguzi cha katalogi huukataa ujumbe huo kabla haujaweza kusafirishwa.
Kutokuwa tupu si kutafsiriwa¶
Katalogi iliyojengwa kiunzi kwa kunakili msgid zake ndani ya msgstr hupita kila ukaguzi wa kijuujuu: hakuna kilicho tupu, hakuna kilicho fuzzy, seti ya jumbe hulingana kabisa. Toleo moja la tovuti hii lilisafirishwa hivyo kwa saa kadhaa. Vivyo hivyo kurasa nane za toleo jingine ambazo zilikuwa nakala zenye baiti zilezile za chanzo cha Kiingereza — jambo linalopita ukaguzi unaolinganisha vizuizi vya msimbo kati ya hivyo viwili, kwa sababu ni faili lilelile.
Wala hakuna kati ya haya mawili ambalo maktaba ya tafsiri inaweza kuliona. Yote
mawili ni rahisi kuyajaribu, lakini si kwa kudai kila ingizo litofautiane na
chanzo chake: OK, majina ya bidhaa, majina ya watu, vifupisho, na vitambulishi
vya msimbo vyote hujitafsiri vyenyewe, na ukaguzi unaokataza hilo huzalisha
matokeo chanya ya uongo milele.
Pima kiwango badala yake, kwa katalogi nzima au ukurasa mzima, kisha peleka zilizokithiri kwa binadamu. Jaribio la tovuti hii hufanya hasa hivyo — hulinganisha mistari ya nathari ya kila toleo dhidi ya chanzo cha Kiingereza nalo hushindwa zaidi ya 25% inayofanana. Toleo lililoghushiwa lilikuwa 87%; kila tafsiri halisi iko kati ya 4% na 8%, ambayo ni mkia mdogo wa mistari inayofanana kihalali, kama vile URL na matokeo ya programu yaliyonukuliwa. Makundi hayo mawili yako mbali vya kutosha kiasi kwamba kizingiti hakihitaji kuwa sahihi kabisa.
Katalogi si kitu pekee kinachotafsiriwa¶
Matukio mawili ya kushindwa hapa hayakuhusiana kabisa na gettext.
Kutafsiri kichwa cha habari hubadilisha nanga inayotokana nacho, hivyo kila kiungo cha kuvuka kurasa kinachoingia katika sehemu hiyo huvunjika — kimyakimya, katika lugha hiyo pekee. Tovuti hii hubandika nanga ya Kiingereza kwenye kila kichwa, nalo jaribio hutokeza orodha inayotarajiwa kutoka ukurasa wa Kiingereza.
Nacho kizalishaji cha tovuti husambaza tafsiri za kiolesura kwa lugha sitini na nane, ambazo hazijumuishi Kiswahili wala Kiayalandi. Bila hizo ujenzi haurudi nyuma hadi Kiingereza; ujumuishaji wa kiolezo hushindwa nalo toleo haliwezi kujengwa kabisa. Faili mbili za hazina hii yenyewe zipo ili kuziba pengo hilo.
Zana zako nazo zina hitilafu¶
Hatua ya CI ambayo nyaraka hizi hupendekeza kwa kunasa katalogi zilizopitwa na
wakati, pybabel update --check, haiwezi kufanya kazi hiyo kwa mradi wowote
unaotumia pgettext au npgettext. Katika Babel 2.18.0 huripoti kila katalogi
yenye msgctxt kuwa imepitwa na wakati, kila inapoendeshwa. Ulinganisho hupita
kwenye Catalog.is_identical, ambayo hutafuta kila ujumbe kwa ufunguo ambao
umehifadhiwa nao — na kwa ujumbe wenye muktadha ufunguo huo ni jozi ya
(id, context), ambayo Catalog.get haikubali. Utafutaji haurudishi chochote,
nazo katalogi hazilingani kamwe:
>>> from babel.messages.catalog import Catalog
>>> c = Catalog(locale="ja")
>>> c.add("Guide", "ガイド", context="navigation")
<Message 'Guide' (flags: [])>
>>> c.is_identical(c)
False
Ilipatikana hapa kwa kujaribu kuitumia, ikaripotiwa kwa watengenezaji walio juu ya mkondo, nao ukaguzi wa kubadilisha uko kwenye ukurasa wa uzalishaji.
Funzo la jumla ndilo lisilopendeza: kizuizi kilicho chekundu daima ni kibaya kuliko kutokuwa na kizuizi kabisa, kwa sababu timu hukizima. Hakikisha kwamba ukaguzi wako wa CI unaweza kweli kupita kabla ya kuuamini kwamba utashindwa.
Maktaba ni ya nini, kwa mstari mmoja¶
Sehemu kubwa ya ukurasa huu ni hukumu ambayo hakuna zana inayoweza kuichukua. Kile ambacho zana inaweza kufanya ni kuhakikisha kwamba tafsiri haiwezi kubadilisha muundo wa sentensi inayoitafsiri — haiwezi kudondosha thamani, kubuni mpya, kuumbiza upya, wala kuingia ndani ya vitu vyako — na kwamba inaweza kusema hivyo kwa sentensi ambayo mtu anayepaswa kurekebisha anaweza kuitendea kazi. Hiyo ndiyo ahadi yote ya maktaba hii, nayo sehemu iliyobaki ya tovuti hii ni jinsi inavyoitunza.