WordPress.org

Plugin Directory

TranslateRocket – Free Multilingual Translation, Unlimited Languages

TranslateRocket – Free Multilingual Translation, Unlimited Languages

Description

TranslateRocket makes your site multilingual, and everything it does is free. No word limits, no charge per language, and nothing switched off to push you towards an upgrade — it is not a trimmed-down version of a paid plugin.

Already using WPML, Polylang, TranslatePress or Weglot? Try TranslateRocket next to it — your site does not change. Activate it alongside your current translation plugin: visitors keep seeing exactly the same site, while you import your translations, complete them and preview any page in any language as an administrator. When you are convinced, deactivate the old plugin and put TranslateRocket online with one click. Nothing of the other plugin is deleted, and switching it back on takes you straight back to where you started.

You do not need an API key at all. Chrome and Edge on a computer carry a translator that runs on the device itself, and TranslateRocket can drive it: install the plugin, pick your languages, press one button and the site is translated. It costs nothing, needs no account, and the text never leaves your machine. It is the fastest way to a translated site. When you want fluent, idiomatic copy, the same pages can go through DeepL or an AI model with your own key (OpenAI, Anthropic, Gemini — you pay the provider directly), through ChatGPT or Gemini with a ready-made prompt at no cost, or through your own hands, line by line — and everything already translated is kept, so nothing is ever done twice.

Switching from another translation plugin? Your existing translations come with you. One click imports everything you have already paid for or typed by hand — from TranslatePress, Polylang, WPML, Weglot, qTranslate (X and XT), WPGlobus, WP Multilang, Bogo, Multilanguage by BestWebSoft, Falang, Sublanguage, Loco Translate and Autoglot, plus CSV and TMX for anything else. Most are read straight from the tables, the posts or the files, so the import still works after the other plugin has been deactivated or even deleted — which is the usual state of a site that is moving on. Pages built with Elementor or Bricks come across too, widget by widget — their words live in a meta field, not in the page content, and most importers never look there.

It detects translatable text as you browse — visible text, link titles, image alt, placeholders, ARIA labels, page titles, meta descriptions and the social preview tags a SEO plugin adds (Open Graph, X) — and serves each language under its own clean URL prefix (/it/, /de/), friendly to SEO and to page caches.

You translate however you like:

  • 🆓 In your browser, with no key — Chrome and Edge translate the whole page, or the whole site, on the device itself. Nothing to sign up for, nothing to pay, nothing sent anywhere. Available both on the live page and on the bulk screen.
  • 🖱️ On the live page — switch on the visual editor and click any text to translate it in a small, draggable popup, with Previous/Next, a progress bar and a “skip already-translated” mode.
  • 🆓 Free with Google Translate (no key) — every field has a link that opens Google Translate prefilled, so you translate for free on Google’s own site and paste the result back.
  • ✍️ By hand, in a clear per-page editor (also inside the post/page screen) with red highlighting for what’s still missing — plus a copy & paste box for bulk Google translation.
  • 💬 With ChatGPT or Gemini, no key — one button copies the whole page with a translation prompt written for your site; paste the answer back and every line goes to its place.
  • 🆓 With free AI, on your own free account — Cloudflare Workers AI (about 1,900 sentences a day with Llama 3.3 70B, or 11,000 with a plain translation model), Groq (gpt-oss-120b) or OpenRouter’s free models. A two-minute guide gets you the key, no card needed; a counter shows today’s free share, and when it runs out the next provider in your chain carries on.
  • 🤖 With AI — bring your own key for DeepL, OpenAI, Google Gemini, Anthropic (Claude) or Google Cloud Translate. Text is sent only to the provider you choose, only when you ask.

Highlights

  • 🔑 No API key required — and not just “by hand”. Chrome and Edge translate the whole site automatically, on your own computer, for free. Or do it by hand in the visual editor, or free with Google Translate, and edit any translation later. There is no signup, no account and no key to create — AI providers are optional and only used if you add one yourself.
  • 🌍 Unlimited languages (36 built in), 100% free. Donations welcome, never required.
  • ⚡ Built for huge sites: past ~20,000 strings the engine switches by itself to indexed per-page lookups — flat memory and the same render time at 500 or 500,000 strings (load-tested), where map-loading translation plugins hit the PHP memory limit.
  • 🖱️ On-page visual editor: click text to translate it in a draggable popup — no admin round-trips.
  • 🧩 Interface too: translates theme & plugin interface strings, not just page content.
  • 🔗 SEO-ready URLs: translated slugs (e.g. /it/chi-siamo/) and hreflang tags.
  • 🔍 One SEO panel with everything in it: open a page in the visual editor and the SEO panel lists, in order, the translated address, the page title, the meta description, the social preview (Open Graph and X), the keywords, then every image on the page and every translatable attribute — titles, placeholders, ARIA labels. Each line takes you straight to that element on the page and opens the right editor, so nothing search engines read is left in the source language by accident.
  • 🚦 Per-page visibility: if a page has no equivalent in a language, redirect it, show a custom message, or 404 — per page, per language.
  • 🎌 Flexible language switcher as a shortcode [translaterocket_switcher], a Gutenberg block, or a widget — inline, dropdown, or a scrollable bar with ‹ › arrows for many languages — with original SVG flags that render everywhere (including Windows). Show a switcher on desktop only, on mobile only, or both, to style a different menu for each.
  • 📥 One-click import from thirteen other plugins — TranslatePress, Polylang, WPML, Weglot, qTranslate (X and XT), WPGlobus, WP Multilang, Bogo, Multilanguage by BestWebSoft, Falang, Sublanguage, Loco Translate and Autoglot — plus a universal importer for any other plugin: it reads your pages as visitors see them, in every language, pairs each sentence with its translation only where the pages match, and lets you preview every page side by side before you switch the old plugin off — plus CSV and TMX for everything else. Read straight from the tables, the posts or the .po files, so it works even when the other plugin is gone. Pages built with Elementor or Bricks come across too, widget by widget.
  • 🖼️ A different image for each language — swap any picture for a translated one: switch on the visual editor, click the button on the image and pick another from your media library. For text baked into a picture, a screenshot of your own interface, or a photo that only makes sense in one country.
  • 🎯 Different content and menus per language — show a paragraph, a block or a menu item only in some languages: with a shortcode, a class on any block, or a checkbox in Appearance Menus.
  • 🛒 WooCommerce aware: product and category slugs per language, the AJAX mini-cart and JS strings translated too, and customer emails rendered in the language the order was placed in.
  • 👀 Preview mode: review new translations or a fresh import on the real pages while visitors still see the default language — publish with one click when ready.
  • 🚦 Add a language now, publish it when it is ready: each language has a switch — green and your visitors see it, grey and only you do. While it is offline it stays out of the switcher, out of your sitemap and out of the hreflang tags, and its URLs send visitors to your default language, while you keep working on the real pages. Nothing half-translated ever reaches your visitors or Google.
  • 📂 Built for scale: searchable, sortable page list for sites with hundreds of pages.
  • ✅ You stay in charge — every machine translation can be reviewed and edited by hand. Translations live in your own database.

