Ţĥé ķàþî ļööþ
Ýöüŕ šöüŕçé çöñţéñţ çĥàñĝéđ, šö îţš ţŕàñšļàţîöñš, ţéŕḿîñöļöĝý çĥéçķš àñđ ṽöîçé
çĥéçķš àŕé ƃéĥîñđ. Îñ à þŕöĵéçţ ţĥàţ šĥîþš, ţĥîš îš ţĥé éṽéŕýđàý šţàţé, àñđ ķàþî
ĥàš öñé çöḿḿàñđ ƒöŕ çàţçĥîñĝ üþ: kapi up.
kapi up ŕüñš ţĥé ķàþî ļööþ. Ţĥé ļööþ ĥàš ţŵö ĥàļṽéš ŵîţĥ à ĝàţé ƃéţŵééñ
ţĥéḿ. Ţĥé ƒîŕšţ ĥàļƒ ĝéţš ţĥé šöüŕçé ŕîĝĥţ: îţ ŕüñš ţĥé ṽöîçé àñđ ţéŕḿîñöļöĝý
çĥéçķš öñ ŵĥàţ ýöü ŵŕöţé àñđ ĥöļđš üñţîļ ţĥé šöüŕçé çļéàŕš îţš ƃàŕ. Ţĥé šéçöñđ
ĥàļƒ çàţçĥéš éṽéŕý ļàñĝüàĝé üþ ţö ţĥàţ šöüŕçé. Îţ ŕéüšéš ŵĥàţ ýöü'ṽé ţŕàñšļàţéđ
ƃéƒöŕé, ţŕàñšļàţéš ţĥé ŕéšţ ŵîţĥ ÀÎ àñđ çĥéçķš ŵĥàţ îţ þŕöđüçéđ. Ţĥé šöüŕçé çöḿéš
ƒîŕšţ ƃéçàüšé à đéƒéçţ îñ ţĥé šöüŕçé îš çöþîéđ îñţö éṽéŕý ţàŕĝéţ ļàñĝüàĝé. Ŵĥàţ
à ḿàçĥîñé çàññöţ đéçîđé ŵàîţš ƒöŕ ŕéṽîéŵ ƃý à þéŕšöñ, àñđ kapi up šţîļļ
ƒîñîšĥéš. À ḿöñöļîñĝüàļ þŕöĵéçţ šţöþš àƒţéŕ ţĥé ƒîŕšţ ĥàļƒ.
Ýöü đéçļàŕé ŵĥàţ çàüĝĥţ üþ ḿéàñš îñ ţĥé ŕéçîþé: ţĥé ţàŕĝéţ ļàñĝüàĝéš, ţĥé ƒļöŵ ţĥàţ þŕöđüçéš ţĥéḿ àñđ ţĥé ĝàţéš à ļàñĝüàĝé ḿüšţ çļéàŕ ţö šĥîþ. Éṽéŕý ŕüñ çöḿþàŕéš ţĥé ŵöŕķîñĝ ţŕéé ŵîţĥ ţĥàţ đéçļàŕàţîöñ àñđ çļöšéš ŵĥàţ îţ çàñ.
Ţĥŕéé ŕöļéš, ķéþţ šéþàŕàţé:
- Ţĥé ļööþ þŕöđüçéš:
kapi upđŕîṽéš éàçĥ ƃļöçķ àš ƒàŕ üþ îţš ļîƒéçýçļé àš à ƒļöŵ çàñ ţàķé îţ üñàîđéđ (ţýþîçàļļý ţö ţŕàñšļàţéđ). - Ŕéṽîéŵ þŕöḿöţéš: à þéŕšöñ àđṽàñçéš à ƃļöçķ þàšţ ŵĥàţ à ḿàçĥîñé çàñ đéçîđé (ţŕàñšļàţéđ → àþþŕöṽéđ).
- Ţĥé ĝàţé ŕéļéàšéš: îţ çĥàñĝéš ñö çöñţéñţ. Îţ àñšŵéŕš öñé ǫüéšţîöñ: îš ţĥîš ļöçàļé šĥîþþàƃļé?
:::ñöţé[Ţĥé ƒöŕḿàļ ñàḿé]
Ţĥé ḿöđéļ ƃéĥîñđ ţĥé ļööþ (đéŕîṽéđ šţàţé, ţĥé ļîƒéçýçļé ļàđđéŕš, çöṽéŕàĝé
ĝàţéš) îš çàļļéđ çöñṽéŕĝéñçé: éàçĥ kapi up þàšš çöñṽéŕĝéš ţĥé ŵöŕķîñĝ
ţŕéé öñ ţĥé šţàţé ţĥé ŕéçîþé đéçļàŕéš, ţĥé ŵàý terraform apply çöñṽéŕĝéš
îñƒŕàšţŕüçţüŕé öñ à þŕöĝŕàḿ. Ţĥé
àŕçĥîţéçţüŕé þàĝéš, ţĥé
ŕüñ'š éṽéñţ šţŕéàḿ, àñđ ţĥé --json öüţþüţ ķééþ ţĥàţ ṽöçàƃüļàŕý; ţĥéšé þàĝéš
šàý ţĥé ļööþ.
:::
Šţàţé îš đéŕîṽéđ
Ķàþî šţöŕéš ñö ŵöŕķƒļöŵ šţàţé, šüçĥ àš "îñ þŕöĝŕéšš" ƒļàĝš öŕ çüŕšöŕš. Éṽéŕý çöḿḿàñđ
ŕéçöḿþüţéš à ƃļöçķ'š šţàţé ƒŕöḿ ţĥé çöñţéñţ öñ đîšķ àñđ ţĥé þŕöĵéçţ'š àššéţš,
ţĥé ŵàý git status ŕéçöḿþüţéš ƒŕöḿ ţĥé ŵöŕķîñĝ ţŕéé. Ŕüñ à çöḿḿàñđ ţŵîçé ŵîţĥ
ñö çĥàñĝéš àñđ ýöü ĝéţ ţĥé šàḿé àñšŵéŕ. Çĥàñĝé à šöüŕçé ƒîļé àñđ ţĥé àƒƒéçţéđ
ƃļöçķš ƒàļļ ƃàçķ ţö þéñđîñĝ.
Šţàţé îš ķéþţ þéŕ éđîţîöñ: öñé ţŕàñšļàţàƃļé ƃļöçķ îñ öñé ļàñĝüàĝé.
Ţĥé ļîƒéçýçļé ļàđđéŕš
À ţàŕĝéţ çļîḿƃš à ḿöñöţöñé ļàđđéŕ: éàçĥ ŕüñĝ îḿþļîéš ţĥé öñéš ƃéļöŵ îţ. Àñ àƃšéñţ ţàŕĝéţ šîţš ƃéļöŵ ţĥé ļöŵéšţ ŕüñĝ; à þŕéšéñţ, ñöñ-éḿþţý ţàŕĝéţ îš àţ ļéàšţ ţŕàñšļàţéđ.
Ţàŕĝéţ ļîƒéçýçļé: ĥöŵ ƒàŕ à ţŕàñšļàţîöñ ĥàš þŕöĝŕéššéđ.
Šöüŕçé çöñţéñţ ĥàš îţš öŵñ, šĥöŕţéŕ ļàđđéŕ:
Šöüŕçé àüţĥöŕîñĝ ŕéàđîñéšš: ţĥé šöüŕçé-šîđé çöüñţéŕþàŕţ.
Ţĥé ŕéçîþé àñđ ţĥé ĴŠÖÑ ŕéþöŕţš šþéļļ ţĥé àþþŕöṽéđ ŕüñĝ established, šö à
ĝàţé ţĥŕéšĥöļđ öñ îţ ŕéàđš established: 80.
Ŵĥéŕé šţàţé îš ŕéçöŕđéđ đéþéñđš öñ ţĥé ƒîļé ţĥàţ çàŕŕîéš îţ. À þļàîñ ţàŕĝéţ ƒîļé
(ĴŠÖÑ, àñ ẊĻÎƑƑ, …) ŕéçöŕđš öñļý ţĥàţ à ţàŕĝéţ îš þŕéšéñţ, šö à ƒîļé-ƃàšéđ þŕöĵéçţ
ŕéàđš à þŕéšéñţ ţàŕĝéţ àš ţŕàñšļàţéđ. Ţĥé ĥîĝĥéŕ ŕüñĝš ñééđ à çàŕŕîéŕ ţĥàţ çàñ
ĥöļđ ţĥéḿ. Àþþŕöṽéđ çöḿéš ƒŕöḿ àñ àþþŕöṽàļ ŕéçöŕđéđ îñ ţĥé þŕöĵéçţ'š
ƃļöçķ-šţàţé ŕéçöŕđ (ƃéļöŵ), àñđ à
.kpz þàŕçéļ çàŕŕîéš ţĥé ƒüļļ šţàţüš àçŕöšš à ĥàñđ-öƒƒ.
Ţĥé ĝàţé: çöṽéŕàĝé ţĥŕéšĥöļđš
À ĝàţé îš à šéţ öƒ çöṽéŕàĝé ţĥŕéšĥöļđš öṽéŕ ţĥé ļàđđéŕ: à šţàţé ñàḿé ţö à ḿîñîḿüḿ þéŕçéñţ. À ļöçàļé çļéàŕš à ĝàţé ŵĥéñ, ƒöŕ éṽéŕý ţĥŕéšĥöļđ, àţ ļéàšţ ţĥàţ þéŕçéñţ öƒ îţš ƃļöçķš ĥàṽé ŕéàçĥéđ ţĥàţ ŕüñĝ öŕ ĥîĝĥéŕ.
# kapi.yaml
ship_gate: { translated: 100, established: 80 }
Ţĥîš ŕéàđš "éṽéŕý ƃļöçķ ţŕàñšļàţéđ, àñđ ţĥé îḿþöŕţàñţ 80% àþþŕöṽéđ; šĥîþ ţĥé ļöñĝ
ţàîļ ḿàçĥîñé-ţŕàñšļàţéđ." À ƃàŕé 100% approved îš ţĥé šţŕîçţéšţ ƒöŕḿ.
Ĝàţéš çàñ ƃé šéļéçţéđ ƃý ŕüļé, šö đéŕéñţ çöļļéçţîöñš öŕ ļöçàļéš àñšŵéŕ ţö đéŕéñţ ƃàŕš (ţĥé ḿöšţ šþéçîƒîç ḿàţçĥîñĝ ŕüļé ŵîñš). Ŵĥéŕé à ŕüļé ñàḿéš à çöļļéçţîöñ, éàçĥ çöļļéçţîöñ îñ à ļöçàļé îš ĵüđĝéđ öñ îţš öŵñ:
ship_gates:
- when: { locales: [de] } # German is contractually reviewed
gate: { translated: 100, established: 100 }
- gate: { translated: 100, established: 80 } # the default
Ţĥé šöüŕçé ļàđđéŕ ĥàš îţš öŵñ öþţîöñàļ ƃàŕ, source_gate (é.ĝ.
{ written: 100 }), ţĥé šöüŕçé-šîđé çöüñţéŕþàŕţ öƒ ship_gate.
À ĝàţé ñéṽéŕ ƒàîļš àñ öŕđîñàŕý ƃüîļđ. Ţàŕĝéţ-ļàñĝüàĝé đŕîƒţ îš éẋþéçţéđ ŵöŕķ. À ĝàţé îš à ŕéļéàšé çĥéçķ ýöü öþţ îñţö (šéé ƃéļöŵ).
Šĥîþ šţàţéš
À ļöçàļé ţĥàţ šĥîþš îš ñàḿéđ ƃý ţĥé ļàđđéŕ ŕüñĝ îţ šĥîþš àţ. À ļöçàļé ţĥàţ đöéš ñöţ šĥîþ îš ŵîţĥĥéļđ:
| Šţàţé | Ŵĥàţ îţ ḿéàñš |
|---|---|
| àþþŕöṽéđ | Ţĥé ļöçàļé çļéàŕš îţš àþþŕöṽàļ ĝàţé (established_gate / established_gates): à þéŕšöñ àþþŕöṽéđ ţĥé çöñţéñţ. |
| ţŕàñšļàţéđ | Ţĥé ļöçàļé çļéàŕš îţš šĥîþ ĝàţé àñđ ñö àþþŕöṽàļ ĝàţé: ţŕàñšļàţéđ, ŵîţĥ îţš çĥéçķš ĝŕééñ, àñđ šĥîþþéđ àš ÀÎ ţŕàñšļàţîöñ. |
| ŵîţĥĥéļđ | Ţĥé ļöçàļé đöéš ñöţ šĥîþ. Îţ îš šĥöŕţ öƒ îţš ĝàţé, öŕ îţ ĥöļđš šţàļé ŵöŕđîñĝ, à ţŕàñšļàţîöñ à ŕéṽîéŵéŕ ţüŕñéđ đöŵñ, à ƒàîļîñĝ çĥéçķ, öŕ ţéŕḿš ţĥàţ ŵéŕé ñöţ çĥéçķéđ. Ţĥéšé ĥöļđ à ļöçàļé ƃàçķ éṽéñ ŵĥéñ ñö ĝàţé ḿàţçĥéš îţ. |
| ñöţ ĝàţéđ | Ñö ĝàţé ḿàţçĥéš ţĥé ļöçàļé, àñđ ñöţĥîñĝ ŵîţĥĥöļđš îţ. |
Ýöü çĥööšé ŵĥàţ à þŕöĵéçţ đéļîṽéŕš ŵîţĥ îţš šĥîþ ĝàţé: { translated: 100 }
đéļîṽéŕš ţŕàñšļàţéđ çöñţéñţ, { established: 100 } öñļý àþþŕöṽéđ çöñţéñţ.
À þŕöĵéçţ ŵîţĥ ñö ĝàţéš ĥàš öñļý ŵîţĥĥéļđ àñđ ñöţ-ĝàţéđ ļöçàļéš, àñđ à kapi up ŕüñ ţĥàţ çöñṽéŕĝéš ŕéþöŕţš ţĥàţ ñö šĥîþ ĝàţéš àŕé đéçļàŕéđ. À ļàñĝüàĝé
þîçķéŕ öƒƒéŕš à ñöţ-ĝàţéđ ļöçàļé ƃý đéƒàüļţ.
Ŵĥö àþþŕöṽéš à ƃļöçķ
Àþþŕöṽéđ îš ţĥé öñé ĥüḿàñ ŕüñĝ: à þéŕšöñ ŕéṽîéŵéđ öŕ éđîţéđ ţĥîš éẋàçţ
ţŕàñšļàţîöñ. Àñ àĝéñţ çàñ þŕé-ŕéṽîéŵ à ƃļöçķ ŵîţĥ à šçöŕé àñđ îţš ŕéàšöñš, àñđ
ţĥé ŕéṽîéŵ ǫüéüé šĥöŵš ţĥéḿ. Àñ àĝéñţ'š ĵüđĝéḿéñţ ñéṽéŕ çöüñţš àš à þéŕšöñ'š, šö
éṽéŕý established ţĥŕéšĥöļđ çöüñţš þéöþļé. Ĝàţéš çàñ šţîļļ đéŕ ƃý ļöçàļé àñđ
çöļļéçţîöñ, šö ýöü çàñ ŕüñ šéṽéŕàļ ţîéŕš šîđé ƃý šîđé:
gates:
contractual: { translated: 100, established: 100 }
standard: { translated: 100, established: 80 }
machine: { translated: 100 }
ship_gates:
- when: { locales: [de] } # contractual market: a person approves every block
gate: contractual
- when: { locales: [fr, es] }
gate: standard
- gate: machine # the long tail: translated, with its checks green
Ţĥé ƒüļļ šçĥéḿà (ţĥŕéšĥöļđ ƒöŕḿš, ŕüļé šéļéçţîöñ, ţĥé ñàḿéđ ŕéĝîšţŕý) îš îñ ţĥé þŕöĵéçţ-ƒîļé ŕéƒéŕéñçé; à ŵöŕķéđ þéŕ-ḿàŕķéţ šţŕàţéĝý îš Ţîéŕ ĝàţéš þéŕ ḿàŕķéţ.
Šöüŕçé ƒîŕšţ: šéţţļé, ĝàţé, ţĥéñ ţŕàñšļàţé
Ţĥé ţŵö ļàđđéŕš ŕüñ îñ öŕđéŕ, ŵîţĥ ţĥé šöüŕçé ĥöļđ ƃéţŵééñ ţĥéḿ. Éṽéŕý ļöçàļé ţŕàñšļàţéš ţĥé šàḿé šöüŕçé. À ţéŕḿ ļéƒţ üñŕéšöļṽéđ öŕ à šéñţéñçé ļéƒţ öƒƒ-ƃŕàñđ îš þàîđ ƒöŕ öñçé þéŕ ļàñĝüàĝé, ţĥéñ àĝàîñ ŵĥéñ ýöü ƒîẋ ţĥé šöüŕçé àñđ éṽéŕýţĥîñĝ îš ŕéţŕàñšļàţéđ. Ţĥé ļööþ šéţţļéš ţĥé šöüŕçé öñçé àñđ šţàŕţš ţĥé þéŕ-ļàñĝüàĝé ŵöŕķ öñļý ŵĥéñ ţĥé šöüŕçé îš ŕéàđý.
Šéţţļé ţĥé šöüŕçé, ĥöļđ îţ üñţîļ îţ ŕéàçĥéš ţŕàñšļàţé_àƒţéŕ, ţĥéñ ţŕàñšļàţé ţĥé àþþŕöṽéđ šöüŕçé þéŕ ļöçàļé; éàçĥ ĝàţé ĥöļđš ƃàçķ ŵöŕķ ţĥàţ îš ñöţ ŕéàđý.
Ŕéàđ ţĥé ļööþ ļéƒţ ţö ŕîĝĥţ:
- Šéţţļé ţĥé šöüŕçé. Çĥéçķ ţéŕḿîñöļöĝý àñđ ḿàŕķ ţĥé ţéŕḿš ţĥàţ ḿüšţ ñöţ ƃé ţŕàñšļàţéđ, çĥéçķ ṽöîçé þŕöƒîļé, ŕüñ ţĥé šöüŕçé çĥéçķš. Ţĥîš ļîƒţš šöüŕçé ƃļöçķš öñţö ţĥéîŕ ļàđđéŕ (ŵŕîţţéñ → àþþŕöṽéđ) àñđ ḿàŕķš àñý ţĥàţ ƒàîļ.
- Ĥöļđ ţĥé šöüŕçé.
defaults.translate_after(writtenƃý đéƒàüļţ, öŕestablishedƒöŕ àþþŕöṽéđ šöüŕçé) îš ţĥé ļéṽéļ éàçĥ ƃļöçķ'š šöüŕçé ḿüšţ ŕéàçĥ ƃéƒöŕé îţ îš ţŕàñšļàţéđ. À ƃļöçķ ƃéļöŵ îţ ĥöļđš. Ḿàçĥîñé-ţŕàñšļàţîñĝ çöñţéñţ ýöü àŕé àƃöüţ ţö çĥàñĝé çöšţš ḿöŕé ţĥàñ šéţţļîñĝ îţ ƒîŕšţ. - Ţŕàñšļàţé ţĥé àþþŕöṽéđ šöüŕçé. Öñļý šéţţļéđ šöüŕçé îš ţŕàñšļàţéđ, þéŕ ļöçàļé àñđ ƒŕöḿ ţĥé çöñţéñţ ḿéḿöŕý ƒîŕšţ: ŕéçýçļé ŵĥàţ ýöü ĥàṽé àļŕéàđý ţŕàñšļàţéđ, ÀÎ-ţŕàñšļàţé ţĥé ŕéḿàîñđéŕ, çĥéçķ ŵĥàţ ŵàš þŕöđüçéđ. Ŵĥéñ à šöüŕçé ŵàš éđîţéđ, ţĥé ţŕàñšļàţîöñ à þéŕšöñ àþþŕöṽéđ ƒöŕ ţĥé éàŕļîéŕ ŵöŕđîñĝ ĝöéš îñţö ţĥé þŕöḿþţ àš ŕéƒéŕéñçé, üñđéŕ ţĥé šàḿé ĝöṽéŕñîñĝ çöñţéẋţ. Ţĥé ŕéđŕàƒţ ķééþš ţĥàţ àççéþţéđ ŵöŕđîñĝ ŵĥéŕé îţ šţîļļ ƒîţš. Þŕöţéçţéđ ţéŕḿš šţàý þŕöţéçţéđ.
- Ĥöļđ àţ ţĥé ţàŕĝéţ šĥîþ-ĝàţé. À ļöçàļé ţĥàţ çļéàŕš îţš
ship_gateîš šĥîþþàƃļé. Ŵĥàţéṽéŕ à ḿàçĥîñé çàññöţ đéçîđé ŵàîţš ƒöŕ ŕéṽîéŵ àñđ đöéš ñöţ šĥîþ.
À ĝàţé ñéṽéŕ ƒàîļš. Îţ ĥöļđš ŵöŕķ àñđ ŕöüţéš îţ ţö à þéŕšöñ, ţĥŕöüĝĥ ţĥé šöüŕçé-ŕéṽîéŵ ŵöŕķļîšţ öŕ ţĥé ţàŕĝéţ ŕéṽîéŵ ǫüéüé, àñđ ţĥé çöḿḿàñđ šţîļļ éẋîţš žéŕö. Éđîţîñĝ à šöüŕçé ƃļöçķ ŕé-öþéñš ţĥé ĥöļđ ƒöŕ ţĥé çĥàñĝéđ šéĝḿéñţš öñļý, šö à ƒîẋ ŕé-šéţţļéš àñđ ŕé-ţŕàñšļàţéš ţĥöšé šéĝḿéñţš àñđ ļéàṽéš ţĥé ŕéšţ öƒ ţĥé çöŕþüš àļöñé.
Šééîñĝ îţ: status àñđ check
kapi status îš ţĥé đéŕîṽéđ đàšĥƃöàŕđ: çöṽéŕàĝé þéŕ ļöçàļé àñđ éàçĥ ļöçàļé'š
šţàñđîñĝ àĝàîñšţ îţš ĝàţé, ŕéçöḿþüţéđ öñ éṽéŕý ŕüñ:
kapi status
# source 2 blocks · written 100% · approved 0%
#
# locale blocks draft translated approved progress ship
# de 42 100% 100% 80% ██████████ 100% translated
# nb 42 100% 60% 0% ███░░░░░░░ 30% blocked: translate
#
# 1 of 2 ready to ship
À þŕöĵéçţ çöññéçţéđ ţö à çöñṽéŕĝéñçé ṽéñüé ĝéţš ţŵö ḿöŕé ļîñéš, àñđ ţĥéý àñšŵéŕ đéŕéñţ ǫüéšţîöñš. Çöñţéñţ îš à þöšîţîöñ: ŵĥàţ îš ĥéŕé àñđ ŵĥàţ îš ţĥéŕé. À ţŕàñšƒéŕ ŕéšöļṽéš îţ. Ĝöṽéŕñàñçé îš àñ îđéñţîţý: ŵĥîçĥ çöñţéẋţ, ţéŕḿš àñđ đéçîšîöñš àŕé îñ ƒöŕçé. Ŵĥéñ ţŵö îđéñţîţý ĥàšĥéš đéŕ, ţĥéý šàý ñöţĥîñĝ àƃöüţ đîšţàñçé öŕ đîŕéçţîöñ. Ţĥé ļîñé ŕéþöŕţš ţĥàţ à çöḿþöñéñţ ḿöṽéđ, àñđ ýöü ĵüđĝé ŵĥàţ ţĥàţ ḿéàñš ƒöŕ ŵöŕķ àļŕéàđý ŵŕîţţéñ.
kapi status
# content https://venue.example.com · 12 to push · 0 to pull
# governance context in sync · terms moved · decisions in sync
# run `kapi pull` to take down the governance that moved
kapi check --ship éñƒöŕçéš ţĥé ĝàţéš ƃéƒöŕé à ŕéļéàšé. Îţ ŕüñš ţĥé þŕöĵéçţ'š
ƃöüñđ ǫüàļîţý ĝàţéš (ṽöîçé, ţéŕḿîñöļöĝý, ŕüļé-ƃàšéđ çĥéçķš, šţàļéñéšš) ţöĝéţĥéŕ
ŵîţĥ ţĥé šĥîþ àñđ šöüŕçé çöṽéŕàĝé ĝàţéš öṽéŕ ţĥé þŕöĵéçţ'š çöñţéñţ. Îţ éẋîţš
ñöñ-žéŕö ŵĥéñ àñý ĝàţé îš üñḿéţ, šö ýöü çàñ ŕüñ îţ ƒöŕ à ŕéļéàšé ţàĝ öŕ à main
çĥéçķ. Ţàŕĝéţ đŕîƒţ ñéṽéŕ ƃļöçķš àñ öŕđîñàŕý ƃüîļđ; --ship îš ŵĥéŕé ýöü öþţ îñ
ţö éñƒöŕçéḿéñţ. À ƃàŕé kapi check <files> ŕüñš à çĥéçķšéţ öṽéŕ ţĥé ƒîļéš ýöü
ñàḿé, ţĥé ŵàý à ţéšţ ŕüññéŕ ŕüñš ţéšţš. Šéé
Çĥéçķ ţŕàñšļàţîöñš îñ ÇÎ.
Ŕüññîñĝ ţĥé ļööþ: kapi up
kapi up ŕüñš ţĥé ļööþ. Îţ ŕéàđš ŵĥàţ ţĥé ŕéçîþé đéçļàŕéš, ţĥéñ ŕüñš ţĥé
þŕöĵéçţ'š đéƒàüļţ ƒļöŵ (defaults.flow) öṽéŕ àļļ çöñţéñţ àçŕöšš éṽéŕý ţàŕĝéţ
ļàñĝüàĝé, ļööþîñĝ üñţîļ éṽéŕý ĝàţéđ ļöçàļé îš šĥîþþàƃļé öŕ ŵàîţš ƒöŕ
ŕéṽîéŵ:
defaults:
flow: translate-and-check # a flow defined under flows:
Ŵîţĥöüţ defaults.flow, up ŕüñš ţĥé ƃüîļţ-îñ đéƒàüļţ ƒļöŵ (çöñţéñţ-ḿéḿöŕý
ŕéüšé, ţĥéñ ÀÎ ţŕàñšļàţé), šö à ŕéçîþé ñééđš ñö ƒļöŵ ÝÀḾĻ ţö çàţçĥ üþ.
Ţĥé ţŕàñšļàţé šţéþ ŕéàđš ţĥé çöñţéñţ ḿéḿöŕý ţöö. Ŵîţĥ reuse: prior (îţš
đéƒàüļţ), à ƃļöçķ ŵĥöšé šöüŕçé ŵàš éđîţéđ ĝéţš ţĥé ţŕàñšļàţîöñ àþþŕöṽéđ ƒöŕ îţš
éàŕļîéŕ ŵöŕđîñĝ àš ŕéƒéŕéñçé, ŵĥéñ ţĥé šàḿé ĝöṽéŕñîñĝ çöñţéẋţ îš îñ ƒöŕçé.
reuse: none ţüŕñš ţĥàţ ŕéàđ öƒƒ ƒöŕ à çĥéàþ ŕüñ.
kapi up # run the default flow; stop where a gate holds content back
kapi up --plan # dry run: pending work, content-memory leverage, and a token estimate per locale
kapi up --passes 1 # a single pass over every locale that needs work
kapi up --materialize # also write the translated files for the shippable locales
Þŕöđüçé ļööþš ţö ţĥé ĝàţé; ŕéṽîéŵ þŕöḿöţéš ŵĥàţ à ḿàçĥîñé çàñ'ţ đéçîđé; ţĥé ĝàţé ŕéļéàšéš.
Éàçĥ þàšš ŕé-đéŕîṽéš çöṽéŕàĝé ƒŕöḿ ţĥé ŵöŕķîñĝ ţŕéé, ŕüñš ţĥé ƒļöŵ öñļý ƒöŕ ţĥé
ļöçàļéš šţîļļ šĥöŕţ öƒ ţĥéîŕ ĝàţé, ţĥéñ ŕüñš ţĥé þŕöĵéçţ'š ƃöüñđ çĥéçķš öṽéŕ ŵĥàţ
ŵàš þŕöđüçéđ. À ƃļöçķ ŵîţĥ ƒàîļîñĝ ƒîñđîñĝš (đŕöþþéđ þļàçéĥöļđéŕš, ţéŕḿîñöļöĝý
ṽîöļàţîöñš) šţîļļ çöüñţš àš ţŕàñšļàţéđ, àñđ ţĥé ƒîñđîñĝ ķééþš îţš ļöçàļé ƒŕöḿ
šĥîþþîñĝ üñţîļ îţ îš ƒîẋéđ. Ţĥé þéŕçéñţàĝéš đéšçŕîƃé ţĥé çöñţéñţ. Ţĥé ṽéŕđîçţ
šàýš ŵĥàţ à çĥéçķ ŵîţĥĥöļđš, àñđ kapi status àñđ kapi status --ship ŕüñ ţĥé
šàḿé çĥéçķš àñđ ŕéàçĥ ţĥé šàḿé ṽéŕđîçţ. Ţĥé ļööþ šţöþš ŵĥéñ éṽéŕý ĝàţéđ ļöçàļé
îš šĥîþþàƃļé, ŵĥéñ à þàšš ḿàķéš ñö þŕöĝŕéšš, öŕ ŵĥéñ îţ ŕéàçĥéš ţĥé þàšš çàþ
(đéƒàüļţ 5, --passes N). Ŵĥàţéṽéŕ çàññöţ ƃé àđṽàñçéđ üñàîđéđ ŵàîţš ƒöŕ
ŕéṽîéŵ: îţ îš ŕéþöŕţéđ àš àŵàîţîñĝ à þéŕšöñ àñđ ţĥé çöḿḿàñđ šţîļļ éẋîţš žéŕö.
up ñéṽéŕ ƒàîļš ţĥé ƃüîļđ öñ ţàŕĝéţ đŕîƒţ. Ţĥé ŵöŕķ ŵàîţîñĝ ƒöŕ ŕéṽîéŵ îš ţĥé
ŕéṽîéŵ ǫüéüé.
Üñđéŕ materialize: on-converge à ļàñĝüàĝé ŵàîţîñĝ ƒöŕ ŕéṽîéŵ ĝéţš ñö ƒîļéš.
Îţš đŕàƒţš àŕé ķéþţ îñ ţĥé þŕöĵéçţ'š ŵöŕķšþàçé, öüţšîđé ţĥé
çĥéçķöüţ. kapi status, ţĥé ŕéṽîéŵ ŵöŕķļîšţ, kapi inspect, kapi apply àñđ
Ķàþî Đéšķţöþ'š ŕéṽîéŵ þàñé àļļ ŕéàđ àñđ éđîţ ţĥéḿ ţĥéŕé. Àñ éđîţ ţö à ļàñĝüàĝé
ţĥàţ ĥàš ñö ƒîļé ýéţ îš ķéþţ ţĥéŕé ţöö, šö ñö éđîţ đéļîṽéŕš à ƒîļé ţĥé ĝàţé
ŵîţĥĥöļđš. Ţĥé đŕàƒţš ŕéàçĥ ţĥé ļàñĝüàĝé'š ƒîļéš ŵĥéñ ţĥé ļàñĝüàĝé îš đéļîṽéŕéđ:
ƃý ţĥé ŕüñ îñ ŵĥîçĥ îţ çļéàŕš îţš ĝàţé, öŕ ƃý kapi merge. Đéļéţîñĝ
.kapi/work/ ļöšéš ñöñé öƒ ţĥéḿ, àñđ à þŕöĵéçţ ţĥàţ
šĥàŕéš îţš çöñţéẋţ šĥàŕéš ţĥéḿ ţöö.
À ļàñĝüàĝé'š ƒîļé çàñ àļšö àþþéàŕ àñöţĥéŕ ŵàý: ýöü ŵŕîţé îţ, kapi pull öŕ à
çĥéçķöüţ ƃŕîñĝš îţ, öŕ ýöü šŵîţçĥ ţĥé ŕéçîþé ţö materialize: manual àñđ à þàšš
ŵŕîţéš îţ. Ƒŕöḿ ţĥéñ öñ, ţĥé ƒîļé ĥöļđš ţĥé ļàñĝüàĝé. Ţĥé ñéẋţ kapi up đŕöþš
ţĥé ķéþţ đŕàƒţš ţĥé ƒîļé šüþéŕšéđéš àñđ ķééþš àñý ŵöŕđîñĝ à þéŕšöñ öŕ àñ àĝéñţ
ŵŕöţé ţĥàţ ţĥé ƒîļé đöéš ñöţ ĥöļđ; kapi status ļîšţš ţĥàţ ŵöŕđîñĝ, àñđ
kapi merge ŵŕîţéš îţ îñţö ţĥé ƒîļé.
Ƃéƒöŕé éàçĥ þàšš, up ŕé-šýñçš ţĥé þŕöĵéçţ ƃļöçķ šţöŕé ŵîţĥ ţĥé ŵöŕķîñĝ ţŕéé:
éđîţéđ šöüŕçé ƒîļéš, à šţöŕé ŵŕîţţéñ ƃý àñöţĥéŕ ķàþî ṽéŕšîöñ, öŕ à ḿîššîñĝ šţöŕé
ţŕîĝĝéŕ à ŕé-éẋţŕàçţîöñ. --no-extract öþţš öüţ; --no-checks šķîþš ţĥé ƃöüñđ
çĥéçķš îñ ţĥé ļööþ.
Ţĥé ŕüñ îš ļîṽé
up šţàŕţš ƃý þŕîñţîñĝ à öñé-ļîñé þļàñ: ţĥé ƃļöçķš ţĥé þàšš ŵîļļ ŵöŕķ öñ,
éẋàçţ çöñţéñţ-ḿéḿöŕý ļéṽéŕàĝé, ŕéḿàîñîñĝ ÀÎ ŵöŕķ, à ţöķéñ éšţîḿàţé àñđ ţĥé
þŕöṽîđéŕ îţ ŵîļļ üšé. Ýöü šéé ţĥé çöšţ ƃéƒöŕé àñý ţöķéñš àŕé šþéñţ. --plan
àļöñé þŕîñţš ţĥé ƒüļļ đŕý-ŕüñ ţàƃļé. Ŵĥîļé ţĥé ļööþ ŕüñš, up þŕîñţš öñé ļîñé
þéŕ ļöçàļé, ŕéþàîñţéđ îñ þļàçé öñ à ţéŕḿîñàļ, öŕ öñé ļîñé þéŕ éṽéñţ öñ à þļàîñ
šţŕéàḿ.
Ţĥé þļàñ þŕîçéš ţĥé ƒļöŵ ţĥé þàšš ŵöüļđ ŕüñ. À þàšš ŕéàđš ţĥé šöüŕçé đöçüḿéñţš, ƒîļļš ƒŕöḿ ţĥé çöñţéñţ ḿéḿöŕý ŵĥéŕé ţĥé ƒļöŵ ŕéçýçļéš, àñđ đŕàƒţš ţĥé ŕéḿàîñđéŕ ŵĥéŕé ţĥé ƒļöŵ đŕàƒţš. À ƃļöçķ çöšţš à þŕöṽîđéŕ çàļļ ŵĥéñ ţĥé çöŕþüš ĥàš ñö àñšŵéŕ ƒöŕ îţš šöüŕçé àñđ ţĥé çöñƒîĝüŕéđ ƒļöŵ ŕéàçĥéš à þŕöṽîđéŕ, ŵĥàţéṽéŕ à ţàŕĝéţ ƒîļé ĥöļđš. À ƒļöŵ ţĥàţ öñļý ŕéçýçļéš ļéàṽéš ţĥé ƃļöçķš ţĥé çöŕþüš çàññöţ àñšŵéŕ öüţ öƒ ŕéàçĥ. Ţĥé þļàñ ŕéþöŕţš ţĥéḿ ŵîţĥöüţ à þŕîçé, ƃéçàüšé ţĥàţ ŕüñ ŵîļļ ñöţ ţöüçĥ ţĥéḿ öŕ çàļļ à þŕöṽîđéŕ. Ţĥé þļàñ ļîšţš ţĥŕéé ķîñđš öƒ ŵöŕķ šéþàŕàţéļý: ḿîššîñĝ ƃļöçķš, šţàļé öñéš (à đéçîšîöñ'š šöüŕçé ḿöṽéđ) àñđ üñàñšŵéŕéđ öñéš (à ţàŕĝéţ ţĥé ŕéçöŕđ đöéš ñöţ þàîŕ ŵîţĥ îţš šöüŕçé). Ţĥéý ḿéàñ đéŕéñţ ţĥîñĝš ţö ýöü, àñđ ţĥé ŕüñ þŕîçéš ţĥéḿ ţĥé šàḿé ŵàý.
Ţĥé þļàñ þŕîçéš öñļý ţĥé ļàñĝüàĝéš à þàšš ŵöŕķš öñ. Ţĥé ļööþ þàššéš öṽéŕ à ļàñĝüàĝé ŵĥîļé îţ ĥöļđš ŵöŕķ: à ƃļöçķ ŵîţĥ ñö ţŕàñšļàţîöñ, à šţàļé öŕ ŕéĵéçţéđ ƃļöçķ, à ƃļöçķ ƒàîļîñĝ ţĥé ƃöüñđ çĥéçķš, öŕ à ĝàţé ţĥé ļàñĝüàĝé đöéš ñöţ ḿééţ. À ļàñĝüàĝé ŵîţĥ ñöñé öƒ ţĥéšé ķééþš ŵĥàţ îţ ĥöļđš, šö îţš üñàñšŵéŕéđ ƃļöçķš çöšţ ñöţĥîñĝ ţĥîš ŕüñ àñđ ţĥé þļàñ ŕéþöŕţš ñöţĥîñĝ ţö đŕàƒţ ƒöŕ îţ.
À ƃļöçķ ţĥé þŕöĵéçţ šţöŕé àļŕéàđý ĥöļđš à đŕàƒţ ƒöŕ çöšţš ñöţĥîñĝ ƒüŕţĥéŕ. Ţĥé
đŕàƒţîñĝ šţéþ çĥéçķš ţĥé šţöŕé ƃéƒöŕé îţ çàļļš à þŕöṽîđéŕ. Îţ ŕéüšéš à šţöŕéđ
ţŕàñšļàţîöñ öƒ ţĥé šàḿé šöüŕçé ŵĥéñ ţĥàţ ţŕàñšļàţîöñ ŵàš ḿàđé üñđéŕ ţĥé
çöñƒîĝüŕàţîöñ àñđ ĝöṽéŕñîñĝ çöñţéẋţ ţĥé šţéþ ŵöüļđ üšé ñöŵ. Ţĥé þļàñ çöüñţš šüçĥ
à ƃļöçķ üñđéŕ šţöŕéđ đŕàƒţš àñđ ǫüöţéš ñö ţöķéñš ƒöŕ îţ. À ļàñĝüàĝé ĥéļđ ƃàçķ
ƃý îţš ĝàţé ŕéàđš ţĥîš ŵàý öñ éṽéŕý ŕüñ àƒţéŕ ţĥé öñé ţĥàţ đŕàƒţéđ îţ, šö ýöü þàý
ƒöŕ îţš đŕàƒţš öñçé. Ţĥé ŵöŕķšþàçé ķééþš éàçĥ đŕàƒţ ŵàîţîñĝ ƒöŕ ŕéṽîéŵ ţöĝéţĥéŕ
ŵîţĥ ţĥé đéţàîļš ţĥé đŕàƒţîñĝ šţéþ ḿàţçĥéš öñ, šö à ŕüñ îñ à çĥéçķöüţ ŵĥöšé
.kapi/work/ ŵàš đéļéţéđ ŕéüšéš ţĥéḿ àţ ñö çöšţ. À çĥàñĝéđ ḿöđéļ, þŕöḿþţ, ṽöîçé
þŕöƒîļé öŕ ţéŕḿ ŕüļé, öŕ àñ éđîţéđ šéñţéñçé, þüţš ţĥé ƃļöçķ ƃàçķ üñđéŕ đŕàƒţéđ
ƃý ƒļöŵ.
kapi up · KapiMart · flow "default (built-in)" · anthropic/claude-sonnet-4-6 (your subscription)
plan: 288 block(s) missing · 54 exact-content memory · 234 AI · ≈61k tokens
pass 1/5
fr-FR ████████████░░░░░░ 62/96 (content memory 18 · AI 44) 2 checks ✗
de-DE █████░░░░░░░░░░░░░ 27/96 (content memory 18 · AI 9)
ja-JP queued
nb-NO ready 96/96
Not yet up to date: some languages wait for review (never a build failure).
Ļöçàļéš àŕé îñđéþéñđéñţ ŵîţĥîñ à þàšš, šö up çàţçĥéš ţĥéḿ üþ çöñçüŕŕéñţļý:
--jobs N šéţš ĥöŵ ḿàñý ŕüñ àţ öñçé (đéƒàüļţ 4; ŕéçîþé öṽéŕŕîđé defaults.jobs;
--jobs 1 ŕüñš ţĥéḿ öñé àţ à ţîḿé). Àţ ţĥé éñđ öƒ éàçĥ þàšš, ķàþî ŵàîţš ƒöŕ
éṽéŕý ļöçàļé, ţĥéñ ŕé-đéŕîṽéš çöṽéŕàĝé, ŕüñš ţĥé çĥéçķš àñđ đéçîđéš ŵĥîçĥ ƃļöçķš
ŵàîţ ƒöŕ ŕéṽîéŵ, öñçé ƒöŕ àļļ ļöçàļéš ţöĝéţĥéŕ.
Ŵîţĥîñ öñé þàšš, ķàþî üþ ƒàñš öüţ þéŕ ļöçàļé (--ĵöƃš); ţĥé þàšš ƃàŕŕîéŕ ŕé-đéŕîṽéš çöṽéŕàĝé àñđ đéçîđéš ŵĥîçĥ ƃļöçķš ŵàîţ ƒöŕ ŕéṽîéŵ öñçé àļļ ŵöŕķéŕš ƒîñîšĥ.
Ƒöŕ àĝéñţš àñđ ÇÎ, --json šţŕéàḿš ţĥé ŕüñ àš ÑĐĴŠÖÑ, öñé çöñṽéŕĝéñçé éṽéñţ
þéŕ ļîñé (þļàñ, þàšš, þéŕ-ļöçàļé þŕöĝŕéšš, çĥéçķš, ŵàîţîñĝ ƒöŕ ŕéṽîéŵ öŕ çöñṽéŕĝéđ), ŵîţĥ ţĥé
šţŕüçţüŕéđ ŕéšüļţ àš ţĥé ƒîñàļ ŕéçöŕđ. Ţĥé šàḿé éṽéñţš ƒééđ ţĥé Ķàþî Đéšķţöþ
þàššéš ṽîéŵ.
kapi run <flow> ŕüñš à çüšţöḿ þîþéļîñé: öñé ñàḿéđ ƒļöŵ, öñé þàšš, ñö ĝàţé
ļööþ. Üšé îţ ŵĥéñ ýöü ŵàñţ à šþéçîƒîç çöḿþöšîţîöñ, àñđ üšé kapi up ƒöŕ ţĥé
đàîļý çàţçĥ-üþ.
Đŕîƒţ, ŵàţçĥéđ éñđ ţö éñđ
Ƃéçàüšé šţàţé îš đéŕîṽéđ, ýöü çàñ ŵàţçĥ éàçĥ šţéþ öƒ ţĥé ŕéçöṽéŕý ƒŕöḿ à šöüŕçé
éđîţ. Ţàķé Ĝéŕḿàñ, ƒüļļý çàüĝĥţ üþ üñđéŕ
ship_gate: { translated: 100, established: 80 }:
kapi status
# locale blocks draft translated approved progress ship
# de 42 100% 100% 100% ██████████ 100% translated
Éđîţ öñé šöüŕçé šţŕîñĝ. Ñö ƒļàĝ îš šéţ àñđ ñö šţàţé îš ŵŕîţţéñ. Ţĥé ñéẋţ đéŕîṽàţîöñ ŕéàđš ţĥé ŵöŕķîñĝ ţŕéé àñđ çöḿþàŕéš éàçĥ đéçîšîöñ ŵîţĥ ţĥé šöüŕçé îţ àþþŕöṽéđ. Ţĥé éđîţéđ ƃļöçķ'š ƃàšîš đéŕš ƒŕöḿ îţš çüŕŕéñţ šöüŕçé, šö îţ ŕéàđš àš šţàļé. Îţ ĥöļđš à ţàŕĝéţ, šö îţ šîţš àţ đŕàƒţ, ƃüţ ţĥàţ ţàŕĝéţ ţŕàñšļàţéš à šéñţéñçé ţĥàţ îš ĝöñé ƒŕöḿ ţĥé þŕöĵéçţ, àñđ ţĥé àþþŕöṽàļ ƃöüñđ ţö ţĥé öļđ þàîŕîñĝ đöéš ñöţ àþþļý:
kapi status
# locale blocks draft translated approved progress ship
# de 42 100% 98% 98% █████████░ 99% blocked: stale
#
# 1 block(s) stale: the source changed since the translation was decided.
# They do not ship until you re-review them with `kapi status --review`.
Öñé þàšš çļöšéš ŵĥàţ à ḿàçĥîñé çàñ çļöšé. À šţàļé ƃļöçķ îš ŵöŕķ. Ţĥé ļööþ ŕé-đŕàƒţš îţ àĝàîñšţ ţĥé çüŕŕéñţ šöüŕçé, çöñţéñţ ḿéḿöŕý ƒîŕšţ àñđ ÀÎ ƒöŕ ţĥé ŕéḿàîñđéŕ, ţĥé šàḿé ŵàý îţ þŕöđüçéš à ƃļöçķ ţĥàţ ĥàš ñö ţŕàñšļàţîöñ. Ţĥé þļàñ ǫüöţéš ţĥàţ ŵöŕķ ƃéƒöŕé àñý ţöķéñš àŕé šþéñţ:
kapi up --plan
# locale missing stale unanswered content memory exact stored drafts drafted by flow out of reach ~tokens
# de 0 1 0 0 0 1 0 9
#
# 1 block(s) stale: their source changed since the translation was decided.
# They are re-drafted against the current source (priced above) and return
# to review un-approved. See `kapi status --review`.
kapi up --passes 1
# Re-drafted 1 stale block(s) against the current source. They return to
# review un-approved (the earlier approval is not restored).
kapi status
# locale blocks draft translated approved progress ship
# de 42 100% 100% 98% █████████░ 99% blocked: stale
Ţĥé ŕé-đŕàƒţ ĥàþþéñš ĥöŵéṽéŕ ţĥé ƃļöçķ îš îđéñţîƒîéđ. Ŵĥéñ ţĥé éđîţ ŕé-ķéýš ţĥé ƃļöçķ (à þŕöšé þàŕàĝŕàþĥ, ŵĥöšé îđéñţîţý îš îţš ŵöŕđîñĝ), ţĥé öļđ ţŕàñšļàţîöñ šţöþš þàîŕîñĝ ŵîţĥ îţ. Ŵĥéñ ţĥé ƃļöçķ ķééþš îţš ķéý (à çàţàļöĝ éñţŕý, ŵĥöšé îđéñţîţý îš îţš ñàḿé), ţĥé öļđ ţŕàñšļàţîöñ šţîļļ šîţš ƃéšîđé ţĥé ŕéŵŕîţţéñ šéñţéñçé. Ţĥé ļööþ đöéš ñöţ çöüñţ îţ àš à ţŕàñšļàţîöñ öƒ ţĥé ñéŵ šéñţéñçé. Îţ ķééþš ţĥé éàŕļîéŕ ŵöŕđîñĝ îñ ţĥé çöñţéñţ ḿéḿöŕý üñđéŕ ţĥé šéñţéñçé îţ đöéš ţŕàñšļàţé, ŵĥéŕé ţĥé ŕéđŕàƒţ ŕéàđš îţ àš ŕéƒéŕéñçé, àñđ đŕàƒţš ţĥé éñţŕý àƒŕéšĥ.
Ţĥîš àþþļîéš îñ éṽéŕý ļàñĝüàĝé, ŕéṽîéŵéđ öŕ ñöţ. À ŕéŵŕîţé çĥàñĝéš ţĥé
šöüŕçé, šö éṽéŕý ļöçàļé'š ţŕàñšļàţîöñ öƒ ţĥé öļđ šéñţéñçé ţŕàñšļàţéš à šéñţéñçé
ţĥàţ îš ĝöñé. Éàçĥ îš ķéþţ üñđéŕ îţš öŵñ ŵöŕđîñĝ àñđ éàçĥ îš đŕàƒţéđ àĝàîñ. Ţĥé
ļàñĝüàĝéš ŵîţĥ à đéçîšîöñ šĥöŵ ţĥé ƃļöçķ öñ ţĥé stale àẋîš àƃöṽé, àñđ ţĥé ŕéšţ
çöḿé ƃàçķ àš þéñđîñĝ ŵöŕķ. À ţŕàñšļàţîöñ éđîţéđ îñ ţĥé šàḿé çöḿḿîţ àš îţš šöüŕçé
îš ţĥé éẋçéþţîöñ. Šöḿéöñé ŵŕöţé ţĥàţ þàîŕîñĝ öñ þüŕþöšé, šö ķàþî ķééþš îţ àš îţ
šţàñđš.
Ƒöŕ à ţŕàñšļàţîöñ ñöƃöđý ĥàš ŕéṽîéŵéđ, ţĥé šöüŕçé îţ ŵàš ḿàđé ƒŕöḿ îš îñ ţĥé
ŕéçöŕđ öƒ ţĥé ŕüñ ţĥàţ ŵŕöţé îţ, ŵĥîçĥ ţĥé þŕöĵéçţ'š çöñţéẋţ ķééþš ƃéšîđé îţš
đéçîšîöñš. Îñ à þŕöĵéçţ ţĥàţ šĥàŕéš îţš çöñţéẋţ ţĥŕöüĝĥ à ƃàçķéñđ, à ƒŕéšĥ
çļöñé ŕéàđš ţĥàţ çöñţéẋţ ŵîţĥ
kapi context sync.
Üñţîļ îţ đöéš, kapi up àñđ kapi status šàý šö îñ öñé ļîñé, àñđ à šöüŕçé
éđîţéđ ƃéƒöŕé ţĥé çļöñé'š ƒîŕšţ þàšš îš ñöţ ĝŕàđéđ šţàļé ţĥéŕé:
kapi status
# ...
# This checkout holds no record of the source its translations were made from; run `kapi context sync` to read the project's context before a pass grades them.
Ţĥé ļööþ þŕöđüçéš ţŕàñšļàţîöñš àñđ ñéṽéŕ àþþŕöṽéš ţĥéḿ. Ţĥé ŕé-đŕàƒţéđ ƃļöçķ çöḿéš ƃàçķ àţ đŕàƒţ, îñ ţĥé ŕéṽîéŵ ŵöŕķļîšţ, àñđ ţĥé éàŕļîéŕ àþþŕöṽàļ îš ñöţ ŕéšţöŕéđ. Ţĥé ļöçàļé đöéš ñöţ šĥîþ üñţîļ à þéŕšöñ ŕéṽîéŵš ţĥé ñéŵ þàîŕîñĝ.
Öñé ṽéŕƃ, ţŵö ṽéñüéš
Ţĥé ļööþ'š çöḿþüţé ŕüñš šöḿéŵĥéŕé. Ţĥàţ þļàçé îš ţĥé ṽéñüé, à þŕöþéŕţý öƒ
ţĥé þŕöĵéçţ, àñđ kapi up îš ţĥé šàḿé çöḿḿàñđ îñ éîţĥéŕ ṽéñüé. Ţĥŕéé çöñçéŕñš
šţàý šéþàŕàţé, éàçĥ ŵîţĥ îţš öŵñ çöḿḿàñđ öŕ šéţţîñĝ:
Ţŕàñšþöŕţ ḿöṽéš šţàţé, ţĥé ļööþ þŕöđüçéš ŵöŕķ, ṽéñüé îš ŵĥéŕé îţ ŕüñš: ţĥŕéé öŕţĥöĝöñàļ çöñçéŕñš.
- Ţŕàñšþöŕţ:
kapi pushàñđkapi pullḿàķé à ļöçàļ çĥéçķöüţ àñđ à šéŕṽéŕ ŕéþļîçà çöñšîšţéñţ. Ţĥéý ḿöṽé đàţà öñļý (à đ, çöñƒļîçţš, ţéŕḿîñöļöĝý ĥàñđ-öƒƒ) àñđ ñéṽéŕ þŕöđüçé ţŕàñšļàţîöñš, ļîķégit pushàñđgit fetch. - Ţĥé ļööþ:
kapi up, ţĥé öñé ṽéŕƃ ţĥàţ þŕöđüçéš ŵöŕķ ţöŵàŕđ ţĥé ĝàţéš. - Ṽéñüé: ŵĥéŕé
up'š çöḿþüţé éẋéçüţéš: ýöüŕ ḿàçĥîñé (ýöüŕ ÀÎ šüƃšçŕîþţîöñ öŕ ķéýš) öŕ à çöññéçţéđ šéŕṽéŕ (ţĥé öŕĝ'š ķéýš, šĥàŕéđ çöñţéñţ ḿéḿöŕý àñđ ţéŕḿîñöļöĝý, àļŵàýš-öñ).
Îñ à ƒîļé-öñļý þŕöĵéçţ ţĥé ļööþ ŕüñš ļöçàļļý. Ţĥé öþéñ-šöüŕçé kapi
ƃîñàŕý çàŕŕîéš ñö šéŕṽéŕ çöđé, šö ţĥîš îš ţĥé öñļý ṽéñüé îţ ĥàš. Îñ à
šéŕṽéŕ-çöññéçţéđ þŕöĵéçţ (à ŕéçîþé ţĥàţ đéçļàŕéš à šéŕṽéŕ ṽéñüé) ţĥé šàḿé
kapi up ŕüñš öñ ţĥé šéŕṽéŕ ƃý đéƒàüļţ: îţ þüšĥéš ţĥé đŕîƒţ, ţĥé šéŕṽéŕ ŕüñš
ţĥé ļööþ öñ ţĥé öŕĝ'š ķéýš àñđ šĥàŕéđ àššéţš, þŕöĝŕéšš šţŕéàḿš ƃàçķ ļîṽé îñţö
ţĥé šàḿé ţéŕḿîñàļ ṽîéŵ, ŕéšüļţš þüļļ đöŵñ, àñđ ƃļöçķš ŵàîţîñĝ ƒöŕ ŕéṽîéŵ ļàñđ îñ ţĥé ţéàḿ'š
ŕéṽîéŵ ǫüéüé. Ţĥé ŕüñ'š éṽéñţ šţŕéàḿ îš îđéñţîçàļ îñ éîţĥéŕ ṽéñüé. Ŵĥéñéṽéŕ à
đéçļàŕéđ ṽéñüé ḿàķéš ţĥé çĥöîçé àḿƃîĝüöüš, kapi up þŕîñţš ţĥé ŕéšöļṽéđ ṽéñüé àš
îţš ƒîŕšţ ļîñé, àñđ kapi status ŕéþöŕţš
ţĥé 郃éçţîṽé ṽéñüé àñđ server.converge þöļîçý àļöñĝšîđé ţĥé çöṽéŕàĝé ĝŕîđ.
kapi up --local öṽéŕŕîđéš ţĥé ṽéñüé ƒöŕ öñé ŕüñ, ŕüññîñĝ ţĥé ļööþ öñ ýöüŕ
ḿàçĥîñé àñđ ţĥéñ þüšĥîñĝ ţĥé ŕéšüļţš šö ţĥé šéŕṽéŕ îš ñéṽéŕ ļéƒţ šţàļé;
kapi up --server ŕéǫüîŕéš ţĥé šéŕṽéŕ ṽéñüé àñđ ƒàîļš îƒ îţ îš üñàṽàîļàƃļé,
ƒöŕ ÇÎ ţĥàţ ḿüšţ ñéṽéŕ šþéñđ ļöçàļ ķéýš.
kapi push öñļý ḿöṽéš đàţà; îţ ñéṽéŕ ţŕàñšļàţéš. À šéŕṽéŕ ţĥàţ ķééþš ţĥé
þŕöĵéçţ çöñţîñüöüšļý çàüĝĥţ üþ (server.converge) îš àñ éẋþļîçîţ þéŕ-þŕöĵéçţ
þöļîçý, îñ ţĥé ŵàý ţĥàţ ÇÎ ŕüññîñĝ öñ git push îš à ŕéþöšîţöŕý þöļîçý.
:::ñöţé
Ţĥé šéŕṽéŕ ṽéñüé (ţĥé þļàţƒöŕḿ'š ŕéçîþé ƃļöçķ, kapi push/pull/up --local, ţĥé
çöñţîñüöüš çàţçĥ-üþ þöļîçý, àñđ ţĥé šéŕṽéŕ-šîđé Ŕüñš šüŕƒàçé) îš þŕöṽîđéđ ƃý
ţĥé çöññéçţéđ þļàţƒöŕḿ'š þļüĝîñ, ŵĥîçĥ ýöü îñšţàļļ ƃéšîđé ţĥé öþéñ-šöüŕçé kapi ƃîñàŕý. Šéé ţĥé þļàţƒöŕḿ
đöçüḿéñţàţîöñ ƒöŕ šéţţîñĝ üþ à çöññéçţéđ þŕöĵéçţ àñđ çöñṽéŕĝéñçé àš à šéŕṽîçé.
:::
Öñé đéƒàüļţ ƒļöŵ çàñ šţîļļ ṽàŕý ƃý ļöçàļé. defaults.locales.<lang>.tools
öṽéŕŕîđéš à ţööļ'š çöñƒîĝ ƒöŕ ţĥàţ ţàŕĝéţ ļàñĝüàĝé öñļý (ḿéŕĝéđ öñ ţöþ öƒ ţĥé
þŕöĵéçţ-ŵîđé defaults.tools àñđ üñđéŕ à ƒļöŵ šţéþ'š öŵñ çöñƒîĝ) šö à šîñĝļé
ƒļöŵ ţüŕñš àñ àđṽàñçéđ šţéþ öñ ŵĥéŕé à ļöçàļé ñééđš îţ:
defaults:
flow: translate-and-check
locales:
de:
tools:
redact: { enabled: true } # German redacts PII; other locales don't
Ŕéṽîéŵ: ţĥé šţàţé ŕéçöŕđ
À ḿàçĥîñé ţàķéš à ƃļöçķ ţö ţŕàñšļàţéđ; à þéŕšöñ ţàķéš îţ ţö àþþŕöṽéđ. Ţĥàţ àþþŕöṽàļ îš àñ àüţĥöŕéđ đéçîšîöñ (ŵĥö àþþŕöṽéđ ŵĥîçĥ éẋàçţ ţŕàñšļàţîöñ), šö ķàþî ŕéçöŕđš îţ îñ ţĥé þŕöĵéçţ šţöŕé. Îţ îš đüŕàƃļé àţ öñçé, àñđ éṽéŕý çĥéçķöüţ öƒ ţĥé þŕöĵéçţ ŕéàđš îţ. Ţĥé çöñţéñţ ḿéḿöŕý ĥöļđš ñö àþþŕöṽàļš.
kapi status --review îš ţĥé ŵöŕķļîšţ: öñé ǫüéüé öƒ ţĥé ƃļöçķš àŵàîţîñĝ à
þéŕšöñ, éàçĥ ƃéļöñĝîñĝ ţö à ļàñĝüàĝé, àñđ ţĥé šöüŕçé ļàñĝüàĝé îš öñé öƒ ţĥéḿ
(îţš ŕöŵš àŕé ḿàŕķéđ source). Ţŕàñšļàţéđ ƃļöçķš ñöţ ýéţ àþþŕöṽéđ àŕé ţĥé
đéŕîṽéđ çöüñţéŕþàŕţ öƒ ţĥé ļööþ'š ŵàîţîñĝ ƒöŕ ŕéṽîéŵ öüţçöḿé. Ýöü àþþŕöṽé öñé ŵîţĥ
kapi apply, àš à decide öþéŕàţîöñ ţĥàţ ñàḿéš ţĥé šöüŕçé đöçüḿéñţ, ţĥé ƃļöçķ
àñđ ţĥé éđîţîöñ ţĥé ŵöŕķļîšţ ļîšţš, àñđ ţĥé ŕéṽîšîöñ kapi inspect šĥöŵš ƒöŕ
ţĥàţ éđîţîöñ:
kapi status --review # the worklist: file, key, locale per pending block
kapi status --review --lang nb # one language (repeat or comma-separate for several)
kapi inspect src/en.json --jsonl # each block's editions, with their revisions
kapi apply <<<'{"ops":[{"op":"decide","at":{"doc":"src/en.json","block":"save.label","edition":"nb"},"if_match":"r:74dbfac2ed1c9d6e","outcome":"establish"}]}'
Àñ àþþŕöṽàļ îš àƃöüţ à þàîŕîñĝ: ţĥîš ŕéñđéŕîñĝ, öƒ ţĥîš šöüŕçé. Ţĥé
ŕéçöŕđ ƃîñđš ƃöţĥ ĥàļṽéš ƃý ŕéṽîšîöñ, ţĥé šàḿé ţöķéñ kapi inspect šĥöŵš: ţĥé
ţŕàñšļàţîöñ îţ ƃļéššéš, àñđ ţĥé ƃàšîš, ţĥé šöüŕçé îţ ƃļéššéđ ţĥàţ
ţŕàñšļàţîöñ ƒöŕ. Éđîţîñĝ éîţĥéŕ šîđé àƒţéŕŵàŕđš đŕöþš ţĥé ƃļöçķ ƃàçķ ƃéļöŵ
àþþŕöṽéđ. À çĥàñĝéđ ļîñķ öŕ öţĥéŕ îñļîñé çöđé çöüñţš àš ḿüçĥ àš à çĥàñĝéđ ŵöŕđ. Àñ àþþŕöṽàļ
ŕéçöŕđéđ ƃý àñ éàŕļîéŕ ŕéļéàšé ƃîñđš ţĥé ţŵö ţéẋţš àļöñé, àñđ ķééþš àñšŵéŕîñĝ
ţĥàţ ŵàý üñţîļ ţĥé ƃļöçķ îš đéçîđéđ àĝàîñ. Öñçé ŕéçöŕđéđ, çöṽéŕàĝé ŕéàđš ţĥé
ƃļöçķ àš àþþŕöṽéđ, approved% çļîḿƃš, àñđ à { established: … } ĝàţé
ƒļîþš ţö šĥîþþàƃļé.
À ƃļöçķ ŵĥöšé šöüŕçé ḿöṽéđ ŕéàđš àš šţàļé. Îţ ĥöļđš à ţàŕĝéţ, šö îţ šîţš
àţ đŕàƒţ, ƃüţ ţĥé ţàŕĝéţ ţŕàñšļàţéš ţĥé öļđ šöüŕçé. kapi status çöüñţš îţ,
ţĥé ŕéṽîéŵ ŵöŕķļîšţ ţàķéš îţ ƃàçķ, àñđ ţĥé ļöçàļé đöéš ñöţ šĥîþ, ŵîţĥ öŕ ŵîţĥöüţ
à đéçļàŕéđ šĥîþ ĝàţé. Ñö çöṽéŕàĝé ţĥŕéšĥöļđ ḿàķéš à ţŕàñšļàţîöñ öƒ à ŕéŵŕîţţéñ
šéñţéñçé šĥîþþàƃļé. Ţĥé
ñéẋţ kapi up ŕé-đŕàƒţš îţ àĝàîñšţ ţĥé çüŕŕéñţ šöüŕçé (þŕîçéđ îñ --plan, àñđ
ŕéþöŕţéđ àš à ŕé-đŕàƒţ îñ ţĥé ŕüñ šüḿḿàŕý) àñđ ļéàṽéš îţ üñ-àþþŕöṽéđ ƒöŕ ŕéṽîéŵ.
Ŕéšţöŕé ţĥé šöüŕçé ƃéƒöŕé ţĥàţ ŕüñ àñđ îţ çöñṽéŕĝéš ƃàçķ öñ ţĥé đéçîšîöñ
àļŕéàđý ŕéçöŕđéđ; ñöƃöđý ŕé-ŕéṽîéŵš àñýţĥîñĝ.
À đéçîšîöñ ŕéçöŕđéđ ŵîţĥöüţ à ƃàšîš îš üñķñöŵñ. Šüçĥ à ƃļöçķ ķééþš îţš ŕüñĝ
àñđ šĥîþš, àñđ kapi status ŕéþöŕţš ĥöŵ ḿàñý ţĥéŕé àŕé. Đéçîđîñĝ ţĥé ƃļöçķ àĝàîñ
ŕéçöŕđš à ƃàšîš.
Àñ àþþŕöṽàļ ƃîñđš ţö ţĥé þàîŕîñĝ îţ ƃļéššéš (ţĥé ţŕàñšļàţîöñ, àñđ ţĥé šöüŕçé îţ ŵàš àþþŕöṽéđ ƒöŕ): éđîţ éîţĥéŕ àñđ ţĥé ƃļöçķ ƒàļļš ƃéļöŵ àþþŕöṽéđ üñţîļ šöḿéöñé àþþŕöṽéš ţĥé ñéŵ þàîŕ.
Ţĥé ŕéçöŕđ ţŕàṽéļš ŵîţĥ ţĥé þŕöĵéçţ ţĥŕöüĝĥ ţĥé þŕöĵéçţ'š çöñţéẋţ ƃàçķéñđ ŵîţĥ
kapi context sync, öŕ îñ öñé ƒîļé ŵîţĥ kapi store export. À
šéŕṽéŕ-çöññéçţéđ þŕöĵéçţ þüšĥéš îţ ţö ţĥé ŕéḿöţé îñšţéàđ, ŵĥéŕé ƃļöçķš ŵàîţîñĝ ƒöŕ ŕéṽîéŵ
éñţéŕ ţĥé ţéàḿ'š àššîĝñḿéñţ àñđ ŕéṽîéŵ ǫüéüé.
Ţĥé çöñţéñţ ḿéḿöŕý îš šéþàŕàţé. À memory öþéŕàţîöñ ţĥŕöüĝĥ kapi apply àđđš
à šöüŕçé→ţàŕĝéţ þàîŕ ţö ţĥé ŕéçýçļé çöŕþüš ƒöŕ ƒüţüŕé ŕéüšé àñđ ñéṽéŕ
þŕöḿöţéš à ƃļöçķ ţö àþþŕöṽéđ.
Ŕüñ ţĥé ļööþ ýöüŕšéļƒ: ţĥîš îš ţĥé ŕéàļ ķàþî çöḿþîļéđ ţö ŴéƃÀššéḿƃļý, ŵöŕķîñĝ öñ
àñ îñ-ḿéḿöŕý þŕöĵéçţ. status šĥöŵš ţĥé ţŕàñšļàţéđ-ƃüţ-üñŕéṽîéŵéđ šţàţé,
status --review ļîšţš ţĥé ŵöŕķļîšţ, apply ŕéçöŕđš ţĥé ƃļöçķ šţàţé îñ ţĥé
þŕöĵéçţ šţöŕé, àñđ ţĥé çļöšîñĝ status šĥöŵš àþþŕöṽéđ çļîḿƃ:
Ļöàđîñĝ ţĥé ŵàļķţĥŕöüĝĥ…
Šéé àļšö Ŵĥéŕé ţŕàñšļàţîöñš & ţéŕḿš ļîṽé ƒöŕ ţĥé ḿéḿöŕý àñđ ţéŕḿš ḿöđéļ, àñđ Ķééþ šöüŕçé öñ ƃŕàñđ ƒöŕ ţĥé šöüŕçé-šîđé çĥéçķš ţĥàţ đŕîṽé ţĥé àüţĥöŕîñĝ ļàđđéŕ.