Skip to content

Messages and variables

Give translators a complete message and enough context to understand each value. Reusing an English fragment can make the full sentence impossible to translate.

Translate a complete grammatical unit

A template such as The {object} is ready assumes that the article and verb work with every possible object. Other languages may change articles, adjective endings, word order, or agreement. Even English needs a different verb when the object is plural.

Prefer a complete message for each meaning. When variation is necessary, use the application’s established message format with plural and selection support. Do not join a translated prefix, a noun, and a translated suffix into an English-shaped sentence.

A label and value can sometimes be separate: “Destination:” followed by a folder path. Keep their relationship explicit. Do not assume an adjective such as “Selected” can be reused beside every translated noun without agreement changes.

Explain the values

For each message, supply:

  • Where it appears and what action or state triggers it.
  • Whether it is a button label, heading, status, or full sentence.
  • Each placeholder’s meaning, type, example values, and whether it can be empty.
  • Whether a value is a proper name, user text, number, path, or localized label.
  • Which plural or selection branches the application supports.
  • Any actual space limit, plus a screenshot when layout matters.

A useful comment says “Number of exported files; count can be zero.” A comment saying “Translate this string” adds no context.

Preserve syntax and grammar

Keep placeholder names, escapes, markup, and format specifiers intact. Reorder values only when the format supports it. Never assume a positional format such as %s can be rearranged safely without checking the parser.

Translate the display text inside semantic markup without detaching it from the element. A localized label must remain inside its label tag; leaving an empty tag beside it loses the relationship. A typographic change does not authorize changing that structure. Distinguish a literal token such as {name} from an explanatory placeholder that readers replace themselves, and document which parts may change.

Use the target locale’s plural rules. Do not assume that singular and plural are the only possibilities, or that a language without grammatical plural nouns needs only one input case tested. Check zero, one, several, larger numbers, and decimals where supported.

Let the application format dynamic numbers, dates, and units. Changing a unit label without converting its value changes the fact. A translator must not turn a runtime miles value into kilometres by translating only the word.

Test complete output

Substitute realistic values and read each full message. Check agreement, punctuation, line wrapping, direction, and truncation. Reuse a string only when its meaning and grammatical role are the same in every context; identical English spelling is not enough.

Use the localization review to check placeholders and translated screens before release.