Сүрөттөө
Incode Translate Master makes your site bilingual from the front end — no account, no license key, no sign-up. Install it, pick your translation language, and start translating your real pages by clicking on the text you want to change, while you look at the actual design. A translation never breaks a button or a heading again.
A built-in keyless engine translates out of the box, so you can go from a single-language site to a published second language in minutes. Prefer your own provider? Plug in a DeepL, Google or Gemini key whenever you like and you pay the provider directly.
✨ Why you’ll like it
- 🖱️ Translate what you see. Click text on your own page and translate it in context — headings, buttons, menus, image captions.
- 🔑 Works with zero setup. A free keyless engine translates immediately. No API key, no credit card, no account.
- 🚀 Not a trial. Everything described here is fully functional and never expires. Nothing is disabled waiting for a payment.
- 🔎 SEO-ready. Translations publish on their own URL prefix with reciprocal hreflang tags and a self-referencing canonical, so Google indexes them.
- ⚡ Fast. Translations live in your database and are served as plain HTML — no API call while a visitor loads the page.
🧩 Everything it does
- 🖊️ Visual front-end editor. Open your page, click any string, and edit the machine translation in the side panel while seeing the real layout.
- 📦 Batch translation. Send all pending strings with one click. The queue runs in batches, resumes where it stopped and never translates the same string twice.
- 🔬 Full-site scan. Extract every translatable string from your posts and pages at once and manage them from one screen.
- 💾 Auto-translate on save. New and changed texts of a post can be translated automatically in the background when you save, so the translation never lags behind the original.
- 🏷️ SEO title translation. With Yoast SEO installed, each page’s meta title is translated so your translated pages show a title in their own language on search results.
- 🌐 Translation engines. Free keyless engine, or bring your own key for Google Translate, DeepL or Gemini. Switch engines any time without losing what’s already translated.
- 🔀 Language switcher. Dropdown, list, flags or inline — as a shortcode, a theme widget, a menu item or an Elementor widget.
- 🧠 Translation memory. Every translated string is stored in your own database. If the same sentence appears in two hundred pages, the engine is called once.
- 🧱 Works with your stack. Any theme, Elementor and Elementor Pro, WooCommerce product and page text, and the usual caching plugins.
💎 There is also a Pro version
Everything above is free, permanent and complete — this list is here so you know what exists, not because anything is missing. Incode Translate Master Pro adds more languages at the same time, translated URL slugs, automatic language detection for first-time visitors, a multilingual XML sitemap, Rank Math SEO support and translation of the emails WordPress and WooCommerce send.
External services
This plugin can send your content to third-party machine-translation services to translate it. A request is made only when you actively translate a string, run a batch translation or save a post with auto-translate enabled, and it contains the text to translate plus the target language code. No translation service is contacted while simply viewing already-translated pages.
You choose the engine in Settings Translation provider. Depending on your choice, the plugin connects to:
- Free engine (default, no API key). Uses Google’s public translation endpoint and, as a fallback, MyMemory. Sends the text to translate and the target language.
- Google Translate — Terms: https://policies.google.com/terms — Privacy: https://policies.google.com/privacy
- MyMemory (Translated s.r.l.) — Terms: https://mymemory.translated.net/terms-and-conditions — Privacy: https://translated.com/confidentiality
- Google Cloud Translation API (optional, your own API key) — Terms: https://cloud.google.com/terms — Privacy: https://policies.google.com/privacy
- DeepL API (optional, your own API key) — Terms: https://www.deepl.com/pro-license — Privacy: https://www.deepl.com/privacy
- Google Gemini API (optional, your own API key) — Terms: https://ai.google.dev/gemini-api/terms — Privacy: https://policies.google.com/privacy
Bug reports (optional). The plugin’s Support screen has a form to report a problem. Only if you fill it in and press Send, the plugin sends what you wrote — plus the technical report shown to you on that same screen — to the plugin author’s server at wptranslate.es, so the problem can be investigated and answered. The technical report lists your WordPress, PHP and MySQL versions, your theme, your active plugins, the plugin’s own configuration and the most recent error lines from its translation log. It never includes API keys, passwords, or the content of your pages, and it is displayed in full, exactly as it will be sent, before you send it. Nothing is sent automatically or in the background.
- wptranslate.es (Adrian Alcala) — Terms: https://wptranslate.es/terminos-y-condiciones/ — Privacy: https://wptranslate.es/politica-de-privacidad/
Only the engine you select is contacted. If you never trigger a translation and never send a bug report, no external service receives any data.
Скриншоттор












