# Multilingual sites: WPML, Polylang and TranslatePress

> Language switchers, translated pages and per-language domains with AjaxPress.

Source: https://arraystory.com/docs/ajaxpress/multilingual-sites/

AjaxPress works with WPML, Polylang, TranslatePress, Weglot and other multilingual plugins. Translated pages are ordinary pages, so they navigate instantly like any other.

## Language switchers

Switching language is a link to the translated page. How it loads depends on how your languages are set up:

| Your setup | Example | Switching language |
| --- | --- | --- |
| Language in the path | `example.com/de/` | Instant, like any other link |
| Language as a parameter | `example.com/?lang=de` | Instant |
| A subdomain per language | `de.example.com` | A normal page load |
| A domain per language | `example.de` | A normal page load |

A different domain or subdomain counts as another website, so the switch is a normal page load. That also means a [persistent player](https://arraystory.com/docs/ajaxpress/keep-audio-or-video-playing-across-pages/) restarts when the visitor changes language. If an uninterrupted player matters on your site, use language paths.

## Titles and SEO tags

On every page change, AjaxPress updates the title, canonical link, meta description and structured data to the new page's, so each translation keeps its own. `hreflang` links and translated sitemaps are handled by your multilingual plugin as usual, and crawlers get plain pages. See [SEO and SEO plugins](https://arraystory.com/docs/ajaxpress/seo-plugins/).

## One set of settings

AjaxPress has one set of settings for the whole site, so the spinner's **Loading Message** is the same in every language. On a multilingual site, prefer the **Progress Bar**, or a spinner with the **Icon only** layout, which have no text.

## If the language doesn't switch

Clear your page cache first; a cached page from before you set up languages is the usual cause. If the switcher still shows the old language, add its links to [Exclude Links](https://arraystory.com/docs/ajaxpress/exclude-links/), so switching language is always a normal page load, and [tell us](https://arraystory.com/docs/ajaxpress/report-a-problem/) which plugin you use.
