Product Update - 14 min read

v1.7: Forms, SureCart, the Jet Suite & Switchable Default Language

Published June 26, 2026 - Meep Tech Team

Meep AI Translator v1.7 updates

TL;DR

The v1.7 line is the biggest arc we've shipped. Where v1.6 was about making WooCommerce fully language-aware, v1.7 widened the plugin from "Elementor & WooCommerce" into a general multilingual platform: forms, e-commerce beyond WooCommerce, the entire Crocoblock Jet suite, custom post types and custom fields, and the routing depth needed to hold it all together. This post covers everything from v1.6.2 through v1.7.55.

Rather than walk 50 point releases in order, we've grouped the work into the themes that mattered. The complete per-version changelog is at the end.

Contact Form Translation

Forms were the most-requested gap. v1.7 translates the four most popular form plugins, each through its own native render hook so you keep a single canonical form instead of a separate copy per language:

  • Contact Form 7 — visible text nodes in the form markup (via wpcf7_form_elements and DOMDocument) plus the response messages.
  • WPForms — field labels, descriptions, placeholders, choices, submit text, and confirmation messages via wpforms_frontend_form_data.
  • Gravity Forms — field labels, choices, button text, and confirmations via gform_pre_render and GFAPI.
  • JetFormBuilder — field labels, descriptions, placeholders, option labels, and button text via render_block_data.

A dedicated Contact Forms settings section gives forms their own Scan and Translate buttons. The form logic and submitted data are never touched — only the visible text is swapped at display time.

SureCart Product Translation

SureCart is API-first — products are rendered server-side from a cloud model rather than ordinary post fields. We translate them like WooCommerce products: each sc_productappears on the dashboard's Products tab with the full translate-and-review flow, name and HTML description as editable segments.

On the front end, a single model filter (surecart/product/get_attribute) returns the translated name and description everywhere the product renders — product pages, collection grids, and checkout line items. A SureCart settings section (shown only when SureCart is installed) lets you toggle the whole thing on or off.

The Jet Suite

Crocoblock's Jet plugins each render in their own way, so each needed its own integration:

  • JetEngine — Listing Grids and listing templates render in the visitor's language; the listing's _elementor_data is swapped to the translation so static labels follow. A collapse-with-fallback model shows the published current-language item if it exists, otherwise the original — no duplicates, no empty grids.
  • JetThemeCore — single, header, footer, and archive templates render the translated version by swapping the template ID at JetThemeCore's own filters, bypassing caching issues.
  • JetSmartFilters — option labels resolve from translated term meta, while the "Show all" option and admin-entered labels resolve through the custom-string map, working through the indexer and AJAX re-renders.

An "Additional template post types" setting lets you mark extra builder template types as translatable without touching code.

Custom Fields, CPTs & Elementor v4

v1.7 made the plugin truly content-type agnostic. A Custom Types tab brings any public CPT into the dashboard, and a generic custom-field engine copies every meta field from source to translation — galleries, media, dates, numbers, relations and repeaters — while translating text-type fields across JetEngine, ACF, Meta Box, Pods and plain custom fields.

A heuristic text detector translates human-readable field values even when a field's definition can't be read, leaving slugs, IDs, URLs and numbers alone. ACF relational fields (relationship, post object, page link) are remapped to point at the target-language posts. SEO coverage grew to include SEOPress alongside Yoast and Rank Math.

On the Elementor side, v4 atomic widgets (e-heading, e-paragraph) are now parsed and translated, and theme-builder templates can be auto-translated when a page is translated.

Switchable Default Language & Routing Depth

The headline of the latest releases is a Switch Default Languagemigration. Changing which language loads at the root of a site isn't a config toggle — the original content owns the clean slugs. The new tool (Settings → Tools) re-homes slug ownership per translation group, flips the default, and adds 301 redirects for the old URLs, with a dry-run Preview first.

