1. Help Center
  2. Supported formats

Symfony XLIFF

What is Symfony XLIFF and what makes it different from standard XLIFF?

Symfony XLIFF files. Supporting keynames using resname attribute.

File Extensions .xlf, .xliff
API Extension symfony_xliff
Import Yes
Export Yes
Pluralization supported? No
Descriptions supported? Yes
Format Options enclose_in_cdata, include_translation_state

Symfony is a high-performance PHP framework composed of various predefined PHP components. Localization for applications built with Symfony can take place with file formats such as XLIFF, YAML, and PHP Arrays

The difference between a Symfony XLIFF and a standard XLIFF lies in how they locate what each <trans-unit> represents. While standard XLIFFs (and also most XLIFF variations supported by other frameworks) use the id attribute, Symfony XLIFF uses the attribute “resname” as the identifier. 

Format Options

Enclose in cdata

Identifier enclose_in_cdata      
Type boolean
Upload No
Download Yes
Default false
Description Encloses translations containing html tags in CDATA


Include translation state

Identifier include_translation_state
Type boolean
Upload No
Download Yes
Default false
Description Include state of translations in the target locale

Code Sample

<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
  <file original="global" datatype="plaintext" source-language="de-DE" target-language="en-GB">
      <trans-unit id="boolean_key" resname="boolean_key">
        <source xml:lang="de-DE">--- true
        <target xml:lang="en-GB">--- true
      <trans-unit id="empty_string_translation" resname="empty_string_translation">
        <source xml:lang="de-DE"/>
        <target xml:lang="en-GB"/>
      <trans-unit id="key_with_description" resname="key_with_description">
        <source xml:lang="de-DE">Schau dir das mal an! Dieser Schlüssel hat eine Beschreibung!</source>
        <target xml:lang="en-GB">Check it out! This key has a description! (At least in some formats)</target>
        <note>I'm a very important description for this key!</note>
      <trans-unit id="key_with_line-break" resname="key_with_line-break">
        <source xml:lang="de-DE">Diese Übersetzung hat
einen Zeilenumbruch.</source>
        <target xml:lang="en-GB">This translations contains
a line-break.</target>
      <trans-unit id="nested.deeply.key" resname="nested.deeply.key">
        <source xml:lang="de-DE">Ich bin ein tief verschachtelter Schlüssel</source>
        <target xml:lang="en-GB">I'm a deeply nested key.</target>
      <trans-unit id="nested.key" resname="nested.key">
        <source xml:lang="de-DE">Dieser Schlüssel ist innerhalb eines Namensraumes verschachtelt.</source>
        <target xml:lang="en-GB">This key is nested inside a namespace.</target>
      <trans-unit id="null_translation" resname="null_translation">
        <source xml:lang="de-DE"/>
        <target xml:lang="en-GB"/>
      <trans-unit id="sample_collection" resname="sample_collection">
        <source xml:lang="de-DE">---
- erstes Item
- zweites Item
        <target xml:lang="en-GB">---
- first item
- second item
- third item
      <trans-unit id="simple_key" resname="simple_key">
        <source xml:lang="de-DE">Nur ein einfacher Schlüssel mit einer einfachen Nachricht.</source>
        <target xml:lang="en-GB">Just a simple key with a simple message.</target>
      <trans-unit id="unverified_key" resname="unverified_key">
        <source xml:lang="de-DE">Diese Übersetzung ist noch nicht bestätigt und wartet drauf!</source>
        <target xml:lang="en-GB">This translation is not yet verified and waits for it. (In some formats we also export this status)</target>

More Information