Üšé çàšé: à ŵéƃšîţé îñ šéṽéŕàļ ļàñĝüàĝéš
Ţĥîš ĝüîđé ŵàļķš ţĥŕöüĝĥ çàŕŕýîñĝ à ŵéƃšîţé'š çöñţéñţ îñţö šéṽéŕàļ ļàñĝüàĝéš ŵîţĥ kapi (ŵîţĥ ţĥé bowrain þļüĝîñ) àñđ, öþţîöñàļļý, à Bowrain ŵöŕķšþàçé ƒöŕ ŕéṽîéŵ. À ļàñĝüàĝé îš öñé ḿöŕé çööŕđîñàţé: ţĥé šàḿé çöñţéẋţ ţĥàţ ĝöṽéŕñš ţĥé šöüŕçé ĝöṽéŕñš éàçĥ ţàŕĝéţ.
Öṽéŕṽîéŵ
- ÇĻÎ: îñîţîàļîžé à þŕöĵéçţ àñđ ḿàþ ýöüŕ ŵéƃšîţé'š ƒîļéš
- ÇĻÎ: çöñṽéŕĝé ŵîţĥ
kapi up: ÀÎ đŕàƒţîñĝ, çöñţéñţ-ḿéḿöŕý ŕéçýçļîñĝ, àñđ çĥéçķš àĝàîñšţ ýöüŕ ţéŕḿš àñđ ṽöîçé - ÇĻÎ: ŕéṽîéŵ ļöçàļļý, öŕ þüšĥ ţö à ŵöŕķšþàçé àñđ ŕéṽîéŵ îñ ţĥé šéššîöñ
- ÇĻÎ: ķééþ ţĥé þŕöĵéçţ îñ šţéþ ŵîţĥ ţĥé ŵöŕķšþàçé
Šţéþ 1: îñîţîàļîžé ţĥé þŕöĵéçţ
Çŕéàţé à þŕöĵéçţ îñ ýöüŕ ŵéƃšîţé ŕéþöšîţöŕý:
# Initialize the project with source and target locales
cd my-website/
kapi init --name "Website" --source en-US --targets fr-FR,de-DE,ja-JP
# Check project status and coverage
kapi status
# Configure content collections in kapi.yaml
# Edit to map your local files to formats and target paths
Éẋàḿþļé kapi.yaml:
version: v1
name: Website
defaults:
source_language: en-US
target_languages: [fr-FR, de-DE, ja-JP]
voice: .kapi/voice.yaml
terms_source: .kapi/terms.json
collections:
- path: content/**/*.md
format: markdown
target: i18n/{lang}/{path}/{filename}
- path: src/locales/**/*.json
format: json
Šţéþ 2: çöñṽéŕĝé ŵîţĥ kapi up
kapi up îš ţĥé çöñṽéŕĝéñçé ṽéŕƃ: îţ ƃŕîñĝš éṽéŕý ţàŕĝéţ ļàñĝüàĝé üþ ţö đàţé àĝàîñšţ ţĥé çüŕŕéñţ šöüŕçé, đŕàƒţîñĝ ŵîţĥ ÀÎ, ŕéçýçļîñĝ ƒŕöḿ çöñţéñţ ḿéḿöŕý, àñđ ŕüññîñĝ ţĥé çĥéçķš, àñđ îš šàƒé ţö ŕé-ŕüñ ŵĥéñéṽéŕ ţĥé šöüŕçé çĥàñĝéš.
# Bring every target language up to date against the source
kapi up
Ƒöŕ ƒîñéŕ çöñţŕöļ, ŕüñ à šîñĝļé ţööļ ŵîţĥ kapi exec, öŕ à çüšţöḿ ƒļöŵ ŵîţĥ kapi run:
# Run one tool over the project's collections
kapi exec translate
# Or run a custom flow declared in .kapi/flows/translate-website.yaml
kapi run translate-website
À çüšţöḿ ƒļöŵ çöḿþöšéš ţööļš îñţö à þîþéļîñé. .kapi/flows/translate-website.yaml:
name: translate-website
description: Draft website content with AI and check it
steps:
- tool: recycle
- tool: translate
config:
provider: anthropic
model: claude-sonnet-5
- tool: term-check
- tool: qa
Ţööļš àñđ ƒļöŵš
kapi ţööļš àñđ ƒļöŵš àŕé çöḿþöšàƃļé þîþéļîñéš ţĥàţ ŕüñ öñ ýöüŕ ļöçàļ ƒîļéš:
kapi exec translate: đŕàƒţ ŵîţĥ àñ ÀÎ þŕöṽîđéŕkapi exec recycle: þŕé-ƒîļļ ţàŕĝéţš ƒŕöḿ çöñţéñţ ḿéḿöŕýkapi exec qa: ŕüļé-ƃàšéđ ǫüàļîţý çĥéçķš (ŵĥîţéšþàçé, þüñçţüàţîöñ, þļàçéĥöļđéŕš)kapi exec term-check: çĥéçķ ţĥé ţéŕḿš îñ ƒöŕçé àţ éàçĥ ƃļöçķ'š þöîñţkapi run <flow>: éẋéçüţé à çöḿþöšéđ öŕ çüšţöḿ ḿüļţî-ţööļ ƒļöŵ
Ţööļš àñđ ƒļöŵš àüţöḿàţîçàļļý þŕöçéšš àļļ ƒîļéš ḿàţçĥîñĝ ýöüŕ ŕéçîþé'š collections:.
Šţéþ 3: ŕéṽîéŵ
Ļöçàļļý, kapi status --review ļîšţš ţĥé ţŕàñšļàţéđ üñîţš àŵàîţîñĝ à
đéçîšîöñ, àñđ kapi apply ŕéçöŕđš öñé; kapi commit þüƃļîšĥéš ţĥé đéçîšîöñš
îñţö ţĥé çöḿḿîţţéđ ŕéçöŕđ üñđéŕ .kapi/state/.
Ƒöŕ à ŕéṽîéŵéŕ ŵĥö ŵöŕķš îñ à ƃŕöŵšéŕ, çöññéçţ ţĥé þŕöĵéçţ ţö à ŵöŕķšþàçé (šţéþ 4) àñđ üšé ţĥé ŕéṽîéŵ šéššîöñ: šöüŕçé àñđ đŕàƒţ šîđé ƃý šîđé, ţĥé çĥéçķš àñđ ţĥé ţéŕḿš îñļîñé, ƃüļķ àþþŕöṽàļ öƒ éṽéŕýţĥîñĝ ţĥàţ þàššéš, àñđ à þéŕ-ļöçàļé šĥîþ šţàţé ţĥàţ šàýš ŵĥàţ çàñ ĝö öüţ ţöđàý.
Üšîñĝ ţéŕḿš
- Îḿþöŕţ ţéŕḿš (ŢƂẊ, ÇŠṼ, ĴŠÖÑ) ŵîţĥ
kapi terms import; ţĥéý ļàñđ îñ ţĥé þŕöĵéçţ'š ţéŕḿš šţöŕé - Ƃîñđ ţĥé šţöŕé ŵîţĥ
defaults.terms_sourcešö éṽéŕý ŕüñ àñđ çĥéçķ ŕéàđš îţ - Àđđ
term-checkţö ýöüŕ ƒļöŵ ţö çĥéçķ éàçĥ ţàŕĝéţ àĝàîñšţ ţĥé ţéŕḿš îñ ƒöŕçé - Îñ à ŵöŕķšþàçé, ţĥé éđîţöŕ'š çöñţéẋţ þàñéļ šĥöŵš ḿàţçĥéđ ţéŕḿš þéŕ ƃļöçķ
Šţéþ 4: šýñç ŵîţĥ à Bowrain ŵöŕķšþàçé (öþţîöñàļ)
Ƒöŕ ţéàḿ çöļļàƃöŕàţîöñ, çöññéçţ ýöüŕ þŕöĵéçţ ţö à Bowrain ŵöŕķšþàçé:
# Connect to a workspace
kapi init --server https://app.bowrain.cloud --project abc123
# Check standing
kapi status
# Send local changes up
kapi push
# Fetch results and reviewers' decisions
kapi pull
Ţĥé þüšĥ/þüļļ ŵöŕķƒļöŵ îš šîḿîļàŕ ţö ĝîţ:
| Ĝîţ | kapi |
|---|---|
git status | kapi status |
git diff | kapi diff |
git pull | kapi pull |
git push | kapi push |
kapi đéçļàŕéš îţš ţŕéé öñ éṽéŕý þüšĥ, šö öñļý çĥàñĝéđ ƃļöçķš ţŕàñšƒéŕ öṽéŕ ţĥé ñéţŵöŕķ. Öñ à çöññéçţéđ þŕöĵéçţ, kapi up ŕüñš ţĥé ļööþ öñ ţĥé šéŕṽéŕ àñđ đöéš þüšĥ, çàţçĥ üþ àñđ þüļļ îñ öñé çöḿḿàñđ.
Ţîþš
- Îñîţîàļîžé þŕöĵéçţš ŵîţĥ
kapi initţö ŵŕîţé àkapi.yamlŕéçîþé àñđ à çöḿḿîţţéđ.kapi/đîŕéçţöŕý - Ƃîñđ à ṽöîçé þŕöƒîļé àñđ à ţéŕḿš šţöŕé îñ
defaults:šö đŕàƒţš àñđ çĥéçķš ŕéàđ ţĥé šàḿé çöñţéẋţ - Đéƒîñé çüšţöḿ ƒļöŵš îñ
.kapi/flows/ƒöŕ ýöüŕ šþéçîƒîç ŵöŕķƒļöŵ - Þüţ
recycleƃéƒöŕétranslateţö ŕéüšé àþþŕöṽéđ ŵöŕđîñĝ ƃéƒöŕé šþéñđîñĝ çŕéđîţš - Ŕüñ
kapi pseudo-translateƒîŕšţ ţö îđéñţîƒý þöţéñţîàļ ÜÎ ţŕüñçàţîöñ îššüéš - Üšé ļöçàļ àüţöḿàţîöñš ţö ŕüñ ţĥé çĥéçķš ƃéƒöŕé þüšĥîñĝ ţö à ŵöŕķšþàçé
- Çöḿḿîţ
kapi.yamlàñđ.kapi/ţö ĝîţ; ţĥé çöñţéẋţ ĝŕàþĥ ƃéļöñĝš îñ ŕéṽîéŵ, àñđ öñļý.kapi/work/îš ĝîţîĝñöŕéđ - Çĥéçķ
kapi statusƃéƒöŕé þüšĥîñĝ ţö šéé ŵĥàţ çĥàñĝéđ