Two related fixes landed alongside it. Translated subpages now nest under the translated parent (/de/eltern/kind/) instead of the source parent, and Repair Links can re-parent existing translated children. And the internal-link localizer now also rewrites root-relative links (href="/path/"), the common case the absolute-URL matcher used to miss.

Underneath, CPT routing got a four-layer resolution model so JetEngine, SureCart and Pods singles resolve under a language prefix even before rewrite rules flush, and hierarchical multi-segment URLs no longer 404.

Dashboard, Review & Settings UX

The management experience grew up over v1.7:

  • Compact icon action buttons with a ⋯ overflow menu, and a per-translation Retranslate action for redoing a page after editing Exclude Words.
  • Bulk actions for translations — checkboxes and a sticky bar with Publish selected, Retranslate selected, and Clear, scoped to the active tab.
  • A permanent Publish / Update button in the review screen, editable custom-field segments, and de-duplicated repeated strings.
  • Language switcher themes, border-colour and flag-size controls, and a "Show language names on mobile" option.
  • Conditional settings sections that show a detected / not-detected notice and reveal their controls only when the relevant plugin is active.

A scope-aware Scan reports real translatable string counts per plugin (for example, "2 forms → 18 strings") so you can see exactly what a translate pass will cover.

Reliability & The WooCommerce Tail

The early v1.7 work also closed out several v1.6-era WooCommerce and stability issues: loop-level product localization for Elementor Products / Loop Grid, Elementor Pro Loop Grid via elementor/query/query_args, language-switcher link protection, and configurable "Exclude Paths from Language Routing."

A subtle but important fix: meta and SEO field translations were being discarded because the write loop used positional indexing against an associative map returned by the translation engine. All SEO meta and custom-field translations now write correctly. We also added a re-entrancy guard that stops template-heavy pages from exhausting PHP memory when Elementor templates reference each other.

Full Changelog (v1.6.2 → v1.7.55)

v1.7.55

  • Fixed: Translated subpages now nest under the translated parent (e.g. /de/eltern/kind/) instead of the source parent — both creation paths use the new get_translated_parent_id() helper.
  • Fixed: Root-relative internal links (href="/path/") now localized — catches links the absolute-URL matcher missed; skips admin/asset/protocol-relative paths and only rewrites to published translations.
  • Added: Repair Links now re-parents translated child pages — finds children still attached to a wrong-language parent and re-attaches them, reporting "N child pages re-parented."

v1.7.54

  • Fixed: CPT archive ordering — translated posts no longer scramble date ordering; listing collapse re-sorts each group by source post date.
  • Added: Retranslate row action in every translation's ⋯ menu — re-runs translation from source with confirm (e.g. after adding Exclude Words).
  • Added: Bulk actions for translations — checkboxes + sticky bar with Publish selected, Retranslate selected, and Clear; tab-scoped with sequential progress.
  • Added: Switch Default Language helper text — "translate everything first, then migrate" guidance in Language Management and Tools sections.
  • Improved: Default-language migration skips self-mapping no-ops and guards against same-post groups.
  • Fixed: Stale upgrade notice — added current version entry to == Upgrade Notice ==.

v1.7.53

  • Added: SureCart settings section with Enable/Disable toggle — appears only when SureCart is installed; front-end render hook respects the toggle.
  • Improved: WooCommerce and Elementor Templates sections now show heading + detected/not-detected notice even when the plugin is absent; controls are hidden until the plugin is active.
  • Improved: Consistent conditional UI pattern across all integration sections (forms, filters, commerce, templates).

