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

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

Çàŕŕý à ŵéƃšîţé'š çöñţéñţ îñţö šéṽéŕàļ ļàñĝüàĝéš ƒŕöḿ îţš ŕéþöšîţöŕý ŵîţĥ ķàþî àñđ ţĥé ƃöŵŕàîñ þļüĝîñ, àñđ, îƒ ýöü ŵàñţ ŕéṽîéŵéŕš îñ ţĥé ƃŕöŵšéŕ, ŕéṽîéŵ ţĥé đŕàƒţš îñ à Ƃöŵŕàîñ ŵöŕķšþàçé. À ļàñĝüàĝé îš öñé ḿöŕé çööŕđîñàţé, šö ţĥé çöñţéẋţ ţĥàţ ĝöṽéŕñš ţĥé šöüŕçé ĝöṽéŕñš éàçĥ ţàŕĝéţ ţöö.

Öṽéŕṽîéŵ​

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

Üšîñĝ ţéŕḿš​

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

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

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

Ţîþš​

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

Ŕéļàţéđ​