TypesXLIFF - TypeScript Library for XLIFF Parsing, Generation and Validation
TypesXLIFF is a TypeScript / Node.js library for parsing, generating, and validating XLIFF
2.x files (2.0, 2.1 and 2.2). It includes a fully typed object model and JSON conversion for
processing translation and localization data.
The source code is available on GitHub under the Eclipse
Public License v1.0. Developers can clone, adapt, and ship the library under the
terms of that license, or contact Maxprograms for commercial arrangements.
Quick example
Load an XLIFF file and read the first source segment:
import { XliffParser } from 'typesxliff';
const parser = new XliffParser();
await parser.parseFile("file.xlf");
const doc = parser.getXliffDocument();
const segment = doc?.files[0].units[0].segments[0];
console.log(segment?.source.toString());
Why TypesXLIFF
- Full XLIFF 2.x object model (not just parsing)
- Type-safe API for building and modifying documents
- JSON round-trip for integration with other systems
- Built on TypesXML (streaming XML parser with validation support)
Features
- Parse XLIFF files: Load an existing XLIFF 2.x file into a fully typed object model using
XliffParser
- Build programmatically: Construct
XliffDocument instances from scratch using
the provided model
classes
- Write XLIFF files: Serialize any
XliffDocument back to a well-formed XML
file using
XliffDocument.writeDocument()
- JSON round-trip: Convert XLIFF ⇄ JSON (lossless) using
XliffToJson, and
reconstruct it back
using JsonToXliff. Built on the round-trip JSON conversion provided by TypesXML
- Validate: Each model element exposes an isValid() method that checks structural and
semantic
constraints against the XLIFF 2.x specification
Use Cases
- Parse XLIFF 2.x files in Node.js or TypeScript
- Generate XLIFF documents programmatically
- Convert XLIFF to/from JSON
- Validate XLIFF structure and content
- Build localization or translation pipelines
Parsing an existing XLIFF file
import { Catalog } from "typesxml";
import { XliffParser, XliffDocument } from "typesxliff";
const parser = new XliffParser();
// Using a catalog is optional. When provided, the SAX parser can resolve grammar
// schemas and populate default attribute values declared in them.
// A sample catalog covering XLIFF 2.0, 2.1 and 2.2 is included in the catalog/ folder.
parser.setCatalog(new Catalog('/path/to/typesxliff/catalog/catalog.xml'));
parser.parseFile('/path/to/file.xlf');
const doc: XliffDocument | undefined = parser.getXliffDocument();
Building and writing an XLIFF document
import { XliffDocument, XliffFile, XliffUnit, XliffSegment, XliffSource } from "typesxliff";
const doc = new XliffDocument("2.1", "en", "es");
const file = new XliffFile("f1");
const unit = new XliffUnit("u1");
const segment = new XliffSegment("s1");
const source = new XliffSource();
source.addContent("Hello, world!");
segment.setSource(source);
unit.addItem(segment);
file.addEntry(unit);
doc.addFile(file);
doc.writeDocument('/path/to/output.xlf', true);
Installation
TypesXLIFF is available as an NPM package:
npm install typesxliff
Dependencies
Related links