/xliff-simple-merge

Merges XLIFF 1.2/2.0 files. Usable for Angular i18n automation.

Primary LanguageTypeScriptMIT LicenseMIT

npm Coverage Status

XLIFF Simple Merge

This program automates the merging of XLIFF files (version 1.2 and 2.0). New translations from the input file (e.g. "messages.xlf") are merged into the destination file (e.g "messages.fr-FR.xlf"), while keeping exising translations intact. Removed translations will be removed in the input file.

This can be used as post-processing to angular i18n extraction, to update translations files.

Angular users: It is recommended to not use this program directly but the custom angular tooling: ng-extract-i18n-merge

Usage

Either install via npm i -g xliff-simple-merge or run directly with npx xliff-simple-merge.

Options:
  -i, --input-file <inputFiles...>          input file(s)/merge origin(s)
  -d, --destination-file <destinationFile>  merge destination
  -o, --output-file <outputFile>            output file, if not provided "merge destination" is overwritten
  -e, -exclude-file <excludeFiles...>       exclude all unit IDs of the provided file(s) 
  -w, --overwrite-with-translated           overwrite target of destination with target of source, if it's translated and destination target not
  --no-match-fuzzy                          prevent fuzzy matching of similar units with changed id
  --no-collapse-whitespace                  prevent collapsing of multiple whitespaces when comparing translations sources
  --no-reset-translation-state              prevent (re-)setting the translation state to new/initial for new/changed units
  --no-replace-apostrophe                   prevent replacing of apostrophes (') with "&apos;"
  --debug                                   enable debug output
  -h, --help                                display help for command

Notes

  • If different input files contains the same unit IDs, only the latter ones will be used.
  • The input units may contain target nodes. They will be used in the destination units only if they don't contain any net.