Description
LiveLang is the fastest, easiest visual translation plugin for WordPress. Translate or modify any frontend text, heading, button, or image directly on your live pages in real time.
Translate Mode Click any element Edit Save.
No .po/.mo files. No complex string searches. No duplicate pages.
⚡ Visual Frontend Inline Translator
- Click-to-edit interface directly on live pages
- Floating, draggable Control Dock with one-click toggle
- Preserves nested HTML (
<strong>,<em>,<a>,<span>,<br>) - Custom text alignment (Left, Center, Right) per translation
- Instant AJAX/REST API saving with smooth toast notifications
🖼️ Media & Image Translator
- Display different images, banners, and logos per language
- Direct WordPress Media Library integration + custom URL support
- Translate image
altattributes for localized image SEO - Automatic
srcset/sizeshandling for responsive images
🌐 Multi-Language System & SEO Optimized
- Clean URL structure with language slugs (e.g.
/es/about/,/bn/contact/) - Default language clean URLs (no slug on primary language)
- Dynamic internal link prefixing across menus, footers, and links
- Automatic SEO tags:
<html lang>,hreflang,x-default, andog:locale - Translation of meta descriptions, Open Graph, and Twitter cards
- Optional browser language auto-detection
- Full RTL support (Arabic, Hebrew, Persian, Urdu)
🔘 Flexible Language Switchers
- WordPress Menu integration via dedicated Menu Metabox
- Customizable floating language switcher with custom positions & colors
- Flexible shortcode
[livelang_language_switcher]with layout options - Country flags included for all languages
🎯 Page-Specific vs. Global Translation Modes
- Page-Specific: Translate content unique to a single page
- Global Mode: Translate shared elements (header, footer) once site-wide
- Longest-first matching algorithm prevents substring collision
🚀 High-Performance JSON Caching
- Versioned JSON caching reduces DB queries to near-zero
- High-speed client-side DOM translation using compiled regex + Map lookups
- Scoped MutationObserver with
requestAnimationFramebatching - Persistent object cache compatible (
wp_cache_flush_group)
🛍️ Page Builder & WooCommerce Ready
- Fully compatible with Elementor, Gutenberg, Divi, and all themes
- Translates WooCommerce shop products, cart, and AJAX mini-cart fragments
- Form input &
<textarea>placeholder translation - Batch dropdown
<select>and<option>translator
🛠️ Centralized Admin Management
- Translations Manager with search, language filters, and status toggles
- Bulk actions: Activate, Deactivate, and Delete
- Safe Maintenance Zone with scoped data clearing & CSV export
- Role-based access control (Admin, Editor, or custom roles)
Key Features
- Frontend visual click-to-edit translation
- Multi-language management within a single page
- Media Translator for language-specific images and alt tags
- Form placeholder and dropdown option translation
- Page-specific & global translation scopes
- SEO-friendly URLs with automatic hreflang, lang, and og:locale tags
- Global internal link prefixing across all site menus and links
- RTL language support with automatic direction handling
- Built-in WordPress Menu metabox integration
- Customizable floating and shortcode language switchers
- High-performance JSON caching system
- WooCommerce and Elementor editor compatible
- Database-stored translations (100% update-proof)
- Translations list table with search, filters, bulk actions & CSV export
- Supports up to 3 active languages
Shortcode & Usage
Embed the language switcher anywhere using shortcode:
[livelang_language_switcher]
Available Attributes:
* style: "dropdown" or "inline" (Default: dropdown)
* appearance: "button" or "link" (Default: button)
* display: "both", "flag", or "text" (Default: both)
Examples:
* [livelang_language_switcher style="inline" display="both"]
* [livelang_language_switcher style="dropdown" appearance="button"]
* PHP: <?php echo do_shortcode('[livelang_language_switcher]'); ?>
Screenshots





