Transifex

  • Documentation
  • File formats
  • XLIFF

XLIFF

Note

File conversion to XLIFF format is only available on the Growth plan and up.

  • File extensions: .xliff, .xlf, .xml
  • i18n type: XLIFF

The XLIFF format is an industry standard format to exchange localization files (XML Localisation Interchange File Format).

Transifex currently supports a certain subset of the features XLIFF provides:

  • The <group>, <context-group>, <context>, <trans-unit>, <source>, <note> and <target>; elements are handled.
  • Any context data are handled.
  • Developer comments are supported the following way:
<note from="developer">TRANSLATORS: please limit the page width to 79
    characters here.
</note>

and appear in the Web Editor as Developer Notes.

  • Character limits are also supported
<trans-unit id="1" maxwidth="30" size-unit="char"></trans-unit>

where the attribute maxwidth should be a positive number and the site-unit must be set to char.

  • References are also supported where each reference is mapped to two <context> elements, one specifying the source file (context-type attribute set to sourcefile) and the other representing the location in the source file ( context-type attribute set to linenumber). Each reference is in addition grouped in a <context-group> element, with the name attribute set to a value that must be unique within the enclosing <file> element and the purpose attribute set to location
<context-group name="po-reference-2" purpose="location">
  <context context-type="sourcefile">simple.c</context>
  <context context-type="linenumber">5</context>
</context-group>

They appear as Occurrences in the Web Editor.

  • Approved attribute is also supported. It indicates whether a translation is final or has passed its final review.
      <trans-unit approved="yes" id="1" xml:space="preserve">
        <source>username</source>
        <target>Nom d'utilisateur</target>
      </trans-unit>
      <trans-unit approved="no" id="2" xml:space="preserve">
        <source>Email address</source>
        <target>Adresse de courriel</target>
      </trans-unit>

After uploading such a translation file where the approved attribute is included, the parser will behave as follows:

  1. Entries with approved="yes" will be marked as translated in Transifex having the translation text available in the translation string's area.
  2. Entries with approved="no" will remain untranslated in Transifex. However, the text inside the <target> elements will be considered a user suggestion and it will be available under the suggestions tab in the editor.

e.g.

approved_no_xliff.png#asset:4510

Plural Support

Plural data are handled in the following manner:

      <group restype="x-gettext-plurals">
       <trans-unit id="1[0]" xml:space="preserve">
       <source>Your trial ends in 1 day</source>
       </trans-unit>
       <trans-unit id="1[1]" xml:space="preserve">
       <source>Your trial ends in %@ days</source>
       </trans-unit>
     </group>

For more information on how plurals are represented in the web-editor, consult our documentation guide here.

The following features are not supported:

  • Attributes of the above elements.
  • The <alt-trans> element.
  • Binary elements, like <bin-unit>, <bin-source>; and <bin-target>.
  • The <glossary> elements.
  • Any other minor elements.

How To Distinguish Between a Source File and a Translation File

XLIFF is a universal standard for translating across various systems. If a translation agency is supplying translations from their TMS so that you can upload them into Transifex you need to ensure that the source file is uploaded into Transifex first. A source file is different than a translation file. The translation file contains <Target> references, whereas a source file does not. For example:

  • The following header belongs to a source file:
<file datatype="plaintext" original="en.lproj/Localizable.txt" source-language="en">
  • The following header belongs to a translation file:
<file datatype="plaintext" original="en.lproj/Localizable.txt" source-language="en" target-language="fr">

In the example above, notice that the translation file contains a target-language whereas the source file does not. Please note that an XLIFF file can contain multiple entries of this type.

  • The following XLIFF entry represents an untranslated string. Only untranslated strings can be found in a source file:
<trans-unit datatype="html" id="576413276e4ee299f9a138e749b71e2f5b0d3ed5">

        <source>Confirm email address</source>

</trans-unit>
  • The following XLIFF entry represents a translated string. Translated strings can only be found in a translation file:
<trans-unit datatype="html" id="576413276e4ee299f9a138e749b71e2f5b0d3ed5">
        <source>Confirm email address</source>
        <target>Confirmez l'adresse courriel</target>
</trans-unit>

Escaping Characters

  • The editor does not support RAW mode for .XLIFF files. This means that you can't see how strings are escaped in the editor. You can only see how strings are being escaped in the outputted translation file. In essence .XLIFF files work only in Rich mode.
  • When exporting an XLIFF file the parser detects each character sequentially and either escapes it or not. For example if you take the word &quot, the parser will scroll through each character to see if it can be escaped (&, q, u, o, t,). The one character that can be escaped is the &, so the final output will be:
  • During compiling, we escape (convert from rich to raw):
    xliff-pic1.jpg#asset:7815


  • However, if the translation contains some special XLIFF tags (bpt, ept, it, ph, g, bx, ex, x, sub), we don't escape between the < and > symbols. So:

    xliff-pic2.jpg#asset:7816