A multilingual site offers several languages; a multi-regional site targets several countries. Google recommends a separate URL for each version, annotated with hreflang (Translations and hreflang), and advises against URL parameters such as ?loc=de:
| Structure | Example | Strengths | Weaknesses |
|---|---|---|---|
| Country-code domain | example.de | Clearest geotargeting | Costly; one country each |
| Subdomain | de.example.com | Easy; separate servers | "de": language or country? |
| Subdirectory | example.com/de/ | Easy; one host | Harder to separate |
Google treats .eu, .asia and vanity ccTLDs such as .tv, .ai and .co as generic domains, ignores geo.position meta tags, and detects language from visible text, not the lang attribute (keep lang for screen readers).
Locale-adaptive pages, which switch content by IP address, cookie or Accept-Language, are risky: Googlebot mostly crawls from US addresses, sends no Accept-Language header and uses one user agent everywhere, so it may never see your other variants. Don't redirect visitors by guessed language; suggest the other version instead:
<!doctype html>
<html lang="de" style="font-family: system-ui, sans-serif">
<p id="suggest" hidden style="background: #e3f2fd; padding: 10px">
This page is also available in English. <a href="/en/kettle">Switch to English</a>
</p>
<h1>Wasserkocher aus Edelstahl</h1>
<script>
if (navigator.languages.some((lang) => lang.startsWith('en'))) {
document.getElementById('suggest').hidden = false;
}
</script>