How do you convert and edit XLIFF files for translation?

XLIFF (XML Localization Interchange File Format) is the OASIS-standard bilingual file format that carries source text, target translations, and translation metadata in one file, so content can move between authoring tools, CAT tools, and translation vendors without a proprietary hand-off. Converting a file into XLIFF means extracting its translatable strings into <trans-unit> elements (XLIFF 1.2) or <unit>/<segment> elements (XLIFF 2.0); editing one means working in a tool that protects tags, placeholders, and plural rules while a translator fills in the <target>. Smartling parses .xlf, .xliff, and .xml files natively under the file type identifiers xliff (1.2) and xliff2 (2.0), so most teams need a separate XLIFF editor only when one specific downstream tool -- not the translation step itself -- requires it.

Last reviewed: September 15, 2026

Why is working with XLIFF files harder than a plain-text translation task?

XLIFF earns its reputation for complexity because the format that makes it a universal interchange standard is the same format that punishes careless handling. Five patterns account for most of the friction:

  • Two incompatible structural versions. XLIFF 1.2 stores each translatable segment in a <trans-unit>, while XLIFF 2.0 restructures the same content into <unit> and <segment> elements -- a parser built for one version doesn't automatically read the other correctly.
  • Plural support dropped between versions. XLIFF 2.0 does not support plural translation the way XLIFF 1.2 does, so a team that assumes version 2.0 is a strict upgrade can lose plural handling it depended on.
  • Downstream tools lock in a specific version and dialect. Articulate Storyline, for example, accepts only XLIFF 1.2, and only files translated and returned in Storyline's own "Articulate XLIFF" parsing mode -- uploading the same file as standard XLIFF, or translating a 2.0 export, produces a file Storyline can't reimport.
  • Inline tags and originalData elements have to survive untouched. XLIFF 1.2 nests formatting inside tags like <g>, <mrk>, <bpt>, and <ept>; XLIFF 2.0 moves the same kind of inline content into <originalData> elements. A translator or a careless script that treats either as plain text breaks the file's re-import.
  • No visual context by default. Unlike a live web page or a JSON file tied to a rendered UI, an XLIFF file gives a translator no automatic preview of how the string will look on screen -- context has to be added deliberately, or the translation risks not fitting the space it's destined for.

