Universally Documentation

Step-by-step guides, multilingual SEO tips, and best practices to help you translate and scale your WordPress website.

What Universally translates by default

Universally translates the visible text on a page plus the metadata search engines and social platforms read. You do not configure any of this. It happens on every request, and this page is the exact list so you know what to expect before you start excluding things.

Visible content

All text a visitor can read: headings, paragraphs, lists, links, buttons, table cells, and labels.

Attributes

Text that is not visible as page content but is read aloud, shown on hover, or displayed when something fails to load:

Attribute Where it appears
alt image alternative text, read by screen readers and shown when an image fails
title tooltip text on hover
placeholder the grey hint inside an empty input
aria-label the accessible name of a control with no visible text
value the text on input buttons such as submit and reset, and on any element that also carries a title attribute

Translating alt and aria-label is why a translated page stays usable with a screen reader, rather than switching language visually but not for assistive technology.

The value rule catches one case worth knowing about: an input that carries a title attribute has its value translated too, even a hidden one. If a prefilled value is data rather than copy (a name, a reference, an amount), remove the title attribute or add class="notranslate" to that input.

Page metadata

The <title> element, plus these meta tags:

Tag Used by
description the snippet under your result in search
og:title, og:description, og:image:alt, og:site_name Facebook, LinkedIn, Slack, and anything reading Open Graph
twitter:title, twitter:description, twitter:image:alt X and other Twitter-card readers

A shared link therefore previews in the visitor's language, not the source language.

Structured data

Text inside <script type="application/ld+json"> is translated field by field, so rich results stay in the right language. The fields covered are name, description, headline, alternativeHeadline, articleBody, caption, text, abstract, award, slogan, alternateName, and disambiguatingDescription.

Values that are not human-readable text, such as URLs, dates, prices, and identifiers, are left exactly as they are.

A sentence is translated as one piece, including the markup inside it. Bold, italics, inline code, a link, a <span>: these stay where they belong rather than being torn out and reassembled, so the translation keeps the emphasis the original had.

Take this:

<p>Read the <strong>setup guide</strong> or see <a href="/pricing/">pricing</a>.</p>

That is one string, not three. The translator sees the sentence with its tags in place and returns it with the text translated and the tags intact.

Link targets are never changed by translation. An href is held aside while the sentence is translated and put back afterwards, so neither the AI nor anyone editing the string in the dashboard can alter where a link points. Links are then localised in a separate step, which is what turns /pricing/ into /es/pricing/ on the Spanish page. See Exclude link localization for the paths that step leaves alone.

In the Translations editor, that held-aside markup appears as a placeholder. Keep each one exactly once or the save is refused. See Translation states.

What is never translated

Some content is skipped by design, and no setting turns it on:

Skipped Why
<script> and <style> translating code would break the page
<pre> preformatted code samples must stay verbatim
<noscript> fallback markup, not user-facing copy
A single block of text longer than 5,000 characters too large to translate as one unit, so it is left in the source language

Three things are commonly assumed to be on that list and are not:

  • <code> on its own is translated. Only <pre> is protected. <code> used inside a sentence is translated with the sentence around it, so add class="notranslate" to anything that must stay verbatim.
  • Text inside an inline <svg> is translated when the <svg> carries a <text> element. The markup, paths and attributes are untouched, but visible words in an SVG are treated like any other text.
  • Prefilled <textarea> content is translated. Exclude it if it holds data rather than copy.

A URL, an email address, or a number is skipped when it is the whole string. Inside a sentence, it goes to translation with the rest of the sentence: links keep their href untouched, but number and date formatting in a sentence may be adapted to the target language.

Changing what gets translated

Four controls, all on the project's Translation Rules screen. See Translation rules for how to use them.

Control Effect
Include CSS Selectors no effect: everything holding text is already translated
Exclude CSS Selectors skip elements you name
Exclude Pages skip whole URLs
Exclude Link Localization stop language codes being added to particular paths

Glossary rules handle single words and phrases you always or never want translated, which is a different job from excluding a region of the page. See Glossary rules.

Was this helpful?