v1.7.52

  • Fixed: JetFormBuilder/WPForms "No strings found" — collector now queries draft/pending/private forms alongside published, and dropped the has_blocks gate.
  • Fixed: JetSmartFilters term labels not translating — collector now pulls taxonomy option labels via _source_taxonomy so Auto-translate covers the full filter.
  • Improved: Scan strings is now scope-aware — Contact Forms section reports forms only, String Translations section reports filters only.
  • Improved: Scan reports actual translatable string counts per plugin (e.g. "2 forms → 18 strings").
  • Added: Contact Forms section split from String Translations — forms have their own scan/translate buttons; JetSmartFilters lives in String Translations with "Used in" labels.
  • Fixed: Dropdown select arrows restored — authoritative caret CSS rule appended last to win the cascade.
  • Improved: Advanced Settings has its own Save button; Inspect Elementor Data input widened; translate buttons in one flex row.

v1.7.51

  • Added: Contact form translation — Contact Form 7, WPForms, Gravity Forms, and JetFormBuilder translated at render through each plugin's own hook (fields, options, buttons, messages included).
  • Added: SureCart products now translate like WooCommerce — sc_product on the Products tab with full translate + review (name + HTML description), rendered on product pages, collection grids, and checkout.
  • Added: JetSmartFilters label translation — option labels from translated term meta; "Show all" and admin labels via the custom-string map; works through the indexer and AJAX re-renders.
  • Added: "Scan forms" tool — reports which forms, filters, and SureCart products were detected before you translate.
  • Added: "Show language names on mobile" switcher option — flag-only on desktop, names in the mobile menu.
  • Improved: Auto-translate Strings now collects labels from all supported form and filter plugins automatically.
  • Updated: Listing and documentation refreshed to reflect form, SureCart, and Jet-suite support.

v1.7.50

  • Added: SureCart product translation — Products tab with full translate + review flow (title + HTML description as editable segments, block-template post_content skipped).
  • Added: SureCart front-end translation — surecart/product/get_attribute model filter returns translated title/description on non-default languages across product pages, collection grids, and checkout line items.
  • Cleaned up: SureCart removed from the string collector/scan tools — products use the content translation path, not the string table.

v1.7.31

  • Added: JetSmartFilters label translation — term option labels from translated term meta; works despite the indexer caching default-language names.
  • Added: JetFormBuilder form translation via render_block_data.
  • Added: WPForms form translation via wpforms_frontend_form_data.
  • Added: Gravity Forms translation via gform_pre_render + GFAPI.
  • Added: Contact Form 7 translation — visible text nodes via wpcf7_form_elements (DOMDocument), response messages via wpcf7_display_message.
  • Improved: Auto-translate Strings scanner now collects strings from all five form/filter plugins automatically.

v1.7.30

  • Fixed: Language switcher dropdown not opening — Astra clones the switcher into the mobile menu causing double-binding; toggle script is now idempotent.
  • Added: Permanent Publish/Update button in the review screen — Publish for drafts, Update (re-translate from source) for published translations.
  • Added: "Show language names on mobile" setting — compact flag-only on desktop, name visible in the mobile menu. Pure CSS.

v1.7.29

  • Fixed: JetThemeCore single/header/footer/archive templates render in the correct language — swaps the template ID at JetThemeCore's own filters, bypassing caching issues.

v1.7.28

  • Fixed: Astra header button/link localization — internal links in the Astra header are pointed at the current-language translation via output buffering; switcher cross-language links preserved.
  • Improved: Template swap debug logging for easier diagnosis of JetThemeCore/JetEngine render paths.

v1.7.27

  • Fixed: JetThemeCore templates swap to their translation at Elementor's render layer (elementor/frontend/builder_content_data).
  • Improved: Review screen de-duplicates identical strings (repeated default/global widget text) so the list stays readable.

v1.7.26

  • Fixed: JetEngine Listing Grid language handling — collapse-with-fallback shows the published current-language translation if it exists, otherwise the original. No duplicates, no empty grids.
  • Added: "Additional template post types" setting — treat extra slugs as translatable templates without code changes.
  • Removed: Bulk "Delete selected translations" bar — redundant with the per-row ⋯ menu.
  • Added: Publish button for draft translations in the dashboard menu and review header.

