Extension | .md, .markdown |
Smartling Identifier | MARKDOWN |
Example File | (see examples below) |
Resources | GitHub Flavored Markdown Spec |
Markdown comes in many flavors. The one that is supported by Smartling is the GitHub flavor of Markdown. Consult a member of your internal technical team to confirm which flavor of Markdown you are using.
Visual context is supported for this file type.
Preparing Markdown Files for Translation
Before uploading your Markdown file to Smartling, be aware of the following:
Markdown translation is accomplished by transforming content into HTML so that it can be manipulated in translation tools. Once translation is complete, the content is converted from HTML back into Markdown while the translated content is downloaded. As a result, your original Markdown document may differ in some ways from what is downloaded in the translated documents.
During the translation process, Smartling will try to maintain the same visual layout of your file, but can’t guarantee that there won’t be some noticeable differences. Some post-processing may be required to return the same formatting as the original document. See below for more details about the Markdown formatting.
ICU Message Format is not supported with Markdown due to conflicts between ICU special characters and Markdown special characters.
File directives for API Service configuration parameters are listed below. Inline directives are not supported.
Markdown Formatting
Below are some examples of known differences for Markdown formatting in the translated file returned by Smartling.
Alternate Codes
Most Markdown styling can be represented by different Markdown code sequences (or character sequences). One code sequence will be consistently returned for any given style. For example:
H1 and H2 headers (only)
Original | Downloaded |
# Header 1 |
Header 1 |
The above only applies to Markdown h1 and h2 headers. All other headers are unchanged on download.
Italic and bold:
Original | Downloaded |
Text with _Italic_, __bold__, *Italic* , **bold** |
Text with *Italic*, **bold**, *Italic* , **bold** |
Formatting of code blocks is returned with an indentation style:
Original | Downloaded |
``` |
public void main() |
Frontmatter in Markdown
Frontmatter is a block of YAML at the top of a markdown file, e.g.:
—
layout: post
title: Blogging Like a Hacker
description: This is a description
—
Anything that is in between the —
should be treated as YAML.
This can be controlled by using the yaml_front_matter
directive.
Escaping
The following characters are escaped with a backslash '\' in the downloaded file if they’re in the translated text:
\ backslash
* asterisk
_ underscore
{} curly braces
[] square brackets
() parentheses
# hash mark
+ plus sign
- minus sign (hyphen)
! exclamation mark
. dot sign is escaped when it is placed after a number (e.g. 123\.
)
The greater sign (>) is escaped when it is placed on the new line, or after the beginning of a
paragraph (if it is not a blockquote).
Script Tags
Literal (HTML markup inside markdown) script tags are removed.
Original | Downloaded |
<script type="text/javascript">
|
okay |
Original | Downloaded |
<script> |
1\. \*bar\* |
Style Tags
Literal (HTML markup inside markdown) style tags are removed.
Original | Downloaded |
<style |
okay |
Blockquotes
Blockquotes can be merged.
Original | Downloaded |
> foo |
> foo |
Bullets With Headings
Extra line breaks can sometimes be returned.
Original | Downloaded |
- # Foo |
* |
Lists
An extra line break is added between lists.
Original | Downloaded |
- [x] foo |
* [x] foo |
Custom start position in numeric list currently is not supported.
Original | Downloaded |
123. Item 1 |
1. Item 1 |
Italics
Extra spacing can be added around certain styles.
Original | Downloaded |
5*6*78 |
5 *6* 78 |
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) |
" |
Directives
File directives are supported via our API (inline is not supported). Directives are specified in the following format:
API Parameter
smartling.[directive_name] = [value]
Here are examples of supported directives for plain text files:
Directive name | Values | Description | Example |
markdown_code_notranslate |
|
Used to change default behavior for specific markdown. By default, all Markdown code strings are excluded from translation.
|
smartling.markdown_code_notranslate=false |
markdown_html_strategy |
(case-insensitive) |
Used to control retention of original HTML tags in translations. |
smartling.markdown_html_strategy=restore Smartling will retain original HTML tags in translations. |
placeholder_format |
|
Used to specify a standard placeholder format. |
smartling.placeholder_format = IOS Specifies iOS-style placeholders for the file. |
primary_placeholder_format_custom |
|
Specifies a custom placeholder format in the raw Markdown source (before the actual parsing). 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.primary_placeholder_format_custom=\*_\w+_\* |
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. |
variants_strategy |
(case-insensitive) |
context_match: enables ICE variants functionality. repetition_indexed: enables the "string indexes as variants for repeated strings". It is important to note that using this directive will override any use of variants_enabled and its supporting directives. |
smartling.variants_strategy=context_match smartling.variants_strategy=repetition_indexed
|
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 |
yaml_front_matter |
|
The option for recognizing Frontmatter allows you to include the YAML Frontmatter (yfm) block for translation. To exclude some of YAML Frontmatter variables, the following directive can be used: smartling.no_translate_keys = title, example.custom.text |
smartling.yaml_front_matter = on Smartling will capture content between each yaml_front_matter code example smartling.yaml_front_matter = on |