LangRelay – AI Translation & Multilingual

Description

LangRelay is a WordPress translation plugin that makes your site multilingual. AI translates your pages, posts, and products. You review and approve each translation in the LangRelay Dashboard, and your site serves it at its own address, with hreflang tags and a language switcher handled automatically.

Most translation plugins stop at the words on the page. LangRelay also translates your meta titles and descriptions and gives every translated page its own address, so your site gets found in every market you sell in.

What you get

  • AI translations you approve. Machine translation drafts each page, and nothing goes live until it has been approved in the LangRelay Dashboard.
  • An address for every language. Each translated page lives under its language prefix, like yoursite.com/nl/about-us, and you can set its address in that language, like yoursite.com/nl/over-ons, in the LangRelay Dashboard.
  • Automatic hreflang. Hreflang and canonical tags are set on every translated page for you. No manual setup.
  • Translated SEO metadata. Meta titles, descriptions, and OG tags in your page’s HTML translate alongside the page, whichever plugin writes them.
  • Language switcher. Flags and language names, rendered with the page, so it works without JavaScript and search engines see it. Available as a Gutenberg block, Elementor widget, shortcode, or as a floating switcher.
  • WooCommerce pages. Product and shop pages translate like any other page once their translation is approved.

Why a multilingual WordPress site matters

  • English is only 16% of the internet. The other 84% is your addressable market.
  • Google ranks translated pages separately. A multilingual site can multiply your organic traffic without adding new content.
  • AI search engines (ChatGPT, Perplexity, Gemini) increasingly answer questions in the user’s native language. Without translated pages, you don’t show up.

How it works

  1. Install the plugin, go to Settings > LangRelay, and click Connect to LangRelay. Sign in to LangRelay, or create your account right there, approve the connection in the LangRelay Dashboard, and you’re returned to your site, connected.
  2. Pick the languages you want, in the LangRelay Dashboard.
  3. Review and approve translations in the LangRelay Dashboard. Once a page’s translation is activated, your site serves it at its own address, with the language switcher, hreflang and canonical tags taken care of.

That’s it. No content duplication, no manual translation interface, no separate posts to manage.

Multilingual SEO done right

LangRelay handles the SEO work that usually takes hours per language:

  • hreflang and x-default tags on every translated page and its original
  • Canonical tags pointing to the correct language version
  • An address of its own for each language version, under its language prefix
  • Translated meta titles, descriptions, and Open Graph tags

Search engines understand which language to serve to which visitor. AI models cite your site across markets.

What makes LangRelay different

Nothing goes live without your approval. Every translated page is approved in the LangRelay Dashboard before your site serves it, and your site serves exactly the translation that was approved.

The same sentence is translated once. If it appears on 500 pages, like a line in your footer, LangRelay translates it once and reuses that translation wherever it appears.

Switching from another translation plugin?

Coming from a service like Weglot, or a manual translation plugin like WPML or Polylang? Two things change:

  • You stop maintaining translations by hand. There are no duplicate posts or separate editors to keep in sync. LangRelay applies approved translations to your pages as they are served, so your content lives in one place.
  • You approve before anything goes live. Each page’s translation is reviewed and approved in the LangRelay Dashboard, and your site serves exactly what was approved.

Keep your content and keep your domain.

Pricing

Plans and prices are at langrelay.com/pricing.

Meet Relay

Relay is the AI assistant in the LangRelay Dashboard. 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. Approving and publishing translations stay with you.

External services

LangRelay API

This plugin connects your site to the LangRelay API (api.langrelay.com) over HTTPS. It never sends your page content.

What is sent: the one-time connection code when you connect; your site’s address, WordPress and plugin versions and an installation ID when connecting and in an hourly health check; after you save content, the address of each published page you saved, or that a menu, category or tag, or your site title, tagline or theme changed, with the time and the installation ID; and this site’s connection credential with every request.
What is received: the languages your site is translated into, and the approved translations of your pages, which the plugin caches on your site; and, for Settings > LangRelay, your LangRelay plan, this month’s word usage and welcome grant, the pages waiting to be translated (with their titles and addresses) and the plan that would translate them now, with its price and a link to the LangRelay Dashboard.
When: when you connect, once an hour, about a minute after you save content, and on visitor page requests at most once per refresh interval (one minute by default) or when an approved translation changes. Your plan and usage only when an administrator opens Settings > LangRelay: at most once every five minutes, or a minute later when LangRelay could not be reached.

