Supported File Types

Gettext PO/POT

Extension .po / .pot
Smartling Identifier gettext
Example File gettext.pot
Resources GNU Gettext Documentation 

 

Source Strings in Gettext files

Smartling ingests the field in msgid as the source string and returns the translation in msgstr.

For example, in a source file:

msgid “Hello world”
msgstr “”

"Hello world" is ingested as the source string.

Keys-Variants

Smartling can capture the msgctxt parameter as variant metadata for a string. For example:

Text

msgctxt "Home Page Menu Navigation"
msgid "Home"
msgstr ""
msgctxt "Home Address Label"
msgid "Home"
msgstr ""


Will result in two strings for translation, both with the value “Home”. The translators can choose to to make the translation the same or not. The value of msgctxt displays to translators in the Translation Interface and the Smartling Dashboard. See the Help Center for more on translation variants.

String Instructions

Smartling includes comments in gettext files as instructions for translators. Comments follow the gettext standard. Only Extracted comments (beginning with #. ) are displayed to translators as instructions:

Text

#. This is an instruction that is included in the file above a string.
#. This is also an instruction that will be presented to translators.
#: arch/linux/directory_reader.py:101
msgid “Original source string.”
msgstr “”

HTML

Smartling automatically formats Gettext strings with HTML. No integration directive is required. Explicit HTML parsing can be turned on in order to create smaller source strings. Adding the smartling.string_format directive with the value html turns on HTML parsing. If this directive is present in the file Smartling explicitly parses all subsequent strings as HTML. With HTML parsing on, strings will be created based on HTML block elements. Strings that have no HTML are captured as normal. This directive is optional. Turning on HTML parsing behavior can result in smaller, more manageable strings, but will prevent you from being able to import existing translations. Translation imports are usually done as a one time action during account onboarding.  Please consult with Smartling if you are considering using this feature.

Plurals

If you include a plural-forms header in a original uploaded file, Smartling will return the locale specific plural-forms header in the translated file.

For example if an English source file contains the following header:

Text

"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"

A Russian translation file will contain:

Text

"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"

Smartling supports the CLDR standards for plurals. For some languages, Gettext plural support differs from the CLDR standards. For example, CLDR allows four plural forms for Polish: one; few; many and other, while Gettext only supports one; few; and many. Smartling will allow translations for all four CLDR plural forms, but when downloading translated Gettext files, only those supported by Gettext will be included.

Return Untranslated Strings as Empty

When using file/get to download Gettext files from Smartling, the parameter includeOriginalStrings=false ensures that if no translations are available, Smartling returns an empty string. If the parameter is set to true, Smartling returns the original string.

Standard Placeholder Format

See Placeholders in Resource Files for more on placeholders.

Native Gettext Placeholder Formats

In addition to Smartling’s Placeholder Format directives, Smartling supports Gettext’s native method of declaring placeholder format using flags (comment lines beginning with #,). Flags affect only the entry they are part of. The following native Gettext placeholder types are supported:

  • #, c-format
  • #, java-format
  • #, ios-format
  • #, python-format
  • #, sh-format

Directives

Format

# smartling.[directive_name] = [value]

 

entity_escaping

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

To use inline:
# smartling.entity_escaping = false

String:
# 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.

placeholder_format

Values NONE; C; IOS; PYTHON; JAVA; YAML; QT, RESX 
Description  Used to specify a standard placeholder format. 
Examples 

# smartling.placeholder_format = IOS

Specifies iOS-style placeholders for the file.

 

 

placeholder_format_custom

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

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

string_format

Values html or NONE (default)
Description

Control msgid level HTML parsing.  If this is set to HTML a single msgid can be ingested by Smartling as multiple strings, depending on block level tags. 

See Content Parsing for more information.

Examples
msgid "<div>String1 div1</div><div>String1 div2</div>"
msgstr ""

# smartling.string_format = html
msgid "<div>String2 div1</div><div>String2 div2</div>"
msgstr ""

# smartling.string_format = NONE
msgid "<div>String3 div1</div><div>String3 div2</div>"
msgstr ""

The first msgid gets the default behavior. One string is captured by Smartling:

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

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

The second msgid gets HTML parsed. Smartling captures two strings:

String2 div1
String2 div2

The third msgid returns to default parsing behavior. Smartling captures one string1:

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

 

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.

 

  

sltrans

Values  translate OR notranslate 
Description  Use this directive to enable or disable processing of translation strings in the file. You must turn translation back on after the strings you want to exclude. 
Examples 

# smartling.sltrans = notranslate

Strings below this directive will be captured as strings but excluded from translation.

# smartling.sltrans = translate

Strings below this directive will be translated.

 

 

whitespace_trim

Values 

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

The default value is on

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.

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.

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

Was this article helpful?