PHPackages                             fluentform/multilingual-forms-fluent-forms-polylang - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. fluentform/multilingual-forms-fluent-forms-polylang

ActiveWordpress-plugin[Localization &amp; i18n](/categories/localization)

fluentform/multilingual-forms-fluent-forms-polylang
===================================================

Translate Fluent Forms using Polylang — field labels, validation messages, confirmation messages, and notification emails — all from Polylang's Strings translations page.

00PHP

Since May 21Pushed 2mo agoCompare

[ Source](https://github.com/sixmonkey/multilingual-forms-fluent-forms-polylang)[ Packagist](https://packagist.org/packages/fluentform/multilingual-forms-fluent-forms-polylang)[ RSS](/packages/fluentform-multilingual-forms-fluent-forms-polylang/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Multilingual Forms for Fluent Forms with Polylang
=================================================

[](#multilingual-forms-for-fluent-forms-with-polylang)

> Translate [Fluent Forms](https://wordpress.org/plugins/fluentform/) using [Polylang](https://wordpress.org/plugins/polylang/) — field labels, validation messages, confirmation messages, and notification emails — all from Polylang's *Strings translations* page.

Requirements
------------

[](#requirements)

- WordPress 6.0+
- PHP 7.4+ (tested up to 8.3)
- [Fluent Forms](https://wordpress.org/plugins/fluentform/) (free) — **required**
- [Polylang](https://wordpress.org/plugins/polylang/) or Polylang Pro — **required** (needs `pll_register_string` / `pll__`)

The plugin gates its own boot on both dependencies and emits an admin notice with an install/activate link if either is missing.

Installation
------------

[](#installation)

1. Install and activate **Fluent Forms** and **Polylang** (or Polylang Pro).
2. Clone this repo or upload the `multilingual-forms-fluent-forms-polylang` folder to `wp-content/plugins/`.
3. Activate **Multilingual Forms for Fluent Forms with Polylang** from the Plugins screen.

Usage
-----

[](#usage)

1. Edit a form → **Settings → Polylang Translations** → enable the toggle and save.
2. Open **Languages → Strings translations** in WP admin. Per-form strings appear under *Fluent Forms &lt;Form Title&gt;*, global FF settings under *Fluent Forms Global Settings*.
3. Translate the strings. The form renders in the visitor's current Polylang language; notifications and confirmations are sent in the language the submission was made in.

To stop translating a form, hit **Reset Polylang Translation** on the same tab.

Project layout
--------------

[](#project-layout)

```
multilingual-forms-for-fluent-forms-with-polylang.php  # bootstrap, dependency gating, admin notices
src/
  Controllers/
    SettingsController.php             # wires up the per-form controllers
    FormSettingsController.php         # form settings tab + AJAX + asset injection
    GlobalSettingsController.php       # global FF option translation
    RuntimeTranslationController.php   # all front-end / submission filters
  Services/
    FormTranslationService.php         # string registration, lookup, language switching
assets/admin/
  ff-polylang-settings.js              # Vue component injected into FF's settings UI

```

Development notes
-----------------

[](#development-notes)

- **No build step.** The settings UI is a hand-written Vue 2 render-function component that piggybacks on Fluent Forms' already-registered Vue runtime + Element UI. Edit `assets/admin/ff-polylang-settings.js` directly.
- **Asset injection.** When Fluent Forms' `fluentform_form_settings` script handle is registered, the JS is appended via `wp_add_inline_script(..., 'before')` so it lives inside the host bundle. Otherwise it falls back to a standalone enqueue.
- **Global strings sync.** `GlobalSettingsController` keeps a schema version + dirty flag (`_mfffpll_global_strings_schema_version`, `_mfffpll_global_strings_dirty`) so global strings are re-registered only when a tracked option changes.
- **Language resolution.** AJAX submissions carry the language via a request key (see `FormTranslationService::REQUEST_LANGUAGE_KEY`), set by the `fluentform/ajax_url` filter so Polylang's URL-based detection survives the round trip.

FAQ
---

[](#faq)

**Do I need Polylang Pro?** No. Both free Polylang and Polylang Pro work.

**Does this conflict with Fluent Forms' WPML integration?** No — this plugin only registers Polylang hooks. The two integrations don't overlap, but you should pick one translation system per site.

**My existing form already has strings — will enabling translation re-scan them?** Yes. Enabling a form registers its current strings immediately, and saving form changes refreshes them.

Contributing
------------

[](#contributing)

Issues and PRs welcome at .

License
-------

[](#license)

GPLv2 or later. See the plugin header for the full notice.

###  Health Score

19

—

LowBetter than 9% of packages

Maintenance58

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 94.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b1ffd24dcf7f3f1cd5568a4b52fe0f6f3a8fc97f08e2b096a23606e4c79184d7?d=identicon)[sixmonkey](/maintainers/sixmonkey)

---

Top Contributors

[![nkb-bd](https://avatars.githubusercontent.com/u/48018765?v=4)](https://github.com/nkb-bd "nkb-bd (16 commits)")[![sixmonkey](https://avatars.githubusercontent.com/u/15140258?v=4)](https://github.com/sixmonkey "sixmonkey (1 commits)")

### Embed Badge

![Health badge](/badges/fluentform-multilingual-forms-fluent-forms-polylang/health.svg)

```
[![Health](https://phpackages.com/badges/fluentform-multilingual-forms-fluent-forms-polylang/health.svg)](https://phpackages.com/packages/fluentform-multilingual-forms-fluent-forms-polylang)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