Languages

Translate your site into the languages your visitors actually speak: Spanish, French, German, Italian, Portuguese and Brazilian Portuguese, Dutch, Polish, Russian, Ukrainian, Turkish, Romanian, Greek, Arabic, Hindi, Indonesian, Vietnamese, Thai, Chinese, Japanese, Korean — 36 languages ship built in, and you can add unlimited custom ones (any language code works). The plugin’s own admin interface is translated into nine languages besides English: Japanese, Spanish, German, French, Brazilian Portuguese, Italian, Dutch, Russian and Polish.

Works with

TranslateRocket translates the page your site actually sends to the browser, so it is not tied to a theme or a page builder. Every release is tested on a real site with the plugins below (tested means installed, configured and checked from the visitor’s side, not only read about):

  • Page builders: Elementor and Elementor Pro (theme builder headers and footers included), the block editor. While a builder is editing a page – Elementor, Beaver Builder, Divi, Bricks, Oxygen, Breakdance, Brizy, WPBakery, Thrive Architect, the Customizer – TranslateRocket stays out of its way.
  • Shops: WooCommerce – product pages, cart, checkout and the order e-mails, in the customer’s language.
  • Forms: Forminator, Contact Form 7, WPForms, Gravity Forms, SureForms, Formidable, Ninja Forms.
  • Cookie and consent banners: Complianz, CookieYes, GDPR Cookie Compliance, Cookie Notice – the banner text is collected, can be clicked in the visual editor and reaches visitors translated.
  • SEO: Yoast SEO, Rank Math – translated titles, descriptions and social tags.
  • Caching and optimisation: Cache Enabler, Autoptimize, WP Fastest Cache.
  • Side by side with, and importing from: WPML, Polylang, TranslatePress, Weglot, Bogo and others.

The full list, with what was checked and the date of the last test: https://translaterocket.com/compatibility/

Something missing, or not behaving? Tell me from https://translaterocket.com/support/ and I will test it.

Need a hand with your site?

I can do it for you. I am the developer of TranslateRocket, and I also build and translate WordPress sites for a living: a new multilingual site from scratch, an existing site taken from one language to ten, a migration away from a paid plugin, or a stubborn theme that will not translate. You get the person who wrote the engine, not a support queue.

The plugin stays free either way — nothing here is locked behind that. Write to me from the “Help & Feedback” screen inside the plugin, or from https://translaterocket.com/support/ .

External services

This plugin can connect to third-party services, but only with your involvement:

  • AI translation providers (optional). If you add an API key and ask to translate, the relevant text is sent to the provider you selected so it can return a translation. No text is sent until you configure a provider and trigger a translation. Providers and policies:
    • DeepL — service: https://www.deepl.com/en/pro , privacy: https://www.deepl.com/en/privacy
    • OpenAI — service: https://platform.openai.com , privacy: https://openai.com/policies/privacy-policy/
    • Google Cloud Translation / Gemini — service: https://cloud.google.com/translate , privacy: https://policies.google.com/privacy
    • Anthropic (Claude) — service: https://www.anthropic.com , privacy: https://www.anthropic.com/legal/privacy
    • Cloudflare Workers AI — service: https://developers.cloudflare.com/workers-ai/ , privacy: https://www.cloudflare.com/privacypolicy/
    • Groq — service: https://console.groq.com , privacy: https://groq.com/privacy-policy/
    • OpenRouter (and the provider of the model you pick there) — service: https://openrouter.ai , privacy: https://openrouter.ai/privacy
  • Google Translate (manual, always available). Every editor offers a per-phrase link and a copy-paste box that open Google Translate (translate.google.com) prefilled, so you translate on Google’s own site and paste the result back. This is just a convenience link — your browser, not the plugin, contacts Google. Service: https://translate.google.com , terms: https://policies.google.com/terms , privacy: https://policies.google.com/privacy
  • Optional one-click Google auto-fill (off by default). A site owner can opt in (the TRROCKET_AUTO_GOOGLE constant / the trrocket_auto_google filter) to let the server fetch a translation from Google’s free endpoint with one click. This uses an undocumented endpoint and is best-effort, so it is disabled out of the box and the plugin never calls it on its own. For dependable automatic translation use the official AI providers below.
  • translaterocket.com support ticket (optional, on request). The Diagnostics screen has a form that opens a support ticket for you. It sends nothing until you fill it in and press Send, and what it sends is exactly what the page shows you: your name, your email address (so the answer can reach you), your subject and message, your site address and the plugin version, plus the technical report if you leave that box ticked. The report never contains API keys. To prove the request really comes from your site and not from a spam robot, the support site then makes one request back to your site’s home URL with a one-time token. Nothing else is transmitted, nothing is stored on your site, and if you would rather not use it the same page still offers the copy-and-paste route. Service: https://translaterocket.com , privacy: https://translaterocket.com/privacy-policy/
  • translaterocket.com deactivation feedback (optional, only if you press Send). When you deactivate the plugin, a box asks why. The answer is saved on your own site. Only if you press «Send and deactivate» is it sent to https://translaterocket.com/wp-json/translaterocket/v1/farewell : the reason you picked, what you typed, and the numbers shown in the box (plugin, WordPress and PHP versions, number of languages and of detected sentences, the translation provider in use, whether the setup wizard was completed, days since install, your admin language). No site address, no name, no e-mail, no page or translation content; the IP address is not stored. «Skip and deactivate» sends nothing, and the trrocket_farewell_send filter turns sending off entirely. Service: https://translaterocket.com , privacy: https://translaterocket.com/privacy-policy/
  • translaterocket.com (optional). The “Help & Feedback”, “Request customization”, “Send feedback” and “Get tips & updates” links open translaterocket.com in your browser with your site’s domain in the URL. Nothing is sent automatically — these are links you choose to click. Service: https://translaterocket.com , privacy: https://translaterocket.com/privacy-policy/

