Title: LangRelay – AI Translation &amp; Multilingual
Author: langrelay
Published: <strong>April 29, 2026</strong>
Last modified: October 8, 2026

---

Search plugins

![](https://ps.w.org/langrelay/assets/banner-772x250.png?rev=3723561)

![](https://ps.w.org/langrelay/assets/icon-256x256.gif?rev=3723571)

# LangRelay – AI Translation & Multilingual

 By [langrelay](https://profiles.wordpress.org/langrelay/)

[Download](https://downloads.wordpress.org/plugin/langrelay.2.2.0.zip)

 * [Details](https://twd.wordpress.org/plugins/langrelay/#description)
 * [Reviews](https://twd.wordpress.org/plugins/langrelay/#reviews)
 *  [Installation](https://twd.wordpress.org/plugins/langrelay/#installation)
 * [Development](https://twd.wordpress.org/plugins/langrelay/#developers)

 [Support](https://wordpress.org/support/plugin/langrelay/)

## 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](https://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**.

 * [langrelay.com](https://langrelay.com)
 * [Terms of Service](https://langrelay.com/terms)
 * [Privacy Policy](https://langrelay.com/privacy)

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

## Screenshots

[⌊The LangRelay Dashboard shows how far each language is translated and which pages
are out of date.⌉⌊The LangRelay Dashboard shows how far each language is translated
and which pages are out of date.⌉[

The LangRelay Dashboard shows how far each language is translated and which pages
are out of date.

[⌊When a page's content changes, the edit is caught and queued for translation.⌉⌊
When a page's content changes, the edit is caught and queued for translation.⌉[

When a page’s content changes, the edit is caught and queued for translation.

[⌊Review each translation before it goes live, with your glossary applied.⌉⌊Review
each translation before it goes live, with your glossary applied.⌉[

Review each translation before it goes live, with your glossary applied.

## 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](https://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

![](https://secure.gravatar.com/avatar/5b8298d6ccc394dcf645d5f21a43bf2fc985747898ddc3c7a787cbb7c19f38d6?
s=60&d=retro&r=g)

### 󠀁[Really helpful for reaching our international community](https://wordpress.org/support/topic/really-helpful-for-reaching-our-international-community/)󠁿

 [gym053](https://profiles.wordpress.org/gym053/) 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 ](https://wordpress.org/support/plugin/langrelay/reviews/)

## Contributors & Developers

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

Contributors

 *   [ langrelay ](https://profiles.wordpress.org/langrelay/)

“LangRelay – AI Translation & Multilingual” has been translated into 1 locale. Thank
you to [the translators](https://translate.wordpress.org/projects/wp-plugins/langrelay/contributors)
for their contributions.

[Translate “LangRelay – AI Translation & Multilingual” into your language.](https://translate.wordpress.org/projects/wp-plugins/langrelay)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/langrelay/), check 
out the [SVN repository](https://plugins.svn.wordpress.org/langrelay/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/langrelay/) by [RSS](https://plugins.trac.wordpress.org/log/langrelay/?limit=100&mode=stop_on_copy&format=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.

## Meta

 *  Version **2.2.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **6.9.10**
 *  PHP version ** 8.0 or higher **
 *  Languages
 * [Czech](https://cs.wordpress.org/plugins/langrelay/) and [English (US)](https://wordpress.org/plugins/langrelay/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/langrelay)
 * Tags
 * [localization](https://twd.wordpress.org/plugins/tags/localization/)[multilingual](https://twd.wordpress.org/plugins/tags/multilingual/)
   [translate](https://twd.wordpress.org/plugins/tags/translate/)[translation](https://twd.wordpress.org/plugins/tags/translation/)
   [woocommerce](https://twd.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://twd.wordpress.org/plugins/langrelay/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/langrelay/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/langrelay/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/langrelay/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/langrelay/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/langrelay/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/langrelay/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/langrelay/reviews/)

## Contributors

 *   [ langrelay ](https://profiles.wordpress.org/langrelay/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/langrelay/)