Šķîþ ţö ḿàîñ çöñţéñţ

Üšé çàšé: à ŵéƃšîţé îñ šéṽéŕàļ ļàñĝüàĝéš

Ţĥîš ĝüîđé ŵàļķš ţĥŕöüĝĥ çàŕŕýîñĝ à ŵéƃšîţé'š çöñţéñţ îñţö šéṽéŕàļ ļàñĝüàĝéš ŵîţĥ kapi (ŵîţĥ ţĥé bowrain þļüĝîñ) àñđ, öþţîöñàļļý, à Bowrain ŵöŕķšþàçé ƒöŕ ŕéṽîéŵ. À ļàñĝüàĝé îš öñé ḿöŕé çööŕđîñàţé: ţĥé šàḿé çöñţéẋţ ţĥàţ ĝöṽéŕñš ţĥé šöüŕçé ĝöṽéŕñš éàçĥ ţàŕĝéţ.

Öṽéŕṽîéŵ

  1. ÇĻÎ: îñîţîàļîžé à þŕöĵéçţ àñđ ḿàþ ýöüŕ ŵéƃšîţé'š ƒîļéš
  2. ÇĻÎ: çöñṽéŕĝé ŵîţĥ kapi up: ÀÎ đŕàƒţîñĝ, çöñţéñţ-ḿéḿöŕý ŕéçýçļîñĝ, àñđ çĥéçķš àĝàîñšţ ýöüŕ ţéŕḿš àñđ ṽöîçé
  3. ÇĻÎ: ŕéṽîéŵ ļöçàļļý, öŕ þüšĥ ţö à ŵöŕķšþàçé àñđ ŕéṽîéŵ îñ ţĥé šéššîöñ
  4. ÇĻÎ: ķééþ ţĥé þŕöĵéçţ îñ šţéþ ŵîţĥ ţĥé ŵöŕķšþàçé

Šţéþ 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) àñđ üšé ţĥé ŕéṽîéŵ šéššîöñ: šöüŕçé àñđ đŕàƒţ šîđé ƃý šîđé, ţĥé çĥéçķš àñđ ţĥé ţéŕḿš îñļîñé, ƃüļķ àþþŕöṽàļ öƒ éṽéŕýţĥîñĝ ţĥàţ þàššéš, àñđ à þéŕ-ļöçàļé šĥîþ šţàţé ţĥàţ šàýš ŵĥàţ çàñ ĝö öüţ ţöđàý.

Üšîñĝ ţéŕḿš

  1. Îḿþöŕţ ţéŕḿš (ŢƂẊ, ÇŠṼ, ĴŠÖÑ) ŵîţĥ kapi terms import; ţĥéý ļàñđ îñ ţĥé þŕöĵéçţ'š ţéŕḿš šţöŕé
  2. Ƃîñđ ţĥé šţöŕé ŵîţĥ defaults.terms_source šö éṽéŕý ŕüñ àñđ çĥéçķ ŕéàđš îţ
  3. Àđđ term-check ţö ýöüŕ ƒļöŵ ţö çĥéçķ éàçĥ ţàŕĝéţ àĝàîñšţ ţĥé ţéŕḿš îñ ƒöŕçé
  4. Îñ à ŵöŕķšþàçé, ţĥé éđîţöŕ'š çöñţéẋţ þàñéļ šĥöŵš ḿàţçĥéđ ţéŕḿš þéŕ ƃļöçķ

Šţéþ 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 statuskapi status
git diffkapi diff
git pullkapi pull
git pushkapi push

kapi đéçļàŕéš îţš ţŕéé öñ éṽéŕý þüšĥ, šö öñļý çĥàñĝéđ ƃļöçķš ţŕàñšƒéŕ öṽéŕ ţĥé ñéţŵöŕķ. Öñ à çöññéçţéđ þŕöĵéçţ, kapi up ŕüñš ţĥé ļööþ öñ ţĥé šéŕṽéŕ àñđ đöéš þüšĥ, çàţçĥ üþ àñđ þüļļ îñ öñé çöḿḿàñđ.

Ţîþš

  • Îñîţîàļîžé þŕöĵéçţš ŵîţĥ kapi init ţö ŵŕîţé à kapi.yaml ŕéçîþé àñđ à çöḿḿîţţéđ .kapi/ đîŕéçţöŕý
  • Ƃîñđ à ṽöîçé þŕöƒîļé àñđ à ţéŕḿš šţöŕé îñ defaults: šö đŕàƒţš àñđ çĥéçķš ŕéàđ ţĥé šàḿé çöñţéẋţ
  • Đéƒîñé çüšţöḿ ƒļöŵš îñ .kapi/flows/ ƒöŕ ýöüŕ šþéçîƒîç ŵöŕķƒļöŵ
  • Þüţ recycle ƃéƒöŕé translate ţö ŕéüšé àþþŕöṽéđ ŵöŕđîñĝ ƃéƒöŕé šþéñđîñĝ çŕéđîţš
  • Ŕüñ kapi pseudo-translate ƒîŕšţ ţö îđéñţîƒý þöţéñţîàļ ÜÎ ţŕüñçàţîöñ îššüéš
  • Üšé ļöçàļ àüţöḿàţîöñš ţö ŕüñ ţĥé çĥéçķš ƃéƒöŕé þüšĥîñĝ ţö à ŵöŕķšþàçé
  • Çöḿḿîţ kapi.yaml àñđ .kapi/ ţö ĝîţ; ţĥé çöñţéẋţ ĝŕàþĥ ƃéļöñĝš îñ ŕéṽîéŵ, àñđ öñļý .kapi/work/ îš ĝîţîĝñöŕéđ
  • Çĥéçķ kapi status ƃéƒöŕé þüšĥîñĝ ţö šéé ŵĥàţ çĥàñĝéđ

Ŕéļàţéđ