Supported File Types (Strings)

.XLIFF - XML Localization Interchange File Format (Strings)

File Extensions

.xlf, .xliff

API Extension

xlf

Import

Yes

Export

Yes

Plural forms support

Yes

Description support

Yes

Format options

enclose_in_cdata

include_translation_state

indent_size

indent_style

ignore_source_translations

ignore_target_translations

export_key_id_as_resname

export_key_name_hash_as_extradata

override_file_language

strip_placeholder_delimiters

delimit_placeholders

The most-widely used file format in the translation industry. It can be seen as the mirror of the source file that breaks down source content into various segments stored in tags (e.g. <trans-unit>, <seg-source>). 

XLIFF is XML based and subject to basic XML conventions such as validity and being well-formed. Always complete a sanity check prior to translation by changing the file extension from .xliff (.xlf) to .xml and opening it in a web browser. If the file is valid, a well-organized document structure is presented and if not, it will be either unrenderable or with an error message.

XLIFF was updated with XLIFF 2.0. It is similar to the more widely-used XLIFF but is a different file format usually incompatible with XLIFF.

Xcode can package localizable strings into the industry standard XLIFF format to be sent for localization with Phrase.

Format Options

Identifier

enclose_in_cdata

Type

boolean

Upload

No

Download

Yes

Default

false

Description

Encloses translations containing html tags in CDATA

Identifier

include_translation_state

Type

boolean

Upload

No

Download

Yes

Default

false

Description

Include state of translations in the target locale

Identifier

indent_size

Type

integer

Upload

No

Download

Yes

Default

4

Description

Specifies number of indentation characters

Identifier

indent_style

Type

string

Upload

No

Download

Yes

Default

space

Description

Specifies indentation character. Allowed values are space  and tab .

Identifier

ignore_source_translations

Type

boolean

Upload

Yes

Download

No

Default

false

Description

Ignores the source translations in the file during the upload (to avoid accidental source language updates)

Identifier

ignore_target_translations

Type

boolean

Upload

Yes

Download

No

Default

false

Description

Ignores the target translations in the file during the upload (to avoid accidental source language updates)

Identifier

export_key_id_as_resname

Type

boolean

Upload

No

Download

Yes

Default

false

Description

Exports the Key ID as the resname attribute.

Identifier

export_key_name_hash_as_extradata

Type

boolean

Upload

No

Download

Yes

Default

false

Description

Exports the Key Name hash as the extradata attribute.

Identifier

override_file_language

Type

boolean

Upload

Yes

Download

No

Default

false

Description

This file format typically contains language information in the file itself. Use this option to override the language with one you specify.

Identifier

strip_placeholder_delimiters

Type

boolean

Upload

Yes

Download

No

Default

false

Description

Removes <ph> tags from translations

Identifier

delimit_placeholders

Type

boolean

Upload

No

Download

Yes

Default

false

Description

Wrap translation placeholders in <ph> tags. Must have defined valid placeholder styles in project settings.

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">
    <body>
      <trans-unit id="boolean_key">
        <source xml:lang="de-DE">--- true
</source>
        <target xml:lang="en-GB">--- true
</target>
      </trans-unit>
      <trans-unit id="empty_string_translation">
        <source xml:lang="de-DE"/>
        <target xml:lang="en-GB"/>
      </trans-unit>
      <trans-unit id="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>This is the amazing description for this key!</note>
      </trans-unit>
      <trans-unit id="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>
      <trans-unit id="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>
      <trans-unit id="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>
      <trans-unit id="null_translation">
        <source xml:lang="de-DE"/>
        <target xml:lang="en-GB"/>
      </trans-unit>
      <trans-unit id="sample_collection">
        <source xml:lang="de-DE">---
- erstes Item
- zweites Item
</source>
        <target xml:lang="en-GB">---
- first item
- second item
- third item
</target>
      </trans-unit>
      <trans-unit id="simple_key">
        <source xml:lang="de-DE">Einfacher Schlüssel, einfache Nachricht, so einfach</source>
        <target xml:lang="en-GB">Simple key, simple message, so simple.</target>
      </trans-unit>
      <trans-unit id="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>
      </trans-unit>
    </body>
  </file>
</xliff>

Plural forms

Pluralized keys are exported using the following syntax:

<trans-unit id="plural_key">
  <source xml:lang="en">{"one":"one chair","other":"{nrOfChairs} chairs","zero":"no chairs"}</source>
  <target xml:lang="de">{"one":"ein Stuhl","other":"{nrOfChairs} Stühle","zero":"keine Stühle"}</target>
</trans-unit>
Was this article helpful?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.