Translate builder content
Builder support depends on where the builder stores its content. POM Translate has a dedicated Visual Composer path for post_content containing [vc_ shortcodes. Other builders are supported only when their visitor-facing text is available through normal post content, a registered translatable meta key, or a product-specific integration.
Do not assume that enabling Content exposes every builder control.
Identify the storage model
Before translation, create a small test page containing:
- a heading;
- a rich-text component;
- a button with label and URL;
- an image with alternative text;
- a repeated or nested component.
Publish or privately publish it, save, and open Manage translations. Compare the table with the builder screen.
If important text is absent, determine whether it lives in:
- ordinary
post_content; - Visual Composer shortcodes;
- a post meta key;
- a reusable template object;
- a global widget or software option.
Each storage family requires the matching translation surface.
Work with Visual Composer
When post_content contains [vc_, POM Translate automatically chooses its Visual Composer parser. It extracts supported text segments and attributes while creating a skeleton for the shortcode structure.
POM Theme declares its translatable module fields independently of the editor. These include titles, subtitles, button text, accessible labels, finder labels, form messages, and listing text. The same declarations apply to shortcodes used outside Visual Composer rows. These fields are discovered even when the WPBakery editor is not loaded, including translation-manager background requests. URLs, query settings, IDs, and visual controls remain part of the layout.
Timeline titles, descriptions, and date labels appear as individual Shortcode group field rows. Translate their text normally; the parameter-group structure is reconstructed automatically. Group configuration, including CSS classes, is preserved. Code and script modules are not treated as prose. Rich-text attributes retain their HTML, quote delimiters, and paragraph breaks. Standalone HTML alt, title, placeholder, and aria-label attributes are extracted alongside builder text. HTML elements marked with data-pom-translate="skip" retain their content, including enclosed shortcodes.
For an existing page, save the source page or open Generate pending translations and use Process all to discover these fields. Translate pending only processes rows already stored and does not discover missing fields. Then open Translate contents, filter by the page's Object ID, and confirm that its headings and button labels appear. Translate the new pending rows and check the page in the target language. A completion percentage covers discovered strings; compare it with the visible page content before considering the page finished.
Translate only the rows shown in Translate contents. Retain protected markers, and never paste a rebuilt [vc_row] tree into a single field.
After saving, inspect:
- row and column order;
- text blocks;
- button labels and destinations;
- raw HTML components;
- nested shortcodes;
- responsive visibility;
- reusable or templated elements.
Work with meta-based builders
Enable Meta for the post type, but understand that this switch is only one prerequisite. POM Translate processes metadata keys registered as translatable; it does not scan every post-meta record.
Structured arrays and serialized builder documents are not ordinary text fields. They need an integration that exposes stable human-readable strings and restores the builder schema safely.
If a registered text meta row appears as Field: key_name, translate its content without altering any protected tokens.
Separate content from controls
Translate:
- visible headings and paragraphs;
- button labels;
- image alternatives and captions when exposed;
- visitor-facing form labels;
- accessible descriptions.
Do not translate:
- element IDs;
- CSS classes;
- breakpoints;
- animation names;
- template identifiers;
- colors, dimensions, or numeric settings;
- internal URLs unless handled by the URL translation layer.
Handle builder revisions
Moving or replacing components can change structural keys. Saving the source causes POM Translate to clean up rows no longer used and regenerate changed rows. Their prior translations may disappear when the source identity changes.
Finish major layout work before linguistic review. After later design edits, check the locale percentage and filter Pending rather than assuming only visible copy changed.
Decide whether the builder is supported
A successful test requires:
- every intended visible value appears once;
- configuration values do not appear as prose;
- saved target text renders in the correct component;
- nested and repeated elements stay aligned;
- a source layout edit produces understandable pending work;
- mobile output remains valid.
If those checks fail, do not translate the builder at scale. Register its text through supported metadata or implement a stable integration first.
Continue with Translate custom fields for text stored outside post_content.