Localizely logo
  • Home
  • Getting started
  • How it works
  • Pricing
  • FAQ
Sign up

I18n questions · XLIFF

Can an XLIFF file contain multiple target languages? 

No. XLIFF is bilingual by design: one source language, one target language, and exactly one <target> per translation unit. If you need five languages, you export five files.

In XLIFF 1.2 the languages are attributes of the <file> element. source-language is required and target-language is optional, which is how a file with only <source> elements can serve as a translation template. Each <trans-unit> contains one <source> and at most one <target>, so there is nowhere to put a second translation.

<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file original="app.strings" source-language="en" target-language="de" datatype="plaintext">
    <body>
      <trans-unit id="greeting">
        <source>Hello</source>
        <target>Hallo</target>
      </trans-unit>
    </body>
  </file>
</xliff>

The 1.2 specification does allow several <file> elements in one document, each with its own target-language, so you could stack a de, an fr and an es file in a single .xlf. Few consumers expect that. Angular maps each locale to its own translation file in angular.json, Symfony reads the locale from the file name (messages.fr.xlf), and Xcode exports one .xcloc catalog per language. A tool that treats the document as a single language pair will put the extra files into the wrong language or reject them. Setting xml:lang on individual <target> elements does not turn the file into a multilingual one either; the language of the targets is defined by target-language on <file>.

XLIFF 2.0 and 2.1 close the door completely. srcLang and trgLang sit on the root <xliff> element, <file> has no language attributes at all, and each <segment> holds one <source> and at most one <target>.

<xliff version="2.0" xmlns="urn:oasis:names:tc:xliff:document:2.0" srcLang="en" trgLang="de">
  <file id="f1">
    <unit id="greeting">
      <segment>
        <source>Hello</source>
        <target>Hallo</target>
      </segment>
    </unit>
  </file>
</xliff>

What to do instead: export one file per target language from the same source, name it by locale, and keep the id values identical across files so a TMS or a script can line them up. If you want every language in one place for review, convert to a multi-column format such as CSV for that step and keep XLIFF for the exchange with translators.

Published Oct 9, 2026 · Markdown version

Related XLIFF questions:

XLIFF file format:

Learn about the XLIFF file format
Localizely logo
About
Free tools
Boring stuff
  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Compare
Newsletter
Copyrights 2026 © Localizely