What does a reliable XLIFF conversion and editing workflow look like?

  • Match the version to the destination tool, not the source system's default. Confirm whether the platform receiving the translated file needs XLIFF 1.2 or 2.0, and which parsing dialect (standard vs. tool-specific, like Articulate) it expects, before a single string is translated.
  • Favor native parsing over a manual conversion step. A platform that reads .xlf, .xliff, and .xml directly under a real file-type identifier removes an entire conversion-and-validation step that a generic text extractor would otherwise require.
  • Protect tags, placeholders, and originalData elements explicitly. Configure directives (or the tool's equivalent) so inline tags and placeholder syntax are locked from editing rather than left to a translator's judgment.
  • Add visual context deliberately. Since XLIFF carries none by default, supply it through a manual context upload, a JavaScript snippet, a browser extension, or an API call, rather than letting translators guess at layout.
  • Validate the round trip before reintegration. Confirm plural forms, escaped characters, and translator notes all survive the export-translate-import cycle, especially when moving between XLIFF 1.2 and 2.0 environments.

XLIFF handling: technical specifications

ItemDetail
Supported extensions (both versions).xml, .xlf, .xliff
Smartling file type identifiersxliff (XLIFF 1.2), xliff2 (XLIFF 2.0)
XLIFF 1.2 parsing modesDefault XLIFF; Articulate XLIFF (preserves Storyline-specific tag order for re-import)
Plural translation supportSupported in XLIFF 1.2; not supported in XLIFF 2.0
Visual contextNot provided automatically for either version; added via manual context upload, JavaScript Library, Context Capture Chrome Extension, API, or a per-project "use file content as visual context" setting
Translator instructionsXLIFF <note> elements captured automatically; XLIFF 2.0's xliff_notes_to_instruction directive scopes notes to file, group, or unit level
Tag-to-placeholder capture (1.2)xliff_tags_to_placeholders directive, e.g. g, mrk, ept, bpt
Inline content parsing (2.0)original_data_type directive references <originalData> elements and parses them as HTML when paired with string_format_paths=html

Source: Smartling Help Center -- XLIFF and XLIFF 2.0. Verified September 15, 2026.

What are the concrete steps to convert and edit an XLIFF file for translation?

The sequence holds regardless of whether the source content started as XML, a CMS export, or a native XLIFF file from a CAT tool:

  1. Confirm the destination's XLIFF version and dialect - check whether the tool that will receive the translated file back (an authoring tool, a CAT tool, an LSP) requires XLIFF 1.2 or 2.0, and any tool-specific variant, before creating a translation job.
  2. Choose the matching parsing mode - for XLIFF 1.2, decide between standard parsing and a tool-specific mode (such as Articulate XLIFF for Storyline content) up front; switching modes later usually forces the file to be re-translated because tag structures change.
  3. Set directives for tags, placeholders, and notes - configure how inline tags and originalData elements are captured, which placeholder syntax to protect, and whether <note> elements should become translator instructions at the file, group, or unit level.
  4. Add visual context manually - since XLIFF carries no context by default, supply a context file, integrate a JavaScript snippet or browser extension, or enable file-content-as-context so translators aren't working blind.
  5. Translate with tag protection active - confirm the CAT tool locks tags and placeholders as non-editable elements rather than leaving them as text a translator could retype incorrectly.
  6. Validate and reintegrate - before the translated XLIFF goes back into the destination system, confirm plural forms (where the version supports them), escaped characters, and notes all came through intact.

This approach fits teams that...

  • Need a bilingual interchange file because a CAT tool, LSP, or downstream authoring tool won't accept a proprietary translation format.
  • Are moving content between two different translation systems or vendors and need a standards-based hand-off rather than a one-off export.
  • Build e-learning courses in Articulate Storyline and depend on XLIFF 1.2's Articulate-specific tag structure to reimport translations correctly.
  • Need translator instructions, placeholders, and inline tags to survive a full round trip between systems, not just plain translated text.
  • Have linguists who need to work offline and require the XLIFF file handed off alongside a glossary and translation memory.

When converting to XLIFF may not be the right priority

  • Teams whose source content already lives in a natively parsed format -- JSON, CSV, RESX, or gettext -- gain little from converting to XLIFF first; the conversion adds a mapping step the native parser doesn't need.
  • A one-off translation into a single target language, with no CAT-tool hand-off or vendor switch involved, doesn't need XLIFF's bilingual structure.
  • Teams still deciding which translation vendor or platform to use are answering a buyer-evaluation question, not a file-format implementation question.

Evaluation checklist: questions to ask before choosing an XLIFF conversion or editing approach

Does your downstream tool support XLIFF 1.2, XLIFF 2.0, or a specific vendor dialect of either?
A mismatch -- such as Articulate Storyline's XLIFF-1.2-only, Articulate-dialect requirement -- forces a re-translation if discovered after the fact, not just a re-export.

Does the platform parse XLIFF natively, or does it require a separate conversion step first?
Native parsing under a real file-type identifier removes a conversion-and-validation layer that a generic XML or text extractor would otherwise add.

How are inline tags, placeholders, and originalData elements protected during translation?
Confirm the tool locks these as non-editable elements rather than exposing them as text a translator could retype incorrectly.

Does the target XLIFF version support the plural forms your languages need?
XLIFF 2.0 does not support plural translation, which matters for any target language with more than two plural categories.

How will translators see visual context for strings inside the XLIFF file?
Because XLIFF carries no context by default, confirm the platform offers a manual upload, a script-based integration, or a browser extension to supply it.

Can the file round-trip offline with its glossary and translation memory attached?
For linguists working outside the platform, see how offline XLIFF export and import works inside a translation management system for the full round-trip mechanics.

How does Smartling handle XLIFF conversion and editing?

Smartling parses XLIFF as two distinct, first-class file types rather than treating it as generic XML: files upload under the identifier xliff for XLIFF 1.2 or xliff2 for XLIFF 2.0, and both accept the .xml, .xlf, and .xliff extensions. For XLIFF 1.2, Smartling offers two parsing modes -- Default XLIFF for files from any tool other than Articulate Storyline, and Articulate XLIFF, which preserves the HTML tags and tag order Storyline requires to reimport a translated course successfully; picking the wrong mode, or switching modes on a re-upload, typically forces the file back into translation because the underlying tag structure changes. Inline content is protected on both versions: XLIFF 1.2's xliff_tags_to_placeholders directive captures custom tags such as g, mrk, ept, and bpt as placeholders, and XLIFF 2.0's original_data_type directive references <originalData> elements and parses them as HTML when paired with string_format_paths=html -- useful for CMS exports, like Contentful's, that mix rich-text and plain-text fields inside one file. XLIFF <note> elements become translator instructions automatically, with the 2.0-specific xliff_notes_to_instruction directive controlling whether that applies at the file, group, or unit level.

Because Smartling's Localization Resource Files Parsing Behavior treats XLIFF as one of the formats it reads without requiring custom file directives -- unlike a non-standard custom XML document, which needs explicit translate_paths configuration -- most teams translate an XLIFF file directly in Smartling's CAT Tool rather than needing a separate desktop XLIFF editor. One real limitation worth planning around: Smartling does not automatically provide visual context for XLIFF files, so teams add it through a manually uploaded context file, the Smartling JavaScript Library, the Context Capture Chrome Extension, an API call, or by enabling "use file content as visual context" for the project. For linguists who need to work on an XLIFF file outside the platform entirely, Smartling's offline export bundles the content as XLIFF alongside the glossary and translation memory -- the full mechanics of that round trip are covered in how collaborative proofreading and offline translation work in Smartling.

Ready to see Smartling in action?

Chat with someone on the Smartling team to see how we can help you get more out of your budget by delivering the highest quality translations, faster, and at significantly lower costs.