xlf-merge
Command line tool that merges any number of XLF 1.2 files, JSON text dictionaries, and ARB text dictionaries.
Input and output is tested and compatible with Angular compiler.
Designed for (but not limited to) Angular-based applications to simplify their i18n process.
The NG compiler requires a single dictionay file per language. If your translations are organized into
many small files, you can run this tool to merge them before invoking the Angular compilation.
Installation
npm install xlf-merge -g
npm install xlf-merge --save-dev
Usage
- Accepts any number of input files (wildcards supported)
- File format is detected by file extension
- *.xlf, *.xml - file treated as XLF 1.2
- *.json - file treated as JSON text dictionary
- *.abr - file treated as ARB text dictionary
- Requires single output file path (--output parameter) to merge translated texts
xlf-merge input1.xlf input2.xlf input3.xlf --output all-translations.xlf
xlf-merge i18n/*.en.xlf -o all.en.xlf
xlf-merge i18n/*.de.xlf -o all.de.xlf
xlf-merge i18n/*.fr.xlf -o all.fr.xlf
xlf-merge **/*.de.xlf -o all.de.xlf
xlf-merge i18n/**/*.de.xlf i18n/**/*.de.json --output all.de.json
- Supply the --convert parameter to convert all found files
- Each converted file is saved in the same path as its source file
- Conversion is allowed with or without the --output parameter (which also merges all input files)
xlf-merge *.xlf --convert json
xlf-merge **/*.xlf --convert arb
Example set-up
Supposing XLF files are in path src/i18n/**.
German translations have pattern *.de.xlf, Swedish translations have pattern *.sv.xlf.
- Install Xlf-merge locally by running "npm install --save-dev xlf-merge"
- Run xlf-merge before production build of Angular application
- Write npm scripts to automate the entire build task, for example:
"scripts": {
"merge-de": "node ./node_modules/xlf-merge src/i18n/**/*.de.xlf",
"merge-sv": "node ./node_modules/xlf-merge src/i18n/**/*.sv.xlf",
"merge-all": "npm run merge-de && npm run merge-sv",
"build": "npm run merge-all && ng build --prod"
}
Author
Jaroslav Svak, 2018 - 2021
License
MIT