LangRelay API, from your visitors’ browsers

On pages with the language switcher, and on every translated page, a small script that ships with this plugin reads from the LangRelay API (api.langrelay.com) in the visitor’s browser: your site’s languages on every such page, and on a translated page the approved translations it needs to translate text that appears after the page loads, such as a mini-cart. The script is served from your site, never from LangRelay. It follows your Site’s Dynamic content setting in LangRelay, which is on by default.

What is sent: your site’s public key, which is printed in the page and is not a password, and on a translated page its language and which part of your site’s translations it needs (a version and a part number). Never the page’s text, its address, or any cookie.
What is received: your site’s languages and, on a translated page, the approved, live translations of your site’s text in that language and the addresses of its translated pages.
When: when a visitor opens a page with the language switcher or a translated page, unless their browser already has a fresh copy.

LangRelay Dashboard

When you click Connect to LangRelay, your browser is sent to the LangRelay Dashboard (app.langrelay.com) to approve the connection, and back to your site afterwards.

What is sent: your site’s address, its installation ID, your WordPress site language and the address on your site to return to, in the address your browser opens.
When: only when you click Connect to LangRelay.

When you click Upgrade in the Dashboard on Settings > LangRelay, the LangRelay Dashboard opens in a new tab on its plan page, at the address LangRelay gave for it. The plugin never changes your plan; upgrading happens in the Dashboard.

What is sent: your LangRelay organization’s ID and the suggested plan, in the address your browser opens.
When: only when you click Upgrade in the Dashboard.

By using this plugin you agree to LangRelay’s Terms of Service and Privacy Policy.

Screenshots

Blocks

This plugin provides 1 block.

  • LangRelay Language Switcher Display a language switcher for your translated site.

Installation

  1. Upload the langrelay folder to /wp-content/plugins/.
  2. Activate through Plugins in WordPress.
  3. Go to Settings > LangRelay and click Connect to LangRelay. Sign in to LangRelay, or create your account right there, approve the connection in the LangRelay Dashboard, and you’re returned to your site, connected.
  4. Pick your languages in the LangRelay Dashboard, then approve and activate your pages’ translations. Your site starts serving each one within about a minute of activation (a full-page cache can hold the previous version until it expires).

There’s nothing else to set up: approving the connection binds your installation to a Site in the LangRelay Dashboard, and your languages are chosen there.

Can’t be redirected back to your site (staging, localhost)? Paste a connection code from the Dashboard instead, under Connect manually with a code on the Settings > LangRelay page.

FAQ

What does this plugin do?

It makes your WordPress site multilingual. AI translates your pages, you approve the translations in the LangRelay Dashboard, and your site serves each one at its own address, with hreflang tags and a language switcher. You don’t manage translated posts manually.

How is this different from other translation plugins?

Two big things. First, nothing goes live until it has been approved, and your site serves exactly the translation that was approved. Second, a sentence that appears across your whole site is translated once and reused, not once per page.

Which languages are supported?

The LangRelay Dashboard currently offers Dutch, English, French, German, Italian, Portuguese, Spanish, and Turkish, both as the language your site is written in and as languages to translate into.

Do I need a LangRelay account?

Yes. LangRelay is a cloud service. If you don’t have an account yet, you can create one when you click Connect to LangRelay under Settings > LangRelay.

How much does it cost?

See langrelay.com/pricing for current plans and prices.

Will this slow down my site?

Not on a typical page view. Approved translations are cached on your site and applied as each page is served, in well under a millisecond on a typical page. About once a minute (the refresh interval), one page view also checks LangRelay for newly activated translations. That check is capped by the API timeout under Settings > LangRelay > Advanced; if LangRelay doesn’t answer in time, the page is served with the translation already cached on your site, or in its original language if it has none yet. Pages with the language switcher, and translated pages, also load one small script, deferred so it never holds up the page.

Does it handle hreflang tags?

Yes, automatically. On every page with an activated translation, LangRelay adds an hreflang tag for each language version plus an x-default tag pointing to the original. Canonical tags are language-aware. No manual SEO work required.

Does it work with WooCommerce?

Product and shop pages are translated like any other page once their translation is approved. Text that appears after the page loads, such as the mini-cart or an “added to cart” notice, is translated in the visitor’s browser when the same text has an approved translation elsewhere on your site. Parts of a page that change for every visitor, such as a cart’s contents or a checkout’s form fields, can stay in the original language.

