Skip to main content

HTML

Extension

.html

Smartling Identifier

html

Example File

Resources

By default, Smartling creates a single string for each block element in an HTML document. The values of alt and title attributes are also captured as individual strings. No other attribute values are captured.

HTML comments are treated as block elements. This means that if a comment appears between pieces of text, the text will be parsed into separate strings, since a single string is created for each block element.

Important: HTML-like template files, such as those used by Angular, Ember, Backbone, EJS, Handlebars, etc., are not officially supported by Smartling and should not be uploaded as HTML files. When localizing a templated application, always externalize all strings into a supported resource file for translation instead of translating the template file directly.

Variants

HTML files uploaded via our API supports the data-sl-variant attribute, similar to our Global Delivery Network (GDN). See an example here.

Exclude Content from Translation

Content inline in an HTML file can be marked as not translatable through attributes on tags:

<a href="" class="notranslate">
<a href="" translate="no">
<a href="" data-sl-notranslate="no">
<a href="" class="notranslate">

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 HTML:

Translate Attributes

Directive

include_translatable_attributes

Values

An attribute name or comma-separated names

Yes

Description

By default, HTML tag attributes are captured as part of the tag itself and therefore are not translatable.

This directive instructs Smartling to capture the text of a list of HTML attributes for translation. For example, this can be used to capture the title attribute of a button.

Examples

<!-- smartling.include_translatable_attributes = title, alt, class, description -->

This will capture text in the title, description, class, and alt attributes of any element as a translatable string.

Exclude Translatable Attributes

Directive

exclude_translatable_attributes

Values

An attribute name or comma-separated names

Yes

Description

This directive treats HTML attributes as non-translatable. This has a priority over the include_translatable_attributes directive.

Examples

<!-- smartling.exclude_translatable_attributes = alt, title -->

Escape Characters the Same as Source

Directive

entity_escaping_strategy

Values

propagate | none

Yes

Description

Used to retain entity escaping for all non-base entities. For example, normally we turn &copy; 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.

The default is none which is the current behavior, which recognizes HTML4 entities only - if HTML5 entities are required as well, you must use the entity_escaping_type=propagate directive.


​propagate will only affect non-base entities - all named entities except &amp; , &quot;, &lt;, &gt; . Base entities continue to be controlled by HTML detection and the entity_escaping directive.


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.

Numerical entities are not considered at all with this directive, and are treated normally.

Examples

<!-- 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 &amp; , &quot;, &lt;, &gt;. Base entities continue to be controlled by HTML detection and the entity_escaping directive.

Unescape HTML5

Directive

entity_escaping_type

Values

html4 (default)|html5

(case-insensitive)

Yes

Description

By default, all html4 entities are unescaped, except the basic set: &lt; &gt; &amp; &quot;.

When this directive is set to html5, all html5 entities will be unescaped as well.

If you choose to set this directive to html5, you must also use the entity_escaping_strategy=propagate directive

Examples

<!-- smartling.entity_escaping_type = html5 -->

Force Inline Tags

Directive

force_inline_for_tags

Values

A comma-separated HTML tag list

Yes

Description

This parameter forces the HTML parser to treat the listed tags as inline. The difference between block and inline tags is that block tags are used to split HTML into strings, whereas inline tags are included in strings.

Examples

<!-- smartling.force_inline_for_tags = external_link,reference -->

Any <external_link> or <reference> tags will be parsed as inline tags. Smartling will not create separate strings for content in these tags.

Tags As String Separators

Directive

force_block_for_tags

Values

A comma-separated HTML tag list

Yes

Description

This parameter forces the HTML parser to treat the listed tags as string separators.

The difference between block and inline tags is that block tags are used to split HTML into strings, whereas inline tags are included in strings.

If pointing to the same tag list, this directive overrides forcing inline tags.

Examples

<!-- smartling.force_block_for_tags=br -->

Enables string separation by <br> tags

Control Line Breaks (API only)

Directive

text_break_method

Values

  • DO_NOT_BREAK

  • BREAK_BY_NEWLINE (default)

  • BREAK_BY_BLANK_LINE

Yes

Description

This directive control line breaks in HTML files:

  • BREAK_BY_NEWLINE - strings are bound by line breaks (default)

  • BREAK_BY_BLANK_LINE - strings are bound by blank lines

  • DO_NOT_BREAK - all content ingested as one string

Examples

<!-- smartling.text_break_method=DO_NOT_BREAK

-->

Parse Tags as TXT

Directive

plain_text_tags

Values

Comma-separated list of block tags.

Yes

Description

By default, the HTML contents of block tags as a single string. If this directive is used, strings are parsed as plain text to parse the content of a block tag with the default text_break_method=BREAK_BY_BLANK_LINE.

Text break method for nested plain text parser can be overridden with text_break_method directive

Examples

<!-- smartling.plain_text_tags=pre

-->

Variant Strategy (API only)

Directive

variants_strategy

Values

  • none (default)

  • context_match

  • repetition_indexed

(case-insensitive)

Yes

Description

This directive can only be used as an API parameter.

context_match: enables ICE variants functionality.

repetition_indexed: enables the "string indexes as variants for repeated strings" functionality that is the default behavior for business docs.

Examples

'smartling.variants_strategy':'repetition_indexed'

Standard Placeholder Format

Directive

placeholder_format

Values

NONE; C; IOS; PYTHON; JAVA; YAML; QT, RESX

Yes

Description

Used to specify a standard placeholder format.

Examples

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

Specifies iOS-style placeholders for the file.

Custom Placeholder Format

Directive

placeholder_format_custom

Values

1) Custom Java regular expression.
2) NONE - disables any current custom placeholders

Yes

Description

Specifies a custom placeholder format. Any text in your file matching the regular expression you provide will be captured as a placeholder.

Examples

<!-- smartling.placeholder_format_custom = REGEX-->

<!-- 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.

Pseudo Translation

Directives

pseudo_inflation

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.

Examples

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

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

Control Whitespace

Directive

collapse_html_whitespace

Values

  • on (default)

  • yes

  • true

  • off

  • no

  • false

(case-insensitive)

Yes

Description

Disables or enables the HTML whitespace collapsing.

By default, this is enabled, so the HTML parser turns all new lines (including tab, LF and CR - i.e. \t, \n, and \r) into spaces and collapses (removes) a sequence of spaces into one space.

Examples

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

Disables whitespace collapsing and retains new lines.

Trim Whitespace

Directive

whitespace_trim

Values

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

The default value is on.

Yes

Description

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.

Whitespace is optionally trimmed from content then re-inserted on download for convenience so that translators do not have to manage the extra spaces. However, content owners may want to retain surrounding whitespace so that translators can
manipulate it during translation.

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 only be used as the API request parameter.

Examples

<!-- 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

Did this answer your question?