> ## Documentation Index
> Fetch the complete documentation index at: https://funnelfox.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Funnel localization & multi-language support

> Translate your funnels into multiple languages with FunnelFox. AI-powered translations, locale management, and multi-language setup.

Localization lets you create multiple language versions of your funnel that
automatically display based on your visitors' location and browser language.
Studies show conversion rates improve by up to 70% when users see content
in their native language.

<Warning>Each funnel can include up to 25 locales.</Warning>

<Frame>
  <img src="https://mintcdn.com/funnelfox/U5PZgc6QzPm6Q-f6/assets/localizations-context.png?fit=max&auto=format&n=U5PZgc6QzPm6Q-f6&q=85&s=121853d68cced9f4f7ab7761b735072a" width="1591" height="832" data-path="assets/localizations-context.png" />
</Frame>

## How localization works

Localizing a funnel is simple:

1. **Create locales for your funnel**: Add the countries and languages you want to support. For fast setup, you can translate content automatically with AI. Learn about [managing locales](/docs/editor/localizations#manage-locales) and [AI translation](/docs/editor/localizations#ai-translation).

2. **Automatic detection at runtime**: When a visitor lands on your funnel, FunnelFox reads their country (from IP) and language (from the browser) to pick the best locale. Learn about [locale matching logic](/docs/editor/localizations#locale-matching).

3. **Localize prices**: Show each visitor a price in their local currency. Create one price per currency in your PSP, then select the matching price in that locale's Checkout element. Learn about [pricing localization](/docs/editor/pricing-localization).

<Info>
  Localized content is part of your funnel's static build.
  You must republish after making localization changes for them to go live.
</Info>

## Manage locales

To manage locales, either:

* Click the 🌐︎ locales icon in your [Funnels list](https://app.funnelfox.com/funnels) (if you have any locales).

* Hover over the 🌐︎ globe icon at the top of the Visual editor and click **Manage locales**.

<Frame>
  <img src="https://mintcdn.com/funnelfox/Ry59CYO1w_L4CVTB/assets/funnel-settings-page.png?fit=max&auto=format&n=Ry59CYO1w_L4CVTB&q=85&s=0a7b08d088a3bc6abb26f8b7353d595d" width="1456" height="424" data-path="assets/funnel-settings-page.png" />
</Frame>

### Add new locale

1. Click **Add locale**.
2. Select **Country**.
3. Select **Language**.
4. Optionally enable **catch-all** for [broader matching](/docs/editor/localizations#locale-matching).
5. Choose whether to **Translate with AI** for instant translation.

<Tip>Use "Europe" as a country to target all 27 EU countries with one locale: AT, BE, BG, HR, CY, CZ, DK, EE, FI, FR, DE, GR, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, RO, SK, SI, ES, SE.</Tip>

<Frame>
  <img src="https://mintcdn.com/funnelfox/GhSKbSE-cJ7i5hMv/assets/localizations-create.png?fit=max&auto=format&n=GhSKbSE-cJ7i5hMv&q=85&s=0b19b1bad37cfc6fe53532a2f29003e2" alt="Creating a new locale" width="2126" height="1220" data-path="assets/localizations-create.png" />
</Frame>

### Edit localization

<Warning>
  Changes to the default locale's structure automatically apply to all
  other locales. Be careful when adding or removing elements in the
  default locale.
</Warning>

To edit content in a specific locale, switch between locales using the 🌐︎ globe icon in the editor toolbar:

<Frame>
  <img src="https://mintcdn.com/funnelfox/iN8Lr3ogo6j6Iqwc/assets/globe-icon.png?fit=max&auto=format&n=iN8Lr3ogo6j6Iqwc&q=85&s=477ba376147d660eb089f6f0e3bdbc08" alt="Language switcher in Visual Editor" width="739" height="529" data-path="assets/globe-icon.png" />
</Frame>

**You can change:**

* All text content (headlines, paragraphs, buttons)
* Images and media files
* Input placeholders and labels
* Option lists in dropdowns/radio buttons
* Error messages
* Meta tags and SEO content

**You cannot change:**

* Screen structure or flow
* Number of elements
* Element types or positions
* Actions and triggers
* Form field requirements

## Locale matching

FunnelFox picks a locale from the visitor's **country** (IP) and
**language** (browser). It checks rules top to bottom and uses the first
match. Enabling **catch-all** on a dimension makes it accept **Any** value.

| Priority | Setup              | Country | Language | Who sees it                                    |
| -------- | ------------------ | ------- | -------- | ---------------------------------------------- |
| 1        | Exact match        | US      | Spanish  | Only visitors in the US with a Spanish browser |
| 2        | Catch-all language | US      | Any      | Everyone in the US, any browser language       |
| 3        | Catch-all country  | Any     | Spanish  | Everyone with a Spanish browser, anywhere      |
| 4        | Catch-all both     | Any     | Any      | Everyone — replaces the default locale         |
| 5        | Default            | —       | —        | Visitors who match no rule above               |

When testing locale matching, use a private/incognito mode or clear your cookies and browser data to ensure accurate results.

<Info>Right-to-left languages (Arabic, Hebrew, Farsi, Urdu, and others) automatically render with reversed text and progress bar direction based on the locale's language.</Info>

<Note>
  You can override automatic selection for testing or sharing by adding a URL parameter, e.g. `?ff-locale=de-DE`. Learn more about [overriding locales via URL](/docs/editor/localizations#override-locale-via-url).
</Note>

## AI translation

FunnelFox includes built-in AI translation for fast localization:

* **During locale creation**: Enable **Translate with AI** when creating a new locale to instantly translate all content.

<Frame>
  <img src="https://mintcdn.com/funnelfox/iN8Lr3ogo6j6Iqwc/assets/translate-ai.png?fit=max&auto=format&n=iN8Lr3ogo6j6Iqwc&q=85&s=62269f262019f6090164d6b93f1ae9c0" alt="Translate with AI" width="1565" height="741" data-path="assets/translate-ai.png" />
</Frame>

* **From the funnel page**: Open the funnel in your [Funnels list](https://app.funnelfox.com/funnels) and click **Translate with AI** on any existing locale to retranslate all content or only missing keys.

AI translation takes 1-2 minutes depending on funnel size. The page displays **Processing translation with AI...** during this time. You can navigate away and return later.

<Info>AI translation doesn't translate content inside [Raw HTML elements](/docs/elements/raw). You'll need to translate that content manually by [editing](/docs/editor/localizations#edit-localization) the locale.</Info>

<Warning title="Translation quality tips">
  Review AI translations before publishing. Pay special attention to:

  * Brand names and product titles
  * Technical terms and acronyms
  * Calls-to-action (cultural adaptation needed)
  * Legal disclaimers and compliance text
  * Pricing and currency symbols
</Warning>

## Override locale via URL

For published funnels, you can override automatic locale detection by passing the `ff-locale` parameter in the URL query string. This is useful for:

* Testing different language versions without VPN
* Sharing direct links to specific language versions
* Quality assurance and review workflows
* Customer support scenarios

To do this, publish your funnel and add `?ff-locale=` followed by the locale code to the public URL:

```
https://example.fnlfx.com/welcome?ff-locale=de-DE
https://example.fnlfx.com/welcome?ff-locale=es-ES
https://example.fnlfx.com/welcome?ff-locale=fr-FR
```

The `ff-locale` parameter accepts standard ISO language codes in the format:

* `language-COUNTRY` (e.g., `en-US`, `de-DE`, `fr-FR`)
* `language` only (e.g., `en`, `de`, `fr`)

<Note>
  The `ff-locale` parameter must match one of your configured locales. If an
  invalid or non-existent locale is provided, FunnelFox falls back to
  automatic detection.
</Note>

### How override works

When a locale is set via URL parameter:

* It overrides geographic and browser language detection
* The preference persists throughout the funnel session
* Subsequent page navigations maintain the selected locale
* The parameter doesn't need to be included on every page

### Examples

**Direct link to German version:**

```
https://your-project.fnlfx.com/signup?ff-locale=de-DE
```

**Append to existing parameters:**

```
https://your-project.fnlfx.com/offer?utm_source=email&ff-locale=fr-FR
```

**Testing multiple locales quickly:**

```bash theme={null}
# Open multiple browser tabs with different locales
open https://example.fnlfx.com/?ff-locale=en-US
open https://example.fnlfx.com/?ff-locale=de-DE
open https://example.fnlfx.com/?ff-locale=es-ES
```

## Import/export translations

For professional translations or bulk editing, use the import/export feature.

<Info>Content inside [Raw HTML elements](/docs/elements/raw) can’t be imported or exported. Translate that content manually by [editing](/docs/editor/localizations#edit-localization) the locale instead.</Info>

### Export

1. Open the funnel in your [Funnels list](https://app.funnelfox.com/funnels).
2. Click **Export**.
3. Receive a TSV (Tab-Separated Values) file.

Now you can share it with translators or translation services.

The TSV file has the following structure:

```
Key                                             🌐 Default         🇩🇪 Germany • DE
screens.welcome.elements.heading.props.content  Welcome!          Willkommen!
screens.welcome.elements.button.props.text      Get Started       Loslegen
```

Each row contains:

* **Key**: Unique identifier (**don't modify it**)
* **Default column**: Original text
* **Locale columns**: Translated text for each locale

### Import

1. Ensure TSV maintains the exact structure.
2. Open the funnel in your [Funnels list](https://app.funnelfox.com/funnels).
3. Click **Import** and select your file.
4. Review changes in the editor
5. Republish to make changes live

<Warning>
  Import overwrites all existing translations for included locales.
  Always backup by exporting first.
</Warning>

## Test locales

Use a private/incognito window or clear your cookies and browser data, then follow one of the testing methods below.

### Test different locales

1. **URL Parameter**: Add `?ff-locale=xx-XX` to force a specific locale for your published funnel
2. **Use VPN**: Connect from different countries to trigger geo-detection
3. **Change browser language**: Modify browser's language preferences
4. **Use different devices**: Test with colleagues in other locations
5. **Browser extensions**: Use header modification tools to change Accept-Language

### Preview mode test

Preview mode uses the same locale detection logic as production, but it does not support the locale URL parameter.

## Locale identifiers

Your webhooks and API responses include:

* `locale`: Full locale name (e.g., "Germany • DE")
* `locale_code`: ISO format (e.g., "de-DE")

## Troubleshooting

<AccordionGroup>
  <Accordion title="Translations not showing after publish">
    Ensure you republished the funnel after making localization changes.
    Check that your test location/language matches your locale rules.
  </Accordion>

  <Accordion title="Wrong locale displayed to visitors">
    Review your locale priority rules. More specific rules (exact country +
    language) take precedence over catch-all rules.
  </Accordion>

  <Accordion title="Publishing fails because of an unsaved locale">
    A locale with unsaved changes blocks publishing. Open the funnel, save
    every locale, then publish again. If a publish fails, check your
    [locales](/docs/editor/localizations) first.
  </Accordion>
</AccordionGroup>
