QA checks

Every new translation is checked before it’s stored: engine results, translation memory hits, repeats within a job, and fixes made in the review queue. Each finding has a code, a severity and a message.

  • Errors hold the translation back. Its state becomes attention, and it waits in the review queue.

  • Warnings travel with the result. GET /results includes them in qa, and connectors show them to editors.

Checks

code

Checks

Severity

html

For html and rich_text: tags are balanced (if they are in the source) and the same tags are present. Attributes are unchanged, except alt, title, aria-label, aria-description and placeholder, which may be translated but must stay present.

error

empty

An image’s alt text that isn’t empty in the source is empty in the translation.

error

links

The same URLs, the same number of times: href and src attributes, plain URLs (http://, https://, mailto:) and Markdown links. Sentence punctuation after a URL isn’t part of it.

error

placeholders

Placeholders survive exactly: {name}, {0}, {}, %s, %d, %(name)s, {{ var }}, {% tag %}.

error

empty

The translation is empty although the source isn’t (for alt_text segments: “The alt text is empty”).

error

max_length

The translation is longer than the segment’s max_length.

error

length_ratio

The translation is less than 0.3 or more than 2.5 times as long as the source (only for sources of at least 20 visible characters).

warning

seo

meta_description longer than 160, or meta_title, seo_title, page_title longer than 60 visible characters. Skipped if the segment has max_length.

warning

glossary

A do not translate term from the source doesn’t appear unchanged.

error

glossary

A glossary term’s translation doesn’t appear. Matched as a substring, ignoring case, so inflected forms count.

warning

forbidden_words

The translation uses a forbidden word from the brand voice (whole word, ignoring case).

error

“Visible characters” means the text without markup, for html and rich_text.

Limits of the checks

  • The HTML check compares which tags occur how often, not the tree structure. A tag moved to another parent passes.

  • Glossary and forbidden-word checks compare strings. An inflected form can hide a forbidden word, or satisfy a glossary term loosely.

  • Texts that editors approve in the CMS or admin aren’t checked: editors are in charge there.

Example

{"code": "seo", "severity": "warning", "message": "171 characters; search engines show about 160."}