Does it work with Yoast SEO and Rank Math?

LangRelay translates the meta titles, meta descriptions, Open Graph and Twitter Card tags in your pages’ HTML, whichever plugin writes them — including Yoast SEO and Rank Math — once the page’s translation is approved.

What happens if the LangRelay API goes down?

Your site keeps serving the translations it has cached. A page it has no translation for is served in its original language. Nothing breaks.

What is GEO?

GEO stands for Generative Engine Optimization. It’s the practice of making your site visible and citable by AI-powered search engines like ChatGPT, Perplexity, and Google AI Overviews. LangRelay helps by serving each translation as a real page at its own address, with hreflang tags, so AI search engines can find and cite it in each language.

Reviews

October 2, 2026
We’re a gym based in Enschede and we have a lot of international students and people from all over the world in our city. For us, having our website available in English and Dutch has made a real difference. Since using LangRelay, it’s much easier for people who aren’t Dutch speakers to understand what we offer and feel welcome before they even walk through the door. We’ve noticed that our gym is attracting a more diverse mix of people, which is exactly what we hoped for. LangRelay has made the whole translation process simple without adding a lot of extra work to our website management as it gets translated automatically. For a local business in a very international city like Enschede, it's been really useful. Thx!
Read all 1 review

Contributors & Developers

“LangRelay – AI Translation & Multilingual” is open source software. The following people have contributed to this plugin.

Contributors

“LangRelay – AI Translation & Multilingual” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “LangRelay – AI Translation & Multilingual” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.2.0

  • New: Settings LangRelay shows your plan, this month’s words and which pages are waiting to be translated, with a link to upgrade in the LangRelay Dashboard.
  • Fix: on Settings LangRelay, the “Disconnect this site?” dialog no longer shows the tabs on top of it.

2.1.0

  • New: on a translated page, text that appears after it loads, such as a mini-cart or a notice, now shows in the visitor’s language when that text has an approved translation elsewhere on your site. Pages with the language switcher, and translated pages, load a small script for it.
  • Removed: the Debug Mode option under Settings LangRelay Advanced, which had no effect. Logs are still recorded and shown on the Logs tab.
  • Improvement: Settings LangRelay has a new design in the LangRelay brand. Changes save without reloading the page, and a bar reminds you of unsaved changes.
  • New: Settings LangRelay shows which languages are live and which pages are translated, with links to each translation and a Sync now button.
  • New: when you publish or update a page, or change a menu, category, your site title or theme, LangRelay picks up the change within minutes instead of at its next scheduled check of your site.

2.0.1

  • Fix: translated pages now appear on sites that optimize their pages with a cache plugin such as LiteSpeed Cache, instead of showing the original language.

2.0.0

  • Important: after updating, reconnect under Settings LangRelay and approve your translations again in the new LangRelay Dashboard. Until then pages show in their original language; your content and settings stay as they are.
  • New: connect with one click from Settings LangRelay. Staging and local sites can paste a code instead.
  • New: approved translations go live on your site, each language at its own address (for example /es/about-us/), within about a minute of activation.
  • New: if a page changed after it was translated, the unchanged parts stay translated. A page that changed too much is shown in its original language.
  • New: the language switcher loads with the page and has refreshed flags.
  • New: your site no longer sends page content to LangRelay.
  • Changed: connecting is the whole setup, and you choose your languages in the LangRelay Dashboard. Your switcher, excluded paths and developer settings carry over.
  • Removed: translated llms.txt files, email translation, the browser-language redirect, the dropdown switcher, the “Excluded selectors” setting and the cache-purge webhook.

1.9.25

  • Improvement: clearer plugin listing so people searching for a translation plugin can find LangRelay more easily. No changes to how the plugin works.

1.9.24

  • Fix: the LangRelay connection could drop on busy sites. When several visitors loaded pages at the same moment, the plugin could renew its access more than once at once and lose the connection, which forced a manual reconnect. Renewals are now coordinated so the connection stays active.

1.9.23

  • Fix: the built-in Logs tab now shows log entries. Requests to the logs endpoint were missing the required authentication header, so the tab always showed “No log entries found.”

1.9.22

  • Fix: the plugin connection could silently drop on sites that had connected before refresh tokens were available. The plugin now detects this correctly and shows the reconnect prompt.

