---
title: WPML
description: Make CartPops follow the visitor's language on WPML sites, and translate the text you enter in CartPops settings.
sidebar:
  label: WPML
  icon: languages
---

This page covers the common WPML issues for CartPops: loading the drawer in the right language, and translating the text you write in CartPops settings.

## The drawer loads in the wrong language or links to the wrong checkout

CartPops loads and updates the cart with REST requests, for example when an item is added or a coupon is applied. These requests are not normal page views, so WPML needs a language cookie to know which language they belong to.

Turn on **Language filtering for AJAX operations** in WPML:

1. Go to **WPML** > **Languages**.
2. Scroll to **Language filtering for AJAX operations** and turn it on.
3. Save, then clear your caches.

![WPML Language filtering for AJAX operations option](/blume-assets/content/content/05-troubleshooting/img/wpml-language-ajax-filtering.png)

You can read more about this setting in the [WPML documentation](https://wpml.org/documentation/getting-started-guide/language-setup/enabling-language-cookie-to-support-ajax-filtering/).

If the language is still wrong for some visitors, check your caching setup. A full-page cache must keep a separate copy for each language. See [Caching](/troubleshooting/caching).

## Translate CartPops text

CartPops ships a `wpml-config.xml` file, so WPML finds the text fields below by itself. They appear in **WPML** > **String Translation**, under the `admin_texts_cartpops_settings` domain. If you do not see them, search for the text you entered, or run a scan from the String Translation screen.

| Where you set it in CartPops                                      | Edition |
| ----------------------------------------------------------------- | ------- |
| Drawer: **Checkout Button Text**                                  | Free    |
| Recommendations: **Heading**                                      | Free    |
| Smart add-ons: the shipping protection **Label** and **Description** | Pro     |
| Bundle Builder: **Heading**                                       | Pro     |

Pro text that grows with your setup is registered with WPML under the **CartPops** context instead of through the config file:

- The **Progress Message** and **Qualified Message** of each Shipping Meter reward tier.
- The text of each Smart Bar item: its message, expiry message, spotlight message, and link text.

These strings are registered when WordPress loads (the `init` hook). Save your settings, load any page once, then check **WPML** > **String Translation** for the **CartPops** domain.

Other drawer text, such as button labels and screen reader messages, comes from CartPops' translation files. To translate those, use a translation plugin such as Loco Translate. The text domain is `cartpops`.

## Related

- [Caching](/troubleshooting/caching)