v1.7.25

  • Fixed: Premium Addons repeater text (item_txt and other _txt fields) now translates.
  • Fixed: JetEngine Listing Grid showing wrong-language posts — queries scoped to the current language via tax_query.
  • Added: JetEngine listing template translation — listing _elementor_data swapped at render so static labels display in the visitor's language.
  • Added: Language Switcher Border Color and Flag Size controls.
  • Added: Astra header button localization.

v1.7.24

  • Added: "Auto-translate templates when translating a page" setting (default off) — translates embedded and theme-builder Elementor templates, guarded against re-entry.
  • Fixed: Pages and Posts disappeared from the dashboard — the CPT-hiding filter accidentally excluded core types; now always keeps page/post/product.

v1.7.23

  • Fixed: Non-viewable CPTs (e.g. JetFormBuilder forms) no longer appear on the dashboard; added the aitrfoel_dashboard_post_types filter.
  • Added: Language switcher themes — Default, Light border, Minimal, Pill.
  • Added: Separate "Show language names inside the dropdown list" setting.
  • Added: aitrfoel_is_translatable_elementor_field filter for whitelisting addon widget fields.
  • Added: Editable custom fields in the review screen — JetEngine/ACF/Meta Box text fields as editable segments saving to post meta.

v1.7.22

  • Fixed: CPT singles (JetEngine/SureCart/Pods) 404ing under a language prefix — four-layer resolution: a second rewrite pass at init:99, an auto-heal flush when a rule is missing, query-var-independent rewrite rules, and a runtime parse_request fallback.
  • Improved: Rewrite rules use post_type=…&name=… so CPTs with custom or disabled query vars resolve correctly.

v1.7.21

  • Fixed: Meta/SEO field translations silently discarded — the write loop used positional indexing against an associative map. All SEO and custom-field translations now write correctly.
  • Fixed: CPT 404s when JetEngine registers post types after our rewrite rules — second pass at init:99 plus auto-flush.
  • Added: SEOPress support — titles, descriptions, OG and Twitter meta.
  • Improved: Translation log reports exact field keys written.

v1.7.20

  • Fixed: Source-language detection fallback — meta-only CPTs use the post's assigned language, then the site default, instead of a hardcoded "en."
  • Added: Heuristic text detector for custom-field translation — multi-word human-readable values translated; slugs, IDs, URLs, numbers left alone.
  • Added: ACF relational field remap — relationship/post object/page link fields point at target-language posts.
  • Added: Three filter hooks for custom field copy/translate/remap behaviour.
  • Fixed: Delete handler allows any public CPT; dashboard remembers the active tab; hierarchical CPT routing resolves multi-segment URLs; custom-field text counted in word estimates.

v1.7.14

  • Added: Generic custom-field copy — all meta fields copied from source to translation; text-type fields (JetEngine + ACF) translated. Works with JetEngine, ACF, Meta Box, Pods and plain custom fields.
  • Fixed: Dashboard Custom Types tab refreshes after AJAX translation; one-time rewrite flush when a CPT first gets a translation.

v1.7.13

  • Fixed: PHP memory exhaustion on template-heavy pages — re-entrancy/cycle guard on Elementor template shortcode swapping prevents infinite recursion.

v1.7.12

  • Fixed: Action column icons replaced with inline SVGs — eliminates wrong-glyph rendering from conflicting Dashicons registrations.

v1.7.11

  • Improved: Actions column replaced with compact icon buttons + ⋯ overflow menu for destructive/secondary actions.
  • Improved: Column widths rebalanced; table wrapper set to overflow:visible so the dropdown isn't clipped.
  • Added: Translations for all 9 supported languages for the new action menu strings.

v1.7.10

  • Fixed: "Delete translations" button renders on its own line; tooltips updated for permanent deletion.
  • Added: Translations for all 9 supported languages across tools and the action menu.

