{"id":345741,"date":"2026-08-11T05:20:48","date_gmt":"2026-08-11T05:20:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pewit-ai-multilingual-translator\/"},"modified":"2026-08-11T05:20:39","modified_gmt":"2026-08-11T05:20:39","slug":"pewit-ai-multilingual-translator","status":"publish","type":"plugin","link":"https:\/\/cs.wordpress.org\/plugins\/pewit-ai-multilingual-translator\/","author":11391715,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.11","stable_tag":"1.0.11","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Pewit AI Multilingual Translator","header_author":"PEWIT Labs","header_description":"Translate WPML jobs (XLIFF) and Polylang posts with your OpenAI, Claude or Gemini API \u2014 no WPML credits.","assets_banners_color":"ccd4e5","last_updated":"2026-08-11 05:20:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pewitlabs.com\/product-ai-multilingual-translator.html","header_author_uri":"https:\/\/pewitlabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.11":{"tag":"1.0.11","author":"michalczajka","date":"2026-08-11 05:20:39"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3641454,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3641454,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3641454,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3641454,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.11"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[194533,10601,2333,103,271713],"plugin_category":[48],"plugin_contributors":[268312],"plugin_business_model":[],"class_list":["post-345741","plugin","type-plugin","status-publish","hentry","plugin_tags-openai","plugin_tags-polylang","plugin_tags-translation","plugin_tags-wpml","plugin_tags-xliff","plugin_category-language-tools","plugin_contributors-michalczajka","plugin_committers-michalczajka"],"banners":{"banner":"https:\/\/ps.w.org\/pewit-ai-multilingual-translator\/assets\/banner-772x250.png?rev=3641454","banner_2x":"https:\/\/ps.w.org\/pewit-ai-multilingual-translator\/assets\/banner-1544x500.png?rev=3641454","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pewit-ai-multilingual-translator\/assets\/icon-128x128.png?rev=3641454","icon_2x":"https:\/\/ps.w.org\/pewit-ai-multilingual-translator\/assets\/icon-256x256.png?rev=3641454","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Plugin homepage, documentation and paid plans: https:\/\/pewitlabs.com\/product-ai-multilingual-translator.html<\/p>\n\n<p>Pewit AI Multilingual Translator lets you translate your multilingual content with WordPress 7.0+ AI connectors or your own AI provider key (BYOK) instead of paid WPML or Polylang machine-translation credits.<\/p>\n\n<h4>Fully functional and free<\/h4>\n\n<p>Every feature is free and fully functional \u2014 there is no language limit, feature cap or license gating. Connect via WordPress 7.0+ AI connectors (Settings \u2192 Connectors) or bring your own API key (OpenAI, Anthropic Claude or Google Gemini) and:<\/p>\n\n<ul>\n<li>WPML: list pending Translation Memory jobs, export\/translate\/import XLIFF, optional auto-import, string packages.<\/li>\n<li>Polylang: translate posts directly \u2014 no Polylang Pro machine-translation credits required.<\/li>\n<li>Translate only what is missing: gap detection for Polylang posts and XLIFF segments.<\/li>\n<li>Bulk translation and background jobs for whole languages.<\/li>\n<li>Review queue to approve translations before they are applied.<\/li>\n<li>Cost estimate before you translate, glossary and site context for consistent terminology.<\/li>\n<li>Email notification when a background job finishes.<\/li>\n<\/ul>\n\n<h4>Providers<\/h4>\n\n<ul>\n<li>WordPress 7.0+ AI Client (Settings \u2192 Connectors) when configured, with BYOK fallback.<\/li>\n<li>OpenAI, Anthropic (Claude) and Google Gemini \u2014 use your own API key.<\/li>\n<li>You pay your provider directly for API usage.<\/li>\n<li>Configurable model (default gpt-4o-mini) and API key test button.<\/li>\n<\/ul>\n\n<p>You always use your own provider credentials (core connectors or BYOK). Requests go directly from your site to the provider you choose under that provider's terms.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to third-party AI providers to translate your content. Please review this before use.<\/p>\n\n<p>You choose the AI provider in the plugin settings and use your own API key (BYOK), or on WordPress 7.0+ use the site-wide AI connectors (Settings \u2192 Connectors) via the core AI Client. No data is sent to any provider until you trigger a translation or test the connection. Requests go directly from your site to the selected provider under your own credentials and that provider's terms. Nothing is sent to the plugin author.<\/p>\n\n<p>WordPress AI Client (WordPress 7.0+, when connectors are configured):\n* What and when: translation uses <code>wp_ai_client_prompt()<\/code> so credentials stay in core (Settings \u2192 Connectors). Source text, optional site context\/glossary and translation instructions are sent to whichever provider the site administrator configured.<\/p>\n\n<p>OpenAI API (https:\/\/openai.com):\n* What and when: when you test the API connection or translate content (XLIFF segments or Polylang post fields) with OpenAI selected as the provider (BYOK fallback), the source text to translate, your optional site context\/glossary and the selected model name are sent to OpenAI to produce the translation. Endpoints: https:\/\/api.openai.com\/v1\/responses and https:\/\/api.openai.com\/v1\/chat\/completions.\n* Data sent: the source text, optional context\/glossary you configure, and the selected model name.\n* Terms: https:\/\/openai.com\/policies\/terms-of-use \u2014 Privacy: https:\/\/openai.com\/policies\/privacy-policy<\/p>\n\n<p>Anthropic (Claude) API (https:\/\/www.anthropic.com):\n* What and when: only if you select Claude as the provider (BYOK fallback) \u2014 when you test the connection or translate content, the source text, optional context\/glossary and the selected model name are sent to Anthropic to produce the translation. Endpoint: https:\/\/api.anthropic.com\/v1\/messages.\n* Data sent: the source text, optional context\/glossary you configure, and the selected model name.\n* Terms: https:\/\/www.anthropic.com\/legal\/consumer-terms \u2014 Privacy: https:\/\/www.anthropic.com\/legal\/privacy<\/p>\n\n<p>Google Gemini API (https:\/\/ai.google.dev):\n* What and when: only if you select Gemini as the provider (BYOK fallback) \u2014 when you test the connection or translate content, the source text, optional context\/glossary and the selected model name are sent to Google's Generative Language API to produce the translation. Endpoint: https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/.\n* Data sent: the source text, optional context\/glossary you configure, and the selected model name.\n* Terms: https:\/\/ai.google.dev\/gemini-api\/terms \u2014 Privacy: https:\/\/policies.google.com\/privacy<\/p>\n\n<p>Freemius (licensing &amp; updates \u2014 https:\/\/freemius.com):\n* What and when: used for plugin updates and optional anonymous usage diagnostics. Opt-in is optional.\n* Terms: https:\/\/freemius.com\/terms\/ \u2014 Privacy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<h3>Source code<\/h3>\n\n<p>All JavaScript and CSS shipped in this plugin (in assets\/js and assets\/css) is the original, hand-written, human-readable source. Nothing is minified, compiled, transpiled or generated by a build tool, so no separate source files are required \u2014 what you read in the plugin is the source. The only bundled third-party library is the Freemius SDK (vendor\/freemius), whose source is available at https:\/\/github.com\/Freemius\/wordpress-sdk<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP through Plugins -&gt; Add New -&gt; Upload Plugin, or extract it to wp-content\/plugins\/pewit-ai-multilingual-translator\/.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Connect AI under Settings \u2014 WordPress 7.0+ Connectors (Settings \u2192 Connectors) or your own API key (BYOK \u2014 OpenAI, Claude or Gemini).<\/li>\n<li>Pick WPML or Polylang and start translating.<\/li>\n<\/ol>\n\n<p>The plugin folder must always be pewit-ai-multilingual-translator\/ and the main file pewit-ai-multilingual-translator.php.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20api%20key%3F\"><h3>Do I need an API key?<\/h3><\/dt>\n<dd><p>On WordPress 7.0+ you can use Settings \u2192 Connectors (core AI Client). Otherwise bring your own key for OpenAI, Anthropic Claude or Google Gemini. You pay your provider directly for API usage.<\/p><\/dd>\n<dt id=\"do%20i%20need%20wpml%20or%20polylang%20pro%3F\"><h3>Do I need WPML or Polylang Pro?<\/h3><\/dt>\n<dd><p>No. You can translate WPML XLIFF jobs and Polylang posts with WordPress Connectors or your own AI key, without paid WPML or Polylang machine-translation credits.<\/p><\/dd>\n<dt id=\"will%20my%20translations%20be%20reviewed%20before%20they%20go%20live%3F\"><h3>Will my translations be reviewed before they go live?<\/h3><\/dt>\n<dd><p>You can enable the Review queue so translations are queued for approval before they are applied or downloaded.<\/p><\/dd>\n<dt id=\"1.0.11\"><h3>1.0.11<\/h3><\/dt>\n<dd><ul>\n<li>Fixed: Plugin Check \/ review \u2014 resolve WPML TM loader via constants and active plugin paths (no hardcoded WP_PLUGIN_DIR folder names).<\/li>\n<li>Fixed: sanitize download nonce with sanitize_text_field( wp_unslash() ) before wp_verify_nonce().<\/li>\n<li>Changed: shared PEWIT Labs AI hub is no longer bundled here (optional when another suite plugin provides it); avoids non-slug text domain and foreign prefixes.<\/li>\n<\/ul><\/dd>\n<dt id=\"1.0.10\"><h3>1.0.10<\/h3><\/dt>\n<dd><ul>\n<li>Added: shared PEWIT Labs AI settings hub when 2+ suite plugins are active (provider, API key, model, global context).<\/li>\n<\/ul><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fixed: readme \"Tested up to\" set to WordPress 7.0 for directory automated checks.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Added: WordPress 7.0+ AI Client integration \u2014 uses <code>wp_ai_client_prompt()<\/code> when site connectors are configured (Settings \u2192 Connectors), with BYOK direct API fallback.<\/li>\n<li>Fixed: removed bundled .po\/.mo translation files from the wordpress.org package (translations via translate.wordpress.org); empty languages\/ retained for Domain Path.<\/li>\n<li>Fixed: Plugin Check \u2014 AI Client called via function_exists\/call_user_func for WP 6.x compatibility; absint() in printf integer placeholders.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Changed: the wordpress.org build now ships with no license or plan gating code at all \u2014 every feature is unconditionally free. Plan checks live only in the separate premium build.<\/li>\n<li>Added: \"Source code\" documentation noting all JS\/CSS is human-readable source and linking the bundled Freemius SDK repository.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Changed: renamed to \"Pewit AI Multilingual Translator\" (new slug pewit-ai-multilingual-translator) for a distinctive directory name.<\/li>\n<li>Changed: every feature is now free and fully functional \u2014 no plan gating (bulk jobs, auto-import and Claude\/Gemini providers are available to everyone).<\/li>\n<li>Added: External services documentation for OpenAI, Anthropic (Claude), Google Gemini and Freemius, including terms\/privacy links.<\/li>\n<li>Fixed: removed Google Fonts (no external font requests); admin uses a system font stack.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: Plugin Check advisory warnings \u2014 annotated direct DB queries (DirectQuery\/NoCaching), WPML integration hooks, and validated XLIFF upload input.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed: WordPress Plugin Check \u2014 i18n translators comments, filesystem helpers, prefixed LLM client class, removed manual textdomain loading.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed: WordPress.org Plugin Check i18n compliance for shared LLM client.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Changed: Shared provider select with Pro gating for Claude\/Gemini; inherits AIMT provider when borrowing API key.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added: Gap detection for Polylang and XLIFF \u2014 translate only missing fields or segments.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>WPML TM sync, string packages, review queue, cost estimate, suite pairing, i18n (7 locales).<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>AIMT API pairing; WPML XLIFF parser improvements.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: XLIFF bridge + Polylang post translation.<\/li>\n<\/ul>","raw_excerpt":"Translate WPML XLIFF jobs and Polylang posts with WordPress AI connectors or your own OpenAI, Claude or Gemini API key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345741"}],"author":[{"embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/michalczajka"}],"wp:attachment":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345741"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345741"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345741"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345741"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345741"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}