Multilingual Sites (WPML and Polylang)
Translate UiChemy pages, headers, footers, SEO, and forms on a multilingual site with WPML or Polylang.
Running your site in more than one language? UiChemy works with WPML and Polylang, so your Composer pages, headers, footers, and SEO can be translated like the rest of your site.
There are two different kinds of translation:
| What | How it's translated |
|---|---|
| The plugin itself (dashboard, editor, messages) | Through WordPress language files, like any plugin |
| Your site content (pages, header, footer, SEO, forms) | With WPML or Polylang, as below |
How Each Kind of Content Is Translated
| Content | How it works |
|---|---|
| Elementor pages with Composer sections | WPML: translate them in WPML's Advanced Translation Editor. Every visible text in a Composer section, plus its alt, title, placeholder, and aria-label text, is offered as its own string. Without the Advanced Translation Editor, duplicate the page and edit the text. |
| Gutenberg and Bricks pages | Duplicate the page and edit the text in the editor. |
| Polylang (any builder) | Duplicate the page and edit the text in the editor. |
| Theme Builder templates (header, footer, 404, and others) | One template serves every language. Its text is translated as strings in WPML → String Translation (context UiChemy Theme Builder) or Polylang → Languages → Translations (group UiChemy Theme Builder). |
| Display conditions | A rule set on the original page, like "show on this page", also matches its translations. |
| SEO, forms, and Custom Fields values | A new translation starts with the original's values. Edit them in that language afterwards. |
| Loops | Show only items in the current language automatically. |
Header and footer text appears after one visit. After you build or edit a header or footer, open your site once in the default language. Its text then shows up in the translation screens.
What Isn't Offered for Translation
- Text written as a template expression, like
{{ post.title }}, since it already comes from WordPress. - Text with no letters, such as numbers or symbols.
- Anything inside scripts, styles, SVG icons, and code blocks.
Changing a text creates a new string. If you edit the original wording, the old translation isn't reused. Translate the new string again.
Add a Language Switcher
Build a switcher in a Composer section's Code tab:
<nav class="lang">
{% for l in languages() %}
<a href="{{ l.url }}"{% if l.current %} aria-current="true"{% endif %}>{{ l.name }}</a>
{% endfor %}
</nav>
Each language has a name, code, url (this page in that language), flag, and current. On a single-language site the list is empty.
Use Cases
- A bilingual business site with one header and footer translated as strings, and each page translated in WPML.
- A Polylang site where editors duplicate each page and rewrite the text in their language.
- A shop in several languages whose SEO titles and descriptions start from the original and are then translated.
Limits and Good to Know
- WPML's translation editor picks up Composer text on Elementor pages only. Gutenberg and Bricks pages, and all Polylang sites, use duplicate and edit. Theme Builder string translation works on all three builders, with both plugins.
- Language URLs, hreflang, and translated permalinks are handled by WPML or Polylang, not UiChemy.
- Right-to-left languages: give the Arabic or Hebrew copy its own direction and styles in the Composer section.