Screenshots

Blocks

This plugin provides 1 block.

  • Language Switcher

Installation

  1. Upload the translate-rocket folder to /wp-content/plugins/, or install it from the Plugins screen.
  2. Activate the plugin through the Plugins menu in WordPress.
  3. Go to TranslateRocket Settings and pick your source language and the languages to translate into.
  4. Browse your site to detect content, then translate from TranslateRocket Translations (by hand, copy & paste, or AI).
  5. Add the language switcher anywhere with the [translaterocket_switcher] shortcode, the block, or the widget.

First steps, filmed from installation to the first translated page:

FAQ

Is it really free?

Yes. All translation features and unlimited languages are free, with no paid tier inside the plugin. You only ever pay your own AI provider, directly, if you choose to use AI.

How do you keep it free with no income from it?

I build websites for a living, and I use TranslateRocket on every multilingual site I make. Every fix reaches those sites the day I release it, so the plugin gets maintained because I need it maintained — publishing it for everyone costs me nothing on top of that. What comes back is worth more to me than a licence fee would be: bug reports from setups I could never reproduce on my own, which end up improving my own clients’ sites too. Donations are welcome and change nothing about what the plugin does.

And if you want that work done on your own site, you can hire me. Building and fixing WordPress sites is the day job: a site built from scratch, a design put right, a multilingual setup done properly, custom development, a migration off a plugin that charges you every month. That is where the money comes from — not from crippling this plugin. Ask me from the “Help & Feedback” screen inside the plugin, or at https://translaterocket.com/support/ .

Do I need an AI key?

No — and without one you are not limited to typing by hand. Chrome and Edge on a computer carry a translator that runs on the device itself, and one button puts it to work on your whole site. It costs nothing, needs no account and no signup, and the text never leaves your machine. Quality sits below DeepL and the AI models, so it is the quickest way to a translated site rather than the finest one — but everything it translates is kept, so adding a provider later never repeats the work.

It needs Chrome, or Edge 148 or later, on a computer that can run the built-in model: Windows 10 or 11, macOS 13 or later, Linux or ChromeOS (not Windows Server), 16 GB of RAM or a graphics card with more than 4 GB, and 22 GB of free disk space, with the admin on https. Anywhere else, the copy-and-paste route works in any browser and still needs no key.

Beyond that you can click any text on the live page and type its translation, edit it again later, and publish it. Every field also offers a free Google Translate link you can paste back from. AI keys are optional and only used at the moment you ask for one.

Two minutes, filmed on a real site: translating a page with no key at all.

Do my translations stay on my site?

Yes. Translations are stored in your own WordPress database. Text is only sent to the AI provider you configure, at the moment you ask for a translation.

Does it work with caching plugins?

Yes. Each language lives under its own URL (e.g. /it/), so page caches store each language separately and automatically.

Does it work with WooCommerce?

Yes. Product pages, categories and attributes are translated like any other content, and slugs are translated per language. It also covers the parts WooCommerce renders outside the page HTML, which a page-only engine misses: the AJAX mini-cart fragments, strings passed to JavaScript (such as the “View cart” link), and transactional emails — the order’s language is recorded at checkout (classic and block/Store API) and the customer email is rendered in that language. Wording that only ever appears inside an email (WooCommerce’s own “Thank you for your order”, “Quantity”, “Price”) is picked up automatically the first time such an email is sent and filed under “WooCommerce emails” in the translation screens, so you can translate it like anything else. Multi-currency is out of scope: TranslateRocket translates, it does not convert prices.

The whole shop translated, from the product page to the order e-mail:

Does it translate forms (Forminator, Contact Form 7, WPForms…)?

Yes. Labels, placeholders, options and buttons are translated with the rest of the page, whether the form is added with a shortcode, a block, a widget or a page builder such as Elementor. The messages the form plugin adds with JavaScript — validation errors, “message sent” — are translated too, on Forminator, Contact Form 7, WPForms, Gravity Forms, SureForms, Formidable and Ninja Forms. With Forminator, the thank-you message, forms loaded with “Load form using AJAX” and the e-mail notifications follow the language of the page the form was sent from; the wording of the form settings and e-mails appears under “Forms: messages and e-mails” in the translation screens once an administrator has viewed the form or a notification has been sent. To keep a notification (for example the copy for the site owner) in the source language, return false from the trrocket_forminator_translate_notification filter.

