Üšé çàšé: à ŵéƃšîţé îñ šéṽéŕàļ ļàñĝüàĝéš
Çàŕŕý à ŵéƃšîţé'š çöñţéñţ îñţö šéṽéŕàļ ļàñĝüàĝéš ƒŕöḿ îţš ŕéþöšîţöŕý ŵîţĥ ķàþî àñđ ţĥé ƃöŵŕàîñ þļüĝîñ, àñđ, îƒ ýöü ŵàñţ ŕéṽîéŵéŕš îñ ţĥé ƃŕöŵšéŕ, ŕéṽîéŵ ţĥé đŕàƒţš îñ à Ƃöŵŕàîñ ŵöŕķšþàçé. À ļàñĝüàĝé îš öñé ḿöŕé çööŕđîñàţé, šö ţĥé çöñţéẋţ ţĥàţ ĝöṽéŕñš ţĥé šöüŕçé ĝöṽéŕñš éàçĥ ţàŕĝéţ ţöö.
Öṽéŕṽîéŵ
- Îñîţîàļîžé à þŕöĵéçţ àñđ ḿàþ ýöüŕ ŵéƃšîţé'š ƒîļéš.
- Çàţçĥ üþ ŵîţĥ
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:
profile: acme-docs
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 flows/translate-website.yaml
kapi run translate-website
À çüšţöḿ ƒļöŵ çöḿþöšéš ţööļš îñţö à þîþéļîñé. flows/translate-website.yaml, ŵîţĥ flows_dir: flows îñ kapi.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 exec translate: đŕàƒţ ŵîţĥ àñ ÀÎ þŕöṽîđéŕkapi exec recycle: þŕé-ƒîļļ ţàŕĝéţš ƒŕöḿ çöñţéñţ ḿéḿöŕýkapi exec qa: ŕüļé-ƃàšéđ ǫüàļîţý çĥéçķš (ŵĥîţéšþàçé, þüñçţüàţîöñ, þļàçéĥöļđéŕš)kapi exec term-check: çĥéçķ ţĥé ţéŕḿš îñ ƒöŕçé àţ éàçĥ ƃļöçķ'š þöîñţkapi run <flow>: éẋéçüţé à çöḿþöšéđ öŕ çüšţöḿ ḿüļţî-ţööļ ƒļöŵ
Ţööļš àñđ ƒļöŵš þŕöçéšš éṽéŕý ƒîļé ţĥàţ ḿàţçĥéš ýöüŕ ŕéçîþé'š collections:.
Šţéþ 3: ŕéṽîéŵ
Ļöçàļļý, kapi status --review ļîšţš ţĥé ţŕàñšļàţéđ ƃļöçķš àŵàîţîñĝ à
đéçîšîöñ, àñđ kapi apply ŕéçöŕđš öñé îñ ţĥé þŕöĵéçţ'š đéçîšîöñ ļéđĝéŕ, ŵĥéŕé
éṽéŕý çĥéçķöüţ ŕéàđš îţ.
Ƒöŕ à ŕéṽîéŵéŕ ŵĥö ŵöŕķš îñ à ƃŕöŵšéŕ öŕ îñ ţĥé đéšķţöþ àþþ, çöññéçţ ţĥé þŕöĵéçţ ţö à ŵöŕķšþàçé (šţéþ 4) àñđ üšé ţĥé ŕéṽîéŵ šéššîöñ. Îţ šĥöŵš šöüŕçé àñđ đŕàƒţ šîđé ƃý šîđé, ŵîţĥ ţĥé çĥéçķš àñđ ţĥé ţéŕḿš îñļîñé. À ŕéṽîéŵéŕ çàñ àþþŕöṽé éṽéŕýţĥîñĝ ţĥàţ þàššéš îñ öñé àçţîöñ, àñđ ţĥé þéŕ-ļöçàļé šĥîþ šţàţé šĥöŵš ŵĥàţ çàñ ĝö öüţ ţöđàý.
Üšîñĝ ţéŕḿš
- Îḿþöŕţ ţéŕḿš (ŢƂẊ, ÇŠṼ, ĴŠÖÑ) ŵîţĥ
kapi terms import; ţĥéý ļàñđ îñ ţĥé þŕöĵéçţ'š ţéŕḿš šţöŕé - Éṽéŕý ŕüñ àñđ çĥéçķ ŕéàđš ţĥé þŕöĵéçţ'š ţéŕḿš šţöŕé ŵîţĥ ñöţĥîñĝ ƃöüñđ;
kapi store importŕéàđš à ţéŕḿš ƃüñđļé îñţö îţ - Àđđ
term-checkţö ýöüŕ ƒļöŵ ţö çĥéçķ éàçĥ ţàŕĝéţ àĝàîñšţ ţĥé ţéŕḿš îñ ƒöŕçé - Îñ à ŵöŕķšþàçé, ţĥé éđîţöŕ'š çöñţéẋţ þàñéļ šĥöŵš ḿàţçĥéđ ţéŕḿš þéŕ ƃļöçķ
Šţéþ 4: šýñç ŵîţĥ à Ƃöŵŕàîñ ŵöŕķšþàçé (öþţîöñàļ)
Ƒöŕ ţéàḿ çöļļàƃöŕàţîöñ, çöññéçţ ýöüŕ þŕöĵéçţ ţö à Ƃöŵŕàîñ ŵöŕķšþàçé:
# 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
Ţĥé þüšĥ/þüļļ ŵöŕķƒļöŵ îš šîḿîļàŕ ţö ĝîţ:
| Ĝîţ | ķàþî |
|---|---|
git status | kapi status |
git diff | kapi diff |
git pull | kapi pull |
git push | kapi push |
ķàþî đéçļàŕéš îţš ţŕéé öñ éṽéŕý þüšĥ, šö öñļý çĥàñĝéđ ƃļöçķš ţŕàñšƒéŕ öṽéŕ ţĥé ñéţŵöŕķ. Öñ à çöññéçţéđ þŕöĵéçţ, kapi up ŕüñš ţĥé ļööþ öñ ţĥé šéŕṽéŕ àñđ đöéš þüšĥ, çàţçĥ üþ àñđ þüļļ îñ öñé çöḿḿàñđ.
Ţîþš
- Îñîţîàļîžé þŕöĵéçţš ŵîţĥ
kapi initţö ŵŕîţé àkapi.yamlŕéçîþé àñđ ţĥé çĥéçķöüţ'š.kapi/çàçĥé - Ƃîñđ à ṽöîçé þŕöƒîļé àñđ à ţéŕḿš šţöŕé îñ
defaults:šö đŕàƒţš àñđ çĥéçķš ŕéàđ ţĥé šàḿé çöñţéẋţ - Đéƒîñé çüšţöḿ ƒļöŵš îñ ţĥé đîŕéçţöŕý
flows_dir:ñàḿéš, ƒöŕ ýöüŕ šþéçîƒîç ŵöŕķƒļöŵ - Þüţ
recycleƃéƒöŕétranslateţö ŕéüšé àþþŕöṽéđ ŵöŕđîñĝ ƃéƒöŕé šþéñđîñĝ çŕéđîţš - Ŕüñ
kapi pseudo-translateƒîŕšţ ţö îđéñţîƒý þöţéñţîàļ ÜÎ ţŕüñçàţîöñ îššüéš - Üšé ļöçàļ àüţöḿàţîöñš ţö ŕüñ ţĥé çĥéçķš ƃéƒöŕé þüšĥîñĝ ţö à ŵöŕķšþàçé
- Çöḿḿîţ
kapi.yamlţö ĝîţ.kapi initķééþš.kapi/, ţĥîš çĥéçķöüţ'š çàçĥé, öüţ öƒ ĝîţ - Çĥéçķ
kapi statusƃéƒöŕé þüšĥîñĝ ţö šéé ŵĥàţ çĥàñĝéđ