WPML

Before You Start

Install and activate these plugins:

Build the form in Ninja Forms in your site’s source language, including any Multi-Step structure, Conditional Logic, validation copy, and the Actions you need (Success Message, Submission Redirect, Email, integration Actions). Send the form for translation after the form is functionally complete.

Translate Everything Automatically Handles This for You

If your site has Translate Everything Automatically turned on, you don’t need to send the form for translation manually. WPML picks up new and updated forms alongside the rest of your content and translates them in the background. The page-insertion step below still applies, but the send the form for translation step is automatic. The rest of this page describes the manual path for sites on Translate Some: You Choose What to Translate (or for forms you want to translate ahead of the automatic queue).

Send the Form for Translation

  1. Open WPML > Translations > Dashboard.
  2. Expand the Ninja Forms section.
  3. Tick the form you want to translate.
  4. Choose a translation method: PTC (recommended), your translator, or Translate myself.
  5. Click Translate.

Fields, options, Actions (Success Message, Email, Submission Redirect, integrations), and per-field validation messages all come into the same translation job.

Insert the Form Into Your Translated Pages

Ninja Forms sits inside a page or post, usually through the Ninja Forms block or the [ninja_form id="X"] shortcode. The multilingual insertion rule:

Use the same block or shortcode on every language version of the page. Don’t create a separate form per language.

The flow:

  1. Build the form once in your source language.
  2. Send the form for translation (or let Translate Everything Automatically pick it up).
  3. Insert the form on the source-language page using the Ninja Forms block or the [ninja_form] shortcode.
  4. Translate the page through WPML > Translations > Dashboard the same way you’d translate any other page. The form embed is preserved on the translated page.
  5. When a visitor opens the translated page, Ninja Forms Multilingual serves the form in the visitor’s language automatically – same form ID, same shortcode, translated content.

You don’t need a different form ID per language. The translation is linked to the source form; Ninja Forms Multilingual resolves the right-language version at render time.

The exception – when you genuinely want different forms per language. If you need structurally different forms per language (different fields, different Actions, different logic), build separate Ninja Forms (one per language) and insert each one’s shortcode on the matching language version of the page using the WordPress editor for that translation. That’s the only situation where shortcodes diverge across languages.

Page-Builder Gotcha

If your page is built in Divi, Elementor, or another page builder that wraps shortcodes in its own text module, the shortcode may not always survive translation cleanly. If the translated page shows the source-language form, open the translated page in the page builder and re-insert the form’s block or shortcode there. Native WordPress block editor and classic editor don’t have this issue.

Field Labels and Field Types

Every Ninja Forms field label, placeholder, and option appears in the translation job. The full field catalogue translates: text, paragraph, name, email, address, phone, list (select, radio, checkbox, multiselect), number, date/time, file upload, submit.

Repeater Fields translate row-level: the add-row button label and each per-row field label sit in the translation job. Translators see the Repeater structure intact with each subfield’s label as a translatable row.

Image Select Fields

Image Select Fields pair a thumbnail with a text label. Ninja Forms Multilingual translates the label per language while the image stays shared. Picture-based selectors work identically in every language; only the captions translate.

Multi-Step Forms

For Multi-Step Forms, each step heading and the per-step navigation buttons (Previous, Next, Submit) translate as their own rows. Per-step Conditional Logic survives translation. The value map keeps the underlying choice values aligned across languages.

After translation, walk the multi-step flow in each language to confirm the navigation reads naturally and that conditional branching still fires on the right steps.

Layout & Styles

Ninja’s Layout & Styles designer outputs translate without losing the layout. The grid, columns, and visual styling stay; only the string content changes per language. No special steps: translate the form and the layout follows.

Save Progress

For forms with Save Progress enabled, the visitor-side prompts translate:

  • Save Progress button label.
  • Resume-link email subject and body.
  • The success message after saving.

All three sit in the translation job. After translation, test by saving partway through a form in each language and confirming the resume email arrives in the right language.

Per-Field Validation Messages

Each field carries its own validation copy: required-field error, format error, custom validation message. Each one appears in the translation job. Anti-Spam and Honeypot copy translates through WPML String Translation (not the form-translation job).

Success Message Action and Submission Redirect Action

The Success Message Action’s inline thank-you text translates per language. The Submission Redirect Action’s URL is translatable too. Set a different thank-you URL for each language so visitors land on a language-matched page after submission.

Email Action

Every Email Action on the form translates independently. To, From Name, Subject, and Email Message all appear in the translation job. Forms with multiple Email Actions (admin notification + visitor confirmation, for example) translate each Action separately so the per-language copy is independent.

One Known Limitation

Merge tags inside Email Action templates don’t translate per language. The merge-tag insertion uses the source-language template, so the form data substitutes in but the surrounding sentences stay in the source language. Tracked on the errata page. Workaround: build the surrounding sentences without merge tags wherever the language difference matters, or accept the limitation for low-stakes copy.

Integration Actions

Ninja Forms’ Actions architecture means every integration is a per-form workflow step. Every Action’s visitor-facing copy translates:

  • Webhook Actions. The request body and any visitor-facing labels translate; field values stay canonical so receiving endpoints don’t break.
  • Mailchimp / AWeber / Constant Contact / ActiveCampaign / Campaign Monitor / CleverReach / Drip / EmailOctopus / Emma / Kit / MailerLite / MailPoet. List / segment / tag labels translate if they live as form-level strings.
  • HubSpot / Salesforce / ZohoCRM. Pipeline / stage / form labels translate.
  • Zapier / Slack / Trello. Channel, label, and webhook-form-name strings translate.

For payment integrations (Stripe, Authorize.net, Elavon, PayPal), purchase descriptions and visitor-facing button labels translate. Run a test transaction in each language using the payment processor’s test mode and confirm receipt copy lands correctly.

A Known Limitation – PDF Form Submission

The Ninja Forms PDF Form Submission add-on doesn’t generate PDFs when Ninja Forms Multilingual is active on forms with translations configured. This is tracked on a forum thread. Workaround: disable the PDF add-on for translated forms until compatibility is resolved.

Common Pitfalls

  • Email Action body has untranslated merge-tag surroundings. Known limitation (see above). Restructure the email body to put translated text outside merge-tag insertions, or accept the limitation.
  • Admin notification emails arrive in the source language. Confirm the Email Action you’re testing has been re-sent for translation after your last edit. If still broken, check the recurring forum thread for status.
  • Conditional Logic stops firing in translated forms. A choice label was edited in the source language after translation. Re-send the form for translation to refresh the value map.
  • PDF Form Submission stops working. Disable the add-on or remove the translation pending compatibility resolution.

Written by Amir · Last updated July 2, 2026