About this plugin
Most translation tools work one string at a time. The engine sees “Home”, or “Post”, or a lone product name, and guesses. Guess wrong and your menu reads like nonsense to anyone who speaks the language. This plugin hands the entire rendered page to an AI model instead. The model can see the headline above a button and the paragraph below it before it decides what that button means. Translations go into the plugin’s own table and are served under a language directory, /en/ or /ja/ . Your posts are never touched. Because the work happens after WordPress has finished rendering, it also covers menus, widgets, meta tags, alt text and placeholders — not just the post body. AI translation is never perfect, so there is a screen for fixing it. Pick a page, read the original and the translation side by side, change any line you disagree with. Your edits stay put; the next run will not overwrite them. Three ways to get pages translated By hand. Open a page, press translate, watch it fill in. In the background. While you have the admin open, your browser feeds pending pages to the server one at a time. When a visitor arrives. Anything still missing gets translated on the spot. You can also tell the plugin to keep serving the original page until the translation is, say, 80% complete. All three share per-page locks: two editors working at the same time will not translate the same page twice or double your API bill, while different pages translate in parallel without queueing behind each other. A lock left behind by a crashed job expires by itself once the request timeout passes. What you can set up Languages. URL prefix, hreflang and regional variants, order in the switcher, and who gets to see them — everyone, search engines only, or human visitors only. The instruction sent to the AI. Rewrite it if the default tone is wrong for your site; just keep the three variables it needs. Translated URL paths get their own instruction, so the main one stays about prose. Replacement rules, per language. For the brand names and terms the model keeps getting wrong. Plain text, exact match or regular expression. The language switcher. A floating button you can drag anywhere, which remembers where you left it. Or hand it a container id and style it yourself. Flags are optional. Also taken care of Internal links point at the right language. URL paths can be translated too, and the translated address still resolves back to the correct post. hreflang, including x-default and regional variants. Sitemap URLs are localized, and robots.txt gets a Sitemap line per language. What it costs you Bring your own API key. OpenAI, Claude, Gemini, DeepSeek and OpenRouter all work out of the box, and the model name usually tells the plugin which one you mean. You pay that provider for what you translate; the plugin adds nothing on top, and with this option it contacts nobody but the provider you configured. Or subscribe. If you would rather not open an account with an AI provider, top up a balance and pick a model, there is a paid subscription at https://translate.aipogeo.com . Connect your site once and translation runs through Aipogeo: it holds the AI credentials, and the subscription is billed by token — the same unit the AI model itself charges in, counting both the text sent and the translation returned. This is the one option that sends the text being translated to a server of ours — section 3 under External Services says exactly what that involves. The bring-your-own-key path stays free and complete. Nothing is held back to push you toward the subscription. Be realistic about time. A long page is a lot of text, and the model thinks about all of it — that is the point, and it is also why there is a progress bar and a stop button. External Services This plugin sends text to an AI service in order to translate it. Nothing is sent until you have configured one of the options below and asked for a translation. Which service is contacted depends entirely on that choice. 1. The AI provider you configure yourself Under Translation Settings → AI service , choosing “The settings below only” (or “Automatic” with no site-wide provider set up) makes the plugin call the API endpoint you enter, using the API key you enter. That is typically OpenAI, Anthropic, Google Gemini or DeepSeek, but it can be any relay or self-hosted gateway whose address you supply. What is sent: the text extracted from the page being translated, the source and target language names, and your translation prompt. When: each time a translation runs — manually, in the background, or on a visitor request if live translation is enabled. Terms and privacy: these are the provider’s own. Please read them before entering a key. For the four built-in providers: OpenAI — https://openai.com/policies/terms-of-use / https://openai.com/policies/privacy-policy , Anthropic — https://www.anthropic.com/legal/consumer-terms / https://www.anthropic.com/legal/privacy , Google Gemini — https://policies.google.com/terms / https://policies.google.com/privacy , DeepSeek — https://cdn.deepseek.com/policies/en-US/deepseek-open-platform-terms-of-service.html / https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html . 2. This site’s own AI configuration Choosing “This site’s AI settings only” hands the request to the AI client built into WordPress 7.0 and later. The provider and credentials are the ones the site owner has configured for the whole site; this plugin neither stores nor sees them. The terms and privacy policy are those of whichever provider is set up there. 3. The Aipogeo subscription service Aipogeo runs a paid subscription at https://translate.aipogeo.com . It is off unless you pick “Subscription” and connect an access key. When it is on, the plugin stops calling an AI provider directly: it sends each batch to Aipogeo, Aipogeo calls the AI provider with its own credentials, and the subscription is billed by token. This is the one option where the text being translated leaves your site for a server of ours, so here is what that means in full. What is sent: your access key; this site’s home URL, which binds the subscription to a site and lets the service reject keys used elsewhere; and the translation instruction, which contains the text to be translated along with the source and target language. What comes back: the translation, and the number of tokens billed. Onward: to produce the translation, Aipogeo passes the text to a third-party AI provider under its own account. Which provider is in use is listed on the privacy policy page. How long it is kept: the text and the translation live only for the length of the request. Aipogeo does not store them and does not use them for training. What is never sent: your posts as such, your database, or anything about your visitors — only the strings queued for translation. When: when you connect a subscription, activate or release this site, refresh the subscription status, and once per batch while a translation runs. A failed request is refunded and not billed. Service provider: AIPOGEO. Terms of service: https://translate.aipogeo.com/terms Privacy policy: https://translate.aipogeo.com/privacy If you do not use the subscription, none of the above applies: with your own API key the plugin contacts nobody but the provider you configured. Third-Party Libraries Two front-end libraries ship with the plugin as their official minified builds, unmodified. Sources and licenses: Ace Editor 1.4.2, BSD 3-Clause. Copyright (c) 2010, Ajax.org B.V. Unminified source: https://github.com/ajaxorg/ace Build the plugin bundles: https://github.com/ajaxorg/ace-builds Choices.js , MIT. Copyright (c) 2016 Josh Johnson. Unminified source: https://github.com/Choices-js/Choices The PHP libraries under vendor/ are installed by Composer and ship as plain readable source. See composer.json and composer.lock for exact versions, and assets/vendor/CREDITS.md for the full list.