WPML Hosting

WPML hosting that keeps every language separate.

A multilingual site is several sites sharing one database. The mistakes are all variations of one thing: something meant for one language reaching a visitor reading another.

Cache keyed per languageAlternate tags on cached pagesDatabase sized for translations
Per-language cacheTranslation-ready databaseEdge deliveryDaily backupsFree SSL24/7 support
Built for translation

One site, several languages, no bleed.

Everything here is about keeping languages apart while they share a database.

Cache that knows the language

Cached pages are keyed by language, so a visitor reading German is never served the French copy because it happened to be cached first. Language is resolved before the cache lookup, not after.

Language-keyed cacheResolved before lookup

A database sized for the multiple

Six languages means roughly six times the posts, the meta and the term relationships. Storage and query tuning start from that number rather than from the page count you would guess from the menu.

Sized for translations

Alternate-language tags on the cached copy

Those tags have to be present on what most visitors actually receive, not injected by something that only runs on a cache miss. They are part of the cached response.

Translate on a copy

Clone the site to work through a new language without half-finished translations appearing live, then push it back when the language is complete.

Restore a language, not the site

Translation work is expensive to redo. Daily backups cover the full database, so a bad string import is recoverable.

Correctness

The bugs are all the same bug.

Almost every multilingual problem is content from one language reaching a reader of another — in the cache, in a menu, in a search result, or in the tags search engines read.

  • Cache entries separated per language
  • Alternate tags present on cached responses
  • Language switcher not cached across languages
  • Search scoped to the active language
Cache keys
Per language
6 sets
Alternate tags
On cached responses
present
Translated content
Indexed per language
current
String import
New language
running
Scale

Six languages, one page load.

Multilingual sites are not slower because they are translated. They are slower when the database was sized for one language and the cache cannot tell them apart.

Per-language
cache keys
Object
cache for string lookups
14
edge regions
MagicWP70 ms
Typical shared host760 ms
Untuned VPS350 ms

Illustrative comparison of a cached page on a six-language site. Your numbers depend on language count and content volume.

Configuration

What we change for WPML

Multiply the content by the number of languages, then make sure the cache never confuses two of them. That is the whole job.

SettingWhat we doWhy
Cache keyIncludes the active languageWithout it the first language cached wins, and every other reader is served the wrong translation.
Language resolutionHappens before the cache lookupDetecting language after a cache hit is too late, because the wrong copy has already been chosen.
Database sizingPlanned from posts multiplied by languagesA six-language site holds roughly six times the rows, and sizing from the visible page count under-provisions it.
Alternate-language tagsRendered into the cached responseTags injected only on a cache miss are absent for the majority of visitors and crawlers.
String tablesKept in the object cacheInterface string lookups happen many times per render and are identical for every visitor in that language.
Plans

Simple, transparent pricing.

Every plan includes free migration, daily backups, SSL and 24/7 support.

MonthlyYearly 2 months free
Starter
For personal sites, blogs, and portfolios.
$20/mo
  • 1 WordPress site
  • 10 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Support tickets
Start free trial
Pro★ Most popular
For growing businesses and busy stores.
$80/mo
  • 5 WordPress sites
  • 50 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Priority support tickets
Start free trial
Enterprise
For agencies and high-traffic platforms.
$250/mo
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

Does caching break language switching?
Not here. Cache entries are keyed by language and resolution runs before the lookup, so switching returns the right copy rather than whichever version was cached first.
How much bigger is a multilingual database?
Roughly proportional to the language count — six languages is about six times the posts, meta and term relationships. We size storage and tuning from that rather than from the page count in your menu.
Do you support Polylang and TranslatePress too?
Yes. The problem they all create is the same — content per language sharing one install — and the cache keying and sizing apply equally.
Will alternate-language tags be correct?
They are rendered into the cached response rather than added afterwards, so every visitor and every crawler receives them, not only the ones who happen to miss the cache.

Serve every language properly.

Bring the multilingual site across — migration is free, every language included.