ķđ
Çöḿþàŕé ţĥé ĥüḿàñ-ŕéàđàƃļé ţéẋţ îñšîđé àñý šüþþöŕţéđ ƒöŕḿàţ, ƃļöçķ ƃý ƃļöçķ,
ŕàţĥéŕ ţĥàñ ƃýţé ƃý ƃýţé. À ŕéƒļöŵéđ Ŵöŕđ .docx, à ŕé-žîþþéđ çöñţàîñéŕ öŕ à
ŕéöŕđéŕéđ ĴŠÖÑ çàţàļöĝ đö ñöţ ŕéĝîšţéŕ àš à đ. Öñļý ţĥé þŕöšé ţĥàţ àçţüàļļý
çĥàñĝéđ đöéš. Ţĥîš îš ţĥé çĥàñĝéšéţ à ţŕàñšļàţöŕ (öŕ à ţŕàñšļàţîöñ éñĝîñé) çàŕéš
àƃöüţ: ŵĥàţ çöñţéñţ ḿöṽéđ, ŵàš àđđéđ, ŵàš ŕéḿöṽéđ, öŕ ŵàš ŕéŵŕîţţéñ.
kdiff [flags] FILE_A [FILE_B]
Ŵîţĥ ñö ƒîļé éẋţéñšîöñ ţö ĝö ƃý, ţĥé ƒöŕḿàţ îš šñéđ ƒŕöḿ ţĥé çöñţéñţ. À ƒîļé
öƒ - ŕéàđš šţàñđàŕđ îñþüţ.
Ţŵö ḿöđéš
Ŕéṽîšîöñ đ: ţŵö ƒîļéš
Ŵĥàţ ţéẋţ çĥàñĝéđ ƃéţŵééñ ţŵö ṽéŕšîöñš öƒ à đöçüḿéñţ.
# What changed between two catalog versions
kdiff old.json new.json
# What changed in a Word proposal — ignoring re-save / formatting noise
kdiff proposal.docx proposal-v2.docx
# What changed in the French translation specifically
kdiff --target fr old.xliff new.xliff
Çöṽéŕàĝé đ: öñé ƒîļé àĝàîñšţ îţš öŵñ ţŕàñšļàţîöñ
Þàšš à šîñĝļé ƒîļé ŵîţĥ --target LOCALE ţö çöḿþàŕé à ţŕàñšļàţîöñ àĝàîñšţ ţĥé
šöüŕçé ŵîţĥîñ ţĥàţ ƒîļé, à ǫüîçķ çöṽéŕàĝé ŕéþöŕţ öƒ ŵĥîçĥ ƃļöçķš àŕé šţîļļ
üñţŕàñšļàţéđ öŕ àŕé à ṽéŕƃàţîḿ çöþý öƒ ţĥé šöüŕçé.
kdiff --target fr messages.xliff
app [fr]: 18 translated, 3 untranslated, 1 identical to source
@@ "settings.title" (untranslated) @@
Settings
@@ "brand.name" (identical) @@
Acme
Ĥöŵ ƃļöçķš àŕé àļîĝñéđ
kdiff àļîĝñš ţĥé đöçüḿéñţ'š ƃļöçķš ŕàţĥéŕ ţĥàñ îţš ļîñé þöšîţîöñš. Ţĥé
àļîĝñḿéñţ šţŕàţéĝý îš çĥöšéñ àüţöḿàţîçàļļý:
- Ķéýéđ ƒöŕḿàţš (ĴŠÖÑ, ẊĻÎƑƑ, ÞÖ,
.resx, àñđ àñýţĥîñĝ éļšé ŵîţĥ à šţàƃļé ƃļöçķ ķéý) àļîĝñ ƃý ķéý. Ŕéöŕđéŕîñĝ ķéýš îš ţĥéŕéƒöŕé ñöţ à đ; ŕéñàḿîñĝ ţĥé ṽàļüé üñđéŕ à ķéý îš à çĥàñĝé; à ñéŵ ķéý îš àñ àđđîţîöñ. Ŕéöŕđéŕéđ ķéýš àŕé ŕéþöŕţéđ àšmoved, ñöţ àš à ŵĥöļéšàļé ŕéŵŕîţé ţĥé ŵàý à ļîñé đ ŵöüļđ šĥöŵ ţĥéḿ. - Þŕöšé ƒöŕḿàţš (Ŵöŕđ, Ḿàŕķđöŵñ, ĤŢḾĻ, ŵĥöšé ƃļöçķ îđéñţîţîéš àŕé þöšîţîöñàļ) àļîĝñ ƃý çöñţéñţ, üšîñĝ à ļöñĝéšţ-çöḿḿöñ-šüƃšéǫüéñçé ḿàţçĥ öṽéŕ ţĥé ƃļöçķ ţéẋţ. Îñšéŕţîñĝ à þàŕàĝŕàþĥ šĥöŵš üþ àš à šîñĝļé àđđéđ ƃļöçķ, ñöţ àš à çàšçàđé öƒ "éṽéŕýţĥîñĝ àƒţéŕ îţ çĥàñĝéđ".
Ƒöŕçé à šţŕàţéĝý ŵîţĥ --by id öŕ --by content ŵĥéñ ţĥé àüţöḿàţîç çĥöîçé îš
ŵŕöñĝ ƒöŕ ýöüŕ ƒîļé.
Öüţþüţ
Ţĥé đéƒàüļţ öüţþüţ îš à ƃļöçķ-öŕîéñţéđ üñîƒîéđ đ: à @@ <key> (kind) @@
ĥéàđéŕ þéŕ çĥàñĝéđ ƃļöçķ, ţĥéñ ţĥé ŕéḿöṽéđ (-) àñđ àđđéđ (+) ţéẋţ.
--- a/old.json
+++ b/new.json
@@ "greeting" (changed) @@
- Hello
+ Hi there
@@ "welcome" (added) @@
+ Welcome!
@@ "farewell" (removed) @@
- Goodbye
--json éḿîţš ţĥé šàḿé çĥàñĝéšéţ àš šţŕüçţüŕéđ đàţà ƒöŕ šçŕîþţš àñđ ţööļš, àñđ
--stat þŕéƒîẋéš à öñé-ļîñé šüḿḿàŕý (2 changed, 1 added, 1 removed). -q, --brief þŕîñţš öñļý ŵĥéţĥéŕ ţĥé îñþüţš đéŕ.
Éẋîţ šţàţüš
kdiff ƒöļļöŵš ţĥé çļàššîç diff çöñṽéñţîöñ, šö šĥéļļ šçŕîþţš àñđ ÇÎ çàñ ƃŕàñçĥ
öñ ţĥé ŕéšüļţ:
| Çöđé | Ḿéàñîñĝ |
|---|---|
0 | Ţĥé îñþüţš àŕé éǫüîṽàļéñţ (öŕ ţĥé ţŕàñšļàţîöñ îš ƒüļļý çöṽéŕéđ). |
1 | Ţĥéý đéŕ (öŕ ţĥéŕé îš üñţŕàñšļàţéđ / çöþîéđ çöñţéñţ). |
2 | Àñ öþéŕàţîöñàļ éŕŕöŕ (à ƒîļé çöüļđ ñöţ ƃé ŕéàđ öŕ þàŕšéđ). |
Éẋàḿþļéš
# Review what changed in a release's source catalog
kdiff v1/en.json v2/en.json
# Gate CI on a fully-translated file (exit 1 if anything is pending)
kdiff --target de -q messages.xliff || echo "German is incomplete"
# Machine-readable changeset for a re-translation pipeline
kdiff --json old.xliff new.xliff > changes.json
# Compare two drafts of a Word document, prose only
kdiff --by content draft.docx final.docx
Öþţîöñš
| Ƒļàĝ | Ḿéàñîñĝ |
|---|---|
--by STRATEGY | Àļîĝñḿéñţ: auto (đéƒàüļţ), id, öŕ content. |
--target LOCALE | Çöḿþàŕé ţĥé ţŕàñšļàţîöñ ƒöŕ LOCALE. Ŵîţĥ öñé ƒîļé, à çöṽéŕàĝé ŕéþöŕţ öƒ šöüŕçé ṽš. ţŕàñšļàţîöñ. |
-q, --brief | Ŕéþöŕţ öñļý ŵĥéţĥéŕ ţĥé îñþüţš đéŕ, ñöţ ţĥé çĥàñĝéš. |
--stat | Þŕîñţ à öñé-ļîñé šüḿḿàŕý öƒ ţĥé çĥàñĝéš ƃéƒöŕé ţĥé đ. |
--json | Éḿîţ ţĥé đ àš ĴŠÖÑ. |
--color | Çöļöŕîžé ţĥé đ: auto, always, never. |
-f, --format | Öṽéŕŕîđé ƒöŕḿàţ đéţéçţîöñ (é.ĝ. -f json). |
--source-lang | Šöüŕçé ļàñĝüàĝé (đéƒàüļţ en). |
--encoding | Îñþüţ éñçöđîñĝ (đéƒàüļţ UTF-8). |