Installation
- Upload plugin files to
/wp-content/plugins/livelangor install via WordPress Plugins screen. - Activate the plugin.
- Navigate to LiveLang Settings to configure languages and switcher styles.
- Add the language switcher via Appearance Menus, floating switcher, or shortcode.
- Visit your frontend, click Translate, and edit text or images in real time!
FAQ
-
How do I start translating?
-
Enable Translate Mode from the frontend toolbar or floating dock, click any text or image, edit, and click Save.
-
How many languages are supported?
-
You can configure and manage up to 3 active languages simultaneously.
-
Do I need separate duplicate pages for each language?
-
No. LiveLang translates content on the same page structure dynamically.
-
Is LiveLang SEO-friendly?
-
Yes. It provides clean URLs (e.g.
/es/page), automatichreflang,og:locale, and translates meta tags. -
Does it work with WooCommerce and Elementor?
-
Yes. It works with Elementor, Gutenberg, Divi, WooCommerce products, cart, and AJAX mini-cart fragments.
-
Will my translations be lost during updates?
-
No. All translations are stored securely in your database and remain completely intact.
-
Does LiveLang impact site speed?
-
No. Built-in versioned JSON caching and O(1) lookup engines deliver instant page loads with minimal database queries.
Reviews
Contributors & Developers
“LiveLang – Smart Multilingual Visual Translator” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “LiveLang – Smart Multilingual Visual Translator” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.1.9
- Added global internal link prefixing across nav menus, footers, and builder links.
- Added textarea placeholder translation in Visual Editor and parser.
- Fixed compound phrase collisions with longest-first matching precedence.
- Upgraded Visual Editor with original string reconstruction and entity decoding.
- Enhanced popup tooltip positioning and multi-frame rendering.
2.1.8
- Added Switcher Style setting (Dropdown and Inline horizontal list) under Switcher Options.
- Added Shortcode Style setting with Flag with Text, Only Flag, and Only Text options.
- Added Shortcode Design options with Button Style (pill buttons with background) and Link Style (clean text/flag links).
- Added full shortcode attribute support:
[livelang_language_switcher style="dropdown|inline" appearance="button|link" display="both|flag|text"]. - Fixed footer layout blank space and overflow when language switcher shortcode is placed in footers, with automatic dropup orientation.
- Enhanced admin live preview to dynamically reflect all switcher styles, layouts, and colors in real time.
2.1.7
- Added Freemius Customer Portal integration: direct “Manage License” button in the admin interface directing users to manage subscriptions, renewals, and billing securely.
- Enforced universal license key privacy masking (
sk_********************) across all dashboard states, protecting secret key strings from screenshots and screen recordings. - Added real-time date expiration validation (
is_date_expired): automatically disables Pro features and reverts to 3-language limit immediately upon license expiration. - Added real-time license status sync (
Sync / Refresh Statusbutton) to pull instant subscription and expiration updates from Freemius / Cloudflare Worker. - Added interactive hover tooltips & clear visual badges for disabled languages when running on the Free tier.
- Full WordPress 7.0 compatibility, WordPress i18n standards, and WordPress Coding Standards (WPCS) / Plugin Check compliance updates across all codebase files.
2.1.6
- Completely removed Freemius SDK and external licensing dependencies, unlocking native support for unlimited language management directly from the administrative dashboard.
- Resolved nav menu double-arrow conflicts across themes (such as Astra) by automatically stripping duplicate arrow icons and isolating sub-menu items.
- Enhanced RTL support with LTR/RTL-aware margin rules and flex gap alignment, guaranteeing a clean, consistent gap between flags, labels, and dropdown arrows in both right-to-left and left-to-right layouts.
- Fixed WordPress Customizer (
Appearance > Customize) nav menu fatal error (WP_Customize_Nav_Menu_Item_Settingmissing property exception) by fully populating standard menu attributes and enabling real-time language dropdown rendering in the Customizer live preview window. - Codebase optimization and cleanup of legacy third-party tracking scripts.
2.1.5
- Added Dropdown
<select>&<option>Multi-Translator: hovering or clicking any<select>dropdown (such as WooCommerce shop sorting or custom selects) in the visual editor opens a dedicated Dropdown Translator popover. Edit all dropdown option choices at once in a single batch. - Fixed Media Translation reload persistence: resolved an issue where image URLs containing digits/upload dates were mistakenly corrupted by number-normalization patterns (
::NUM::). Image and upload URLs are now strictly excluded from number normalization and preserved as exact literal entries. - Added automatic URL variation expansion for media entries: generates protocol (
http/https), root-relative (/wp-content/...), relative, and unscaled base image variations so images match regardless of how themes or builders output them. - Enhanced
srcset&sizesattribute stripping: automatically removes responsivesrcsetandsizesattributes from translated<img>and<source>tags on both server and client side, preventing the browser from reloading original thumbnails. - Full WordPress 7.0 compatibility and WordPress Coding Standards (WPCS) compliance updates across all plugin files.
2.1.4
- Added a fixed floating “Translation Active” indicator at the bottom right of the screen for better visibility when translation mode is enabled.
- Added a polished UI for the floating indicator, featuring a pulsating dot, sleek dark gradient background, and a rotate-on-hover close icon to easily deactivate translation mode.
- Enhanced compatibility by perfectly isolating the new floating indicator UI from active theme styles, ensuring consistent rendering across all WordPress themes.
- Added support for translating entire text blocks containing mixed inline HTML tags (e.g.
<strong>,<em>,<a>,<span>) — previously, paragraphs with nested tags were silently skipped. - Added support for translating multi-line text blocks containing
<br>tags — any variation (<br>,<br/>,<br />) is now normalised before matching on both the server and client side. - Fixed a PHP white screen caused by unescaped forward slashes in the
<br>regex pattern — the delimiter is now~and all replacements are guarded againstnullreturn values frompreg_replace. - Added drag-and-move support to the floating “Translation Active” indicator — it can now be freely repositioned anywhere on the screen during a session. Position resets to the default bottom-right corner on page reload.
2.1.3
- Fixed a critical “Array to string conversion” PHP warning appearing on the frontend (particularly visible on WooCommerce cart and checkout pages) when any text translation was saved. The root cause was the
gettext,ngettext, andgettext_with_contextfilter hooks returning raw arrays from the translation map instead of the expected translated string — a regression introduced when the map format was upgraded to carry alignment metadata alongside translated text. All three hooks now correctly extract the string before returning it. - Fixed the same array-to-string warning being thrown by the REST API sanitize callbacks for the translation save endpoint (
/livelang-api/v1/save). WordPress runssanitize_callbackbefore type validation, so if any parameter arrived as an array the coresanitize_text_field/wp_kses_postfunctions would trigger the warning before the plugin’s own type guards could run. All five parameter callbacks are now wrapped in closures that coerce unexpected arrays to empty strings before sanitizing. - Added custom alignment for translations. You can now set the alignment of the translated text to left, right, or center.
2.1.2
- Fixed a bug causing translated text to appear doubled on the frontend (e.g. an original of “Shop” translated to “Shop Page” would render as “Shop Page Page”). This happened because the client-side dynamic translation engine could run a second time over text the server had already translated, and — since the translated text often contains the original text as a substring — the matcher would match that substring and append the translation again.
- Fixed the same doubling from also occurring specifically right after saving an edit in the frontend editor: saving a translation bumped the client-side dictionary version (invalidating every “already translated” marker on the page) and then wrote the correct text into the DOM, which the MutationObserver picked up as new/untranslated content and re-translated. The editor now marks its own writes as already translated so they’re never re-processed.
- Fixed the same doubling potentially affecting WooCommerce AJAX fragments (mini-cart, order review), which are already translated server-side before being injected into the page.
- Added proper per-element de-duplication for attribute translations (
placeholder,title,alt,aria-label,data-title,value) on the client side, matching the de-duplication text nodes already had, so an unrelated DOM mutation elsewhere on the page can no longer cause an attribute to be translated on top of itself repeatedly. - Fixed a remaining case of the “Shop” “Shop Page Page” doubling bug: saving a translation via the frontend editor could still show the text doubled immediately after saving (though the correctly stored value would appear after a page reload). The editor was marking its own DOM write as “already translated” while the element still had
contenteditable="true"on it, and that marker was being silently skipped (the client-side translator deliberately never touches elements currently being edited). The contenteditable attribute is now removed before the write is marked as translated, so the marker actually takes effect and the MutationObserver no longer re-translates it.
2.1.1
- Performance: rewrote the dynamic (client-side) translation engine — a single compiled regex + Map lookup replaces per-pair split/join loops, cutting translation-pass cost from O(pairs × text nodes) to a single O(text length) pass per node
- Performance: MutationObserver now scopes translation passes to actually-changed elements instead of re-walking the entire page on every update
- Performance: translation passes batch via requestAnimationFrame so rapid DOM updates (WooCommerce Blocks cart/checkout re-renders, quantity steppers) trigger one pass per frame instead of one per mutation
- Performance: text nodes already translated under the current dictionary are skipped on subsequent passes instead of being re-scanned
- WooCommerce: legacy AJAX cart/checkout fragments (mini-cart, order review) are now translated server-side, matching the same engine used for full page loads
- Fixed: translation precedence between global and page-specific entries was previously undefined when both existed for the same text; page-specific translations now reliably override globals
- Extended translatable attribute coverage to
value(legacy submit/button inputs),aria-label, anddata-title, both server- and client-side - Fixed a serious bug: the “Flush Cache” button in System Maintenance shared its element ID with the destructive “Clear All Translations” action, meaning clicking what looked like a safe cache flush actually permanently deleted all translation data. These are now completely separate, correctly labeled, independently wired actions.
- Added a proper Danger Zone on the Translations screen: deleting data now requires explicitly choosing a scope (inactive only / page-specific only / global only / one language / everything) and typing DELETE to confirm — nothing can be triggered by a single accidental click anymore.
- Added a one-click “Export All as CSV First” backup option directly next to the Danger Zone.
- “Flush Cache” is now a real, safe, non-destructive action — it only invalidates cached translation lookups and never touches stored translation data.
- Deleting translation data can now be scoped (by status, by global/page-specific, or by language) instead of always being all-or-nothing.
2.1.0
- SEO: Added automatic hreflang alternate tags (+ x-default) for every configured language, generated straight from your live language list
- SEO: Added og:locale meta tag matched to the visitor’s active language
- SEO: Fixed meta description, Open Graph, and Twitter Card “content” attributes not being translated — they now translate along with the rest of the page
- Admin UI: Added a stats overview (total strings, active strings, languages configured) to the Translations screen
- Admin UI: Added search, per-language filter, and status filter to the Translations table
- Admin UI: Added bulk actions (activate, deactivate, delete) with select-all support to the Translations table
- Frontend UX: Replaced jarring native alert() error popups with smooth, non-blocking toast notifications
- Fixed a markup bug where the pagination wrapper on the Translations screen was missing its closing tag
- Internal: translations list queries now share a single filter builder for consistent, safely-prepared SQL
2.0.4
- Fixed Elementor editor compatibility issues
- Added Media Translator for language-based images
- Improved multilingual image handling
- Enhanced compatibility with page builders
- Improved translation performance and caching
- Fixed minor bugs and improvements
2.0.3
- Made compatible with WooCommerce
- Added syncronization with WP Core Translations for mo file loading and translate automatically
- Added syncronization with WP Theme and Plugins translations files.
2.0.2
- Modernized Administrative Dashboard with premium full-width fluid layout
- Redesigned “Language Manager” with high-fidelity live preview and upward-opening dropdowns
- Implemented new “WOW” Pro Upgrade Modal with classic UI/UX patterns and smooth animations
- Hardened security across all administrative outputs using wp_kses and strict escaping
- Fixed critical early-initialization fatal error affecting plugins like WPForms
- Optimized admin menu icon size (16px) and alignment for global consistency
- Standardized upgrade paths and removed legacy pricing sections
- Performed comprehensive code audit and removed unused build artifacts (.scss, .min.css)
2.0.1
- Added fully customizable Floating Language Switcher with real-time admin preview
- Added ability to enable/disable floating switcher from settings (Disabled by default)
- Implemented high-performance versioned caching for translations (O(1) search/replace)
- Hardened REST API security with strict language validation
- Refined frontend switcher logic with accessibility (Esc key) and click-outside detection
- Optimized translation mapping with versioning to avoid aggressive cache flushing
2.0.0
- Major UI/UX overhaul of the WordPress Admin Toolbar
- Added custom premium “Radio-style” switcher for enabling/disabling the editor
- Fixed language preservation issue when toggling the editor (stays on the current language)
- Improved toolbar responsiveness across desktop and mobile devices
- Refined dropdown styles for language switching
- Enhanced performance of the toolbar UI
1.0.3
- Remove language code from url for default language
- Fix language switcher URL generation for default language
- Improved compatibility with various themes and plugins
- Fixed minor bugs and improved overall performance
1.0.2
- Added full compatibility with Pro version (supports unlimited languages)
- Improved multi-language system stability and consistency
- Fixed number filtering issue in translations
- Added dynamic lang attribute (e.g., lang=”en-US”) to HTML tag for better SEO & accessibility
- Fixed inconsistencies between global and page-based translations
- Resolved REST API URL issues for subdirectory WordPress installations
- Improved translation handling logic
- Fixed multiple minor bugs and improved overall performance
1.0.1
- Added full multi-language support
- Added SEO-friendly language URL structure (domain.com/lang/slug)
- Added built-in language switcher
- Added language switcher shortcode
- Added shortcode support for menus and PHP theme files
- Added country flags for each language
- Added high-performance JSON translation cache system
- Improved frontend UX/UI performance
- Free version limited to 3 languages
- Fixed bugs from previous version
1.0.0
- Initial release
- Added visual inline translation editor
- Added page-based and global translation modes
- WooCommerce compatibility
- Database-based translation storage
