Preparing & Translating Supported File Types



Extension .xml, .xlf, .xliff
Smartling Identifier xliff
Example File (see example below)
Resources Background on XLIFF
OASIS specification


String Instructions

Smartling automatically captures XLIFF notes and makes them translator instructions.

XLIFF Note -> Smartling Instruction

   <source>string1 from an xliff file</source>
   <note>instruction for this string</note>

xliff.xml file example:

<xliff version="1.0">
   <file original="global" source-language="en" datatype="plaintext">
         <!-- Actions -->
         <!-- List -->
            <source>No result</source>
         <!-- Footer -->
            <source>© 2012 All Rights Reserved.</source>

Smartling supports .xlf, .xliff, and .xml files that use the XML Localization Interchange File Format (XLIFF).

Excluding Strings

XLIFF does not support using the sltrans directive for marking excluded content. However, for files uploaded from October 2015 onwards, you can use XLIFF’s translate attribute. To exclude a string from translation, set translate=no. See the above linked XLIFF Resource Documentation for details on the translate attribute.

Plurals for iOS in XLIFF Files

iOS apps using plural functions store the strings in the Stringsdict file format. This is still true regardless if the app uses .strings or .xliff for other strings. Please refer to the Apple documentation for the file format, which uses the  standard CLDR  forms.

Standard Placeholder Format

See Placeholders in Resource Files for more on placeholders.



<!-- smartling.[directive_name] = [value] -->



Exact delivery depends on file type.

Values auto (default)
true (or yes)
false (or no)
Description Can control whether or not characters will be "escaped" into entities when delivering translations. This can be set universally for the whole file via API, or by setting the directive at the top/start of the file. The directive can also be placed inline to control the behavior of specific strings.

To use inline:
<!-- smartling.entity_escaping = false -->

<!-- smartling.entity_escaping = auto -->

For example, your translation might look like this:
Smartling HTML escaping < > & " example string4

By default, using the "auto" setting, we would assume this is HTML from the <hr> tag and it would be converted to:
Smartling HTML escaping &lt; &gt; &amp; &quot; example string4

Using smartling.entity_escaping = false would allow Smartling HTML escaping < > & " example string4 to appear as it should.



Description  Used to specify a standard placeholder format. 

<!-- smartling.placeholder_format = IOS -->

Specifies iOS-style placeholders for the file.



Values  1) Custom Java compatible regular expression.
2) NONE - disables any current custom placeholders 
Description Specifies a custom placeholder format. Any text in your file matching the regular expression you provide will be captured as a placeholder. 

<!-- smartling.placeholder_format_custom=\{([^}]+)\} -->

Any characters surrounded by curly brackets, e.g., {first name}, will be treated as a placeholder.

See Placeholders in Resource Files for more on placeholders.



Values  integer - Accepted values are 0 - 100 
Description  Sets the percentage by which original strings are inflated when downloading pseudo translations. If this directive is not set, pseudo translations are 30 percent longer than the original strings. 

<!-- smartling.pseudo_inflation = 80 -->

Downloaded pseudo translations will increase the length of original strings by 80 percent.




Values  Comma-separated list of custom XLIFF tags 
Description  Content inside the listed custom tags will be captured as a placeholder. 

<!-- smartling.xliff_tags_to_placeholders = g, mrk, ept, bpt -->

g, mrk, ept, and bpt will be captured as tags.



Values html or NONE (default)
Description Control trans-unit level HTML parsing.  If this is set to HTML a single trans-unit can be ingested by Smartling as multiple strings, depending on block level tags. 
<trans-unit id="HTML string1">
<source>&lt;p>&lt;div>String1 div1.&lt;/div>&lt;div>String1 div2&lt;/div>&lt;/p></source>

<!-- smartling.string_format=html -->
<trans-unit id="HTML string2">
<source>&lt;p>&lt;div>String2 div1&lt;/div>&lt;div>String2 div2&lt;/div>&lt;/p></source>

<!-- smartling.string_format=none -->
<trans-unit id="HTML string3">
<source>&lt;p>&lt;div>String3 div1.&lt;/div>&lt;div>String3 div2&lt;/div>&lt;/p></source>

The first trans-unit gets the default behavior. One string is captured by Smartling:

<p><div>String1 div1</div><div>String1 div2</div></p>

and the CAT tool will allow the translator to manage the HTML tags, considered part of the translatable string.

The second trans-unit gets HTML parsed. Smartling captures two strings:

String2 div1
String2 div2

The third trans-unit returns to default parsing behavior. Smartling captures one string1:

<p><div>String3 div1</div><div>String3 div2</div></p>




on|yes|true or off|no|false or leading|trailing

The default value is on


A whitespace is any character or series of characters that represent horizontal or vertical space in typography. When rendered, a whitespace character is not a visible mark, but does occupy an area or space on a page.

Although whitespaces are necessary within a string (typically to separate words), unnecessary whitespaces can be found at the start of a string (leading) and at the end of a string (trailing).

With this directive, you can trim whitespaces, as it enables or disables whitespace trim management for the ingested strings.

By default, the leading and trailing whitespaces are trimmed.

You can choose to disable trimming or specify trimming for leading or trailing whitespaces.

The directive can be used inline or as the API request parameter.


<!-- smartling.whitespace_trim=on -->

Smartling will trim leading and trailing whitespaces (default)

<!-- smartling.whitespace_trim=off -->

Smartling will not trim leading or trailing whitespaces

<!-- smartling.whitespace_trim=leading -->

Smartling will trim only leading whitespaces

<!-- smartling.whitespace_trim=trailing -->

Smartling will trim only trailing whitespaces


Was this article helpful?