Latest version
1.8.1
⬇ Download from WordPress.org ⬇ Download from this site
Same plugin, same version, two mirrors · .zip · WordPress 5.6+ · PHP 7.4+ · GPLv2
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.8.1
- New: «Translate with» on the Translations screen: choose the engine — your priority order, one AI provider, a free engine from Labs, or this browser. The menu says which engines are official APIs and which are unofficial endpoints, and warns when a Labs engine is chosen. Engines that are not ready stay visible with what they still need; the choice is remembered and also used by the «AI» button of each page.
- Improved: the language switcher is one switcher in one place. «Where to show the switcher» now offers Header and Footer: one profile for the header menu, another for the row at the bottom of every page, each with its own look. Sites that had both in the same profile keep them: the bottom row moves to a new «footer» profile with the same look.
- Improved: «Your site, live» on a phone opens the theme's ☰ menu to show the languages, without scroll bars; a footer profile shows the bottom of the page.
- Fixed: a page counted its images and the sentences deleted since, and stayed below 100% with nothing left to translate.
- Fixed: the «AI» button of a single page no longer sends image addresses to the engine (a translated address made the image disappear).
- New: a small ⓘ on every line of «Everything you can do — all free», with more detail on each feature, in TranslateRocket and in Labs.
- Improved: the hourglass of a language shows only while its number of translated sentences is really going up; if the live numbers cannot be refreshed, it goes off instead of standing still.
- Improved: the «AI» button of each page is there also without an AI key, when another engine of the menu works.
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: «Translate with» on the Translations screen: choose the engine — your priority order, one AI provider, a free engine from Labs, or this browser. The menu says which engines are official APIs and which are unofficial endpoints, and warns when a Labs engine is chosen. Engines that are not ready stay visible with what they still need; the choice is remembered and also used by the «AI» button of each page.
- Improved: the language switcher is one switcher in one place. «Where to show the switcher» now offers Header and Footer: one profile for the header menu, another for the row at the bottom of every page, each with its own look. Sites that had both in the same profile keep them: the bottom row moves to a new «footer» profile with the same look.
- Improved: «Your site, live» on a phone opens the theme's ☰ menu to show the languages, without scroll bars; a footer profile shows the bottom of the page.
- Fixed: a page counted its images and the sentences deleted since, and stayed below 100% with nothing left to translate.
- Fixed: the «AI» button of a single page no longer sends image addresses to the engine (a translated address made the image disappear).
- New: a small ⓘ on every line of «Everything you can do — all free», with more detail on each feature, in TranslateRocket and in Labs.
- Improved: the hourglass of a language shows only while its number of translated sentences is really going up; if the live numbers cannot be refreshed, it goes off instead of standing still.
- Improved: the «AI» button of each page is there also without an AI key, when another engine of the menu works.
- New: «Automatic translation», one page to switch it on and watch it work. A bar for each language moves by itself while the page is open, an hourglass marks the language being translated right now, the engines are one list in the order really used, and a language can go online by itself once it is fully translated (it waits until the whole site has been read).
- New: «Everything you can do — all free» at the top of the plugin: what TranslateRocket does on your site, with its state and the page where it is set, and what the free add-on Labs adds.
- New: «Test this text» in every AI provider: a short sentence of your choice, translated with the saved key (it costs almost nothing). A green «Tested» tick stays until the key or the model changes.
- New: free setup on request — ask from inside the plugin and we configure TranslateRocket on your site.
- Improved: the bar and percentage of each language open its translations; the Translations page shows a small progress bar under every flag; «Published, or still being translated?» and «Progress» are now one table.
- Improved: the language in a block-theme header menu is one button, as in the preview — the arrow inside, no underline.
- Improved: Cloudflare Workers AI finds the Account ID from the token, and says so plainly when the one typed is wrong; a free provider that used up today's requests says so, instead of «add the API key».
- Improved: the loading indicator of the switcher's live previews, header and bottom of the page, with words; a note explains when the live preview is not shown, and where the row at the bottom of every page is set.
- Improved: when the browser cannot translate a page, the help suggests a free Groq key (the free Gemini plan may not be offered to users in the EU and UK).
- Improved: the question on deactivation offers one-click answers, an optional e-mail for a reply, and says that support is fast and free.
- Fixed: a language with nothing collected yet showed «100%».
- For developers: the filters trrocket_language_base and trrocket_language_from_host let an add-on give a language a domain of its own; trrocket_auto_engines, trrocket_auto_status and trrocket_auto_save connect it to «Automatic translation».
- Fixed: a redirect set with Redirection (or by any plugin that uses WordPress' redirect) sent a visitor on /it/old-page/ to the new page in the source language. The language of the address the visitor started from is kept.
- Fixed: in lists on a translated page, the titles of password-protected and private posts («Protected: …», «Private: …») stayed in the source language: WordPress localizes that prefix on every page. The prefix is now set aside and the title translated.
- Tested with 25 more plugins (Essential Addons, Jetpack, Dokan, Ajax Load More, WPCode, Advanced Ads, SEOPress, The SEO Framework, CoBlocks, Essential Blocks, Genesis Blocks, Shortcodes Ultimate, Strong Testimonials, Easy Table of Contents, AddToAny, Everest Forms, Asgaros Forum, Restrict Content, WP Recipe Maker, Booking Calendar, Woo Variation Swatches, WP Show Posts, WP-PostRatings, Simple Lightbox, Instagram Feed…), with the language switcher in the menu of Astra, OceanWP and GeneratePress, with a right-to-left language, with a site whose source language is Spanish, and with WordPress' own Query Loop pagination, comments, password-protected posts and search on translated pages.
- Fixed: the excerpts of the «Latest posts» block (and any sentence ending with a «Read more» link WordPress writes itself) stayed untranslated: WordPress localizes that link on every page, so on /it/ the sentence never read like the one collected. The link now keeps its place and its words, like a date, and the sentence around it is translated.
- Improved: the «your site, live» card of the switcher customizer shows a loading indicator instead of a white box while the page is drawn.
- Tested: a site whose source language is not English (Spanish at the root with /it/ and /en/), the language switcher in every placement × layout on a block theme and on a classic theme, and every button of the plugin's admin pages clicked in a real browser.
- Security: a translation can never carry markup its original did not have — whatever brought it in (an AI answer, an import, a paste, another plugin). Scripts, event handlers and foreign tags are removed when the translation is saved, in one place for every channel; texts translated through gettext are escaped when their source had no markup; a translation placed inside a script is encoded so «</script>» cannot end it.
- Security: a visitor can no longer make the site collect texts from invented «AJAX» addresses, read the translations of a language that is offline, or fill the page cache with spellings of the same address; the editor side panel only saves the strings of its own page; the universal importer reads this site only.
- Fixed: the «Import pasted translations» of the editor side panel now pairs lines like the strings page (a line without a number continues the one before it).
- Improved: the switcher customizer tells you when the header menu shows another profile, with a one-click «Use this profile in the header menu».
- Fixed: a sentence with a bold or italic part that has no letters («Price <strong>25%</strong> off tonight», «<em>€</em> 1.234,56») is now collected whole; it used to be cut in two and the second half stayed untranslated.
- Fixed: importing translations by copy and paste (Google Translate, DeepL…) matched a line without a number to the sentence in the same position, so a long text that the translator split over two lines pushed its second half onto another sentence — a cookie banner could end up showing a blog post. A line without a number now continues the line before it, and a translation that cannot belong to its original is skipped.
- Fixed: clicking a colour preset in the switcher customizer now redraws the «your site, live» preview at once, and the preset's colours are applied to the language item in your header menu too (not only to the dropdown under it).
- Improved: the switcher customizer tells you when the header menu is showing another profile than the one you are editing.
- Fixed: windows and pop-ups that a plugin loads after a click and then shows (LatePoint's booking window, product comparison tables, quick views…) are now collected while you browse your site, so they can be translated. Their text used to be skipped as «hidden» and never looked at again.
- Tested with 39 more plugins, among them Relevanssi, Ivory Search, SearchWP Live Ajax Search, Advanced Woo Search, Kadence Blocks, Happy Addons, Modern Events Calendar, WP Event Manager, LatePoint, Amelia, Bookly, YITH and HUSKY product filters, WPC Smart Compare, TablePress, wpDataTables, Popup Maker, GiveWP, Charitable, Fluent Forms, WPForms, Mailchimp for WP, Easy Digital Downloads, Ultimate Member, Paid Memberships Pro, Tutor LMS, wpDiscuz and wpForo.
- Fixed: content loaded after the page (AJAX) on a translated page kept its scripts and styles whole. A script holding HTML in a string — like SupportCandy's ticket form — came back cut in half, and its «Submit» button did nothing.
- Fixed: links in content loaded by AJAX (a portfolio's next page, «load more») now stay in the visitor's language even when none of its texts is translated yet — «Read more» used to lead back to the default language.
- New: Switcher → «Your site, live» — with the languages in your header menu (or in a spot you chose) the Switcher screen shows your real header, drawn with the settings on the page before you save, on desktop and phone.
- New: put the languages right after any item of your header menu (Switcher → Where in the menu → «Right after:»), not only at its start or end. Classic menus and the Navigation block of block themes.
- New: a profile such as «header» can be the one in the header menu: choose «In my header menu» in that profile and the menu shows its style. One profile at a time.
- Fixed: the colours of the switcher (text, hover, dropdown background, border, corners) now apply to the languages in your header menu too — they used to be ignored there.
- New: the row of languages at the bottom of the page can be aligned left, centre or right, and shown as a table of 2, 3 or 4 columns (2 on phones); it takes the switcher's text colours. «Your site, live» shows the bottom of the page too.
- Fixed: «Your site, live» shows only the languages your visitors see (not the ones still offline).
- Fixed: «Translate in this browser» (no API key) now saves sentences that have a link or bold words inside. They used to come back without their link marks and stayed untranslated; now the marks are kept, and where the browser's translator drops them the sentence is translated piece by piece around its links.
- Fixed: a phrase the browser's translator refuses is tried once, not again and again — the run could go round without end and the counter passed the total («Translating 162 of 154»).
- New: «Translate in this browser» also on the screen of a single page (Translations → a page), for that page's strings only.
- Fixed: the same link-safe translation in the visual editor's «Translate in this browser».
- Fixed: in block themes (Navigation block) the languages in your header menu now show their flags, and open on click when the switcher is set to open on click — the rest of your menu keeps opening as before.
- Clearer: a switcher profile other than Default says that the header menu, the spot on your page, the floating switcher and the bottom row all use the Default profile.
- New: the language switcher in your theme's header menu — Switcher → «In my header menu». The languages become a real item of the menu, drawn by your theme like its other items, with its submenu and its phone menu: classic themes (Astra, GeneratePress, Kadence, OceanWP…), Elementor's Nav Menu, and block themes through the Navigation block. At the start or at the end of the menu. Where a page has no such menu, the switcher floats in the corner, so it is never missing. The setup wizard offers it when the theme has a menu.
- New: if your switcher floats in a corner, TranslateRocket offers once to move it into your header menu — one click, and you see it on your site.
- New: put the switcher exactly where you want — Switcher → «In a spot I choose on my page» opens your home page with the header, menu, footer and sidebar outlined; click a spot, choose its start or its end, and the real switcher shows there at once. Where the spot is missing or hidden (another page, the desktop menu on a phone) the switcher floats instead.
- New: a row of languages at the bottom of every page, in a line or as a table, and a «Grid» layout for the switcher block and shortcode: flags and names in as many columns as fit.
- New: 40 more languages, 77 in all — among them Catalan, Serbian, Basque, Galician, Lithuanian, Latvian, Estonian, Albanian, Macedonian, Bosnian, Georgian, Armenian, Azerbaijani, Kazakh, Urdu, Tamil, Telugu, Marathi, Gujarati, Punjabi, Nepali, Sinhala, Swahili, Afrikaans, Filipino, Icelandic, Irish, Welsh, Maltese, Belarusian, Mongolian, Khmer, Burmese, Amharic, Uzbek, Luxembourgish, Esperanto, Mexican Spanish, Canadian French and Swiss German — each with its flag, its own address and the WordPress language pack for the interface. A site written in one of them can now pick it as its own language.
- Fix: DeepL received Traditional Chinese as Simplified Chinese, and Norwegian with a code it does not know.
- Fix: on some sites the translated pages lost the theme's design — fonts, colours, the fixed header, footer menus — because a plugin printed an element in the page head (reported with The7, Elementor and the Angie assistant). The attributes of the page body are kept now, whatever another plugin prints.
- Fix: Diagnostics had «Test connection» only for DeepL, OpenAI, Claude, Gemini and Google Translate: Groq, Cloudflare Workers AI and OpenRouter — the free providers the setup wizard recommends — could not be tested there. Every provider with a key is listed now.
- Improved: when a provider refuses a key or answers with an error, «Test connection» says so in a plain sentence in your language («The provider refused this API key…») instead of the provider's technical answer, which stays in the Diagnostics log.
- Fix: saving the settings raised a PHP warning (a leftover from a limit removed long ago); on a site that shows PHP warnings it could break the page shown after saving.
- Fix: plugins that answer on WooCommerce's own AJAX address — FiboSearch's suggestions while a visitor types — answered in the source language on a translated page, and their links led back to the source language. They are translated now and the links keep the page's language (what the visitor typed is never collected). Links to pages of the site inside any AJAX answer keep the page's language too.
- Fix: sentences a plugin or theme writes by hand into the page for its scripts, in a block marked type="text/javascript" — Ultimate FAQ's list of questions suggested while a visitor types in the FAQ search, and many older themes' messages — were skipped and stayed in the source language. Script templates (text/template) are still left alone.
- Fix: on large sites (over 20,000 sentences) the block cart and checkout showed product attributes in the source language («Colour» on an Italian page), and form messages could stay untranslated: both read a group of interface sentences no longer filled since June. They now use the translations of what the cart holds and of the page the form is on.
- Fix: sentences a plugin hands to its scripts with blanks the script fills in — Shortcodes Ultimate's lightbox counter «%curr% of %total%», «Showing %1$s of %2$s» — stayed in the source language where the plugin has no language pack. They are translated now, and a translation is used only if it keeps exactly the same blanks: a counter can never come out broken.
- Fix: Social Chat — the header and footer of the WhatsApp box stayed in the source language: they are a short piece of HTML inside the plugin's settings. Words between paragraphs and headings are now translated; the HTML stays as it is.
- New: text a translated page loads through admin-ajax after it is shown — Ninja Tables rows, many themes' «load more» — becomes translatable, filed under the page that asked for it. Before, it was translated only if the same sentence had been met elsewhere: a table's rows never were. Only public answers are read (never a cart, an account, an order, a signed-in customer's request or anything a visitor sent), and codes a script passes around are left out.
- New: WP Job Manager — the job list on a translated page arrives translated, with the plugin's words in the page's language. It is loaded after the page from an address of its own (/jm-ajax/), which used to answer in the source language whatever page asked. The same holds for LearnPress' and bbPress' own AJAX addresses.
- New: Events Manager — «next month» in the calendar of a translated page shows the events translated. The month is fetched from the page itself and came back with the month name translated and the events in the source language.
- New: structured data for Google — a job's title (JobPosting, read by Google for Jobs) and descriptions written in HTML are translated; the HTML stays as it is. A sentence that holds bold or a link is left whole, never cut into pieces.
- Fix: words a plugin keeps in an attribute whose name runs together — the message Ultimate Blocks' countdown shows when the offer ends, the «This field cannot be blank» and «invalid» errors of Formidable Forms fields — stayed in the source language.
- Fix: once everything was translated, the Translations page still read «14 strings still to translate — 89%» next to a button saying «Everything is translated»: the addresses of the page's images were counted as text to translate. They are not (an image can be swapped per language, if you want), and the count now agrees with the button.
- Improved: a simpler dashboard. The side menu keeps six entries (the other screens are one click away in the buttons at the top), notices from other plugins fold into one line on TranslateRocket's screens, and the Labs box is a single line.
- Improved: with 77 languages, a search box over the language lists (setup wizard and Languages): type a language's own name, its English name or its code. The English name now shows next to the native one — «Српски Serbian».
- Improved: Translations — one main button per page, «Translate»; «Start over» and «Hide» are in a «⋯» menu and still ask before doing anything. A new «Only pages still to translate» filter.
- Improved: AI Translation — the providers you do not use fold to one line; the active one and those in your fallback chain stay open, and choosing a provider opens its card.
- Improved: Switcher — where the switcher goes comes first, then its layout; colours, sizes, font and the phone options are under «More style options».
- Fix: on Windows, Chrome and Edge showed the dashboard's emoji flags as two letters («GB»): the plugin's own flags are used instead.
- Fix: on PHP 7, searching languages or pages by a name in a non-Latin script (Cyrillic, Japanese, Greek…) found nothing.
- Fix: in Dutch, Polish, Russian and Japanese three counters of the dashboard showed in English («3 pages updated.»): their plural forms are in place now.
- Improved: the Translations screen explains <1>…</1> in a visible line where they appear: they mark a link or formatted words, which stay as they are on the site (until now only a tooltip said so).
- Fix: on the Translations and Memory screens, the «Translate with your browser» panel appeared a moment after the page and pushed it down; it is drawn in place now.
- Fix: on the Plugins screen, after the short «why are you leaving?» question, the deactivation page could open twice (the answer and a 4-second safety net both ran it).
- New: e-mails sent to the visitor by contact forms reach them in the language of the page they wrote from, with their name and answers in place; e-mails to you keep the site's language. Contact Form 7 (the «Mail (2)» automatic reply), WPForms, Fluent Forms, Ninja Forms, Formidable Forms, Everest Forms and SureForms. Their sentences appear in the translation screens under their own heading («Contact Form 7 e-mails», «WPForms e-mails»…); in an HTML message only the text is translated, and a translation that lost one of the [tags] or {tags} is not used for that line.
- New: GiveWP's e-mails to the donor (donation receipt, offline donation instructions) follow the language of the page the donation was made from. Sentences under «GiveWP e-mails».
- New: the message shown once a form is sent (WPForms, Fluent Forms, Ninja Forms, Everest Forms, SureForms, Contact Form 7, Otter Blocks) becomes translatable the first time a visitor sends the form, under «Forms: messages and e-mails», and is then shown in the page's language. Before, it never appeared on a page, so it was never collected. Only the form's own wording is read, never what the visitor typed.
- New: text a translated page loads from the REST API after it is shown — WP Go Maps marker titles and descriptions, and any other content fetched the same way — becomes translatable, filed under the page that asked for it (or under «Content loaded by the page»). Only public answers are read: never a cart, an order, an account, a signed-in customer's request or anything a visitor sent.
- Fix: sentences with a date inside — «Posted on <date>», used by most themes — stayed in the source language on every translated post: WordPress writes the date in the page's language, so the sentence never matched the one collected. A date now keeps its place and only the words around it are translated.
- Fix: GiveWP 3 donation forms (shown in a frame that GiveWP prints without <html>) stayed entirely in the source language on translated pages — title, amounts, labels, payment methods. The form and receipt views are now translated like any page; the
trrocket_translate_frame_viewfilter covers similar frames. - Fix: MetaSlider's arrow labels (and other slider options written as JavaScript rather than JSON: FlexSlider's prevText/nextText, Swiper's accessibility messages) stayed in the source language.
- Fix: sentences WordPress builds around a title — the «Continue reading …» label of the more link, a composed feed title — are translated with the title in them; a post's category in structured data (articleSection) is translated.
- Fix: headings of texts that are not on a page («Forms: messages and e-mails», «WooCommerce emails», the form e-mails…) are shown in the administrator's language; collected while a visitor used a translated page, they could be stored in that page's language.
- Compatibility: Kadence Blocks' icon tooltips and Fluent Forms' payment item labels are translated. Checked with more popular plugins and themes: Chaty, Popup Builder, Otter Blocks, Strong Testimonials, Modula, WP Simple Booking Calendar, and the themes Twenty Twenty-Five, Neve, Sydney, Zakra, Botiga and Hestia.
- New: a «Plugin language» menu at the top of every TranslateRocket screen. Read the plugin in English, Italian, Spanish, French, German, Portuguese (Brazil), Dutch, Polish, Russian or Japanese whatever your WordPress profile says — each user chooses for themselves, and «Automatic» keeps following the profile. It changes only TranslateRocket's own texts; the tooltip says where to switch the whole dashboard.
- Compatibility: rotating «Fancy Text» phrases are translated phrase by phrase — Essential Addons keeps them in one attribute separated by bars, Premium Addons in the widget's JSON settings — and so are ElementsKit's countdown labels (Days, Hours…) and its Before/After image comparison labels. On/off switches that some blocks keep in attributes named like text (data-show-label="true") are never taken for words to translate. Checked with ten more popular plugins: Easy Table of Contents, Breadcrumb NavXT, AddToAny, Click to Chat (the pre-filled WhatsApp message too), Ally, CookieAdmin, FiboSearch, MC4WP, Essential Addons and ElementsKit.
- Compatibility: words inside the JSON settings that widgets and chat boxes keep in data-* attributes are translated, keys and options untouched — Social Chat's WhatsApp button, Premium Addons' typing text — and Variation Swatches' colour and size tooltips. Plural labels kept in attributes ending in «-plural» are translated too (Qi Addons' countdown shows «Days» from data-day-label-plural).
- Compatibility: MetForm forms (600,000 sites) are translated — labels, placeholders, the button and the error messages. MetForm prints each form as a JavaScript template that the page translation never read; now only its words are replaced and the template works as before.
- Fix: on phones, the language list under «Published, or still being translated?» no longer pushes the ONLINE label out of the table, and the AI provider cards keep their fields, guide and buttons inside the card.
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.