Title: LATW Multilingual
Author: szymon0zawadzki
Published: <strong>July 16, 2026</strong>
Last modified: July 31, 2026

---

Search plugins

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

![](https://ps.w.org/latw-multilingual/assets/icon-256x256.png?rev=3610494)

# LATW Multilingual

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

[Download](https://downloads.wordpress.org/plugin/latw-multilingual.2.0.3.zip)

 * [Details](https://vec.wordpress.org/plugins/latw-multilingual/#description)
 * [Reviews](https://vec.wordpress.org/plugins/latw-multilingual/#reviews)
 *  [Installation](https://vec.wordpress.org/plugins/latw-multilingual/#installation)
 * [Development](https://vec.wordpress.org/plugins/latw-multilingual/#developers)

 [Support](https://wordpress.org/support/plugin/latw-multilingual/)

## Description

LATW Multilingual makes a WordPress site available in more than one language. It
provides a language switcher, clean language URLs (`/en/`, `/de/`), multilingual
SEO tags, and manual translation of your content, media and interface strings. You
can add as many languages as you need, and no API key or license key is required.

#### How it works

Most multilingual plugins duplicate every post for every language, LATW stores a
translation as an **overlay** rather than as a separate post: the original post 
is kept as it is, and the translated values are swapped in when a visitor opens 
the language URL. One post therefore stays one post in the database, whatever the
number of languages.

#### What you get

 * **No limits** – the multilingual engine and manual translation, with no language
   limit and no API key.
 * **One plugin** – switcher, routing, SEO, sitemap and translation are all included.
 * **SEO tags** – `hreflang`, `x-default`, self-canonical, `<html lang>` and sitemap
   annotations.
 * **Works with Gutenberg, page builders, WooCommerce, Yoast SEO and Rank Math.**
 * **Standalone** – it is **not** a WPML/Polylang add-on; install it on its own.

#### Features

 * **Language switcher** – Gutenberg block, widget, `[latwm]` shortcode, and `latwm_switcher()`
   PHP function.
 * **Switcher styles** – dropdown, inline or select; flags optional.
 * **Language in the URL** – native WordPress routing with clean prefixes (`/en/`,`/
   de/`); your default language keeps its clean URLs with no prefix.
 * **Unlimited languages** – add as many as you like (URL prefix + WordPress locale
   + label + flag).
 * **Full multilingual SEO** – `hreflang` + `x-default`, canonical URLs, `<html 
   lang>`, and multilingual sitemap annotations.
 * **Manual content translation** – translate posts and pages right inside the native
   Gutenberg editor. The original is never touched; the translation lives as an 
   overlay under the language prefix.
 * **Page-builder translation** – translate builder-made pages through a dedicated
   shadow editor.
 * **Theme & plugin translation** – a built-in editor for interface strings (`.po`/`.
   mo`), with “Sync from template” to pull in new strings after an update.
 * **Block interfaces translated too** – editing an interface string also updates
   the JavaScript translation files, so block-based screens such as the cart and
   checkout follow your edit instead of staying in the original language.
 * **Theme option strings** – text saved in theme and plugin options (button labels,
   badges, copyright lines) that no language pack can reach, because the value lives
   in your database rather than in the code.
 * **Block text in block settings** – labels of server-rendered blocks live in the
   block settings, not in the page markup, so translating the content never reaches
   them; they get their own list.
 * **Media translation** – title, alt text, caption and description per language.
 * **Localized internal links** – links inside your content point to the correct
   language on the front-end automatically.
 * **Translation inspector** – switch it on from the admin bar, click any text on
   the front-end, and the plugin tells you which layer it comes from and links straight
   to the screen that translates it.
 * **Language pack download** – fetch ready-made `.po`/`.mo` packs from WordPress.
   org for your themes and plugins, per bundle or for the whole site at once (useful
   for WooCommerce and Elementor, which ship no template file of their own).
 * **WooCommerce** – products, variations, product categories and tags, product 
   attribute labels together with their terms, and the block-based cart and checkout.
 * **Elementor** – pages, templates and Theme Builder layouts translate through 
   the shadow editor, with Elementor’s rendered-element cache.

#### Pro edition

The free edition covers the switcher, routing, SEO and **manual** translation. A
separate **Pro** edition adds automatic AI translation, which uses your own OpenAI
key (usage is billed to you by OpenAI):

 * Automatic AI translation of posts, pages and custom content.
 * Bulk translation of the whole site, processed in a background queue.
 * Auto-translate on publish/update.
 * AI translation of theme and plugin strings (`.po`).
 * Glossary and translation memory for consistent terminology.
 * Cost estimation before running a batch.

AI and manual translation can be mixed: AI produces a first pass, which you can 
then edit by hand.

Learn more and get Pro: https://llm-automatic-translation.top/latw-multilingual/

### Developer features

 * `latwm_current_lang()` – prefix of the current language (`''` = default).
 * `latwm_current_locale()` – WordPress locale of the current language.
 * `latwm_get_languages()` – array of languages (including the default).
 * `latwm_get_url( $lang, $url = null )` – path URL in the given language.
 * `latwm_switcher( $args )` – echo/return the switcher markup.

Filters: `latwm_languages`, `latwm_detected_lang`, `latwm_switcher_args`, `latwm_url`,`
latwm_flag_url`. Action: `latwm_language_switched`.

Translation layers: `latwm_translatable_meta`, `latwm_translatable_term_meta`, `
latwm_translatable_options` (option name => paths inside the stored value), `latwm_translatable_block_attrs`(
block name => attribute names).

### Requirements

 * WordPress 6.0+, PHP 8.0+.
 * Pretty permalinks (any structure other than “Plain”).
 * Single-site.

## Screenshots

[⌊Main translations page⌉⌊Main translations page⌉[

Main translations page

[⌊Translation history page⌉⌊Translation history page⌉[

Translation history page

[⌊Settings - add unlimited languages with prefix, locale, label and flag.⌉⌊Settings-
add unlimited languages with prefix, locale, label and flag.⌉[

Settings – add unlimited languages with prefix, locale, label and flag.

## Blocks

This plugin provides 1 block.

 *   LATW Language Switcher Theme interface language switcher (server-rendered).

## Installation

 1. Upload the plugin to `/wp-content/plugins/`, or install it from **Plugins  Add 
    New**.
 2. Activate the plugin through the **Plugins** screen.
 3. Go to **LATW Multilingual  Settings** and add your languages.
 4. Add the language switcher via the block, the widget, the `[latwm]` shortcode, or`
    latwm_switcher()` in your theme.
 5. Make sure **Settings  Permalinks** uses a pretty structure (anything other than“
    Plain”).

Start translating from the post editor and from **LATW Multilingual  Translations**.

## FAQ

### Is the free version usable on its own?

Yes. The free edition is fully functional: switcher, `/en/` URLs, the SEO tags and
manual translation of content, media and theme/plugin strings – with unlimited languages
and no API key.

### Does it duplicate my posts for each language?

No. Instead of creating a separate post per language, the original post is kept 
and the translation is stored as an overlay that is swapped in when the language
URL is requested.

### Will it slow my site down?

No. Because there is one post per URL and no heavy duplication, a site that scores
100 in Google PageSpeed before LATW still scores 100 after – in every language.

### Do I need an API key?

Not for the free version – manual translation requires no key. AI translation is
a Pro feature and uses **your own** OpenAI key, so usage is billed directly to you.

### Is this a WPML or Polylang add-on?

No. LATW Multilingual is a standalone plugin. It is not a replacement or add-on 
for WPML or Polylang – install it on its own.

### Does it work with page builders and SEO plugins?

Yes. It supports Gutenberg and page builders for content, and works alongside SEO
plugins such as Yoast SEO and Rank Math.

### My product is translated, but the text around it is still English

Text on a page comes from several places, and each is translated somewhere else:
interface strings compiled into the theme or plugin (Translations – Themes & Plugins),
category and tag names (the taxonomy tabs), menus and widgets (their own tabs), 
the content itself (the content tabs), and text stored in theme options (Translations–
Theme options). A string that stays English usually just belongs to a layer you 
have not enabled yet.

### Where does the list on the Theme options tab come from?

Many themes and plugins ship a `wpml-config.xml` file listing which options, custom
fields and block attributes hold front-end text. This plugin reads that file – the
option paths from its `admin-texts` section, the custom fields and term fields marked`
action="translate"`, and the block attributes declared as `<key>` under `gutenberg-
blocks`. Fields marked `copy` or `ignore` are skipped: in an overlay model an untranslated
field already falls back to the original value, so there is nothing to do for them.
Inside block declarations, `<xpath>` entries are not read – the text they address
is HTML inside the page content, which is already translated with the content itself.

Your own file at `wp-content/languages/wpml-config.xml` is read too and takes priority
over the theme’s and plugins’ files. Declarations by third parties are often incomplete,
so you can also add single option keys by hand in Settings – Translation.

### I edited a string but the cart or checkout still shows the old text

Block-based screens render in JavaScript and read their strings from separate translation
files rather than from the `.mo`. Saving a string in the editor now rebuilds those
files as well, so the change applies on the next page load. If a particular string
still does not follow, it usually belongs to a different layer – a page title is
content, and some plugins store their labels in their own settings (see the Theme
options tab).

### How do I find out where a piece of text is translated?

Turn on **Inspect translations** in the admin bar and open your site. Clicking any
text tells you which layer produced it – a theme or plugin string, a post, a term,
a menu item, a widget or a theme option – and links to the screen that translates
it. Text that is not translated yet is reported as such. The mode is administrator-
only and nothing is added to a normal page load.

### Does it work with WooCommerce?

Yes. Product titles, descriptions and excerpts, variations, product categories and
tags, attribute labels together with their terms, and the block-based cart and checkout
are all covered. Interface strings such as “Add to cart” come from WooCommerce’s
own language pack – use **Download packs** on the Themes & Plugins tab to fetch 
it, then edit any string you want to change.

### Does it work with Elementor?

Yes, including Elementor Pro’s Theme Builder. Builder pages are translated in the
shadow editor, and Elementor’s rendered-element cache is kept per language, so a
page rendered first in one language is never replayed in another.

### My theme or plugin has no “Sync from template” file

Some large plugins, WooCommerce and Elementor among them, ship no `.pot` and publish
their translations on WordPress.org instead. Use the **Download packs** button at
the top of the Themes & Plugins tab to fetch everything available for your languages
in one go, and the strings become editable like any other.

### What does Pro add?

Automatic AI translation: one-click bulk translation of the whole site, auto-translate
on publish/update, AI translation of theme/plugin strings, a glossary and translation
memory, a background queue and cost estimation.

## Reviews

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

### 󠀁[Highly recommended](https://wordpress.org/support/topic/highly-recommended-794/)󠁿

 [Pawel Matuszczak](https://profiles.wordpress.org/pawelmaa/) August 8, 2026

I waited a long time for a free multilingual plugin for WooCommerce. I had a few
errors on my site, but the author fixed them quickly. Now it works without any issues.

 [ Read all 1 review ](https://wordpress.org/support/plugin/latw-multilingual/reviews/)

## Contributors & Developers

“LATW Multilingual” is open source software. The following people have contributed
to this plugin.

Contributors

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

[Translate “LATW Multilingual” into your language.](https://translate.wordpress.org/projects/wp-plugins/latw-multilingual)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/latw-multilingual/),
check out the [SVN repository](https://plugins.svn.wordpress.org/latw-multilingual/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/latw-multilingual/)
by [RSS](https://plugins.trac.wordpress.org/log/latw-multilingual/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.0.3

 * Improvement: UI/UX improvements.

#### 2.0.2

 * Fix: on sites running on a non-standard port (e.g. local dev environments like
   WordPress Studio, `localhost:8881`), switching languages with the widget dropped
   the port from the link, breaking it.

#### 2.0.1

 * Fix: a child page with a translated slug returned a 404 under its full path.

#### 2.0.0

 * New: translation inspector – switch it on from the admin bar, click any text 
   on the front-end and be told which layer it comes from, with a link to the screen
   that translates it.
 * New: theme and plugin option strings, taken from `wpml-config.xml` files shipped
   by themes and plugins, from your own file in `wp-content/languages/`, or added
   by hand.
 * New: translation of server-rendered block attributes, so labels that live in 
   block settings rather than in the page markup get their own list.
 * New: block interface translation – saving a string rebuilds the JavaScript translation
   files too, so block screens such as the cart and checkout follow the edit.
 * New: download language packs from WordPress.org, per bundle or for the whole 
   site at once – the only way to reach plugins that ship no `.pot` of their own,
   such as WooCommerce, Elementor and Elementor Pro.
 * New: menu and widget translation.
 * New: WooCommerce support – products, variations, product categories and tags,
   and product attribute labels (“Size”) alongside their terms (“Small”, “Large”).
 * New: Elementor support, including Elementor Pro’s Theme Builder.
 * Fix: Elementor’s rendered-element cache is scoped per language; whichever language
   rendered first was being replayed to all the others.
 * Fix: WooCommerce’s browser-side mini-cart cache is scoped per language, which
   had the same symptom.
 * Fix: simple products kept their source title in headings and archive loops; variations
   showed the source name in the cart.
 * Fix: attribute taxonomies are registered as non-public by default and so never
   reached the translatable list – they are now offered explicitly.
 * Fix: the inspector no longer marks values that code parses. Markers inside `_elementor_data`
   broke the layout on builder pages, and markers inside a slug produced 404s.
 * Fix: the shared edit buffer no longer takes the source page’s slug, which could
   make the published page 404 until the buffer moved on.
 * Fix: the language switcher no longer wraps, and a null `$wp_rewrite` during early
   boot no longer throws.

#### 1.0.0

 * First public release.

## Meta

 *  Version **2.0.3**
 *  Last updated **1 week ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.3**
 *  PHP version ** 8.0 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/latw-multilingual/)
 * Tags
 * [language switcher](https://vec.wordpress.org/plugins/tags/language-switcher/)
   [multilingual](https://vec.wordpress.org/plugins/tags/multilingual/)[seo](https://vec.wordpress.org/plugins/tags/seo/)
   [translation](https://vec.wordpress.org/plugins/tags/translation/)[woocommerce](https://vec.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://vec.wordpress.org/plugins/latw-multilingual/advanced/)

## Ratings

 5 out of 5 stars.

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

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

[See all reviews](https://wordpress.org/support/plugin/latw-multilingual/reviews/)

## Contributors

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

## Support

Issues resolved in last two months:

     1 out of 1

 [View support forum](https://wordpress.org/support/plugin/latw-multilingual/)