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

ķđ

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