Is there a PHP function that returns the current language?

Yes, for theme and plugin code that needs it (the equivalent of Polylang’s pll_current_language()): trrocket_current_language() returns the code of the language of the current request, such as en, fr or pt-br — also in AJAX requests sent from a translated page — and trrocket_default_language() returns the site’s source language. Wrap calls in function_exists() so your code keeps working if the plugin is deactivated.

Which plugins can I import my translations from?

Yes — use TranslateRocket Import to bring over your existing translations. The WPML import covers both its string translations and its post-based translations (titles, slugs and matching body text), and reads directly from WPML’s tables, so it works even when WPML is already deactivated. Coming from Weglot (a hosted service)? Export your translations from the Weglot dashboard as a CSV and upload the file on the same Import screen — the columns are detected automatically and mapped to your target languages.

To review the result safely, turn on Preview mode (“Who sees the translations” in Settings): you browse the fully translated site while visitors keep seeing the default language, and one click publishes it when you are happy.

Safer still: run TranslateRocket next to your current plugin, import, and switch only when you are happy. Two minutes:

What if a page shouldn’t exist in another language?

Open the page and use the “Language visibility” box to redirect it, show a custom message, or return a 404 — per language.

Can I show something in one language only?

Yes. Wrap it in [translaterocket_language lang="it"]…[/translaterocket_language] — several languages work too, as lang="it,de" — or use not="it" to show it everywhere except Italian. In the block editor you do not need the shortcode: add the class trrocket-only-it or trrocket-hide-it in “Advanced Additional CSS class(es)” of any block, navigation links included. Content limited with lang= or trrocket-only- is taken to be written in that language, and is shown exactly as you wrote it.

Can a menu item appear only in some languages?

Yes. In Appearance Menus every item has a “Show in” row with one checkbox per language; nothing ticked means every language. Hiding an item hides its sub-items too. Block themes build menus with the Navigation block instead: there, give a link the class trrocket-only-it or trrocket-hide-it.

Can I translate with ChatGPT or Gemini without an API key?

Yes. Open a page in the visual editor, click “Translate page” and use “Copy with a translation prompt” — or the ChatGPT and Gemini links, which copy the same thing. The prompt carries your languages, the words you never translate, your glossary and your house style, and asks for the reply in a code block with the line numbers intact. Paste the reply in box 2 and apply it.

And when a machine translation gets a word wrong, fixing it takes ten seconds:

My browser isn’t Chrome or Edge, or I work from a phone. Can I still translate without a key?

The translator built into the browser exists only in Chrome and Edge on a computer. TranslateRocket Labs, a separate free add-on you can ask for at https://translaterocket.com/labs/, adds free translation engines that work from any browser, phones included — each one is switched on only after you read and accept its conditions. Labs is not needed: everything described on this page works without it.

Both, in one minute — a page translated in the browser with no key, then Labs translating a new page the moment it is published:

Reviews

September 23, 2026
Moved from a paid plugin to TranslateRocket last week. I was worried about losing my translated pages, but the built-in import worked perfectly. The setup is straightforward, no complicated API keys required. Plus, the developer support is fantastic—they replied to my support ticket thread within hours. Exactly what I needed.
September 20, 2026 1 reply
For me, this is the perfect plugin for translations. I highly recommend it. The support is just great. I sent an email and got a reply the same day. Thank you very much. Keep up the good work. Developers like this deserve our support.
September 15, 2026
Our web-site needs to reach customers from different countries, all of them are talking different languages. For years we were using paid plugins that created a lot of troubles to the web-site work reducing our downloading speed capacities, creating conflicts with other plugins installed in wordpress, messing up with urls. We decided to try TranslateRocket with AI translation and actually did the best decision we could do. We are very happy with it's work and hopefully in future it will continue working in the same mode. The plugin is easy to use and is absolutely free! We are truly grateful for this service, Great job!
September 14, 2026 1 reply
Il plugin è perfetto, il suo creatore meriterebbe più della donazione minima per l'impegno che ha impiegato per crearlo: è uno strumento estremamente semplice e affidabile
Read all 9 reviews

Contributors & Developers

“TranslateRocket – Free Multilingual Translation, Unlimited Languages” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.7.0

  • New: free AI translation with your own free account. Cloudflare Workers AI (10,000 «neurons» a day: about 1,900 sentences with Llama 3.3 70B, or 11,000 with the plain translation model, with a Quality setting — Best, Volume or Automatic), Groq (about 1,000 requests a day with gpt-oss-120b) and OpenRouter’s free models are providers like DeepL or OpenAI: in the fallback chain, in bulk translation, in the visual editor. Each has a two-minute guide to get the key, «Load available models» to check it, and today’s counter; a little before the free share runs out, the next provider of your chain carries on. Official APIs, no card needed.
  • New: the setup wizard offers free AI first. «Free AI, with your own free account»: a Groq key in 2 minutes with a Google account, a «Try the key» button, and the site translates from the first minute — in any browser, phones and Firefox included, where the browser translator does not exist.
  • New: the universal importer, on Import. Coming from a translation plugin with no importer here, or one whose tables cannot be read? Keep it on: TranslateRocket reads each page as visitors see it, in every language, finds its translations from the hreflang links, and pairs each sentence with its translation only where the two pages have the same structure — leaving out what changes on every visit and copies, keeping links and bold words. A scan first (nothing saved), then the import, then a side-by-side preview of every page per language while the old plugin still serves your site. Tested on the bench with TranslatePress, Bogo, qTranslate-XT, WPGlobus, WP Multilang, Multilanguage and Polylang, and on pages of 20 real multilingual sites (8 systems): language switchers, cached copies with other content and sentences in the wrong language are left out. It waits while TranslateRocket itself serves the languages, so it never reads its own pages back. Translators that work only in the visitor’s browser (GTranslate free, Weglot’s JavaScript) cannot be read from the server: the scan says so.
  • New: translation style from the kind of site, on AI Translation. A free AI reads your site’s name, tagline and main pages and proposes the tone, formal or informal address for each of your languages, and the names never to translate; nothing changes until you press «Use this style». The house style now reaches every AI provider.
  • New: a «Sponsor on GitHub» button next to the donation link.
  • Improved: German admin screens address you consistently; the Labs page lists what Labs adds for teams.
  • Fixed: translations whose source string no longer existed were counted but never shown or exported; they are removed on update.

