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 2w 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 1w 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

20

—

LowBetter than 13% of packages

Maintenance63

Regular maintenance activity

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)
```

###  Alternatives

[php-translation/translator

Translator services

25224.8k5](/packages/php-translation-translator)[longman/laravel-multilang

Package to integrate multi language (multi locale) functionality in Laravel 5.x

5514.5k1](/packages/longman-laravel-multilang)[smmoosavi/php-gettext

Wrapper for php-gettext by danilo segan. This library provides PHP functions to read MO files even when gettext is not compiled in or when appropriate locale is not present on the system.

1926.6k1](/packages/smmoosavi-php-gettext)[amendozaaguiar/laraveles-spanish-for-jetstream

Archivos de traducción al español latinoamericano para Laravel con Jetstream (auth, pagination, passwords, validation + todas las cadenas de Jetstream).

1512.6k](/packages/amendozaaguiar-laraveles-spanish-for-jetstream)[laradevs/spanish

labels translated to spanish

166.7k](/packages/laradevs-spanish)

PHPackages © 2026

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