Website translation

Your whole website, in another language. Without touching your website.

Flip a switch, choose your languages, and every page is served translated — from a URL like /sv/ or from its own domain. No plugin. No SDK. No exporting strings. Nothing on your server changes at all.

Why this is different

Going multilingual used to be a project

Anyone who has done it the traditional way knows the shape of it. This removes the entire shape.

The traditional route

  • Install a multilingual plugin and hope it likes your theme
  • Duplicate every page, post and product into a second tree
  • Export strings, send them out, paste them back
  • Discover the plugin slowed the site down measurably
  • Repeat all of it every time you publish something new
  • Do it again for the third language

With edge translation

  • Turn on translation and tick the languages you want
  • Your existing pages are already the source — nothing to duplicate
  • New content is translated the first time someone asks for it
  • Cached at the edge, so it is as fast as your source language
  • Nothing installed, so nothing to conflict and nothing to slow down
  • The fourth language is another tick box
Two ways to publish

A path prefix, a dedicated domain — or both

You decide what each language's address looks like. Both options serve real, crawlable HTML at a real URL; they differ in how much of a local presence you want to project.

Option 1 Fastest to launch

Path prefix

One domain, one certificate, one DNS record — already done. Each language lives under its own prefix on the site you already have.

Your existing site
minbutik.dk/produkter/sko → Danish (source)
Add languages — nothing else to buy
minbutik.dk/sv/produkter/sko → Swedish
minbutik.dk/no/produkter/sko → Norwegian
minbutik.dk/de/produkter/sko → German
  • Live the moment you enable it — no new domain, no new certificate
  • All your existing domain authority stays on one domain
  • Every path on your site works with every prefix, automatically
  • Add or remove a language in seconds
Option 2 Strongest local signal

A domain per language

Point a domain at the same zone and tell us which language it serves. Visitors on that domain always get that language, with no prefix in sight.

One zone, one origin
minbutik.dk/produkter/sko → Danish
Map a domain to a language
minbutik.se/produkter/sko → Swedish
minbutik.no/produkter/sko → Norwegian
meinshop.de/produkter/sko → German
  • A local domain reads as a local business to local shoppers
  • A clean address with no language prefix to explain
  • Certificates are issued and renewed automatically for each domain
  • Still one zone, one origin, one set of settings to manage
One origin Danish, unchanged NordicCDN edge translate · rewrite links · cache minbutik.dk/ Danish · source minbutik.dk/sv/ Swedish · path minbutik.se/ Swedish · own domain meinshop.de/ German · own domain
You can mix the two freely — a path prefix for the language you are testing, a proper domain for the market you have committed to.
What actually gets translated

The whole page — not the bits someone remembered to tag

Because this works on the finished HTML rather than on strings a developer marked up, there is nothing to mark as translatable and nothing that gets forgotten. Menu, headings, body copy, product descriptions, buttons, footer.

minbutik.dk/produkter/loebesko Source · Danish
ForsideProdukterOm osKontakt

Letvægts løbesko til hverdagstræning

En åndbar overdel og en dæmpende mellemsål gør disse sko til et sikkert valg til både korte og lange løbeture. Fås i fem farver.

899 kr. Læg i kurv
Fri fragt over 499 kr. · 30 dages returret
minbutik.dk/sv/produkter/loebesko Swedish
StartsidaProdukterOm ossKontakt

Lätta löparskor för vardagsträning

Ett andningsbart ovandel och en dämpande mellansula gör dessa skor till ett säkert val för både korta och långa löprundor. Finns i fem färger.

899 kr. Lägg i varukorgen
Fri frakt över 499 kr. · 30 dagars returrätt

Illustrative example. Note the navigation, the button and the shipping line — none of which a developer had to mark as translatable.

The detail that makes it usable

Visitors stay in their language when they click

A translated page full of links back to the source language is worse than no translation at all — the visitor gets dropped out of their language on the first click. Internal links are rewritten to carry the language with them.

A link in your source HTML <a href="/produkter/sko"> rewritten <a href="/sv/produkter/sko"> So the journey stays in Swedish /sv/ /sv/produkter /sv/produkter/sko checkout
On a dedicated domain the same thing happens without a prefix — the domain itself carries the language.
How it works

Translated once, then cached like any other page

The cost of translating is paid once per page per language, by the first person who asks for it. After that it is an ordinary cache hit at ordinary cache speed.

First visitor asking for /sv/produkter Visitor Edge: cache missfetch from origin Your origin Translate · rewrite links · cachethis visitor waits, once Everyone after that Visitor Edge: cache hit~15 ms, already translated Your origin is never contacted. Neither is the translator.
Publish a new article and the first Swedish reader triggers its translation. You do nothing.
  1. The edge recognises the language

    From the path prefix, or from which domain the request arrived on. Nothing needs to be in the URL of your source site.

  2. Your page is fetched exactly as it is

    One language, unchanged, from the origin you already run. Your server has no idea any of this is happening.

  3. The page is translated and links rewritten

    Text is translated in place; internal links are rewritten so the visitor stays in-language as they browse.

  4. The result is cached at the edge

    Stored next to the source-language copy. Every later visitor gets a normal cache hit — same speed as everything else you serve.

Built for SEO

Real URLs, not a JavaScript toggle