1.5.9

  • New: the words only a visitor who is not logged in can see — login and registration forms (Ultimate Member, bbPress, WooCommerce «My account»), «You must be logged in to reply», the e-mail field of the review form, guest-checkout notes — are collected too. Text was collected while an administrator looked at a page, and an administrator is logged in: those words were never collected, and every visitor saw them in the source language. Now, after an administrator has read a page, the site reads it once more by itself as a guest, in the background, once a day per page.
  • New: content loaded after the page — «Load more» buttons, product filters, quick views, infinite scroll — comes back translated, with its links in the language. Themes and plugins fetch those pieces through admin-ajax; the page engine never saw them, so on /it/ everything loaded after the first screen was in the source language.
  • New: the REST API answers a translated page in its language: WooCommerce’s blocks (All Products, filters, the cart), client-side navigation and headless themes get product names, titles, excerpts and descriptions translated, permalinks in the language. Ids, slugs, prices and the editor’s own requests are untouched.
  • New: the sentences a theme or plugin hands to its scripts — «Product was successfully added to your cart», «View cart», «Loading…», Elementor’s «Close», «Next», «Share on Facebook» — are translated and collected like any other text. A paid theme without language packs (WoodMart, Flatsome, Avada) showed them in English on every language. This reads a JSON handed over as a string too (WooCommerce’s address labels «Town / City», «Postcode / ZIP», Kadence’s countdown labels), a theme’s own const or window.name = {…} block, and a block printed by hand in the page head.
  • New: feeds of a translated language (/it/feed/, Atom) carry translated titles, excerpts and bodies, with links in the language. Feed readers, newsletter tools and Google Discover read that file.
  • New: any data-* attribute whose name says it holds words (data-product-title, data-none-results-text, data-toast-cta, data-tooltip-message…) is translated, as are data-alt on sliders, Bootstrap’s data-bs-title tooltips, bare names like data-label or data-caption and numbered series like data-button-transition-text-1; analytics labels are left alone.
  • New: import from Autoglot. Its table of paid translations — page sentences and the owner’s own replacements, in every language it served — is read straight from the database, with Autoglot switched off; translated addresses and sentences it never finished are left out.
  • New: Ninja Forms fields — labels, placeholders, options, the submit button — are translated before the form is drawn. Fluent Forms is recognised (its messages too).
  • New: a visitor who signs up on /it/ keeps that language: WordPress’ password-reset and new-account e-mails, and WooCommerce’s account e-mails, go out in it.
  • Improved: SEO plugins. og:locale now names the page’s language whatever the site locale is (Yoast, Rank Math, All in One SEO, SEOPress); no second og:locale with All in One SEO; our multilingual sitemap is listed in All in One SEO’s and SEOPress’s sitemap index too.
  • Improved: a breadcrumb («Home / Rooms / Sea view»), a list of tags or a pagination is no longer taken for one sentence: each link is translated on its own, and the product’s name there is the same one as on its page. An icon-only link inside a sentence no longer turns the sentence into a unit.
  • Improved: the switcher’s live preview shows exactly what visitors will see: a language still offline is left out of it and named underneath, instead of being drawn as if it were online.
  • Improved: right-to-left languages keep their direction — and load the theme’s and WooCommerce’s -rtl.css — even when «Translate the interface» is off.
  • Improved: imports from Polylang and WPML bring the translations of categories, tags, product categories and attribute values, the purchase note, product attributes, variation descriptions and Advanced Custom Fields; the copy cleanup checks them before offering to trash a copy.
  • Improved: imports from Polylang and WPML read pages built with SiteOrigin’s Page Builder and Beaver Builder, whose text lives in a serialized field, not in the page content — as Elementor and Bricks already were.
  • Fix: a TMX or CSV brought back into the site keeps the pairs that read the same in both languages («Agrigento» stays «Agrigento»): they are decisions, and the round trip export import lost them. The «What to do next» guide no longer says «Everything is translated» while a new phrase is waiting, when a deleted string left a translation behind.
  • Fix: a picture chosen per language is also swapped where ShortPixel, EWWW and a3 Lazy Load park the real address (data-lazy-src).
  • Fix: WooCommerce e-mails sent from the dashboard («Completed», a note to the customer) are translated; variations («Linen shirt – Blue») and product names inside WooCommerce’s sentences too; searching on /it/ finds products by their translated name.

