---
title: "How to translate a WordPress site: a step-by-step guide"
description: "Translate a WordPress site from setup to the HTML it serves, covering storage, URLs, hreflang, review and keeping translations current, plus the other routes."
url: "https://www.langrelay.com/guides/translate-wordpress-site"
---

1. [Home](https://www.langrelay.com/)
2. [Guides](https://www.langrelay.com/guides)
3. How to translate a WordPress site: a step-by-step guide

GuideWordPress

# How to translate a WordPress site: a step-by-step guide

Translate a WordPress site from setup to the HTML it serves, covering storage, URLs, hreflang, review and keeping translations current, plus the other routes.

[Chris Jayden](https://www.langrelay.com/about)

Founder

Published

6 October 2026

Reading time

10 min read

![An older farmer shows a young one how to plant rice in a flooded terrace at dawn, beside a low wall laid with leaf tiles.](https://www.langrelay.com/_emdash/api/media/file/01M4ETH02F40Z74E07JQT63BJA.webp)

On this page

1. What WordPress translates without a plugin
2. Four decisions to make before you install
3. 1. Will each language be its own post?
4. 2. Where will each language live?
5. 3. Who writes and checks the translations?
6. 4. Which languages, and which variants?
7. Translate a WordPress site with LangRelay, step by step
8. Step 1: install the plugin
9. Step 2: connect your site
10. Step 3: choose your languages
11. Step 4: let LangRelay translate the site
12. Step 5: review and go live
13. Step 6: activate, and add a switcher
14. Step 7: keep translations current
15. What a translated WordPress page should serve
16. How to check a translated WordPress site
17. Other ways to translate a WordPress site
18. Mistakes that undo the work

To translate a WordPress site you need a translation plugin, because WordPress on its own only translates its dashboard. The plugin has to give every language its own URL, add hreflang tags so search engines connect the versions, put a language switcher on the page, and keep the translations up to date when you edit.

I founded LangRelay, so the walkthrough uses it. The decisions and the HTML checks apply to any plugin.

## What WordPress translates without a plugin

Under Settings, General there is a Site Language setting, which WordPress's own documentation describes as "The WordPress dashboard language". Changing it switches the admin screens into another language. Your posts, pages, menus and product descriptions stay as you wrote them, and there is still only one URL per page.

The only plugin-free way to publish two languages is to run a Multisite network with one site per language and maintain every page twice. [Running WordPress in two languages without duplicating pages](https://www.langrelay.com/blog/wordpress-multilingual-without-duplicating-pages) explains why most sites avoid that.

## Four decisions to make before you install

### 1. Will each language be its own post?

Translation plugins either create an extra WordPress post for every language (WPML, Polylang) or leave your posts alone and translate the page as it is served (TranslatePress, Weglot, GTranslate's paid plans, LangRelay). Separate posts suit sites whose languages carry different content. Translating the served page suits sites where every language says the same thing and the original changes often, because there is only one page to edit. The [plugin comparison](https://www.langrelay.com/blog/best-wordpress-translation-plugins) lists which plugin uses which model.

### 2. Where will each language live?

Google's guide to multilingual sites lists the URL structures: a country-specific domain (`example.de`), a subdomain (`de.example.com`), a subdirectory (`example.com/de/`) and URL parameters (`site.com?loc=de`), which it marks as not recommended. For most WordPress sites a subdirectory is the simple choice, because every language stays on one domain and one WordPress install.

Choose once. Changing the structure later means redirecting every translated URL.

### 3. Who writes and checks the translations?

Most plugins now offer machine translation, and they differ in what happens before visitors see it. Some plugins publish machine output straight away, some can hold it for review, and some leave the translation entirely to you. Google's spam policies describe scaled content abuse as large amounts of unoriginal content that gives users little to no value, however it is made. The first example on the list is "Using generative AI tools or other similar tools to generate many pages without adding value for users". A person reading translations before they go live is one way to make sure each translated page is as useful to its readers as the original.

Decide who reads each translation before visitors see it: you, a colleague who speaks the language, or a translator. That decides which plugin features you need.

### 4. Which languages, and which variants?

Start from the languages your customers read. Then decide whether a language needs a regional variant. Languages are identified by BCP 47 tags, and MDN's reference on the HTML `lang` attribute says it takes one such tag. `es` means Spanish in general, and `es-MX` Spanish as written in Mexico. Use a regional tag only when the content really differs by region, such as prices, spelling or legal text.

## Translate a WordPress site with LangRelay, step by step

LangRelay is a WordPress plugin plus a dashboard. The plugin serves translations from your own server; the LangRelay Dashboard is where you choose languages and approve translations. It needs WordPress 6.0 or later and PHP 8.0 or later.

### Step 1: install the plugin

LangRelay is in the WordPress.org plugin directory, so you can search for LangRelay under Plugins, Add New, then install and activate it. You can also upload the `langrelay` folder to `/wp-content/plugins/` and activate it under Plugins. For the first run alone, from install to a live and checked page, follow the [WordPress quickstart](https://www.langrelay.com/guides/wordpress-quickstart).

### Step 2: connect your site

Go to Settings, LangRelay and click Connect to LangRelay. You sign in to LangRelay, or create an account on the spot, approve the connection in the LangRelay Dashboard, and land back on your WordPress admin, connected. A staging site or a local install that the Dashboard cannot send you back to has a fallback: copy a connection code from the Dashboard and paste it under "Connect manually with a code" on the same settings page.

### Step 3: choose your languages

Languages are chosen in the Dashboard, not in WordPress. Connect asks one question, the language to translate into, and reads your site's own language from WordPress. The Dashboard currently offers Dutch, English, French, German, Italian, Korean, Portuguese, Spanish and Turkish, both as the language your site is written in and as languages to translate into. The Free plan covers one language per Site; more come with a paid plan.

For German, Spanish, French, Italian, Dutch and Turkish you can also set the formality register: the language's default, formal or informal. That decides whether your German site addresses visitors as "Sie" or "du". It is a translation setting and does not change URLs or hreflang tags. On paid plans you can add glossary terms per language, mark brand and product names to keep in the source language, and match case.

### Step 4: let LangRelay translate the site

LangRelay reads your pages as WordPress renders them, so it picks up the post content along with menu items, widget text, theme labels and page-builder blocks, and translates them with AI, following your glossary and formality setting. Text that repeats across pages, like a footer line, is translated once and reused everywhere it appears.

### Step 5: review and go live

By default a translation goes live as soon as it is ready, and free checks hold a page with untranslated text, the wrong language or a changed price. To approve every page yourself, choose Ask me first. In the Dashboard you go through each page's translation. The visual editor shows the translated page as it will look, in desktop, tablet or mobile width, and you click any text to change it there. Titles, meta descriptions and Open Graph text are part of the page's translation, so you review them with the rest of the page.

Relay, the agent in the Dashboard, can help with the work around review. Ask it about your site and it can start machine translation for a page, fetch a page again after you have changed it, or suggest a better translation for a sentence you have selected. Relay cannot approve or publish on its own.

### Step 6: activate, and add a switcher

Once a page's translation is approved and activated, your site starts serving it within about a minute at its own address, such as `example.com/de/about/`. If your site uses a full-page cache, the cache can keep serving the previous version until it expires.

A floating language switcher appears in the bottom right corner of your pages once your first language is live. It is on by default, and before then there is nothing to switch to. When the first language goes live the plugin clears the page caches it knows about, so visitors get the switcher at once; a CDN or server cache in front of the site may need a purge. To put it in your header instead, add the LangRelay Language Switcher block in the block editor, the LangRelay Switcher widget in Elementor, or the `[langrelay_switcher]` shortcode anywhere shortcodes run. The floating one steps aside once you place LangRelay's own block, widget or shortcode on the page; a switcher from another plugin does not hide it. [Language switcher best practices](https://www.langrelay.com/blog/language-switcher-best-practices) covers placement and labels.

By default every translated page keeps the same path as the original under its language prefix. You can set a translated address per page and language in the Dashboard, for example `/de/ueber-uns/` for `/about-us/`. LangRelay does not propose translated addresses on its own, so this is a manual step for the pages where it matters most.

### Step 7: keep translations current

When you publish or update a page, the plugin reports the change to LangRelay about a minute later. The same goes for changes to a menu, a category or tag, the site title or tagline, or the theme. LangRelay translates only the new or changed text, and the rest of the page's approved translation stays live. The new text goes live like any other translation: right away by default, unless the free checks hold it. Until then it shows in the original language. If an edit changes enough that more than a tenth of the page's translated text no longer matches it, the plugin serves the whole page in the original language until a new translation is approved.

Settings, LangRelay in WordPress shows which languages are live and which pages are translated, with a link to each translation and a Sync now button. One gap to know about: unpublishing or trashing a page is not reported to LangRelay yet.

## What a translated WordPress page should serve

Here is the head of a German page served by LangRelay, for a site in English with German and Spanish translations of its About page:

```
<html lang="de">
<head>
  <title>Über uns | Example</title>
  <meta name="description" content="Wer wir sind und wie wir arbeiten.">
  <link rel="canonical" href="https://example.com/de/about/">
  <link rel="alternate" hreflang="en" href="https://example.com/about/">
  <link rel="alternate" hreflang="de" href="https://example.com/de/about/">
  <link rel="alternate" hreflang="es" href="https://example.com/es/about/">
  <link rel="alternate" hreflang="x-default" href="https://example.com/about/">
</head>
```

Line by line:

- `lang="de"` on the `<html>` element tells browsers and screen readers the page is German. WCAG success criterion 3.1.1, Language of Page, asks for exactly this, so a screen reader can load the right pronunciation rules. Google's guide says it does not use `lang` to work out a page's language and reads the visible content instead, so the attribute is there for browsers and assistive technology.
- The title and meta description are translated, because they are part of the approved translation.
- The canonical URL points to the German page itself. A German page whose canonical points to the English original asks search engines to treat the English page as the one to index.
- The `hreflang` tags list every language version, including the page itself, and `x-default` names the version for visitors whose language is not listed, here the original. Google's documentation on localized versions says each language version must list itself as well as all the others, and that if two pages don't both point to each other, the tags will be ignored.

The English original carries the same set of hreflang tags. LangRelay leaves its canonical as your theme or SEO plugin set it. On translated pages the plugin also points internal links at their translated URLs when the linked page has a live translation in that language, so a German visitor stays in German as long as the next page is translated too. A page under `/de/` with no approved translation yet is served in the original language, and LangRelay adds none of these tags to it: it keeps whatever canonical and `lang` your theme or SEO plugin prints.

Two things LangRelay does not add: an `og:locale` tag, and translated URLs in your XML sitemap. Hreflang in the page head is one of the three methods Google accepts, so the sitemap is optional for hreflang, but a sitemap that lists only your original pages leaves crawlers to find the translated ones through links.

## How to check a translated WordPress site

You do not need a special tool for the first checks.

1. Open a translated page, view the source and search for `hreflang`. Every language version should be listed, including the page you are on, plus `x-default`.
2. Open each URL in that list and confirm it lists the same set back. Google ignores hreflang between two pages that do not both point to each other.
3. Check the canonical on a translated page. It should be that page's own URL.
4. Check `<html lang>` on a translated page.
5. Click around in the translated version. Menus, buttons and internal links should stay in that language.
6. Edit a sentence on the original, wait a couple of minutes, and confirm the changed text shows up in your translation tool for review.

From a terminal, `curl -s https://example.com/de/about/ | grep -i hreflang` prints the tags for one page.

## Other ways to translate a WordPress site

- WPML creates a post per language and can put languages in directories, on separate domains or behind a language parameter. It suits sites that want every translation as content in their own database, with review controls for AI output.
- Polylang also creates a post per language, with subdirectories, subdomains or separate domains. The free plugin suits sites that write their own translations; Pro adds DeepL through your own DeepL account.
- TranslatePress keeps one post, stores translations in your database and has a visual translation editor. Its settings let you show the default language under its own subdirectory too, such as `/en/`.
- Weglot keeps one post and gives each language its own URL, such as `/fr/about/`, without creating pages in WordPress; translations live on Weglot's servers.
- GTranslate's free version translates in the visitor's browser and gives each language no URL of its own, so search engines do not see the translations. Its paid plans are a proxy with indexable URLs. Its WordPress listing notes that Google set 1 October 2026 as the end of support for its old website translator widget, which matters if your site still embeds that widget.
- A Multisite network with a site per language, maintained by hand.

The [WordPress translation plugin comparison](https://www.langrelay.com/blog/best-wordpress-translation-plugins) has prices, dated and linked, and who each plugin suits.

## Mistakes that undo the work

- Redirecting visitors by browser language or IP address. Google's guide asks sites to avoid it and to link to the other language versions instead, and Google's page on locale-adaptive pages says its crawler sends requests without an `Accept-Language` header.
- Translating only the template. Google's guide says that translating only the boilerplate while the main content stays in one language can create a bad user experience, and its localized-versions page says localized pages are only considered duplicates if the main content remains untranslated.
- Leaving the title and meta description in the original language, when they are what a searcher reads in the results.
- A canonical on every translated page pointing to the original.
- A flags-only language switcher, or one that sends everyone to the translated home page.
- Publishing machine output nobody has read, especially on pages with prices, product names or legal terms.

If you want to see these steps on your own WordPress site, [book a demo](https://www.langrelay.com/book-a-demo) and I will walk through it with you.

## Sources

The pages this one cites, with the day each was read.

1. 01[LangRelay (WordPress.org plugin directory)](https://wordpress.org/plugins/langrelay/)wordpress.org, checked 6 October 2026
2. 02[Settings General screen (WordPress.org documentation)](https://wordpress.org/documentation/article/settings-general-screen/)wordpress.org, checked 6 October 2026
3. 03[Managing Multi-Regional and Multilingual Sites (Google Search Central)](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)developers.google.com, checked 6 October 2026
4. 04[Localized Versions of your Pages (Google Search Central)](https://developers.google.com/search/docs/specialty/international/localized-versions)developers.google.com, checked 6 October 2026
5. 05[How Google Crawls Locale-Adaptive Pages (Google Search Central)](https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages)developers.google.com, checked 6 October 2026
6. 06[Spam Policies for Google Web Search (Google Search Central)](https://developers.google.com/search/docs/essentials/spam-policies)developers.google.com, checked 6 October 2026
7. 07[Understanding Success Criterion 3.1.1, Language of Page (W3C WAI)](https://www.w3.org/WAI/WCAG22/Understanding/language-of-page.html)w3.org, checked 6 October 2026
8. 08[lang HTML global attribute (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/lang)developer.mozilla.org, checked 6 October 2026
9. 09[Language URL format options (WPML documentation)](https://wpml.org/documentation/getting-started-guide/language-setup/language-url-options/)wpml.org, checked 6 October 2026
10. 10[Discover Polylang's Features](https://polylang.pro/features/)polylang.pro, checked 6 October 2026
11. 11[Settings (TranslatePress documentation)](https://translatepress.com/docs/settings/)translatepress.com, checked 6 October 2026
12. 12[Weglot for WordPress, Getting Started (Weglot developer documentation)](https://developers.weglot.com/wordpress/getting-started)developers.weglot.com, checked 6 October 2026
13. 13[Translate WordPress with GTranslate (WordPress.org plugin directory)](https://wordpress.org/plugins/gtranslate/)wordpress.org, checked 6 October 2026
14. 14[WPML's Database Tables (WPML documentation)](https://wpml.org/documentation/support/wpml-tables/)wpml.org, checked 6 October 2026
15. 15[Customize WPML's AI Translation (WPML documentation)](https://wpml.org/documentation/customizing-wpml/ai-translation-settings/)wpml.org, checked 6 October 2026
16. 16[REST API (Polylang documentation)](https://polylang.pro/documentation/support/developers/rest-api/)polylang.pro, checked 6 October 2026
17. 17[How to use DeepL machine translation with Polylang Pro (Polylang documentation)](https://polylang.pro/documentation/support/guides/how-to-use-deepl-machine-translation-with-polylang-pro/)polylang.pro, checked 6 October 2026
18. 18[Delete all translations and plugin data (TranslatePress documentation)](https://translatepress.com/docs/developers/delete-all-translations-and-plugin-data/)translatepress.com, checked 6 October 2026
19. 19[Translation Editor (TranslatePress documentation)](https://translatepress.com/docs/translation-editor/)translatepress.com, checked 6 October 2026
20. 20[Translate WordPress with Weglot (WordPress.org plugin directory)](https://wordpress.org/plugins/weglot/)wordpress.org, checked 6 October 2026
21. 21[GTranslate pricing and product page](https://gtranslate.io/)gtranslate.io, checked 6 October 2026

[Chris Jayden](https://www.langrelay.com/about)

Founder, LangRelay

Chris Jayden is the founder of LangRelay. Chris has worked on websites of every size, from large e-commerce stores to small sites with a handful of pages, and started LangRelay after years of translating them the hard way.

On this page

1. What WordPress translates without a plugin
2. Four decisions to make before you install
3. 1. Will each language be its own post?
4. 2. Where will each language live?
5. 3. Who writes and checks the translations?
6. 4. Which languages, and which variants?
7. Translate a WordPress site with LangRelay, step by step
8. Step 1: install the plugin
9. Step 2: connect your site
10. Step 3: choose your languages
11. Step 4: let LangRelay translate the site
12. Step 5: review and go live
13. Step 6: activate, and add a switcher
14. Step 7: keep translations current
15. What a translated WordPress page should serve
16. How to check a translated WordPress site
17. Other ways to translate a WordPress site
18. Mistakes that undo the work

Share

- [Share on LinkedIn (opens in a new tab)](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.langrelay.com%2Fguides%2Ftranslate-wordpress-site)
- [Share on X (opens in a new tab)](https://x.com/intent/post?url=https%3A%2F%2Fwww.langrelay.com%2Fguides%2Ftranslate-wordpress-site&amp;text=How%20to%20translate%20a%20WordPress%20site%3A%20a%20step-by-step%20guide)

See it on your site

A 30-minute walkthrough on one of your pages.

[Book a demo](https://www.langrelay.com/book-a-demo)

- hreflang
- multilingual
- multilingual SEO
- translation plugins
- WordPress

Book a demo

## See LangRelay on your own site

Book 30 minutes with the team. We translate one of your pages live and walk through review, publishing and multilingual SEO.

[Book a demo](https://www.langrelay.com/book-a-demo)[See pricing](https://www.langrelay.com/pricing)
