# New XLIFF V2 Parser

**URL:** <https://community.transifex.com/t/new-xliff-v2-parser/5463>\
**Category:** What's new?\
**Created:** [September 14, 2026, 11:02am UTC](https://community.transifex.com/t/new-xliff-v2-parser/5463 "2026-09-14T11:02:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![chrisb](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.transifex.com/chrisb/32/2377_2.png) [@chrisb](https://community.transifex.com/u/chrisb)\
**Post date:** [September 14, 2026, 11:02am UTC](https://community.transifex.com/t/new-xliff-v2-parser/5463/1 "2026-09-14T11:02:27Z")

</div>

We are excited to announce our upgraded **XLIFF 2.0 Parser**!

XLIFF 1.2 served the localization industry well for over a decade. The new XLIFF 2.0 engine addresses some architectural shortcomings directly, giving your localization pipelines cleaner structure, deterministic ID handling, and standard-compliant pluralization support.

**Under the Hood: How the Parser Processes XLIFF 2.0**

Here is a sample of how the engine handles standard segments, plural variations, and duplicate original keys:

```auto
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="2.0" xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="en" trgLang="es">
  <file id="app_core">
    
    <!-- Standard String Segment -->
    <unit id="u_welcome">
      <segment>
        <source>Welcome to our application!</source>
        <target>¡Bienvenido a nuestra aplicación!</target>
      </segment>
    </unit>

    <!-- Plural Form Grouping -->
    <unit id="u_notifications">
      <segment id="zero">
        <source>You have no new notifications.</source>
        <target>No tienes nuevas notificaciones.</target>
      </segment>
      <segment id="one">
        <source>You have 1 new notification.</source>
        <target>Tienes 1 nueva notificación.</target>
      </segment>
      <segment id="other">
        <source>You have {count} new notifications.</source>
        <target>Tienes {count} nuevas notificaciones.</target>
      </segment>
    </unit>

    <!-- Context Instance A: Unique Unit ID, Shared Source Name -->
    <unit id="u_cancel_nav" name="btn_cancel">
      <notes>
        <note category="location">Screen: Navigation</note>
      </notes>
      <segment>
        <source>Cancel</source>
        <target>Cancelar</target>
      </segment>
    </unit>

    <!-- Context Instance B: Unique Unit ID, Shared Source Name -->
    <unit id="u_cancel_checkout" name="btn_cancel">
      <notes>
        <note category="location">Screen: Checkout</note>
      </notes>
      <segment>
        <source>Cancel</source>
        <target>Cancelar</target>
      </segment>
    </unit>

  </file>
</xliff>

```

**Migration Considerations**

If you are upgrading from our legacy XLIFF 1.2 importer, keep two operational details in mind:

1. **Document-Level Languages:** Language attributes (`srcLang` and `trgLang`) are defined globally on the `<xliff>` root element rather than inside individual `<file>` nodes.

2. **Key Mapping:** Source identifier keys mapping to identical string names across screens should use the `name` attribute on the `<unit>` tag, keeping the structural `id` unique per block.

You can find full details and description [here](https://help.transifex.com/en/articles/16942119-xliff-2-0).

The XLIFF 2.0 parser is live now across all build targets. Try running your latest translation packages through the pipeline, and let us know your feedback in the comments below!
