New XLIFF V2 Parser

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:

<?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.

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!

1 Like