1.5.8

  • Fix: WooCommerce e-mails sent from the dashboard — «Completed», a note to the customer, a resent invoice — were never translated: the customer who ordered in Italian got them entirely in English. Each e-mail is now written in its reader’s language: the customer’s in the language of the order (subject included, from WooCommerce’s own language pack), the shop’s own notifications in the site language — before, the shop received them in the customer’s language.
  • Fix: variations and product names inside WooCommerce sentences stayed in the source language — «Linen shirt – Blue» in the cart, on the thank-you page and in the e-mails, «“Blue mug” has been added to your cart», «Be the first to review “Blue mug”», the breadcrumb’s last step and the quantity label read by screen readers. Now they are translated like the product itself; this works for any theme or plugin that quotes a name inside its own wording.
  • New: searching on a translated page finds what the visitor typed in their language — «tazza» on /it/ finds the product stored as «mug». It was the most reported problem in the forums of other translation plugins.
  • New: WP Rocket integration. WP Rocket now knows your languages, as it does with WPML, Polylang and TranslatePress: a page excluded with «Never cache this URL» (or its box on the edit screen) is also excluded in every language — the /it/ copy of a members’ page was cached before; the empty mini-cart it keeps is kept per language instead of one for everybody; cart, checkout and account are excluded in every language; «Clear cache» offers each language; «Remove Unused CSS» keeps the language switcher’s styles.
  • Fix: imports from Polylang and WPML now bring the translations of categories, tags, product categories and attribute values (Red Rosso in the variation choices), the purchase note, the attributes typed in a product, variation descriptions and Advanced Custom Fields filled in the translated copy. The copy cleanup no longer offers to trash a copy whose fields were not imported yet.
  • Fix: a big TMX or CSV import (2,000 translations) could stop halfway with a server error on hosts that limit a request to 40 seconds. It now runs in one database transaction: the same file takes a few seconds.
  • Fix: WooCommerce checkout: the address labels (Town / City, Postcode…) no longer show in English for a moment when the page opens or the country changes.
  • Fix: in the block cart, attribute labels («Colour:») are translated.
  • Fix: structured data for Google: a title composed as «Product – Site name» is translated.
  • Fix: with themes that restyle every button (Hello Elementor), the open language menu kept the current language white on white and narrower than the menu.

1.5.7

  • Changed: the «Labs ✨» page describes the free engines of TranslateRocket Labs as free translation engines, without naming third-party services.
  • Readme: a new question for people without Chrome or Edge, and an animated first screenshot.

1.5.6

  • New: when you deactivate the plugin, «Send and deactivate» sends your reason to the developer — anonymously, and only if you press it. Until now the answer stayed on your site, and nobody ever learned why people left. «Skip and deactivate» sends nothing; the box shows exactly what is sent (versions and a few counts, no site address, no name, no e-mail).
  • Improved: the request for a review now comes at a better moment and never gets in the way. It appears only on TranslateRocket’s own screens (never on Posts, WooCommerce or the Dashboard), after 3 days and 50 real translations — empty or waiting rows no longer count. «Maybe later» and the × put it off for three weeks, twice at most; «I already did», «No thanks» and «Write a review» close it for good. Before, the × closed it forever, so someone busy at that moment was never asked again. «Maybe later» on the donation note now puts it off for 60 days instead of closing it.
  • New: a «Labs ✨» page tells you what TranslateRocket Labs adds — a free add-on, on request, that translates with no API key from any browser, phones included, and does more of the work by itself. It shows on the plugin home and on AI Translation, and can be folded into one line. It opens only inside TranslateRocket, never as a notice elsewhere, and disappears once Labs is installed.
  • Improved: «Reuse saved translations» «All except free machine translations» now also leaves out what the free engines of TranslateRocket Labs translated, not only the browser translator. Whoever moves to an AI gets the AI quality on repeated sentences too (menus, footer, buttons); your own edits, imported and AI translations are still reused.
  • Fix: a page whose <html> or <body> carries translate="no" is translated again. That attribute tells Chrome, Edge and Safari not to offer their own translation — Weglot writes it, and so do owners who dislike the browser’s popup — but TranslateRocket read it as «skip the whole page» and left the site untranslated with no explanation. translate="no" on a part of the page is still respected.
  • Fix: 16 more tracking-only parameters no longer stop a translated page from being cached — first of all srsltid, which Google Shopping adds to every click on a product, so on a shop most paid traffic was translated again at every visit. Also ref, dclid, Pinterest’s epik, LinkedIn’s li_fat_id, Matomo’s pk_campaign and others, as the main cache plugins do. A page with a real parameter (a search, a filter) is still never cached.
  • Fix: product SKUs (.sku) are never translated, even when a translation for the same text exists: a customer quoting a translated code to support, while choosing a variant put the original back, saw two codes on one page.
  • Fix: while a language is not online yet, the redirect that sends visitors back to your main language is marked «do not cache», so no cache in front of the site keeps sending them away after you press «Go online».
  • Fix: importing again no longer overwrites the translations you corrected by hand. Importing a second time — because you translated more in the other plugin, or to be sure — brought back the old text over your corrections, and the count stayed the same so nothing showed it.
  • Fix: Polylang, WPML and Bogo imports take only published, private or scheduled translations. Drafts, pending ones and translations in the trash — often binned on purpose because they were wrong — were imported as good ones.
  • Fix: a Norwegian site (Bokmål, nb_NO) imported nothing from Bogo, Loco Translate and Multilanguage, without saying so. It now lands in Norwegian.
  • Fix: qTranslate-XT, WPGlobus and WP Multilang markers with a region — {:en_US}, {:pt_BR}, {:zh_CN} — are understood. With the source written {:en_US} the whole post was skipped.
  • Fix: a TMX file from Trados, memoQ or OmegaT, which write the source language as en-US or en-GB, imported zero translations. The source now matches like the target languages already did.
  • Improved: NitroPack and Cloudflare (the official Cloudflare plugin, with its page cache or APO on) are now refreshed when translations change, so a corrected translation no longer waits for their cache to expire. The call goes out once, a minute after the last change, so a bulk translation does not call their API hundreds of times.
  • Developers: another plugin can now add a translation provider with the trrocket_providers and trrocket_provider_defs filters. It then appears on the AI Translation screen (with no key field, if it needs none) and works everywhere the built-in ones do: bulk translation, the fallback chain, the visual editor.

