Multilingual sites: URLs, translation and switching
Give each language a stable accessible URL, appropriate content, and correct language associations.
On this page
Direct answer
Give each language a stable accessible URL, appropriate content, and correct language associations. Subdirectories and subdomains can both work; choose from operational needs rather than a blanket claim that subdomains have no authority.
When to use
You are adding languages or resolving inconsistent switching, indexing, and preferences.
Step by step
Define language-to-URL mapping
Choose the default language and path pattern and pair content consistently. Use language-appropriate canonicals and reciprocal hreflang links, including self references. Do not present missing translations as completed.
Validate equivalent task completion
Check terminology, steps, numbers, templates, limitations, and links. Review machine translation against real use and local wording; translated navigation alone is insufficient.
Reconcile preferences with access
Provide explicit switching while preserving the content location. If negotiation is used, keep explicit URLs reachable, honor manual choices, and test cookies and caching rather than forcing IP-based redirects.
Worked example
Hypothetical exercise, not a real performance claim.
Switching a Chinese guide to English should retain the same guide, corresponding templates, and limitations, rather than return home or canonicalize English to Chinese.
Action checklist
Reusable templates
Multilingual acceptance matrix
Languages and URLs:
Paired slug, body, templates, and checks:
Canonical / hreflang / page lang:
Switching and retained location:
Manual choice, cookies, and cache results:
Sitemap, robots, and missing translations:
Pitfalls
Language and country are not interchangeable. Test cookie scope, Vary, and cache behavior in the actual framework, and update indexing controls and content pairings together.
Related guides
-
How should canonicals handle parameters, languages, and pagination?
-
What are the different roles of robots.txt, noindex, and authorization?