---
title: "Can an XLIFF file contain multiple target languages?"
description: "No. XLIFF 1.2 allows one target-language per <file> element and XLIFF 2.x one trgLang per document, and every translation unit holds a single <target>. Export one file per target language instead."
category: xliff
date: 2026-10-09
canonical: https://localizely.com/i18n-questions/xliff/can-an-xliff-file-contain-multiple-target-languages/
---

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

```xml
<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>`.

```xml
<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.

Source: https://localizely.com/i18n-questions/xliff/can-an-xliff-file-contain-multiple-target-languages/