1.5.5

  • Fix: sentences you translated with an older version show up translated in the visual editor again. Older versions collected a sentence with a link, a bold word or a line break as separate pieces, and newer ones read it as one; visitors kept seeing it translated, but the visual editor showed it in the original language with an empty box, as if the work were lost. The editor now shows it as visitors do, with the box already filled, and once after the update every such sentence whose pieces are all translated gets its whole translation saved — exactly what visitors already read. Sentences with an untranslated piece and translations you wrote yourself are left alone, and nothing is deleted.
  • Fix: «Translate everything in this browser — no key» no longer leaves you waiting on a browser that cannot do it. The button turns off, a progress bar shows the one-time download of the language model and then each sentence, and if the download stalls or the first sentences fail, a box right under the button explains why and offers three free ways: a free Gemini key (5 minutes, no card) with a step-by-step guide, copy Google Translate paste back, or a desktop Chrome or Edge. Before, the only sign was «0 translated · 12 ⚠» after minutes.
  • Fix: the setup wizard tells you at the translation step when the browser you are using cannot translate by itself (phones, Firefox, Safari), and points to the free Gemini key guide.
  • Fix: «Only flags on phones» hid every language name except the current one, which stayed on screen next to its flag. Found by the new live preview below.
  • Fix: in the dropdown switcher, a language name that is short in letters but wide on screen could be cut off in the open menu. The width now comes from the widest name as drawn, not from the one with the most letters.
  • Fix: admin screens no longer jump at every click. Notices from WordPress and other plugins were printed above the screen and moved under the title only once the page had finished loading — on a slow site after 2–3 seconds, pushing everything down and back. They are now in place from the start.
  • Improved: the switcher’s live preview is now your real switcher, drawn by the same code and CSS as your site in a frame of its own. It follows every change before you save — layout, names, colours, divider — opens and closes like on the site, and has a Desktop / Phone view. Before, it was a copy that cut names short in the dropdown and showed layout changes only after saving.
  • Improved: changing, adding or deleting a switcher profile, or saving, brings you back to where you were on the page, not to the top.
  • Improved: «Load available models» says what went wrong, right next to the button: no key yet, key refused, too many requests, or the site cannot reach the provider. Before, every case showed the same browser alert.
  • Found with a new check that installs TranslateRocket on a brand-new WordPress (Astra + Elementor), follows the setup as a first-time user would, and times it — on a phone-sized and a desktop screen.

1.5.4

  • New: choose what the AI may reuse from the translation memory (AI Translation Translation memory): everything (the cheapest), everything except what the free browser translator wrote, or nothing. Moving from the free Chrome/Edge translation to an AI, every repeated sentence — menus, footer, buttons — used to be copied from the browser version and never reached the AI. Glossary terms always apply, and the browser translator itself keeps reusing everything, since it costs nothing.
  • New: «Improve N browser translations with AI» on the Memory screen. It sends only the sentences the browser translator wrote to your AI provider; a sentence that has a hand-written version elsewhere is copied instead of paid for, and a translation a person saved is never touched.
  • Fix: every admin screen fits a phone. The translation panel under the page editor squeezed the translation to one letter per line; it now shows one card per sentence, original above and translation below. The same for the translation memory, the list of pages and the progress per language; the AI provider cards no longer run past the right edge, and the language visibility menus fit the editor sidebar.
  • Fix: the floating language switcher no longer covers the buttons of a cookie banner. It stays above banners, as since 1.5.2, but now also moves up above any bar fixed to the bottom of the screen, and comes back down when the bar goes away.
  • Fix: the setup wizard shows only its three steps, without notices from TranslateRocket or other plugins.
  • Improved: in the list of pages, «Redo» is now «Start over» and «✖» is now «Hide» (nothing is deleted), with an info icon explaining every button; the Undo link says what it puts back.
  • Tested on a phone-sized and a desktop screen, 17 screens and pages checked automatically, including the visual editor and the public site as a visitor.

1.5.3

  • New: import from Falang and Sublanguage. Both keep the translation of a page as extra fields on the original page, not as copies; TranslateRocket reads them straight from the database, so the import works after the other plugin has been switched off. Only what Falang marks as published comes across, and an empty field – which both plugins read as “use the original” – is not imported as a translation. The translated page addresses come across too (/it/chi-siamo/ stays /it/chi-siamo/), so the links search engines already know keep working. Menu labels typed by hand come across as well, and so do the site title and the widget texts saved by Falang.
  • New: when an import would do harm, it stops and says why. If the plugin you are coming from says your site is written in another language than the one set in TranslateRocket, every sentence would be paired with the wrong side; now nothing is imported and a message explains what to change, instead of a silent “0 imported”.
  • Fix: after switching off a translation plugin, pages no longer send visitors to the home page. Falang, Sublanguage and others leave their own address rules behind; WordPress kept reading addresses with the rules of a plugin that was gone. The rules are now rebuilt on the first visit after any plugin is switched off.
  • Fix: the page title in the browser tab, in search results and in social previews is translated even before anyone translates it as a whole. Themes and SEO plugins glue “Page title – Site name” together; that glued sentence never existed in the plugin you imported from, while both pieces did. It is now put together from its translated pieces, and a translation of the whole title, when there is one, still wins.
  • Fix: texts that visitors read but that live in data attributes are translated: the column headings WooCommerce and Tutor LMS show on phones, the “Sending…” text of Beaver Builder buttons, loading texts, tooltips (BuddyPress included) and data placeholders. Every other data attribute is left alone on purpose: they are ids and keys that scripts depend on.
  • Fix: Divi 4 texts written differently for desktop, tablet and phone are translated for every device. Divi keeps them in a data attribute and puts them on screen with JavaScript, so a phone showed the original language.
  • Fix: OpenAI’s reasoning models (o1, o3, o4-mini, gpt-5 and later) work. They refuse the fixed “temperature” TranslateRocket sent for steady translations, and every request failed; it is now sent only to the models that accept it, with one more try without it for any model not known yet.
  • Fix: the Gemini key travels in a request header, as Google now documents, instead of in the address, where addresses end up in server logs.
  • Fix: a DeepL key sent to the wrong server (free and paid keys live on different ones) is retried on the other one instead of failing.
  • Fix: identifiers made of words joined by underscores, and lone codes with digits in them, are no longer collected as text to translate.
  • Tested with the real Falang and Sublanguage plugins; 682 automated checks in 45 suites, including the update from the version on WordPress.org.

