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

Ĥàñđ öƒƒ ţö ţŕàñšļàţöŕš

:::îñƒö Ţĥé ẊĻÎƑƑ/ÞÖ ĥàñđ-öƒƒ ñééđš à þŕöĵéçţ kapi extract àñđ kapi merge ŕéàđ ţĥé ŕéçîþé'š çöñţéñţ ĝļöƃš, ţàŕĝéţ ļöçàļéš àñđ ţàŕĝéţ ƒîļéš àñđ üšé ţĥé þŕöĵéçţ'š çöñţéñţ ḿéḿöŕý, šö ƒöŕ ţĥé ẊĻÎƑƑ öŕ ÞÖ ĥàñđ-öƒƒ šţàŕţ ŵîţĥ kapi init àñđ ŕüñ ţĥéḿ îñšîđé ţĥé þŕöĵéçţ. Ţĥé .kpz ŵöŕķšþàçé ŕüñš àđ ĥöç (kapi extract src/*.json -o work.kpz), àñđ àđ-ĥöç öñé-ŵàý ƒöŕḿàţ çöñṽéŕšîöñ îš þļàîñ kapi run -i <file>. :::

Ŵĥéñ à þéŕšöñ šĥöüļđ ţŕàñšļàţé (à þŕöƒéššîöñàļ ţŕàñšļàţöŕ, à ñàţîṽé-šþéàķîñĝ çöļļéàĝüé, àñ öüţšîđé àĝéñçý), ýöü ĥàñđ ţĥé ŵöŕķ öüţ àñđ ţàķé îţ ƃàçķ. ķàþî ŵŕîţéš à ƒîļé ţĥé ţŕàñšļàţöŕ öþéñš îñ ţĥé ţööļ ţĥéý àļŕéàđý üšé, àççéþţš ţĥé ŕéţüŕñéđ ṽéŕšîöñ, àñđ ŕéƃüîļđš ýöüŕ öŕîĝîñàļ ƒîļéš ƃýţé ƒöŕ ƃýţé. Ţĥé çöŕŕéçţîöñš ţĥàţ çöḿé ƃàçķ ĝö îñţö ţĥé çöñţéñţ ḿéḿöŕý, šö ţĥé ñéẋţ ŕüñ ŕéüšéš ţĥéḿ. Ƒöŕ ţĥé ḿéḿöŕý ḿöđéļ ƃéĥîñđ îţ (ḿàţçĥîñĝ, ƒüžžý ţĥŕéšĥöļđš, þŕé-ƒîļļ/àƃšöŕƃ), šéé Çöñţéñţ ḿéḿöŕý.

Ţŵö çàŕŕîéŕš, çĥöšéñ ƃý ŕéçîþîéñţ. Ţĥé ñàţîṽé îñţéŕçĥàñĝé ƒöŕḿàţ îš ţĥé ļöššļéšš ƃîļîñĝüàļ .kpz (kapi extract --format kpz), ƒöŕ à ŕéçîþîéñţ ŵöŕķîñĝ îñ ķàþî öŕ ţĥé ñéöķàþî ŕéṽîéŵ ţööļ; îţ çàŕŕîéš îñļîñé çöđéš, ḿéḿöŕý ḿàţçĥéš, àñđ ţéŕḿ çöñţéẋţ îñ öñé îñţéĝŕîţý-ṽéŕîƒîéđ, đàƃļé þàŕçéļ. Ƒöŕ à ţĥîŕđ-þàŕţý ÇÀŢ ţööļ, kapi extract éḿîţš ẊĻÎƑƑ 2.ẋ / ÞÖ (ţĥé đéƒàüļţ), ţĥé ƒöŕḿàţš ţĥé ŕéšţ öƒ ţĥîš þàĝé üšéš. Ƃöţĥ ĝö öüţ àñđ çöḿé ƃàçķ ţĥŕöüĝĥ ţĥé šàḿé extract / merge ṽéŕƃš; šéé ĶƂƑ ṽš ẊĻÎƑƑ. (Ḿéḿöŕý àñđ ţéŕḿîñöļöĝý ĥàṽé ţĥéîŕ öŵñ îñţéŕçĥàñĝé: kapi memory import/export ƒöŕ ŢḾẊ, kapi terms import/export ƒöŕ ŢƂẊ.)

Outdated wording

The narration uses terminology that has since been retired. The interface and the behaviour shown are unchanged.

Çöñţéñţ ḿéḿöŕý îñ ţĥé ļööþ​

Ţĥé çöñţéñţ ḿéḿöŕý þàŕţîçîþàţéš öñ ƃöţĥ šîđéš öƒ ţĥé ŕöüñđ-ţŕîþ:

pre-fillabsorbauthored sourcekapi extractXLIFF / POtranslatorkapi mergetranslated XLIFF / POreturned by translatorproject memory
  • Ḿéḿöŕý þŕé-ƒîļļ öñ éẋţŕàçţ: éṽéŕý šéĝḿéñţ îš ļööķéđ üþ àĝàîñšţ ţĥé þŕöĵéçţ'š ḿéḿöŕý ƒîŕšţ. Éẋàçţ ḿàţçĥéš ļàñđ þŕé-ƒîļļéđ àš state="translated"; ƒüžžý ḿàţçĥéš àƃöṽé ţĥé ŕéçîþé'š memory.fuzzy_threshold ļàñđ àš ƒüžžý.
  • Ḿéḿöŕý àƃšöŕƃ öñ ḿéŕĝé: éṽéŕý àççéþţéđ ţàŕĝéţ ƃéçöḿéš àñ éñţŕý îñ ţĥé þŕöĵéçţ'š ḿéḿöŕý, ŵîţĥ þŕöṽéñàñçé (ƃàţçĥ îđ, šöüŕçé þàţĥ, çöñţéñţ ĥàšĥ, ƒîļéñàḿé) ţĥàţ kapi memory audit --batch <id> çàñ ţŕàçé ƃàçķ ļàţéŕ.

Ƃöţĥ àŕé öñ ƃý đéƒàüļţ; --no-memory àñđ --no-memory-update đîšàƃļé ţĥéḿ. Àƃšöŕƃ îš ŕéçýçļé ļéṽéŕàĝé àñđ ñéṽéŕ à ŕéṽîéŵ đéçîšîöñ: ŵĥéţĥéŕ à ŕéṽîéŵéŕ àþþŕöṽéđ à ţàŕĝéţ îš à šéþàŕàţé, çöñţéñţ-ĥàšĥ-ƃöüñđ ƒàçţ ŕéçöŕđéđ îñ ţĥé þŕöĵéçţ šţàţé šţöŕé ƃý à decide öþéŕàţîöñ ţĥŕöüĝĥ kapi apply; ţĥé çöñţéñţ ḿéḿöŕý ĥöļđš ñöñé öƒ îţ.

Ŕüñ ţĥé éñĝîñé ƃéĥîñđ ţĥé ŕöüñđ-ţŕîþ ýöüŕšéļƒ: þîçķ ţĥé ƃîļîñĝüàļ ẊĻÎƑƑ šàḿþļé, ŕüñ îţ ţĥŕöüĝĥ, àñđ çöḿþàŕé šöüŕçé ŵîţĥ öüţþüţ; ţĥé šàḿé ŕéàđéŕ àñđ ŵŕîţéŕ ƃàçķ kapi extract àñđ kapi merge:

Ļöàđîñĝ ţĥé îñţéŕàçţîṽé ļàƃ…

Ţĥé ķàþî.ýàḿļ ŕéçîþé​

# kapi.yaml
version: v1
name: My App
defaults:
source_language: en-US
target_languages: [fr-FR, de-DE, es-ES]
merge:
conflict_policy: translator-wins # | existing-wins | newest-wins
memory:
fuzzy_threshold: 75 # percent; 0..100
collections:
- path: src/locales/en/*.json
target: src/locales/{lang}

Ţĥé merge, memory, àñđ (öþţ-îñ) segmentation šéçţîöñš àŕé öþţîöñàļ; đéţàîļš öñ ţĥé þŕöĵéçţ ƒîļé ŕéƒéŕéñçé. Šééđ ţĥé ḿéḿöŕý ƒŕöḿ àñ éẋîšţîñĝ çöŕþüš îƒ ýöü ĥàṽé öñé: kapi memory import ./corporate-en-fr.memory.json.

Éẋţŕàçţ​

Ƒŕöḿ îñšîđé ţĥé þŕöĵéçţ (àüţö-đîšçöṽéŕéđ ƒŕöḿ çŵđ, ĝîţ-šţýļé), kapi extract ŵŕîţéš öñé ẊĻÎƑƑ 2.2 þéŕ šöüŕçé → ţàŕĝéţ þàîŕ üñđéŕ out/ àñđ ŕéçöŕđš à ḿàñîƒéšţ öƒ ţĥé ƃàţçĥ îñ ţĥé þŕöĵéçţ'š ĝîţîĝñöŕéđ çàçĥé, ŵĥîçĥ à ļàţéŕ éẋţŕàçţ üšéš ţö ŕéüšé ţĥé ŵöŕķ ƒöŕ üñçĥàñĝéđ šöüŕçéš. Éàçĥ ƒîļé çàŕŕîéš à <note category="kapi"> ŵîţĥ ţĥé ƃàţçĥ îđ, šöüŕçé ƒîļé àñđ šöüŕçé ĥàšĥ, àñđ éàçĥ ƃļöçķ çàŕŕîéš, àš îţš <mda:meta> ḿéţàđàţà öƒ çàţéĝöŕý kapi, ţĥé ŕéṽîšîöñ öƒ îţš ţŕàñšļàţîöñ àš ţĥé þŕöĵéçţ ĥéļđ îţ (if-match, absent ŵĥéŕé ţĥéŕé ŵàš ñöñé) àñđ ţĥé ŕéṽîšîöñ öƒ îţš šöüŕçé (basis):

kapi extract
Extracting batch 6f2e8a1c (format=xliff2, targets=fr-FR, de-DE, es-ES, sources=1)

LOCALE FILES BLOCKS EXACT FUZZY NEW
fr-FR 1 412 108 67 237
de-DE 1 412 0 0 412
es-ES 1 412 0 0 412

Batch 6f2e8a1c complete. Manifest: .kapi/work/cache/extractions/6f2e8a1c/manifest.yaml
Aggregate content-memory leverage: exact=108 fuzzy=67 new=1061 (total=1236)

Ḿüļţî-ţàŕĝéţ îñ öñé þàšš îš ţĥé đéƒàüļţ. Çöḿḿöñ öþţîöñš: --target-lang fr,de (šüƃšéţ), --only <collection>, --pattern <glob>, --xliff-version 2.0, --no-memory, --out-dir <dir>, àñđ --redact-rules: ŕéđàçţéđ éẋţŕàçţîöñ šĥîþš þļàçéĥöļđéŕš öñļý àñđ kapi merge ŕéšţöŕéš ţĥé öŕîĝîñàļš ƒŕöḿ ţĥé ļöçàļ ṽàüļţ (šéé Ŕéđàçţîöñ).

Àñý ƃîļîñĝüàļ ţööļ ţĥàţ ŕéàđš ẊĻÎƑƑ 2.ẋ ŵöŕķš ƒöŕ ţĥé ţŕàñšļàţöŕ, àñđ ķàþî ţàķéš ñö þàŕţ üñţîļ ţĥé ƒîļé ŕéţüŕñš.

Ḿéŕĝé ţĥé ŕéţüŕñ​

kapi merge -i vendor-return/app.en-US-to-fr-FR.xliff
kapi merge -i vendor-return/ # every .xliff in the directory; -i repeats

Ḿéŕĝé ŕéàđš ţĥé šöüŕçé ƒîļé àñđ ţĥé ļàñĝüàĝé éàçĥ ŕéţüŕñéđ ƒîļé ñàḿéš, àñđ ŵĥàţ éàçĥ ƃļöçķ ŵàš éẋţŕàçţéđ àĝàîñšţ ţŕàṽéļš îñ ţĥé ƒîļé, šö à ŕéñàḿéđ ƒîļé ḿéŕĝéš, àñđ šö đöéš öñé ŵĥöšé éẋţŕàçţîöñ ƃàţçĥ îš ĝöñé ƒŕöḿ ţĥé çàçĥé. Éàçĥ ŕéţüŕñéđ ţŕàñšļàţîöñ îš ŵŕîţţéñ ţö ţĥé ƒîļé ţĥé çöļļéçţîöñ'š target ñàḿéš, àñđ ţĥé ţŕàñšļàţéđ ƒîļé ƒöļļöŵš îţš šöüŕçé'š šţŕüçţüŕé. À ţŕàñšļàţîöñ ţĥé ƒîļé ĥéļđ ƒöŕ à ƃļöçķ ţĥé ŕéţüŕñ đöéš ñöţ çàŕŕý šţàýš ŵĥéŕé ţĥé ƒîļé ñàḿéš îţš ƃļöçķš ƃý ķéý, àš ĴŠÖÑ ķéýš àñđ ÞÖ ḿéššàĝéš đö. À þàŕàĝŕàþĥ öƒ à Ḿàŕķđöŵñ öŕ ĤŢḾĻ ƒîļé îš ñàḿéđ ƃý îţš þöšîţîöñ îñ îţš šéçţîöñ, šö àƒţéŕ ţĥé šöüŕçé ĝàîñš öŕ ļöšéš à þàŕàĝŕàþĥ, ŕéţüŕñ éṽéŕý ƃļöçķ öƒ ţĥàţ ƒîļé. À ÞÖ çàţàļöĝ ţĥàţ ĥöļđš éṽéŕý ḿéššàĝé öƒ îţš šöüŕçé ķééþš îţš öŵñ ĥéàđéŕ àñđ çöḿḿéñţš; öñçé ţĥé šöüŕçé ĝàîñš öŕ ļöšéš à ḿéššàĝé, ţĥé çàţàļöĝ îš ŵŕîţţéñ ƒŕöḿ ţĥé šöüŕçé, ĥéàđéŕ îñçļüđéđ. À çöļļéçţîöñ ŵîţĥ ñö target îš šöüŕçé-öñļý, àñđ ḿéŕĝîñĝ îñţö îţ ƒàîļš. Éàçĥ îñþüţ îš àþþļîéđ îñđéþéñđéñţļý: à ƒàîļüŕé öñ öñé (à þàŕšé éŕŕöŕ, à šöüŕçé ŵîţĥ ñö ţŕàñšļàţîöñ ƒîļé) đöéšñ'ţ àƃöŕţ ţĥé öţĥéŕš; þéŕ-ƒîļé öüţçöḿéš àŕé ŕéþöŕţéđ àñđ ţĥé éẋîţ çöđé ŕéƒļéçţš àñý ƒàîļüŕé.

  • Šţàļé ƃļöçķš. À ƃļöçķ ŵĥöšé šöüŕçé çĥàñĝéđ šîñçé ţĥé éẋţŕàçţîöñ (šöḿéöñé éđîţéđ ţĥé ƒîļé ŵĥîļé îţ ŵàš öüţ), öŕ ŵĥöšé šöüŕçé ţéẋţ ŵàš çĥàñĝéđ îñ ţĥé ŕéţüŕñéđ ƒîļé, îš ŕéþöŕţéđ šţàļé àñđ ļéƒţ öüţ, ñéîţĥéŕ àþþļîéđ ñöŕ àƃšöŕƃéđ îñţö ḿéḿöŕý. Ŕé-éẋţŕàçţ àñđ ŕé-ţŕàñšļàţé ţĥé çĥàñĝéđ þöŕţîöñ.
  • Çöñƒļîçţš. Ŵĥéñ ţĥé þŕöĵéçţ'š ţŕàñšļàţîöñ öƒ à ƃļöçķ çĥàñĝéđ šîñçé ţĥé éẋţŕàçţîöñ (šöḿéöñé ţŕàñšļàţéđ öŕ éđîţéđ îţ ŵĥîļé ţĥé ƒîļé ŵàš öüţ), merge.conflict_policy đéçîđéš: translator-wins (đéƒàüļţ) ŕéþļàçéš îţ ŵîţĥ ţĥé ŕéţüŕñéđ öñé, existing-wins ķééþš îţ àñđ šķîþš ţĥé ŕéţüŕñéđ öñé, àñđ newest-wins ţàķéš ţĥé ŕéţüŕñéđ öñé ŵĥéñ ţĥé ŕéţüŕñéđ ƒîļé îš ñéŵéŕ ţĥàñ ţĥé ţŕàñšļàţîöñ'š ƒîļé. À ƃļöçķ ŵĥöšé ţŕàñšļàţîöñ îš ţĥé öñé îţ ŵàš éẋţŕàçţéđ àĝàîñšţ ţàķéš ţĥé ŕéţüŕñéđ ţŕàñšļàţîöñ üñđéŕ éṽéŕý þöļîçý. Ḿéŕĝé ñéṽéŕ þŕöḿþţš.
  • Ŕéƒüšàļš. À ŕéţüŕñéđ ţŕàñšļàţîöñ ţĥàţ đŕöþš àñ îñļîñé çöđé îţš šöüŕçé þŕöţéçţš, öŕ ţĥàţ ƃŕéàķš à ŕüļé ţĥé þŕöĵéçţ ĥöļđš îţ ţö (à ŕéǫüîŕéđ ţéŕḿ, šàý), îš ŕéƒüšéđ àñđ ŕéþöŕţéđ öñ šţđéŕŕ; ţĥé ŕéšţ öƒ ţĥé ƒîļé šţîļļ ļàñđš. Ƒîẋ ţĥé ţŕàñšļàţîöñ, öŕ ḿàŕķ ţĥé ŕüļé àđṽîšöŕý, àñđ ḿéŕĝé àĝàîñ.
  • Þļüŕàļš àñđ šéļéçţš. ķàþî ŵŕîţéš éàçĥ ẊĻÎƑƑ <unit> öŕ ÞÖ éñţŕý àš öñé šţŕîñĝ, àñđ à ḿéššàĝé ŵîţĥ à þļüŕàļ öŕ šéļéçţ, šüçĥ àš àñ ÎÇÜ þļüŕàļ îñ àñ ÀŔƂ çàţàļöĝ, ĥàš à ƃŕàñçĥ þéŕ ƒöŕḿ. kapi extract ļéàṽéš šüçĥ à ḿéššàĝé öüţ öƒ ţĥé ƒîļé àñđ ñàḿéš îţ, àñđ kapi merge ŕéƒüšéš à ŕéţüŕñéđ ţŕàñšļàţîöñ ţĥàţ ŵöüļđ ŵŕîţé öñé ƒöŕḿ îñ þļàçé öƒ šéṽéŕàļ. Ţŕàñšļàţé ţĥöšé ḿéššàĝéš ŵîţĥ kapi translate, ŵĥîçĥ ţŕàñšļàţéš éàçĥ ƃŕàñçĥ.
  • Àüđîţ. kapi memory audit --batch <merge-batch-id> ļîšţš éṽéŕý éñţŕý ţĥé ḿéŕĝé ŵŕöţé, ŵîţĥ þŕöṽéñàñçé.

Àƒţéŕ à ḿéŕĝé, ţĥé ĝàţéš šàý ŵĥéŕé ýöü šţàñđ: kapi status ŕé-đéŕîṽéš çöṽéŕàĝé ƒŕöḿ ţĥé ḿéŕĝéđ ţàŕĝéţš, àñđ kapi check --ship éñƒöŕçéš ţĥé šĥîþ ĝàţé ƃéƒöŕé à ŕéļéàšé; šéé ţĥé ķàþî ļööþ.

ÞÖ (ĝéţţéẋţ) àļţéŕñàţîṽé​

Šàḿé ƒļöŵ, đéŕéñţ éẋçĥàñĝé ƒöŕḿàţ: kapi extract --format po, ţĥéñ kapi merge -i …/*.po: öñé éñţŕý þéŕ ƃļöçķ, ķàþî'š ƃööķķééþîñĝ àš éẋţŕàçţéđ çöḿḿéñţš (#. kapi-batch:, #. kapi-block:, àñđ éàçĥ éñţŕý'š ŕéṽîšîöñš àš #. kapi-if-match: àñđ #. kapi-basis:), ţĥé ļàñĝüàĝé îñ ţĥé ĥéàđéŕ'š Language ƒîéļđ, àñđ #, fuzzy öñ ƒüžžý ḿéḿöŕý þŕé-ƒîļļš. ΃ àñ éđîţöŕ ŕéŵŕîţéš ţĥé ĥéàđéŕ ţö à ļàñĝüàĝé ţĥé ŕéçîþé đöéš ñöţ ļîšţ, ḿéŕĝé ţàķéš ţĥé ļàñĝüàĝé ƒŕöḿ ţĥé éẋţŕàçţîöñ ţĥàţ ŵŕöţé ţĥé ƒîļé, àñđ ƒàîļš ƒöŕ ţĥàţ ƒîļé ŵĥéñ ţĥé éẋţŕàçţîöñ îš ĝöñé ƒŕöḿ ţĥé çàçĥé. À šîñĝļé ḿéŕĝé îñṽöçàţîöñ çàñ ḿîẋ ẊĻÎƑƑ àñđ ÞÖ ƒŕöḿ ţĥé šàḿé ƃàţçĥ. ÞÖ çàññöţ çàŕŕý šéñţéñçé-ļéṽéļ šéĝḿéñţàţîöñ; þŕöĵéçţš ŵîţĥ segmentation.source: true ḿüšţ éḿîţ ẊĻÎƑƑ (ţĥé çöḿƃîñàţîöñ éŕŕöŕš éàŕļý).

Ŵĥàţ šţàýš îñ ţĥé þŕöĵéçţ​

Ţĥé ƃîļîñĝüàļ ƒîļé çàŕŕîéš öñé çĥöšéñ ţàŕĝéţ þéŕ ļàñĝüàĝé, ţĥé šöüŕçé ŕüñš àñđ îñļîñé çöđéš, àñđ ţĥé ŕéṽîšîöñš éàçĥ ƃļöçķ ŵàš éẋţŕàçţéđ àĝàîñšţ. Ḿéŕĝé ŕéƃüîļđš éàçĥ ţŕàñšļàţéđ ƒîļé ƒŕöḿ ţĥé šöüŕçé îñ ţĥé þŕöĵéçţ, ƃýţé-ƒöŕ-ƃýţé öüţšîđé ţĥé ţŕàñšļàţéđ ţéẋţ. Éṽéŕýţĥîñĝ éļšé šţàýš îñ þŕöĵéçţ šţàţé: ţĥé çöñţéñţ ḿéḿöŕý, ţĥé ţéŕḿš šţöŕé, àñđ ţĥé šţàñđ-öƒƒ öṽéŕļàýš, ṽàŕîàñţš, àñđ þéŕ-ţàŕĝéţ šţàţüš ţĥé çöñţéñţ ḿöđéļ ŕéçöŕđš. Ţĥé ƃîļîñĝüàļ ƒîļé îš ţĥé ļéàñ, ţööļ-ñéüţŕàļ ĥàñđöƒƒ. Ţĥé þŕöĵéçţ ĥöļđš ţĥé ƒüļļ ŕéçöŕđ, šö ḿéŕĝé ñééđš ţĥé šàḿé þŕöĵéçţ ţĥé éẋţŕàçţ ŕàñ îñ.

Ŕéļàţéđ​