1.9.21

  • Fix: clicking “Sync” after the LangRelay connection expired would show a generic error with no way to recover. It now shows a clear message with a reconnect link.

1.9.20

  • Fix: newly published pages are now correctly translated on first visit.

1.9.19

  • Fix: newly published pages are now correctly translated on first visit.

1.9.18

  • Improvement: pages that have not been translated yet are automatically prepared for translation in the background when first visited. Future visitors see a fully translated page without any delay.

1.9.17

  • Fix: WordPress admin links no longer show a language prefix in the URL.
  • Fix: dynamic content (modals, AJAX panels) no longer re-translates text that is already in the target language.
  • Fix: very short sentence fragments are no longer sent for translation, reducing unnecessary API calls.

1.9.16

  • Fix: links in the WooCommerce mini-cart drawer (View cart, Checkout) now point to the correct language URL. These links are loaded via AJAX, so the plugin’s server-side link rewriting couldn’t reach them — they’re now rewritten in the browser automatically.

1.9.15

  • Fix: WooCommerce checkout fields (Billing address, Contact information, First name, etc.) now translate on page load. The translation engine now scans content that was already rendered by React before it started — previously these labels were invisible to LangRelay because they appeared before the observer attached.

1.9.14

  • Fix: dynamic translations on language-prefixed URLs (e.g. /de/checkout) now correctly associate with the source-language page, so coverage tracking in the dashboard is accurate.
  • Improvement: screen-reader-only text (invisible to sighted visitors) is no longer sent for translation, reducing unnecessary API calls on WooCommerce checkout pages.
  • Improvement: price strings like “CHF 25,00” and “€25.00” are no longer sent for translation.

1.9.13

  • Improvement: dynamically translated content (modals, React blocks, WooCommerce checkout) now counts toward the correct page’s translation coverage in the dashboard.
  • Performance: dynamic translations appear faster — the browser no longer waits for background processing to complete before showing translated text.

1.9.12

  • Fix: WooCommerce Blocks checkout section headings and field labels (Contact information, Billing address, First name, etc.) now render in the target language. React was re-rendering these from wp.i18n.__() after PHP translation — an inline script now pre-loads translations into the wp.i18n registry before the deferred WC Blocks scripts execute.
  • Fix: auto-redirect now skips when the X-LangRelay-Crawler request header is present, so the LangRelay crawler always receives the source-language page instead of being redirected to a language-prefixed URL. Also adds langrelay to the bot user-agent bypass list as a fallback.

1.9.11

  • Fix: auto-redirect no longer fires on /wp-admin, /wp-login.php, or /wp-json paths. With force-fallback enabled, logged-out users were being redirected from /wp-admin to /<lang>/404/.

1.9.10

  • Fix: visitor routing settings (auto_redirect, auto_redirect_fallback, auto_redirect_force_fallback) synced from the LangRelay dashboard now persist correctly. They were being stripped by the settings sanitizer, so auto-redirect never engaged on synced sites even when enabled in the dashboard.
  • Add X-LangRelay-Handle and X-LangRelay-AutoRedirect response headers, the auto-redirect state in /wp-json/langrelay/v1/debug/status, and a log entry on every “Sync project” attempt — so support can diagnose redirect issues without touching the server.

1.9.6

  • Add “Always redirect to fallback” toggle – overrides browser language matching, sends every non-bot visitor to the chosen fallback language. Useful when the WordPress site language is set to one language but the customer wants traffic served from a different language URL prefix by default.
  • Sync auto_redirect, auto_redirect_fallback, and auto_redirect_force_fallback from the LangRelay API so dashboard changes propagate to the plugin.
  • Refactor LangRelay_Auto_Redirect::maybe_redirect to use a pure resolve() method for testability.

1.9.5

  • Fix: language switcher chevron now sits inline next to the flag/language name. The 1.9.4 button reset (display: contents) inadvertently broke the default row layout of the customizable select; explicitly making the select an inline-flex row restores it.

1.9.4

  • Fix: language switcher’s inner trigger button now correctly resets against page-builder themes. With appearance: base-select, the browser renders a <button> inside the <select> that themes like Elementor were re-styling (red background, uppercase text). The 1.9.3 fix scoped the <select> styles but missed this inner button. Now explicitly resets it with all: unset; display: contents at higher specificity.

