TranslateRocket

Description

TranslateRocket makes your site multilingual. It detects translatable text as you browse (visible text, link titles, image alt, placeholders, ARIA labels, page titles and SEO meta), and serves each language under its own clean URL prefix (e.g. /it/, /de/) — friendly to SEO and to page caches.

You translate however you like:

  • 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 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

  • 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.
  • Translates theme & plugin interface strings too, not just page content.
  • Translated slugs (e.g. /it/chi-siamo/) and hreflang tags for SEO.
  • Per-page visibility: if a page has no equivalent in a language, redirect it, show a custom message, or 404 — per page, per language.
  • Language switcher as a shortcode [translaterocket_switcher], a Gutenberg block, or a widget — inline, dropdown, or a scrollable bar with ‹ › arrows for sites with many languages — with original SVG flags that render everywhere (including Windows).
  • Import your existing translations from TranslatePress, Polylang or WPML — WPML’s are read straight from its tables, so the import works even after WPML is deactivated.
  • 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.

Need a hand?

Want a professional multilingual setup or a custom feature? Help is available as a service from the author — see the plugin’s “Help & Feedback” screen.

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
  • 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 (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/

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.

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.

Do I need an AI key?

No. You can translate entirely by hand, or for free using the built-in copy & paste with Google Translate. AI keys are optional and only used when you ask.

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.

Can I move from TranslatePress, Polylang or WPML?

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.

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.

Reviews

There are no reviews for this plugin.

Contributors & Developers

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

Contributors

Translate “TranslateRocket” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

0.7.8

  • The WPML importer is now properly documented (it has been in the plugin all along): bring over WPML’s string translations and post-based translations (titles, slugs, matching body text) from TranslateRocket Import. It reads straight from WPML’s tables, so it works even with WPML already deactivated.
  • Shipped es/fr/de/pt-BR translation catalogs and a refreshed .pot.

0.7.7

  • Fixed a 0.7.6 regression: the content-link localization also rewrote the language switcher’s own default-language link (which is unprefixed by design), so visitors couldn’t switch back to the source language. The plugin’s own UI and translate="no" regions are now excluded from link localization.

0.7.6

  • Internal links hardcoded in post content (root-relative like /about/, or absolute with the site’s own domain — common on migrated sites) are now localized on translated pages, so visitors no longer drop back into the source language on the first click. System paths (/wp-*), direct file links and URLs already carrying a language prefix are left untouched. Disable with the trrocket_localize_content_links filter.

0.7.5

  • Fixed: explicit switcher colors from the customizer are now emitted with !important, so dropdown menu items stay readable inside colored theme headers (theme anchor palettes could override them, causing white-on-white text).

0.7.4

  • Fixed: URL localization could double the language prefix (e.g. /it/it/) on canonical, feed and oEmbed links when an already-localized URL passed through home_url() again. A re-entrancy guard now leaves localized URLs untouched.

0.7.3

  • Replaced every external-service URL in the readme and admin with its canonical, redirect-free address (DeepL privacy/service pages, OpenAI privacy page, translaterocket.com privacy/donate pages) so all declared links resolve directly.

0.7.2

  • Security & code-quality hardening (WordPress.org review): every admin and front-end output is now late-escaped with wp_kses() and an allowlist covering the plugin’s SVG flags, icons and controls; the switcher’s colour and size settings are validated at save time (hex colours, numeric-only sizes) so a value can never inject CSS; and the bulk string/translation deletes build their IN()/LIKE clauses through $wpdb->prepare().
  • Fixed a dead Author URI and “Get expert help” link.

0.7.1

  • Visual editor: the “original text” preview no longer showed the source in the target language. The plugin’s own dynamic-content translator was rewriting the editor’s source preview; the popup is now marked so neither it nor the browser touches the editor chrome, so the source text always stays in the original language while you edit.

0.7.0

  • Every feature that ships is now free and fully functional: removed the optional target-language cap and removed the background auto-translation of new content. On-request AI translation is unchanged — translate a page, or a whole language, on demand with your own provider key. A trrocket_page_collected action is available for add-ons.
  • Removed the switcher “Custom CSS” field (arbitrary CSS insertion); style the switcher with the built-in colour/shape options or your theme’s stylesheet.
  • Admin CSS and JavaScript are now enqueued with the WordPress functions (wp_enqueue_*, wp_add_inline_script, wp_add_inline_style) instead of being printed inline.
  • Removed the deprecated libxml_disable_entity_loader() call and the no-longer-needed load_plugin_textdomain() (WordPress loads translations automatically).
  • The front-end page buffer is now closed explicitly on shutdown.

0.6.4

  • TranslatePress import: strings are now imported in decoded form. TranslatePress stores its segments with HTML entities (“Bed & Breakfast”, “più”), which never matched the page text and could print entities literally — those strings stayed untranslated after an import. Found while migrating a real site.

0.6.3

  • Fixed: on a translated URL, a page whose slug merely starts with the language code 404ed (e.g. /de/demo/, /it/items/, /es/estimate/) — WordPress stripped the language prefix a second time from the slug itself while parsing the request. Found by translating our own site.

0.6.2

  • Editing a translation now also clears your host / CDN page cache: on a cache flush the plugin signals the common cache and CDN plugins (Breeze, WP Rocket, W3 Total Cache, WP Super Cache, WP Fastest Cache, LiteSpeed, SG Optimizer, Cache Enabler, Nginx Helper, WP-Optimize) plus a trrocket_flush_caches action for anything else — so a changed translation appears right away instead of waiting out their TTL.
  • Admin: the language picker now keeps a small gap between rows when it wraps, so the buttons don’t touch on sites with many languages.
  • Passes Plugin Check with zero errors.

0.6.1

  • Provider fallback chain: give two or more AI providers a priority on the AI page and bulk / automatic translation tries them in order — when one runs out of credit or its key is refused, the next one takes over automatically, so a big job can span several accounts without stopping. Free, in the core.
  • Serialize translated pages from the document root node, fixing a literal “▾” (and other characters) showing up inside CSS on translated pages.

0.6.0

  • Huge-site engine (“huge-safe”): on sites with more than ~20,000 detected strings the plugin stops loading the whole language map per request and switches to indexed per-page batch lookups — constant memory, whether your site has 500 strings or 500,000. Small sites keep the exact same fast path as before.
  • New indexed text hash on stored strings (schema v3, migrated automatically in the background).
  • WooCommerce, forms, dynamic-content, page-copy and term-slug translation all use the new size-aware lookups.
  • Translation memory now saves you money before every AI call: a text already translated anywhere on the site (another page, an image alt, an interface string, a glossary term) is copied for free instead of being sent to the API again, and duplicate texts in one batch are only paid once.
  • New “Saved by reuse” counter on the AI page: characters and strings translated for free, with a cost estimate at your provider’s list prices.

0.5.5

  • Admin: a pink “Support the project” link in the navigation — the plugin is 100% free; supporters get priority help.

0.5.4

  • Dropdown switcher: reliable tap-to-close on touch devices (sticky hover/focus no longer keeps the menu open).
  • Scroll switcher: the current language now wears a single thin neutral ring.
  • Sharper admin banner: the logo wordmark gained a crisp shadow for readability.

0.5.3

  • Scroll switcher: the current language starts centred in the strip and is highlighted with a tinted pill and brand-coloured ring.

0.5.2

  • Branding: ™ added to the TranslateRocket logos and product name across the plugin UI.

0.5.1

  • Security (full code audit): password-protected pages now keep their password form when an independent copy is active (the copy also inherits the password); CSV export shields cells against spreadsheet formula injection (and the import transparently removes the shield); the language-redirect cookie is now HttpOnly/Secure/SameSite=Lax.
  • SEO: the multilingual sitemap no longer advertises hreflang alternates for languages a page is excluded from (redirect / 404 / custom message).

0.5.0

  • SEO panel in the visual editor: a new “SEO” button in the editor toolbar opens the translated URL slug, the SEO title and the meta description for the current language — edit search-facing fields right from the live page.
  • Switcher: new per-profile “Menu background (dropdown)” option to style the dropdown panel (with backdrop blur) independently from the toggle.
  • Switcher customizer: the live preview now renders the dropdown toggle and menu items with exactly the front-end styling (colours, radius, shadow) — no more mismatched items.

0.4.0

  • New optional “Powered by TranslateRocket” badge (with logo). Off by default; enable it in Settings to show it in the footer, or place it anywhere with the [translaterocket_poweredby] shortcode.

0.3.0

  • Dynamic content translation: text added by JavaScript after the page loads — cookie/consent banners (Complianz, CookieYes, Borlabs…), popups, AJAX-loaded results — is now translated automatically, reusing your existing translations (no extra AI calls). Better out-of-the-box compatibility with the most common plugins.

0.2.0

  • New Scrollable bar switcher layout: a horizontal, fixed-width switcher with ‹ › arrows (hover an arrow to scroll continuously) — ideal when you have many languages. Width configurable in px or %.
  • Visual editor: toggle any string between the numbered-block view and raw HTML editing.
  • New Translate page button in the editor toolbar — auto-translate the whole page in one click (your AI provider or free Google), or use the guided copy & paste.
  • Language switcher arrow visibility and sizing fixes.

0.1.0

  • Initial public release: detection engine, per-page and in-editor translators, on-page visual editor (click-to-edit in a draggable popup, with Prev/Next, progress and skip-translated), free Google Translate links and copy & paste, AI providers (DeepL, OpenAI, Gemini, Anthropic, Google), translated slugs and hreflang, theme/plugin interface strings, per-page language visibility, TranslatePress & Polylang import, language switcher (shortcode, block, widget) with SVG flags, 36 built-in languages, Italian UI translation.