⬇ Download TranslateRocket v1.3.0
.zip · WordPress 5.6+ · PHP 7.4+ · GPLv2 · served by WordPress.org
Install in one minute
- In your WordPress admin go to Plugins → Add New and search for TranslateRocket — or upload the downloaded zip via Upload Plugin.
- Click Install Now.
- Activate, open TranslateRocket → Settings, pick your languages — done.
What’s new in 1.3.0
- New: tidy up the pages Polylang, WPML or Bogo left behind. Those plugins keep a separate page for every language; once their translations are imported, TranslateRocket translates the original page itself, so each copy is a second place to edit the same page. Under the importer, "Review the separate pages" lists every copy with what was found: copies whose text is all in TranslateRocket can go to the Trash, copies with text laid out differently can be kept as independent copies, and nothing is offered for the Trash before the import or while its language is not active. Nothing is deleted — pages go to the Trash — and the old address of each copy sends visitors and search engines to the translated page with a 301.
- Fix: on a page opened through its translated address (for example /it/chi-siamo/), the hreflang links and the language switcher reused that Italian slug for every language, so they pointed at addresses that do not exist (/chi-siamo/, /es/chi-siamo/). Each language now gets its own address — the original slug, or its own translated one — exactly as the sitemap already did.
- Fix: hreflang links no longer repeat the query string of the visit (?utm_source=…); they name the clean address of each version.
- Fix: a page that does not exist (404) no longer prints hreflang links to the same missing address in every language.
- Fix: WooCommerce block checkout — after placing an order in a translated language, customers landed on the "Order received" page in the site's default language. They now stay in the language they shopped in, as the order e-mail already did.
- Fix: translated addresses now work for WooCommerce products and every other custom post type. A translated slug on a product (/it/product/colazione-in-terrazza/) returned "page not found", while the language switcher and hreflang already pointed there; product links in shop pages now use the translated slug too.
Coming from another plugin? Migration guides: WPML · TranslatePress · Polylang.
Questions or a bug? Head to Support — real humans answer.
📦 Changelog
Actively developed — here is what shipped, newest first.
- New: tidy up the pages Polylang, WPML or Bogo left behind. Those plugins keep a separate page for every language; once their translations are imported, TranslateRocket translates the original page itself, so each copy is a second place to edit the same page. Under the importer, "Review the separate pages" lists every copy with what was found: copies whose text is all in TranslateRocket can go to the Trash, copies with text laid out differently can be kept as independent copies, and nothing is offered for the Trash before the import or while its language is not active. Nothing is deleted — pages go to the Trash — and the old address of each copy sends visitors and search engines to the translated page with a 301.
- Fix: on a page opened through its translated address (for example /it/chi-siamo/), the hreflang links and the language switcher reused that Italian slug for every language, so they pointed at addresses that do not exist (/chi-siamo/, /es/chi-siamo/). Each language now gets its own address — the original slug, or its own translated one — exactly as the sitemap already did.
- Fix: hreflang links no longer repeat the query string of the visit (?utm_source=…); they name the clean address of each version.
- Fix: a page that does not exist (404) no longer prints hreflang links to the same missing address in every language.
- Fix: WooCommerce block checkout — after placing an order in a translated language, customers landed on the "Order received" page in the site's default language. They now stay in the language they shopped in, as the order e-mail already did.
- Fix: translated addresses now work for WooCommerce products and every other custom post type. A translated slug on a product (/it/product/colazione-in-terrazza/) returned "page not found", while the language switcher and hreflang already pointed there; product links in shop pages now use the translated slug too.
- New: structured data is translated too. The FAQ questions and answers, article headlines and descriptions that themes and SEO plugins put in JSON-LD for search engines used to stay in the source language on every translated page, and an article on /de/ still declared itself English. They are now collected like the page title and description, translated in every language, and "inLanguage" states the language of the page. Names of people, companies, software and the site are never translated, a video keeps the language it was recorded in, and addresses, dates and prices are left exactly as they are. The data is read and rewritten as JSON, so a translation can never break it.
- Fix: the flag shown for Chinese had a single star, which made it look like another country's flag. It now has the large star with the four small ones beside it.
- Change: Arabic no longer shows a national flag. It is official in more than twenty countries, so no single flag is right for it, and the one usually chosen for it carries a religious inscription that should not be redrawn or used as decoration. Arabic now shows a neutral "AR" marker. If you would rather have a flag, you can still choose one for that language in the custom flag field.
- Fix: a floating language switcher placed along the bottom of the page opens upwards, so its menu is no longer cut off by the edge of the window.
- New: show content in some languages only. Wrap it in
[translaterocket_language lang="it,de"]…[/translaterocket_language], or usenot="it"to hide it in some; in the block editor, add the classtrrocket-only-itortrrocket-hide-itto any block, navigation links included. Content limited to a language is shown exactly as you wrote it and never re-translated. - New: menu items for some languages only. Every item in Appearance → Menus has a "Show in" row of language checkboxes. Nothing ticked means every language, so existing menus look exactly as before; an item that is hidden takes its sub-items with it.
- New: translate a whole page in ChatGPT or Gemini, with no API key. In the visual editor's "Translate page" panel, one button copies the text of the page together with a prompt written for your site — your languages, the words you never translate, your glossary and your house style. The prompt asks the AI to keep the line numbers and the formatting markers, so its reply goes straight back into place.
- The box you copy from now selects everything with one click, and the box you paste into selects its content on the first click, so a second paste replaces the first.
- The changelog had grown past the 5,000-word limit of the plugin directory and was being cut off: releases from 1.0.0 onwards stay here, and the full history is in changelog.txt, shipped with the plugin.
- Small tidy-ups: a clearer example in the "Words & phrases" exclusion box, and the LICENSE file now carries the plain GPLv2 text.
- The plugin's own header now sits on a night sky instead of the rainbow band, the same one used on the project website. The stars are drawn in CSS, so nothing extra is downloaded and the logo finally stands clear of its background.
- Fix: opening the media library to pick an image for a language left the little "Choose image" buttons — and the image window itself — floating on top of it, over an apparently empty panel. They now step out of the way while the library is open and come back when it closes, Escape included.
- Fix: a save that got no answer used to spin for ever. If your site did not reply — a proxy holding the connection, a dropped network, a security layer swallowing the request — the buttons kept turning with nothing on screen to explain it, and the sentence you had just written was lost if you gave up and closed the box. Requests now stop waiting after thirty seconds, your text stays in the box, and the message tells you whether the site refused the request (with the code) or did not answer at all.
- Fix: the window for swapping an image now opens in the middle of the screen and can be dragged, with the same title bar as the text editor. It used to appear glued to the picture — which for a full-width photo at the top of a page meant squashed against the top edge — and its header was drawn with styles that did not exist, so the title, the move handle and the close button ran into each other.
- New: a language you add now starts offline. Until now, ticking a language and pressing save made it public that same second — in the switcher, in your sitemap, in your hreflang tags — with nothing translated in it yet. Now it arrives with its switch grey, and you turn it green when you are ready. A language that was already on your site keeps the state it had.
- New: the dashboard tells you when a page changed after it was last read. Text is detected while you look at a page while logged in — so if you edited a page in the block editor and never opened it again, its new sentences were never collected: they did not show up in your list of strings to translate, and on the translated pages they quietly stayed in your source language. That silence is over: the pages are listed by name, with a scan one click away, and the warning clears itself as soon as each page is read.
- Fix: on the Languages screen the per-language progress bar was drawn without a colour, so it looked empty even at 98%. It now runs red to green like every other bar in the plugin.
- New: add a language now, publish it when it is ready. Next to every language you enable there is a switch: green means your visitors see it, grey means only you do. While a language is offline it stays out of the switcher, out of your sitemap and out of the hreflang tags, and anyone landing on one of its URLs is sent to your default language — but you keep working on it on the real pages, because whoever can preview still sees everything. Nothing half-translated ever reaches your visitors or Google.
- New: the SEO panel in the visual editor now holds everything search engines read, in one order: the 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 to the element: the page scrolls to it, it flashes, and the right editor opens. For a photo that means the image chooser; for its alt text, the text editor.
- Fix: the social texts were never translated. If a SEO plugin such as Yoast or Rank Math set an
og:title, anog:descriptionor atwitter:card of its own — a different text from the page title, which is the normal case — that text was never collected, so it could never be translated: every share of a translated page went out in the source language. Those texts are now collected like any other, and they show up in the SEO panel. - Thanks to Simona, for the first donation TranslateRocket ever received.
- New: import from Bogo. It keeps one post per language, linked by two post meta values, so the pairing is exact — title, excerpt and body all come across.
- New: import from Multilanguage by BestWebSoft, read straight from its two tables, including category and tag names.
- New: import the translations you wrote by hand with Loco Translate — the
.po/.mofiles inwp-content/languages/loco/. Only your own work is read, not the language packs WordPress downloads by itself: those are thousands of strings nobody on your site chose, and they would bury the useful ones. Entries still marked "fuzzy" are skipped, because nobody has checked them yet. - New: a different image for each language. In the visual editor every picture carries a small button: click it and choose another image from the media library for that language. The picture is swapped on the translated page,
srcsetincluded — without that the browser quietly reloads the original and the change looks broken. Image addresses are kept apart from the text and are never sent to a translator: a URL comes back mangled and the picture disappears from the page. - Fix: the Import screen no longer scans every post each time it is opened. It asked each importer whether it had anything, and the qTranslate one had to look inside the posts to answer — on a large site that made the screen crawl. The answer is now remembered for an hour.
- Fix: in the switcher's live preview the dropdown was stuck open. You could see the menu's colours, but never how it opens — which is half of what a dropdown does. The preview now uses the same markup and CSS as the real switcher, so it opens and closes on click exactly like the one on your site.
- Fix: the three settings that only apply to the dropdown layout — how it opens, the arrow, the opening animation — are now switched off when you choose the inline or list layout, instead of looking live while doing nothing. Their values are kept, so changing layout no longer resets them.
- Fix: the live preview now follows you as you scroll the switcher settings, instead of scrolling away after the first section.
- With this release the plugin imports from ten other plugins, plus CSV and TMX.
Leaving a paid plugin? Read the honest comparisons: WPML alternative · TranslatePress alternative · Weglot alternative · GTranslate alternative
Want a hand with your site? I can do it for you
I am Federico, the developer of TranslateRocket — and building and translating WordPress sites is what I do for a living. That is how this plugin stays free: it is not crippled to sell you an upgrade, it is the tool I use every day on the sites I am paid to build.
A new multilingual site from scratch, a design put right, an existing site taken from one language to ten, custom development, reviewed translations, or a migration off a plugin that charges you every month: tell me what you need and I will tell you honestly whether I am the right person for it. You get the person who wrote the engine, not a support queue.