This is the whole reason to do it at the edge rather than in the browser. A crawler asking for /sv/produkter gets back genuine Swedish HTML — the same bytes a person gets. That is a page that can be indexed and can rank.

ApproachWhat a crawler receivesIndexable?
Dedicated domain — minbutik.seTranslated HTML, plus a local domain signalYes — strongest
Path prefix — /sv/Translated HTML at a distinct URLYes
Query string — ?lang=svDepends entirely on canonical handlingPatchy
JavaScript widgetThe source language — the swap happens after loadNo

A distinct URL per language

The precondition for indexing anything. Both the path and the domain option give you one.

Server-rendered translated HTML

No waiting for JavaScript, no risk of a crawler seeing the untranslated page.

Pairs with hreflang

Declare the language alternates and search engines serve the right one to each searcher.

Your controls

Switches, not a configuration language

Everything is per zone, changeable at any time, and reversible.

Source language

Which language your site is written in today. Danish or English.

da / en

Target languages

Which languages you want to publish. Swedish, Norwegian, German and English are available; tick the ones you want.

sv · no · de · en

Path prefixes

Turn the /sv/-style URLs on or off. On by default, because it is the fastest way to be live.

on / off

Domain mapping

Point a custom domain at the zone and assign it a language. That domain then always serves that language.

per domain

Translation notice

An optional banner at the top of translated pages telling visitors the translation is automatic. Off by default; the wording is yours.

your text

Cache purge

Change your source copy, purge, and the next request re-translates from the new content. Nothing is stuck.

per path

Translation runs on Site Accelerators — the zone type that caches your full HTML page. That full-page cache is exactly what makes translating and then reusing the result possible.

Getting started

Four steps, none of them on your server

Worth repeating, because it is the part people do not believe: there is nothing to install, nothing to configure in your CMS, and nothing to change in your code.

  1. Create a Site Accelerator for your site

    Point it at your existing origin and pick the preset that matches your platform. Nothing on your server changes.

  2. Turn translation on and tick your languages

    Set the source language, choose your targets, and decide whether you want the automatic-translation notice.

  3. Choose how each language is published

    Leave path prefixes on for instant /sv/ URLs, or add a domain and assign it a language — or do both.

  4. Visit a translated URL

    The first request translates and caches. From then on it is served at cache speed. That is the entire setup.

Related: Site Accelerators · WooCommerce CDN · WordPress CDN · Our network

Pricing

What it costs

An add-on on top of any Site Accelerator plan. One shared allowance across every zone on your account — no per-zone fees.

Free

€0.00 / month

1,000,000 characters included

  • €9.00 per extra million characters
Start free

Plan 1

€19.00 / month

3,000,000 characters included

  • €8.00 per extra million characters
Get started

Plan 2

€39.00 / month

10,000,000 characters included

  • €6.00 per extra million characters
Get started

Plan 3

€59.00 / month

20,000,000 characters included

  • €5.00 per extra million characters
  • Priority translation queue
  • Automatic cache warming
Get started

Ultra

€179.00 / month

750,000,000 characters included

  • €2.50 per extra million characters
  • Priority translation queue
  • Automatic cache warming
Get started

Translation is a shared add-on for your whole account — enable it on any Site Accelerator zone, and usage from every zone counts against one plan.

FAQ

Questions, answered

No. Nothing at all. Your site keeps serving one language exactly as it does today. The translation happens at the edge, on the finished HTML, on the way out to the visitor. There is no plugin, no SDK, no snippet, no export of strings, and no database column to add. If you turned it off tomorrow, your site would be untouched.
Use a path prefix if you want to be live in an afternoon with no extra domains to buy or certificates to wait for. Use a dedicated domain when you are treating a market seriously — a local domain builds more trust with shoppers and is a stronger local ranking signal. Both give you real crawlable URLs, and you can run both at once.
Yes, because every language gets a real URL that returns real translated HTML — not a JavaScript widget that swaps text after the page loads. Search engines can crawl and index each language separately, which is exactly what a JavaScript translation toggle cannot offer.
Only the first visitor to a given page in a given language waits for the translation. The result is cached at the edge like any other page, so everyone after that gets a normal, instant cache hit — the same speed as your source language.
Internal links are rewritten so a visitor who lands on /sv/ stays in Swedish as they browse. They do not fall back into the source language when they click the menu, and they do not need to keep selecting a language.
Danish and English work as the source language, and you can publish in Swedish, Norwegian, German and English. Which ones you offer is a per-zone setting you can change at any time.
Yes. Because it works on the finished HTML rather than on strings a developer marked up, it covers everything the page contains — landing pages, blog posts, product descriptions, category pages, the menu, the footer. There is nothing to mark as translatable and nothing to keep in sync when you publish new content.
Yes, and we recommend it. An optional banner at the top of translated pages says so, in wording you choose. It is off by default so it is your call, not ours.
Exclude the page and it is served in the source language instead, or fix the source text and purge the cache — the next request re-translates from your updated content. Nothing is frozen.
Translation runs on Site Accelerators, the zone type that caches the full HTML page. That is what makes it possible to translate a page and cache the result.
An add-on on top of any Site Accelerator plan — see the pricing above. It is one shared allowance for your whole account, so you can enable it on as many zones as you like without paying per zone.

Reach more people, in their language

Start free in two minutes — 25 GB free every month, no card required.

Start free