1.5.2

  • Fix: the text of a submit button is translated. That is the button of the WordPress comment form (“Post Comment”), the search button of many themes and the login button of Divi: they all keep their text in an attribute, which was never read, so those buttons stayed in the original language on an otherwise translated page. The value of a text field, a checkbox or a hidden field is deliberately left alone: there it is data being submitted, not a label, and translating it would break the form.
  • Fix: a picture with a version of its own per language now reaches the eye. Until now only a lone was swapped; inside a the browser picks the beside it – which is what WebP plugins produce – so the translated picture never appeared. The same now works for a video poster, for video and audio sources, for the retina version in srcset, and for lazy loading, which used to put the original picture back half a second later.
  • Fix: the title of an SVG icon is translated. It is the name a screen reader says out loud, and it was skipped together with the title of the page.
  • Fix: visitors arriving from a campaign, a social network, a newsletter or a QR code now read a page from the cache like everybody else. Their address carries tracking parameters (utm_source and the like), and any address with a parameter was treated as a page of its own that could not be cached – so the most expensive traffic was the slowest.
  • Fix: an edited translation shows on the site immediately. Clearing the page cache was repeated by hand in a dozen places and missing from others; it now happens inside the saving itself, once per request, whether you save one sentence or import ten thousand. The same for sites with Redis or Memcached, where the per-page maps could stay up to twelve hours behind, and for WP Fastest Cache, which was never cleared at all.
  • Fix: optimization plugins are told to leave the language script alone. It runs in the page head to pick the visitor’s language before the page is painted; with “delay JavaScript until interaction” it was postponed to the first tap, so the visitor read the wrong language, and the language picker did not open on the first click. Autoptimize, LiteSpeed Cache, WP Rocket, SiteGround Optimizer, WP-Optimize and W3 Total Cache are all told now.
  • Fix: the floating language picker is no longer hidden behind a cookie banner.
  • Fix: the subject of a WooCommerce email is translated into the language of the order. The body already was, and the subject is the first thing read in an inbox.
  • Fix: file names, template placeholders like ${name}, style strings, email addresses, colours and product codes are no longer collected as text to translate. They were paid for like any other phrase and came back changed: a translated file name makes the picture disappear, and a “localized” email address stops being clickable. Seen on real multilingual sites while comparing them with their translations.

1.5.1

  • Fix: coming from qTranslate-X, qTranslate-XT, WPGlobus or WP Multilang, once that plugin was switched off every page showed all of its languages one after the other, with the language markers in plain sight – the title first. The public site now shows only the part in your source language, and TranslateRocket translates it like any other text. Nothing in your database is changed, and switching the old plugin back on brings everything back as it was.
  • Fix: imported sentences with a link or a bold word in them are now used on the translated page when they come from Weglot, Loco Translate, Multilanguage, qTranslate, WPGlobus or WP Multilang. Weglot marks those words in its export in its own way; they are now read.
  • Fix: from TranslatePress, a sentence left identical by machine translation is no longer imported as its own translation. A name you kept identical on purpose, approved by a person, still is – so automatic translation never touches it afterwards.
  • Fix: a TMX file exported from TranslateRocket and imported again no longer loses the translation of labels and social titles that share their words with page text. A TMX from another tool now works with straight apostrophes and dashes, and reaches every place those words are used on the site.
  • Tested with the real plugins, in Italian, German, French, Arabic and Chinese: Bogo, TranslatePress, qTranslate-XT, WPGlobus, WP Multilang, Multilanguage, Loco Translate, plus Weglot and TMX/CSV files.

1.5.0

  • New: a sentence broken by a link or a bold word is now translated whole. Until now “Read the booking conditions before you confirm.” reached the translator as three separate pieces, so nobody could put the words in the order German or Japanese needs, and “Read the” on its own is not translatable at all. The sentence now travels in one piece with numbered marks where the tags are, and the translation is put back into your own links: the address of a link always comes from your page, never from the translation. Sentences already translated keep what they have, so nothing you have done is lost, but the count of phrases to translate will go up: the whole sentences are new to the plugin.
  • New: “Next steps”, a screen of its own, first in the TranslateRocket menu, with a number beside it when something is waiting. It says where your site is right now and what is left to do, with a button for each step, and it is worked out from your site every time you open it. The same panel appears at the top of the main screen. It also says, plainly, when there is nothing to do: the steps that tell you to leave something alone matter as much as the ones that ask for work.
  • New: while another translation plugin …