Universally Documentation

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

Multilingual SEO metadata

Universally automatically translates and adapts all SEO-critical elements of your pages for each target language. No additional configuration is required, everything described below happens automatically on every translation request.

What Gets Translated

Page Content

All visible text content on the page is extracted and translated, including:

  • Headings, paragraphs, lists, links, buttons, and all other text elements
  • Form placeholders and accessibility labels (placeholder, aria-label)
  • Image alt text and title attributes
  • Button values for input[type="submit"], input[type="reset"], and input[type="button"]

Meta Tags

The following metadata is automatically translated:

  • <meta name="description">: the page description shown in search results
  • <title>: the page title shown in browser tabs and search results

Open Graph Tags

Social sharing metadata is translated so links shared on social media show the correct language:

  • og:title
  • og:description
  • og:site_name
  • og:image:alt

Twitter Card Tags

  • twitter:title
  • twitter:description
  • twitter:image:alt

Schema.org Metadata

Both <meta itemprop> tags and JSON-LD structured data are translated:

Meta itemprop tags:

  • itemprop="name"
  • itemprop="description"
  • itemprop="headline"
  • itemprop="alternativeHeadline"
  • itemprop="articleBody"
  • itemprop="caption"

JSON-LD structured data (<script type="application/ld+json">):

  • name, description, headline, alternativeHeadline
  • articleBody, caption, text, abstract
  • award, slogan, alternateName, disambiguatingDescription

This ensures that rich search results (recipes, products, articles, FAQ, etc.) display in the correct language.

Two more things happen inside JSON-LD, both easy to miss when auditing your structured data:

  • inLanguage is rewritten to the language being served.
  • URL values are localized, the same way links in the page body are. Identifiers on Person and Organization nodes are left alone, since those are identities rather than addresses.

HTML Attributes

Language Attribute

The lang attribute on the <html> tag is automatically updated to the language being served, with its region, in lower case: lang="fr-fr", lang="es-mx". Match on the start of the value if you are writing CSS or scripts against it.

Text Direction

For the nine right-to-left languages, the dir attribute is automatically set to rtl on the <html> tag. See Right-to-left languages.

URL Localization

Internal links on translated pages are automatically rewritten to point to the translated version. For example, a link to /about on a French-translated page becomes /fr/about (or the equivalent based on your URL structure).

This includes:

  • Navigation links
  • In-content links
  • Breadcrumbs
  • Any <a href> pointing to pages on the same domain
  • The canonical link
  • URL values in Open Graph and Twitter card tags
  • URLs inside JSON-LD, except identifiers on Person and Organization nodes

Links excluded from localization (configured in your project settings) are left unchanged. See Exclude link localization.

What Is NOT Translated

The following are intentionally excluded from translation:

  • Content inside <script> and <style> tags
  • HTML comments
  • Content inside elements excluded by your CSS selector configuration
  • URLs, email addresses and numbers, when they are the whole string. Inside a sentence they are translated with it, so number and date formatting can be adapted to the target language
  • Content on pages excluded in your project settings

What you can change

Four settings affect any of the above:

Glossary rules: control how specific terms are handled (see Glossary rules)

Exclude CSS selectors: keep page sections in the source language (see Include and exclude CSS selectors)

Exclude pages: skip entire pages (see Exclude pages)

Exclude link localization: stop specific links being rewritten (see Exclude link localization)

Was this helpful?