{"id":399803,"date":"2026-11-10T17:27:22","date_gmt":"2026-11-10T17:27:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/robart-metaphrii\/"},"modified":"2026-11-10T17:26:51","modified_gmt":"2026-11-10T17:26:51","slug":"robart-metaphrii","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/robart-metaphrii\/","author":14135334,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"RobArt Metaphrii","header_author":"robword","header_description":"Translation management that actually works. Manage multilingual content with complete control \u2014 nothing goes live without your approval.","last_updated":"2026-11-10 17:26:51","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/robsnowcreative","header_plugin_uri":"https:\/\/robart-illustration.eu\/plugins-wordpress-development\/robart-metaphrii\/","header_author_uri":"https:\/\/robart-illustration.eu","rating":0,"author_block_rating":0,"active_installs":0,"downloads":74,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"RobWord","date":"2026-11-10 17:26:51","revision":3794947}},"upgrade_notice":{"1.0.2":"<p>Every language is editable in the translation editor, the scanner no longer needs bundled libraries, and imported translations are handled more safely.<\/p>","1.0.0":"<p>First public release. Translations now appear for widgets, alt text and blocks, with hreflang links and a sitemap for each language. The plugin no longer contacts any outside server.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3794947,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3794947,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3794947,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3794947,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3794947,"resolution":"1","location":"assets","locale":"","width":3685,"height":2744},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3794947,"resolution":"2","location":"assets","locale":"","width":3685,"height":2094},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3794947,"resolution":"3","location":"assets","locale":"","width":3685,"height":16316},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3794947,"resolution":"4","location":"assets","locale":"","width":3684,"height":2541},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3794947,"resolution":"5","location":"assets","locale":"","width":3686,"height":2412},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3794947,"resolution":"6","location":"assets","locale":"","width":3687,"height":1944},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3794947,"resolution":"7","location":"assets","locale":"","width":3686,"height":3087}},"screenshots":{"1":"Dashboard \u2014 translation progress, string types, and system overview.","2":"Scanner \u2014 select post types and run a full string scan across your site.","3":"Translations \u2014 source text with per-language textareas and approval status indicators.","4":"Languages \u2014 add, reorder, and manage source and target languages.","5":"Design \u2014 language switcher type grid with live preview wireframe.","6":"Converter \u2014 import and export translations in CSV, PO, JSON, and ZIP formats.","7":"Settings \u2014 scanner, switcher placement and system information."}},"plugin_section":[262246],"plugin_tags":[104,22323,2342,99,2333],"plugin_category":[48],"plugin_contributors":[267814],"plugin_business_model":[],"class_list":["post-399803","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-i18n","plugin_tags-language-switcher","plugin_tags-localisation","plugin_tags-multilingual","plugin_tags-translation","plugin_category-language-tools","plugin_contributors-robword","plugin_committers-robword"],"banners":{"banner":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/banner-772x250.png?rev=3794947","banner_2x":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/banner-1544x500.png?rev=3794947","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/icon-128x128.png?rev=3794947","icon_2x":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/icon-256x256.png?rev=3794947","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-1.png?rev=3794947","caption":"Dashboard \u2014 translation progress, string types, and system overview."},{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-2.png?rev=3794947","caption":"Scanner \u2014 select post types and run a full string scan across your site."},{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-3.png?rev=3794947","caption":"Translations \u2014 source text with per-language textareas and approval status indicators."},{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-4.png?rev=3794947","caption":"Languages \u2014 add, reorder, and manage source and target languages."},{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-5.png?rev=3794947","caption":"Design \u2014 language switcher type grid with live preview wireframe."},{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-6.png?rev=3794947","caption":"Converter \u2014 import and export translations in CSV, PO, JSON, and ZIP formats."},{"src":"https:\/\/ps.w.org\/robart-metaphrii\/assets\/screenshot-7.png?rev=3794947","caption":"Settings \u2014 scanner, switcher placement and system information."}],"raw_content":"<!--section=description-->\n<p>RobArt Metaphrii is a professional WordPress translation and multilingual management plugin. It scans your site for translatable strings, lets you manage translations in a clean interface, and delivers them to your visitors automatically \u2014 with a fully customisable language switcher built in.<\/p>\n\n<p>No page builder lock-in. No external translation services required. Works with any theme.<\/p>\n\n<p><strong>String Scanner<\/strong><\/p>\n\n<p>The built-in scanner reads your theme's PHP files, your posts, pages and custom post types (titles, content and excerpts), navigation menus, widgets and image text, and extracts the translatable strings. A duplicate check skips text it has already found. Run it at any time to pick up new or updated content; existing translations are preserved.<\/p>\n\n<p><strong>Translation Editor<\/strong><\/p>\n\n<p>Each string appears as a card with the source text on the left and a textarea per active language on the right. Translations save automatically on blur. Filter by status \u2014 Untranslated, Draft, Needs Review, Complete \u2014 or search by source text.<\/p>\n\n<p><strong>Language Switcher<\/strong><\/p>\n\n<p>A Dropdown switcher, placed anywhere with the <code>[ramph_switcher]<\/code> shortcode, with full design controls for colours, border, radius, flag size and name format. It includes theme reset CSS to prevent bleed-in from your active theme.<\/p>\n\n<p><strong>Import and Export<\/strong><\/p>\n\n<p>Export your translation strings as CSV, POT or JSON, as a plain file or compressed (ZIP or GZIP). Import back from CSV, PO\/POT or JSON, plain or inside a ZIP or GZIP. Strings are merged \u2014 existing translations are not overwritten unless you supply a replacement.<\/p>\n\n<p><strong>Google Sheets Workflow<\/strong><\/p>\n\n<p>Export as CSV, open in Google Sheets, use the free GOOGLETRANSLATE formula to fill translations in bulk, paste values, download, and import back. The Converter panel includes a step-by-step tutorial.<\/p>\n\n<p><strong>Cookie Persistence<\/strong><\/p>\n\n<p>The visitor's language choice is saved in a cookie and restored on their next visit.<\/p>\n\n<h4>Free Features<\/h4>\n\n<ul>\n<li>Translate your site into as many languages as you like<\/li>\n<li>Scan theme files, posts, pages, custom post types, menus, widgets and image text for translatable strings<\/li>\n<li>Manual translation editor with status tracking (Untranslated \u2192 Draft \u2192 Needs Review \u2192 Complete)<\/li>\n<li>Dropdown language switcher<\/li>\n<li>Search-engine friendly: hreflang links, language-aware canonical URLs, and a sitemap per language in WordPress's built-in sitemap<\/li>\n<li>CSV, POT and JSON export; CSV, PO\/POT and JSON import (plain, ZIP or GZIP)<\/li>\n<li>Cookie-based language persistence<\/li>\n<li>Design controls \u2014 colours, border, radius, flag size, name format, separator<\/li>\n<li>Dashboard with translation progress, string type breakdown, scanner status<\/li>\n<\/ul>\n\n<h4>PRO Features<\/h4>\n\n<p>Metaphrii Pro is a separate add-on that extends the free plugin:<\/p>\n\n<ul>\n<li>More switcher styles: Inline, Flags Only, Floating Blob and Tabs (docked to the screen edge); Premium adds Inject (into any element on the page)<\/li>\n<li>Scan JavaScript files, other plugins, ACF fields and page-builder content (Elementor, WPBakery, Beaver Builder, block attributes)<\/li>\n<li>AI auto-translation via DeepL, Google Translate, and OpenAI (provider chain with automatic fallback)<\/li>\n<li>AI usage tracking per provider with visual progress bars<\/li>\n<li>Custom CSS editor with live preview (CodeMirror)<\/li>\n<li>Priority support<\/li>\n<\/ul>\n\n<h3>Uninstall<\/h3>\n\n<p>When you delete RobArt Metaphrii from the Plugins screen, the uninstall script removes all plugin data from your database, including all strings, translations, language records, and plugin options.<\/p>\n\n<p>Your posts, pages, and site content are not affected.<\/p>\n\n<h3>Disclaimer<\/h3>\n\n<p>RobArt Metaphrii is provided as-is, without warranty of any kind. Rob Snow \/ Rob Art | WordPress Development accepts no responsibility or liability for data loss or any damage arising from the use of this plugin. You are solely responsible for ensuring your use of this plugin complies with applicable law in your jurisdiction.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin, as distributed on WordPress.org, does not connect to any external service. The scanner, translation editor, language switcher and translator all run on your own site.<\/p>\n\n<p>The separate Pro version (sold and downloaded from robart-illustration.eu, not part of this plugin) uses the services below. They are listed here so you know what Pro does before you buy it.<\/p>\n\n<p>Pro AI translation sends the text you choose to translate, and nothing else, to the provider you configure, using your own API key:<\/p>\n\n<ul>\n<li><strong>DeepL<\/strong> \u2014 <code>https:\/\/api-free.deepl.com<\/code> or <code>https:\/\/api.deepl.com<\/code> \u2014 to translate strings using your DeepL API key. DeepL's terms apply: https:\/\/www.deepl.com\/en\/pro-license<\/li>\n<li><strong>Google Cloud Translation<\/strong> \u2014 <code>https:\/\/translation.googleapis.com<\/code> \u2014 to translate strings using your Google API key. Google's terms apply: https:\/\/cloud.google.com\/terms<\/li>\n<li><strong>OpenAI<\/strong> \u2014 <code>https:\/\/api.openai.com<\/code> \u2014 to translate strings using your OpenAI API key. OpenAI's terms apply: https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<\/ul>\n\n<p>Pro's licence check contacts the Rob Art licence server at <code>https:\/\/robart-illustration.eu<\/code> to verify your licence key. It sends the key, the plugin name and your site address when you activate or deactivate a licence, once a day in the last 15 days before a yearly licence renews, and when checking for Pro updates. Privacy policy: https:\/\/robart-illustration.eu\/privacy-policy\/<\/p>\n\n<p>No visitor data is sent to any service.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For documentation, guides, and FAQs visit the <a href=\"https:\/\/robart-illustration.eu\/plugins-wordpress-development\/help-documentation-wp\/\">Help &amp; Documentation<\/a> page.<\/p>\n\n<p>For bug reports or feature requests, please use the support forum on the plugin page or contact us via the <a href=\"https:\/\/robart-illustration.eu\/plugins-wordpress-development\/robart-metaphrii\/\">RobArt Metaphrii plugin page<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Download the RobArt Metaphrii plugin zip file.<\/li>\n<li>In your WordPress admin, go to <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Choose the downloaded zip file and click <strong>Install Now<\/strong>.<\/li>\n<li>Once installed, click <strong>Activate Plugin<\/strong>.<\/li>\n<li>The setup wizard launches automatically on first activation and walks you through database setup, source language, and first target language.<\/li>\n<\/ol>\n\n<p>Alternatively, install via FTP by uploading the <code>robart-metaphrii<\/code> folder to <code>\/wp-content\/plugins\/<\/code> and activating from the Plugins screen.<\/p>\n\n<p>After activation:<\/p>\n\n<ol>\n<li>Go to <strong>RobArt Metaphrii \u2192 Languages<\/strong> and add your target languages.<\/li>\n<li>Run the scanner via <strong>RobArt Metaphrii \u2192 Scanner<\/strong> to detect strings.<\/li>\n<li>Translate strings in <strong>RobArt Metaphrii \u2192 Translations<\/strong>.<\/li>\n<li>Configure your language switcher in <strong>RobArt Metaphrii \u2192 Design<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20robart%20metaphrii%20free%3F\"><h3>Is RobArt Metaphrii free?<\/h3><\/dt>\n<dd><p>Yes. The free plugin translates your site into as many languages as you like and includes the scanner, translation editor, Dropdown switcher, and CSV\/PO\/JSON import and export. Metaphrii Pro is a separate add-on that adds more switcher styles, scan areas, AI auto-translation and Custom CSS.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20remove%20metaphrii%20pro%3F\"><h3>What happens if I remove Metaphrii Pro?<\/h3><\/dt>\n<dd><p>The free plugin keeps working with all your languages and translations. A Pro switcher style shows as the Dropdown until Pro is added again.<\/p><\/dd>\n<dt id=\"will%20translations%20survive%20a%20plugin%20update%3F\"><h3>Will translations survive a plugin update?<\/h3><\/dt>\n<dd><p>Yes. Translations are stored in the database and are not affected by plugin updates.<\/p><\/dd>\n<dt id=\"what%20url%20strategy%20is%20used%20for%20language%20switching%3F\"><h3>What URL strategy is used for language switching?<\/h3><\/dt>\n<dd><p>Currently query string (<code>?lang=fr_fr<\/code>). Subdirectory routing is planned for a future release.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20widget%20content%20or%20menus%3F\"><h3>Can I translate widget content or menus?<\/h3><\/dt>\n<dd><p>Yes. The scanner picks up widget text and menu labels, and their translations appear on your site alongside post titles, content, excerpts, image alt text and Gutenberg blocks.<\/p><\/dd>\n<dt id=\"why%20does%20my%20switcher%20show%20a%20bullet%20point%3F\"><h3>Why does my switcher show a bullet point?<\/h3><\/dt>\n<dd><p>This is caused by theme CSS bleeding into the switcher list. RobArt Metaphrii includes <code>!important<\/code> resets for this, but some themes may still override them. Add targeted overrides in Appearance \u2192 Customize \u2192 Additional CSS (or your theme's stylesheet).<\/p><\/dd>\n<dt id=\"does%20metaphrii%20translate%20automatically%3F\"><h3>Does Metaphrii translate automatically?<\/h3><\/dt>\n<dd><p>No. You write or paste translations in the editor, or fill them in bulk with the Google Sheets workflow and import them. AI auto-translation is part of the separate Metaphrii Pro add-on.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Changed: translate your site into as many languages as you like, and edit every language on each row of the translation editor.<\/li>\n<li>Changed: the theme scanner now reads PHP files with PHP's own tokenizer, so the plugin no longer bundles any third-party libraries.<\/li>\n<li>Security: imported translations are filtered the same way as text typed in the editor, and every translation is checked again before it appears on your site.<\/li>\n<li>Security: switcher markup supplied by add-ons is filtered before it is shown.<\/li>\n<li>Fixed: the Dashboard widget no longer causes a database error before setup is finished.<\/li>\n<li>Fixed: the FAQ now says what the plugin does: widget text and menus are translated.<\/li>\n<li>Changed: the scanner reads every post, page and media item in batches, however many there are.<\/li>\n<li>Fixed: the Design page's switcher styles did not respond to clicks.<\/li>\n<li>Fixed: the login page no longer follows the language chosen on the front end.<\/li>\n<li>Fixed: ZIP imports now accept JSON files, and import temp files are cleaned up.<\/li>\n<li>Fixed: the readme and user manual now describe only what the free plugin does.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>New: translations now appear on your site for widget text, image alt text and Gutenberg blocks, as well as page and post content, menus and theme text. Pro also covers Elementor and ACF fields.<\/li>\n<li>New: SEO for each language: hreflang links with an x-default, canonical links that keep the chosen language (including with Yoast SEO and Rank Math), and a sitemap for each language in the WordPress sitemap.<\/li>\n<li>New: the Scanner tells you when a scan stopped at its limit, so you know not everything was scanned.<\/li>\n<li>New: Divi is now detected for page-builder scanning.<\/li>\n<li>Changed: the free plugin includes unlimited languages, the Dropdown switcher, and scanning of theme files, content, menus, widgets and alt text. Pro adds more switcher styles, JavaScript, plugin, ACF and page-builder scanning, and AI translation.<\/li>\n<li>Changed: the plugin no longer contacts any outside server. Licence activation now lives in the separate Pro version.<\/li>\n<li>Changed: the Scanner's code library now loads only while a scan runs, so it no longer clashes with other plugins that bundle a different version of it (Plugin Check, for example).<\/li>\n<li>Changed: the Scanner's switches follow the content types you tick, the duplicate checker follows Content Types, and Gutenberg options are greyed out when the block editor is turned off.<\/li>\n<li>Changed: Source Language in Settings is now shown read-only; set it in the setup wizard.<\/li>\n<li>Changed: Browser Language Detection and subdirectory language URLs are marked \"coming soon\". They were shown before but did not work yet.<\/li>\n<li>Fixed: saving Settings no longer wipes your Design settings.<\/li>\n<li>Fixed: the Inject switcher style now loads its dropdown styling and script.<\/li>\n<li>Fixed: the language dropdown in navigation menus now opens properly, including inside mobile menus.<\/li>\n<li>Fixed: language links on sites using plain permalinks no longer jump to the home page.<\/li>\n<li>Fixed (Pro): saving Settings no longer clears stored AI provider keys, and Pro design settings now save.<\/li>\n<li>Fixed (Pro): the Deactivate Licence button now works, and activating a key from the upgrade window no longer fails.<\/li>\n<li>Changed: database queries hardened: table names are restricted to safe characters and escaped, and lists of values are passed as prepared placeholders.<\/li>\n<li>Removed: the unused \"Scan Frontend\" setting and the empty Post Content box in the Scanner.<\/li>\n<\/ul>\n\n<h4>0.3.9<\/h4>\n\n<ul>\n<li>Fixed (Pro): Pro features no longer switch off on pages loaded over plain http. The licence check now uses your saved site address, which is the same for http and https.<\/li>\n<\/ul>\n\n<h4>0.3.8<\/h4>\n\n<ul>\n<li>Added: themes and plugins can hand editable text (such as Customizer values and menu names) to the scanner, so it can be translated like other theme text.<\/li>\n<li>Fixed: a language chosen from a link or a theme's own switcher now stays selected on the following pages.<\/li>\n<li>Fixed: translated page content now keeps its paragraphs and formatting.<\/li>\n<li>Fixed: line breaks pasted into the translation editor no longer break the layout of translated pages.<\/li>\n<li>Fixed: the Manage Translations tab counts now update as you save, approve, flag or delete strings, without reloading the page.<\/li>\n<\/ul>\n\n<p>Older versions (0.3.7 and earlier) are listed in changelog.txt in the plugin folder.<\/p>","raw_excerpt":"Make your WordPress site multilingual \u2014 scan strings, manage translations, and show a language switcher to your visitors without touching your theme.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/399803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=399803"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/robword"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=399803"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=399803"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=399803"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=399803"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=399803"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=399803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}