Multilingual (WPML)
The connector handles two multilingual scenarios out of the box: a single-language store (no translation plugin), or a multi-language store running WPML.
The two modes
| Mode | When to use | What you get |
|---|---|---|
| No plugin | Single-language store, or one site per language in a multisite network | One locale per channel — UnoPim values land in WooCommerce as that locale. |
| WPML | Multi-language store on a single WordPress install with WPML active | Translation-aware product sync. Reference-entity taxonomies (brands, collections, etc.) are automatically registered as translatable in WPML. |
Without WPML
The connector picks one locale per channel.
- It reads the channel's locales from your Channels & Stores settings.
- It uses the first locale (or whichever you set as the channel default).
- For every localized UnoPim attribute, it takes that locale's value.
So a channel web configured with locales [en_US, fr_FR] defaults to en_US. If you want French content as well, run a second sync configured for fr_FR — most stores in this mode use a Scheduled Job per locale, or split locales across separate WordPress sites in a multisite network.
Locale fallback chain
If the active locale has no value for a particular attribute, the connector falls back through a chain so the field doesn't end up blank:
active locale → channel default → site locale → en_US
So if a product has no French description, the connector tries the channel default, then the site language, then English. The connector also supports a custom fallback chain if your developer wants to extend it (for example, falling fr_CA back through fr_FR before English).
With WPML
When WPML is active, the connector switches into translation-aware mode automatically. You don't need to configure anything special — just have WPML installed and active before the first pull.
What it does
- Translation resolution — looks up the right WordPress translation of a product, variation, or term for each UnoPim locale.
- WPML config extension — registers reference-entity taxonomies (brands, collections, etc.) as translatable in WPML so you can manage their translations through WPML's standard interface.
- Locale → language mapping — translates UnoPim locales like
fr_FRto WPML language codes likefr.
Pull behaviour with WPML
For each incoming UnoPim product, the connector:
- Looks at each locale you've enabled for the channel.
- Finds the WooCommerce translation in that language, or creates a new translation linked to the source-language version.
- Applies that locale's values to that translation.
So a single UnoPim product with values in en_US, fr_FR, and de_DE produces three linked WooCommerce translations under one WPML translation group.
Push behaviour with WPML
When you save a translated product in WooCommerce, the connector:
- Detects which language that translation is in.
- Maps that language to the matching UnoPim locale.
- Pushes only that locale's values, scoped to the active channel.
Saving the French translation only sends French values; saving the English original only sends English values. UnoPim merges everything into one product record on its side.
Reference entities
When WPML is active, reference entities (custom UnoPim taxonomies like Brands or Collections) are automatically marked as translatable. You'll find them in WPML → Taxonomy translation alongside your other translatable taxonomies, fully managed by WPML.
How values are picked
UnoPim attributes can be flagged "localizable" (one value per locale) or "scopable" (one value per channel) or both. The connector uses the right value for the active channel and locale automatically:
| Attribute type | Example |
|---|---|
| Plain | sku — one value, used everywhere |
| Localized only | name, description — one value per locale |
| Scoped only | is_visible_b2b — one value per channel |
| Localized + scoped | marketing_blurb — one value per channel + locale |
| Currency-bound (prices) | price — one value per currency |
If the exact (channel, locale) combination has no value, the fallback chain takes over.
Multi-currency
Prices are stored per currency, not per locale. The connector picks the active currency in this order:
- The first currency listed for the active channel.
- Whatever a multi-currency plugin (like CURCY) has set as the customer's currency, if such a plugin is active.
The connector also supports a custom currency override if your developer wants to extend it.
Operational patterns
Pull only French
You have a French-only sub-store and want only fr_FR values.
- Create a Scheduled Job with action Pull Full, channel web, locale fr_FR.
- Save and run.
Disable a locale temporarily
Open Channels & Stores, edit the channel, and remove the locale from its Locales list. Re-add it later when you need it — UnoPim still has the values, so nothing is lost.
Add a brand-new locale
- Add the locale in UnoPim first.
- Open Channels & Stores and click Refresh channels.
- The new locale appears in the dropdown.
Compatibility matrix
| Setup | Single locale per channel | Multi-locale per channel |
|---|---|---|
| No translation plugin | Works | Only the first locale is used — manage extra locales by running a separate sync for each |
| WPML | Works | Full support — every locale lands as its own translation |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| WPML language column shows the wrong language | Locale-to-language mapping mismatch (usually a regional variant like fr_CA) | Standard locales work out of the box. For unusual cases the connector supports a custom locale-to-language map if your developer wants to extend it. |
| Translations created but empty | Source-language attributes weren't ready when the target language was pulled | Run Pull Full once more after the attribute schema is stable. |
| All locales merge into one product | WPML not active or not detected | Confirm WPML is installed and active. If you use a different translation plugin, your developer can build a bridge to it. |
| Fallback returns the wrong locale | The default chain doesn't match your store's needs | The fallback chain is customizable if your developer wants to extend it. |