v1.7.09

  • Improved: Repair Translation Links and Fix Elementor Template Shortcodes moved to the Tools section.
  • Added: Fix Elementor Template Shortcodes is now its own independent tool with separate Scan/Fix buttons.
  • Fixed: Blog prev/next navigation scopes to the viewed post's language.
  • Added: "Delete translations" button on source rows.

v1.7.08

  • Fixed: Onboarding wizard opt-in checkbox layout on narrow screens; Translate-All scan returns a readable error instead of a 500; Freemius is_migration() fatal guarded.
  • Added: Template pill shows the translated template ID with a copy button; [elementor-template id="X"] shortcodes rewritten at write time; Repair Links rewrites legacy template references.

v1.7.07

  • Added: Elementor v4 atomic widget translation — e-heading and e-paragraph parsed and translated.
  • Fixed: WooCommerce mini-cart AJAX fragments rendered in the wrong language — the endpoint URL now carries the language prefix.
  • Fixed: [elementor-template id="X"] renders the current-language translation, swapped at pre_do_shortcode_tag.

v1.7.06

  • Added: Inspect Elementor Data tool in Advanced settings (v4 atomic vs classic).
  • Fixed: Translated templates with a missing/wrong language term always get empty conditions so they don't compete with the original.

v1.7.05

  • Fixed: Elementor CSS leak into AJAX responses — document save is now buffered.
  • Added: Switcher preview updates live as options change; sidebar widget gets per-widget Show flags / Show names checkboxes.

v1.7.04

  • Fixed: Template translate errors show the actual cause; WooCommerce checkout privacy text hooks the raw option so the saved source matches.
  • Improved: String Translations gettext filter also tries the source msgid as a fallback.

v1.7.03

  • Fixed: String Translations is now separate from WooCommerce with its own nav link.
  • Added: "Used in" column showing WooCommerce origin or Custom.
  • Fixed: Auto-translate strings data no longer wiped on reload.

v1.7.02

  • Added: Custom Types tab in the dashboard — JetEngine and other public CPTs translatable individually and via Translate All.
  • Fixed: Auto-translate strings fills accented-text sources correctly.
  • Improved: Template retranslation memory limit, Theme Compatibility messaging, Elementor tested up to 4.1.3.

v1.7.01

  • Added: Auto-translate strings button in String Translations.
  • Fixed: Template retranslation fatal errors surface a readable message via register_shutdown_function.
  • Improved: Menu icon updated to the white Meep brand mark.

v1.7

  • Added: String Translations feature — per-language overrides for payment titles/descriptions, the checkout privacy notice, and third-party strings not covered by .mo files.
  • Improved: Translate All runs a self-chaining batch loop for much higher throughput.
  • Added: Tools hub tab linking to all maintenance tools.
  • Improved: Menu icon and label updated; AJAX language detection memoized.

v1.6.12

  • Updated Freemius SDK to 2.13.1; Elementor tested up to 4.1.3.

v1.6.3–v1.6.11

  • The WooCommerce language-isolation arc: mini-cart, cart/checkout URLs, add-to-cart redirects, translation-file loading, the AJAX detection chain, the Repair Translation Links tool, and language-switcher link protection. (Covered in detail in the v1.6 post.)

v1.6.2

  • Fixed: Loop-level product localization on the_post so Elementor Products/Loop Grid and Woo related/up-sell/cross-sell render current-language products.
  • Improved: SEO retranslation tool expanded to cover WooCommerce short-description backfill for older translations.
  • Added: Configurable "Exclude Paths from Language Routing" plus endpoint guards for default-prefix and untranslated-page redirects.

Try the latest v1.7 build

v1.7 takes Meep AI Translator well beyond Elementor and WooCommerce — contact forms, SureCart, the Jet suite, custom fields, and a real default-language migration. If your multilingual site uses any of these, it's the most capable release we've shipped.