Extension | .xml, .xlf, .xliff |
Smartling Identifier | xliff |
Example File | Click here to download example file with common directives |
Resources | Background on XLIFF OASIS specification |
Example File
<xliff version="1.0">
<file original="global" source-language="en" datatype="plaintext">
<header/>
<body>
<!-- Actions -->
<trans-unit>
<source>New</source>
</trans-unit>
<trans-unit>
<source>Edit</source>
</trans-unit>
<trans-unit>
<source>Delete</source>
</trans-unit>
<!-- List -->
<trans-unit>
<source>No result</source>
</trans-unit>
<!-- Footer -->
<trans-unit>
<source>© 2012 All Rights Reserved.</source>
</trans-unit>
</body>
</file>
</xliff>
Smartling supports .xlf, .xliff, and .xml files that use the XML Localization Interchange File Format (XLIFF).
Articulate XLIFF 1.2 is supported, meaning you can upload a translation XLIFF 1.2 file to Articulate Storyline. You must translate XLIFF 1.2 and choose the articulate option for translations to be compatible with articulate import.
Visual Context
Visual context is not automatically provided for XLIFF files. To provide visual context for your XLIFF file, you can upload a context file manually, or integrate with Smartling’s JavaScript Library, or the Context Capture Google Chrome Extension, or an API.
An alternative method of providing visual context is to allow translators to view the raw XLIFF file as context. Large files can split into chunks of strings or kilobytes by your Smartling Representative.
To enable raw file image context for a project:
- Go to Settings > Contexts
- Under Use file content as visual context, switch XLIFF on
String Instructions
Smartling automatically captures XLIFF notes and makes them translator instructions.
XLIFF Note → Smartling Instruction
<trans-unit>
<source>string1 from an xliff file</source>
<note>instruction for this string</note>
</trans-unit>
Excluding Strings
To exclude content from translation, you can use XLIFF’s translate attribute. To exclude a string from translation, set translate=no. See 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.
XML Characters
The following XML character are always escaped. You can control this by using the entity_escaping directive.
Character (character name) | Escape sequence |
< (less-than) |
< |
> (greater-than) |
> |
& (ampersand) |
& |
' (apostrophe or single quote) |
' |
" (double-quote) |
" |
Return Untranslated Strings as Empty
If using File API to download Custom XLIFF files from Smartling, the parameter includeOriginalStrings=false
can be set to return an empty string if no translation is available. By default, Smartling returns the original source string if no translation is available, meaning the parameter is set to includeOriginalStrings=true
Directives
File directives are supported, both inline and via our API. Directives are specified in comments within the files, in the following format:
Inline File Format
<!-- smartling.[directive_name] = [value] -->
API Parameter
smartling.[directive_name] = [value]
Here are examples of supported directives for XLIFF:
Directive name | Values | Description | Example |
entity_escaping |
(case-insensitive) |
Controls whether base characters ( > < & " ) are "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. |
For example, your translation might look like this: By default, using the "auto" setting, we will assume this is HTML from the <hr> tag. When the translated file is downloaded, the translated string will be escaped as: Using <!-- smartling.entity_escaping = false --> will allow is above string to appear unescaped. |
entity_escaping_type |
(case-insensitive) |
By default, all html4 entities are unescaped, except the basic set: < > & ". When this directive is set to html5, all html5 entities will be unescaped as well. |
<!-- smartling.entity_escaping_type = html5 --> |
entity_escaping_strategy |
(case-insensitive) |
Used to retain entity escaping for all non-base entities. For example, normally we turn © into © but if we use this new directive the translation will automatically update to use escaping from the source. For each entity character, we'll check to see if it was escaped in the source and try to match (propagate) it in the target. If HTML5 entities are required as well, you must use the entity_escaping_type=propagate directive. Numerical entities are not considered at all with this directive, and are treated normally. |
<!-- smartling.entity_escaping_strategy = propagate --> If the same character is both escaped and unescaped in the same string, propagate will return the characters in the translation escaped in the same order as they were in the source. However, if there are a different number of characters in the translation where the translation process removed or added some and the escaping is inconsistent among them, propagate will escape all entities for that character. This does not affect source content at all - so using it will not result in new strings. propagate will only affect non-base entities - all named entities except & , ", <, >. Base entities continue to be controlled by HTML detection and the entity_escaping directive.
|
placeholder_format |
|
Used to specify a standard placeholder format. |
<!-- smartling.placeholder_format = IOS --> Specifies iOS-style placeholders for the file. |
placeholder_format_custom |
|
Specifies a custom placeholder format. Any text in your file matching the regular expression you provide will be captured as a placeholder. See Placeholders in Resource Files for more on placeholders. |
<!-- smartling.placeholder_format_custom=\{([^}]+)\} --> Any characters surrounded by curly brackets, e.g., {first name}, will be treated as a placeholder. |
pseudo_inflation |
Integer values between 0 - 100 |
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. |
string_format |
|
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. |
<!-- smartling.string_format=html --> string_format code example <trans-unit id="HTML string1"> Code example explained 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> |
whitespace_trim |
|
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 manage whitespace trimming. 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 |
xliff_tags_to_placeholders | A comma-separated list of custom XLIFF tags |
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.
|