# WCPOS WPML

Integrates [WPML](https://wpml.org/) with WCPOS so the POS only serves products for a single language — translated duplicates stop appearing in product search and the catalog grid. On WCPOS Pro, you can pin a language per store.

## What It Does[​](#what-it-does "Direct link to What It Does")

* Filters WCPOS product and variation REST queries to a single WPML language.
* Intercepts WCPOS **fast-sync** routes (the lightweight requests the POS uses to refresh its local index) so translated duplicates never reach the client.
* Free installs use the WPML default language.
* Pro installs can override the language per store from the store editor.

## Installation[​](#installation "Direct link to Installation")

1

#### Install WPML

Install and configure [WPML](https://wpml.org/) as normal with at least one language set as the default.

2

#### Install WCPOS WPML

Install from `WP Admin > POS > Settings > Extensions`, or download the latest release from the [GitHub releases page](https://github.com/wcpos/wcpos-wpml/releases) and upload via `Plugins > Add New > Upload Plugin`.

3

#### (Pro) Pin a language per store

On WCPOS Pro, edit a store under `POS > Stores` and pick its language from the **Language** sidebar section. Leave at *Default* to use the WPML default language.

## Known WPML Compatibility Issues[​](#known-wpml-compatibility-issues "Direct link to Known WPML Compatibility Issues")

These are behaviours of WPML itself rather than the integration — worth knowing before rolling out multilingual in production:

* **POS custom fields don't carry across translations.** WPML translates products but does not copy WCPOS custom fields to translated versions by default. A product marked "POS Only" in the default language may lose that setting on its translations. Configure WPML to copy WCPOS custom fields during translation.
* **POS-only products and 404s on the storefront.** Because WPML generates storefront pages for each language, POS-only products may render as 404s when accessed on the website. This is a known WPML interaction, not a WCPOS bug.

See [POS-Only Products](/products/pos-only-products.md) for the related POS visibility controls.

## Requirements[​](#requirements "Direct link to Requirements")

WooCommerce

<!-- -->

: WooCommerce installed and activated

WPML

<!-- -->

: WPML with at least one language configured

WCPOS

<!-- -->

: Free version works; per-store language selection requires WCPOS Pro

## Related[​](#related "Direct link to Related")

* [WCPOS Polylang](/extensions/polylang.md)
* [WCPOS WP Multilang](/extensions/wp-multilang.md)
* [Multi-Store](/stores/.md)
* Source: [github.com/wcpos/wcpos-wpml](https://github.com/wcpos/wcpos-wpml)