Орнотуу
- Upload the plugin folder to
/wp-content/plugins/, or install the ZIP from Plugins Add New Upload Plugin. - Activate the plugin through the Plugins menu in WordPress.
- Go to Incode Translate Master Languages and choose your translation language.
- Open any page of your site and use the toolbar link to start translating, or run a scan and translate in batch from Incode Translate Master Strings.
FAQ.KG
-
Is this plugin a trial version?
-
No. Everything described here works with no key, no account and no expiry date. Nothing is time-limited or disabled waiting for a payment.
-
Is there a paid version?
-
Yes, and it changes nothing about this one. The free plugin is complete and permanent: original language plus one translation language, with every feature listed above. Pro adds more simultaneous languages, translated slugs, visitor language detection, a multilingual sitemap, Rank Math support and email translation. You can see it at wptranslate.es.
-
Do I need an API key?
-
No. A built-in keyless engine translates with no configuration. If you prefer, you can add your own key for Google Translate, DeepL or Gemini in Settings, so the translation cost is billed to you directly by the provider.
-
What languages does my site end up with?
-
Two: the original language your content is written in, plus the translation language you choose. The translation is published under its own URL prefix, and you can change the translation language whenever you want from the Languages screen.
-
Will Google index the translated versions?
-
Yes. The translated version is published under its own URL prefix, with reciprocal hreflang tags and a self-referencing canonical.
-
Does it slow the site down?
-
No. Translations are stored in your database and served as regular HTML. There is no API call while a visitor loads the page.
-
Does it work with Elementor and WooCommerce?
-
Yes. Elementor designs are read from their own JSON so no string is missed, including Elementor Pro widgets. For WooCommerce it covers product and page texts.
-
What happens to my translations if I remove the plugin?
-
They are yours. You can export them before uninstalling, and the uninstall routine asks whether to keep or delete the plugin tables.
Сын-пикирлер
There are no reviews for this plugin.
Contributors & Developers
“Translate WordPress Without Yearly Fees – Visual Editor & SEO URLs” is open source software. The following people have contributed to this plugin.
МүчөлөрүTranslate “Translate WordPress Without Yearly Fees – Visual Editor & SEO URLs” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Өзгөртүүлөр
2.10.9
- Fixed: a page or post whose address starts with the same letters as a language code — “entrega” or “enterprise” under /en/, “descarga” or “design” under /de/ — gave a 404 or was redirected to the original language on its translated URL. Those pages are served in their language again.
- Fixed: on pages larger than 512 KB, image alt text, titles and aria labels stayed in the original language, and text after a stray “<” inside a script could be left untranslated. The whole page is translated now.
- Changed: language URLs now redirect (301) to their one correct address: the trailing slash is added when your permalinks use it, and a post reached through a wrong or made-up path is sent to its real permalink in that language.
- Fixed: a translated page that is not available in a language now points its canonical link at the original, so search engines do not index an untranslated copy under /xx/.
- Changed: hreflang codes now use only the language (“en”, “de”) instead of language and country (“en-US”, “de-DE”), unless two variants of the same language are active. Both forms are valid; search engines pick up the change on their own.
- New: a “Support & feedback” entry in the plugin menu and in the plugins list. Report a problem, send an idea or ask a question from inside WordPress; you choose what kind of message it is, and it reaches the WP Translate team directly.
- New: when you deactivate the plugin you can tell us why, in one click. It is optional, “Skip and deactivate” sends nothing, and it never includes technical data.
- Fixed: the “Support forum” button opened a WordPress.org page that does not exist.
- Fixed: the plugin could lower PHP’s memory limit to 256 MB on sites that already had more.
- Fixed: “Delete absolutely everything” left API keys, licence data, a database table, cached data and a scheduled task behind.
- Fixed: “Translate and replace” deleted the post’s revisions; it now only removes autosaves.
- Fixed: the site menu was translated inside the visual editor, so editing it showed translated labels.
- Fixed: the dashboard language could load too late for some of the plugin’s own texts.
2.10.8
- Fixed: 2.10.7 left some headings and paragraphs in the original language on pages larger than 512 KB — the ones with formatting in the middle, such as a highlighted word, a line break, a small icon or a struck-out price — although 2.10.6 translated them. They are translated again, and now keep that formatting.
- Fixed: since 2.10.7, a heading or paragraph with highlighted words could be translated fragment by fragment instead of as one sentence, which reads worse, whenever its fragments also had translations of their own. The whole-sentence translation is used again, also when the highlight is nested (bold inside italics). Only formatting that is more than a highlight — a line break, an icon, a struck-out price — makes the plugin translate fragment by fragment, so that it is not lost.
- Fixed: a heading or paragraph wrapped as a whole in a link or a styled span — for example a heading that opens a popup — lost that wrapper when it was translated, and since 2.10.7 it could stay in the original language or be translated in fragments. The whole translation now goes inside it.
2.10.7
- Fixed: with Elementor, a paragraph or heading with a link or bold text in the middle came out half translated — the link in the visitor’s language and the rest in the original — or was not translated at all, even when the whole sentence had its translation. Elementor widgets now translate the whole sentence first and put the link and the formatting back in place, as the rest of the page already did.
- Fixed: a link with something inside it, such as bold text or an image, could disappear from a translated paragraph when its text could not be placed in the translation. The link is now always kept.
- Fixed: a paragraph split into lines with line breaks lost the breaks when it was translated as a whole. When each line has its own translation, the lines are now translated one by one and the breaks stay.
- Fixed: any element with a CSS class containing “wptm-” was never translated, not only the plugin’s own language switcher. Only the switcher is skipped now.
2.10.6
- Fixed: the setup wizard did not open after activating the plugin if a background request reached WordPress first. On a fresh install WordPress itself sends one right after activation; on other sites it can be the Heartbeat or another plugin’s AJAX call. That request used up the one-time redirect, nobody saw it, and the Plugins screen loaded without the wizard — which also left the site’s original language set to English. Only an ordinary admin page uses the redirect now.
- New: the last step of the setup wizard explains how to put the language switcher on the site, with direct links, and only lists the ways your theme supports: the Site Editor on block themes, Menus or Widgets on classic themes, the Elementor widget, and the shortcode anywhere. The plugin never adds a switcher by itself, and without one visitors have no way to reach the translation.
- Fixed: without an SEO plugin, translated pages kept the page title in the original language — the title shown in the browser tab and in search results. The page title, the site name and the tagline are now translated as well.
- Fixed: scanning a page stored WordPress, WooCommerce and Elementor internal data as text to translate — the page template name (“default”), image gallery IDs, version numbers — so each of them waited in every language and translating everything spent engine quota on them. Private fields are now skipped unless they hold visible text (the WooCommerce purchase note and button text, and image alt text), and values made only of numbers are skipped too. Developers can add other fields with the wptm_translatable_private_meta_keys filter. Strings stored by earlier scans are left as they are.
- Fixed: a PHP warning, “Object of class WP_Term could not be converted to int”, for every category or tag link printed on a translated page. On sites with WP_DEBUG_DISPLAY on it showed on screen.
- Fixed: the setup wizard named languages in English — “your site can now be published in English” on a Spanish dashboard. Language names now follow the language of your dashboard, and the language lists are sorted in that language.
- Fixed: the message after translating said “Done in 1 phases”. It now gives the number of strings translated, with the right singular or plural.
- Fixed: the setup wizard’s browser tab had no title, and PHP logged “strip_tags(): Passing null” on that page.
- Fixed: a console error on the setup wizard page, because the dashboard script was loaded there too.
- Fixed: in WordPress Playground, which runs PHP the same way as the command line, language URLs and translation were switched off. They are now only skipped for real WP-CLI commands.
- Fixed: the “Auto-translate on save” card said it also translates the page slug. Translated slugs are part of the paid edition, so the free plugin no longer says so.
2.10.5
- Fixed: adding the classic “Language Switcher — Incode Translate Master” widget — under Appearance > Widgets, in the Customizer or in Elementor — stopped the page with a critical error. A widget that had not been saved with a display style yet looked up the default style through a method the widget does not have. Widgets already saved with a style kept working. The error came in with 2.10.1.
- Fixed: an address with two language prefixes in a row, such as /de/en/blog/post/, was served as an ordinary page with a 200 status and a canonical pointing at itself, so search engines indexed it as one more page. Its hreflang links then announced further addresses of the same kind (/en/en/…, /fr/en/…), so every one of them led to more. These addresses now redirect permanently (301) to the same page with a single prefix — the first one, which is the language the page was being served in — keeping the query string. Form submissions and WooCommerce AJAX calls are never redirected.
2.10.4
- Housekeeping: nothing changes in the free plugin. This release only keeps the version in step with the paid edition, which got a follow-up to the 2.10.3 caching fix covering automatic browser language detection — a feature the free plugin does not include. If you are already on 2.10.3 there is nothing you need to do.
2.10.3
- Fixed: the plugin wrote its language cookie on every single page view, including visits that were served in the site’s own default language. Any response that carries a cookie is treated as personalised by a full-page cache — Varnish on Cloudways, and the equivalent on most managed hosting — so the page was never stored and every visit was rebuilt by PHP. The chosen language is now remembered from the browser, and only when the visitor is not on the default language, so the site caches normally again.
- Fixed: that same cookie also switched off automatic browser language detection after the first page. The cookie looked like a language the visitor had picked on purpose, so from the second page onwards the detection stepped aside and left the site in the default language.
2.10.2
- Fixed: the “Write a review” button in the review request opened a WordPress.org address that does not exist, so it landed on a 404 instead of the review form. It now links to the plugin’s listing on WordPress.org, where the review is written.
2.10.1
- Fixed: testing a Gemini API key always tested the model that was already saved, not the one selected on screen. Picking a different model and pressing Test re-tested the previous one, so every model failed with the very same error.
- Fixed: the Gemini model list offered five models that no longer exist, and Google answered 404 for every one of them. The list is now asked directly to Google with your own API key, so you only see models that key can really use.
- Fixed: a 404 from Google was reported as “not available in your region” — a cause that was never checked — and it suggested a model that no longer exists. Google’s own message is now shown exactly as it comes.
- Added: the language switcher style (dropdown, list, flags, inline) can now be chosen from the Settings tab, with a live preview that uses the real front-end markup and CSS before you save.
2.10.0
- Added: a Support screen inside the plugin. It gathers the answers to the questions that come up most — adding a language, what the translation states mean, why a translated string can still show the old text — and it has a form to report a problem directly to the plugin author.
- Added: the report form attaches a technical summary of your installation (versions, theme, active plugins, plugin settings and recent errors from the log). It is shown in full before sending, it never contains API keys or page content, and it is only ever sent when you press the button.
- Fixed: the link in the plugin’s own notice landed on the shop page without putting anything in the basket, because the shop moved to one product with three licence options and the link still pointed at the old one.
2.9.5
- Changed: the review request now waits until the plugin has been translating your site for a week and has saved at least twenty translations, instead of showing up right after the very first one. It can also be postponed for two weeks if you would rather decide later, and it is now translated into the five languages bundled with the plugin.
2.9.3
- Fixed: links with a query string lost it for any visitor who had already opened a page in another language. Site search, add-to-cart links and WooCommerce AJAX calls were all redirected to that language’s home page with the query string dropped. The redirect now carries the query string through.
- Fixed: a form posted to a URL without a language prefix was redirected too, and a 302 turns a POST into a GET, so the submission was lost. Those requests are no longer redirected. The same applies to WooCommerce AJAX endpoints, files and /.well-known/.
- Fixed: the language switcher no longer loads its stylesheet and script inside the Elementor editor preview, where they could push the editor into Safe Mode.
2.9.2
- New: after the plugin translates something for the first time, it asks once whether you feel like leaving a review on WordPress.org. It appears on the dashboard, the plugins list and the plugin’s own screens, it is dismissible, and once you answer — either way — it never comes back. It is never shown at the same time as any other notice from the plugin.
2.9.1
- New (optional): the primary language can now be served under its own URL prefix, exactly like the secondary languages — for example the Spanish home at /es/ instead of /. The canonical, the hreflang x-default, the per-language sitemap and a 301 that consolidates the old unprefixed addresses all follow the prefixed URL, so a site migrating from another multilingual plugin that already publishes its primary language on a prefixed URL keeps the exact same structure and its existing indexing. Off by default: sites that serve the primary language at the root are completely unaffected.
- Fixed: the SEO integration could crash the Elementor editor. Yoast passes null through its title, description, canonical and OG-URL filters when there is no queried object — a Theme Builder template, the editor preview — and a non-nullable type hint turned that into a fatal error on PHP 8.
- Fixed: saving an API key could show “Settings saved!” and, right underneath, “Not configured” — with the key actually saved. The screen re-read the settings in a second request and, when that request failed, the failure was discarded silently and the old state was painted back.
- Fixed: the plugin never checked that its settings had really reached the database. It now re-reads them after writing and reports an honest error if they did not.
- Fixed: opening Settings fired seven requests at once. On shared hosting some of them lost their turn and the screen was painted half empty. It is now a single request.
- Changed: a failure to read the settings is now shown on screen instead of being mistaken for “nothing is configured”.
- Changed: API settings are no longer loaded on every visit to the public site.
2.8.1
- Changed: the Pro notice now takes you straight to the licence it is offering, with it ready in the basket, instead of to a page of plans. Nothing changes in how the plugin translates.
2.8.0
- Fixed: on most pages the plugin was not telling Google that a translated version existed, so those translations were left out of the search index. The check that decided it counted only the strings currently filed under that page, and that filing moves on its own as the site is scanned.
- Fixed: “page not found” screens and search results announced a translated version of a page that does not exist.
- Fixed: pages built with Elementor filed their texts under a different key than the rest of the plugin, so the same sentence could be stored — and paid for — twice. Existing duplicates are merged automatically when you update.
- Fixed: bold text and links inside a paragraph were being stripped out when the paragraph was translated. Formatting is now put back into the translated sentence. If a link cannot be placed with certainty, the paragraph is left in the original language instead of published without its link.
- Fixed: any address containing the word “sitemap” was skipped, so pages like /blog/how-to-create-a-sitemap/ were never translated and never got a language prefix. Only real sitemap files are skipped now.
- Fixed: the visual editor showed strings as pending even when they were already translated, which invited overwriting good work. It now normalises text the same way the server does, and falls back to the context-free index.
- Fixed: auto-translate on save never ran in the block editor, which saves through the REST API. It now runs there too. Elementor keeps its own path and is unaffected.
2.7.9
- Fixed: the Pro notice was invisible on the plugin’s own screens. It is now printed as an inline notice, so WordPress no longer moves it inside the app container where it was being wiped out on the first repaint.
- The notice shows the launch offer for Pro while it lasts, with a live countdown to the end date. When the offer is over the notice goes back to its normal text on its own, with no update needed.
- Countdown is driven by the server clock, so a wrong clock on the visitor’s computer cannot make it run fast or slow.
- The new strings are translated into Spanish, French, German, Italian and Brazilian Portuguese.
2.7.8
- Added a dismissible notice about the Pro version, shown only to administrators, only on the Dashboard, the Plugins screen and the plugin’s own screens, and only after the plugin has been installed for a week.
- The notice honours “prefers-reduced-motion” and remembers your choice per user: “Maybe later” hides it for 30 days and the ✕ hides it for good. Both preferences are removed when the plugin is uninstalled.
- Added a “Go Pro” link to the plugin’s row in the Plugins list.
2.7.7
- 🌍 New: The whole plugin is now translatable, and ships translated into Spanish, French, German, Italian and Brazilian Portuguese.
- The admin interface, the setup wizard and the front-end visual editor now follow your WordPress language instead of always showing the same texts.
- Every user-facing string is internationalized with the
incode-translate-mastertext domain, including the JavaScript, so translate.wordpress.org contributors can translate it into any other language.
2.7.6
- Clearer bilingual model: the site has its original language plus one translation language, and changing it is now an explicit, documented action in the Languages screen.
- The memory limit is only raised while processing a confirmed large page or a heavy scan task, never globally.
- Hardened output escaping in the language switcher (wp_kses allowlist) and CSS color sanitization.
2.7.5
- The plugin is now called “Incode Translate Master”.
2.6.0
- ✨ New: Auto-translate on save — new and changed texts of a post are translated automatically in the background when you save it.
- 🏷️ New: Yoast SEO integration — the meta title of each page is translated.
- 🌐 Improved: Translation engines — built-in keyless engine, or your own Google Translate, DeepL or Gemini API key, switchable any time.
- 🧭 Improved: Simpler language management.
2.5.0
- 🧙 New: Setup wizard on activation — pick your source language, choose the free engine (or your own key) and run the first scan, all in guided steps.
2.4.0
- 🎉 First release: front-end visual editor, full-site scan, batch translation, keyless free engine, translation memory, language switcher, and Elementor / WooCommerce support.