1.9.3

  • Fix: language switcher styles now beat aggressive page-builder themes (Elementor, Divi, etc.) by scoping selectors under .langrelay-switcher for higher specificity. Also explicitly resets text-transform, letter-spacing, font-weight, and text-align so themes that style bare button elements no longer leak through.

1.9.2

  • Security: escape hreflang and canonical output with wp_kses().
  • Security: use wp_add_inline_script() for translation preloading instead of raw script injection.
  • Security: eliminate unescaped full-page echo by using ob_start() callback.
  • Improvement: rename all transient prefixes from lr_ to langrelay_ for consistency.
  • Fix: stale mock prefix in cache purge test after transient rename.

1.9.1

  • Security: use wp_safe_redirect() for auto language redirects.
  • Security: remove token preview from debug REST endpoint.
  • Security: remove unused debug token authentication methods.
  • Improvement: bundle country flag SVGs locally instead of loading from external CDN.

1.9.0

  • WordPress.org plugin review compliance: removed “WordPress” trademark from display name, fixed Plugin URI, properly sanitize all settings fields in register_setting callback, and explicitly close output buffer via shutdown hook.
  • New: setup wizard now lets you select an existing organization and project instead of requiring a new one.
  • Removed debug panel from setup wizard.

1.8.1

  • Fix: languages added in the LangRelay dashboard now auto-sync to WordPress via a project.updated webhook event.
  • New: manual “Sync” button in the Project Status card to pull the latest project settings (languages, source language) from the dashboard on demand.
  • Improvement: existing installs automatically reconcile their webhook subscription on the next admin page load to include the new project.updated event.

1.8.0

  • Dynamic content translation: modals, AJAX panels, and client-rendered content (React, Vue, Svelte) now translate without flickering or invisible text.
  • Performance: client-side translations are cached in localStorage with automatic version-based invalidation when you edit translations in the dashboard.
  • Performance: first batch of dynamic text translates immediately (no 300ms debounce delay on initial render).
  • New: server-side translation map is pre-loaded into the client SDK, so shared strings translate instantly from cache.
  • New: debug logging via ?langrelay_debug=1 query param or data-debug="true" on the script tag for troubleshooting.

1.7.1

  • Fix: script blocks containing HTML string literals (e.g. WooCommerce gallery scripts building <a> and <img> tags in JavaScript) are no longer corrupted by the URL rewriter. DOMDocument now skips script and style blocks during URL rewriting.
  • Fix: translation matching is now case-insensitive. Menu items and other text styled with CSS text-transform (e.g. “wallcoverings” in HTML displayed as “Wallcoverings” via CSS) now match translations regardless of casing.

1.7.0

  • Email translation: outgoing WordPress emails (wp_mail) can now be translated to the recipient’s language. Enable under Settings > LangRelay.
  • WooCommerce email integration: order confirmations and other WooCommerce emails are automatically translated when email translation is enabled.
  • Batch translation API: new translate_batch() method for translating plain text strings without HTML overhead.
  • URL slug routing fix: translated URL slugs are now reverse-translated before WordPress routing, fixing 404s on translated permalink slugs.
  • Bundled client JavaScript locally instead of loading from an external server.
  • Various wp.org Plugin Check compliance fixes.

1.6.0

  • Language switcher block, Elementor widget, and shortcode now support display override attributes (show flags, show names, use native names)
  • Added [langrelay_switcher] shortcode for placing the switcher in classic themes and page builders
  • Cleaned up admin settings: removed unused switcher fields, added dashboard link and status indicator
  • Auto-inject toggle now properly controls whether the switcher script loads
  • Org slug persisted during OAuth for dashboard deep links

1.5.1

  • Added Settings link to plugin action row on the Plugins page.
  • Redirect to settings page on first activation for easier onboarding.

1.4.7

  • Updated admin UI to match LangRelay brand design.
  • Added SVG logo to plugin settings header.
  • Lowered PHP requirement to 8.0 with polyfills.
  • Added 15 new translation locales (27 total).
  • Language pills with flags on settings overview.

1.0.0

  • Initial release.
  • AI-powered page translation via LangRelay API.
  • Language switcher (dropdown, list, flags) as Gutenberg block, Elementor widget, shortcode, or auto-injected.
  • SEO support with hreflang tags and translated meta.
  • WooCommerce, Yoast SEO, Rank Math, WP Rocket, and Cache Enabler compatibility.
  • WordPress transient caching for translated pages.