How to Do Multilingual SEO: URLs, hreflang, and Localized Content

Link copied

Multilingual SEO is not a “translate” button. Each version needs its own URL, a same-language canonical, reciprocal hreflang, and copy that actually fits the market.

Cover

Split languages onto separate pages first

Translating the menu is not enough. If the language switches via cookie or JavaScript but the URL stays the same, users may be fine—search engines still have nothing solid to index.

The mistake I would remove first: Adding hreflang only on the Russian page.

Visual 01
Visual 01

What to prepare and what result to expect

  • Outcome: Search engines know which page to show, and visitors do not land on Russian copy with the wrong currency and phone number.
  • Choose a URL structure such as /ru/, /en/, /de/. Record language, market, currency, contact, and the distinct search intent of each version.
  • Keep source data and access rights separate from the output so you can verify what the multilingual site version produced.
  • Check the language switcher, source HTML, and sitemap for each version. Every page should link to itself and the other versions.

Link URL versions and verify the translation

  1. Create separate URLs

    Build /ru/services/repair/ and /en/services/repair/ instead of ?lang=en. Do not mix two languages on one URL.

    Проверьте: Each version opens directly and has its own title, H1, and html lang.

    Если не сработало: Start with two languages and one service page.

  2. Add reciprocal hreflang

    In each page head add the full alternate set, including the page itself and x-default. Links must be absolute and reciprocal.

    <link rel="alternate" hreflang="ru" href="https://example.com/ru/services/repair/">
    <link rel="alternate" hreflang="en" href="https://example.com/en/services/repair/">
    <link rel="alternate" hreflang="x-default" href="https://example.com/ru/services/repair/">

    Проверьте: The English page links back to the Russian one—not only the Russian page to English.

    Если не сработало: Check the head generation template on every locale.

  3. Point canonical to the same language

    Canonical for /en/services/repair/ must point to the English page, not the Russian one. Add only ready versions to the sitemap.

    Проверьте: There is no redirect → canonical chain to another language.

    Если не сработало: Remove the duplicate from the index until the template is fixed.

  4. Localize meaning, not only words

    Check title, description, H1, URL, prices, currency, address, phone, form, images, and FAQ. Use machine translation only as a draft.

    Проверьте: A native speaker sees that the service and next step fit their market.

    Если не сработало: Rewrite the first screen and CTA by hand before expanding the locale.

Visual 02
Visual 02

A language URL map before translation

First build a table: `/ru/services/`, `/en/services/`, `/de/services/` and the mappings between them. Do not publish a language until it has a full page, form, price/currency, and a local next step. Avoid IP redirects that stop a crawler from opening the right version.

On each page the canonical is usually self-referencing. Set the correct `lang` on `<html>`, but do not treat it as a substitute for hreflang. After publication check HTML with `curl -s URL | grep -i hreflang` and test return links.

<link rel="alternate" hreflang="ru" href="https://example.com/ru/services/">
<link rel="alternate" hreflang="en" href="https://example.com/en/services/">
<link rel="alternate" hreflang="de" href="https://example.com/de/services/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">

Localization is not word replacement

Check currency, phone, address, hours, payment terms, delivery, legal documents, client examples, and CTAs. Do not change `en-GB` to `en-UK`; language comes first, region after the hyphen. In Analytics compare leads by language folders; in Search Console compare countries and devices.

  • The English page links back to the Russian page.
  • Do not canonicalize all languages to English.
  • Do not add missing translations to the sitemap.

I treat versions as separate products

Assign a translation owner and review date for each locale. Store `locale`, `url`, `canonical`, `hreflang_set`, `currency`, `phone`, `form_recipient`, and `last_reviewed` in a table. A test lead from each version must hit the right queue—otherwise you have a language SEO signal with no business behind it.

Do not auto-translate legal terms, prices, and promises without an editor. If only the menu language changes and the content is the same, that is not full localization and not a reason to create dozens of weak URLs.

What to localize beyond the text

CriterionQuestionGood sign
InputWhat exactly goes into a multilingual site version?Choose a URL structure such as /ru/, /en/, /de/. Record language, market, currency, contact, and the distinct search intent of each version.
ActionWhat is the system allowed to do on its own?Only pre-listed actions, without access to the entire account
VerificationHow do you know the result is acceptable?Check the language switcher, source HTML, and sitemap for each version. Every page should link to itself and the other versions.
FailureWhere does an unclear case go?Remove the broken version from hreflang and sitemap until translation and canonical are ready.

What should change after setup

Search engines know which page to show, and visitors do not land on Russian copy with the wrong currency and phone number.

Visual 03
Visual 03

Why hreflang does not save a poor translation

Launching before input data is ready

Adding hreflang only on the Russian page.

Granting excess permissions

Pointing every language’s canonical to the Russian version.

Skipping edge cases

Auto-redirecting by IP and hiding a manual language switcher.

Leaving failures without an owner

Translating the menu but leaving Russian prices and terms on the service page.

When multilingual work needs its own project

You need a specialist if versions live on different domains, have regional pricing, involve a large migration, or carry legally different terms.

What to check on every locale

Do you need hreflang for two languages in one market?

Yes, if there are separate full URLs and search engines need to understand how the versions relate.

Can you translate a page automatically?

Yes, as a draft. Terms, prices, legal wording, and natural phrasing still need a human review.

Folders or subdomains?

For a small site, folders are easier to maintain. Subdomains or separate domains make sense when markets and teams are independent.

Can one shared contact page stay?

Only if the contact is truly shared. For a local market, show a local phone, currency, and business hours.

SEO, AEO and AI search

Website structure, keyword research, guide maps, Schema.org and visibility in traditional and AI search.

Cover
SEO and AI search 7 min read

SEO Website for a Business: Which Pages Actually Bring Leads?

For “SEO Website for a Business: Which Pages Actually Bring Leads?”, connect search intent, page structure, proof and one measurable next step.

transactionalRead ↗
Cover
SEO and AI search 7 min read

Landing Page, Multi-Page Site, or Ecommerce Store: How to Choose

For “Landing Page, Multi-Page Site, or Ecommerce Store: How to Choose”, connect search intent, page structure, proof and one measurable next step.

commercialRead ↗
Cover
SEO and AI search 7 min read

Your Website Gets No Leads: A Practical Audit Checklist

For “Your Website Gets No Leads: A Practical Audit Checklist”, connect search intent, page structure, proof and one measurable next step.

commercialRead ↗
Cover
SEO and AI search 7 min read

How to Build an SEO Website from Scratch

For “How to Build an SEO Website from Scratch”, connect search intent, page structure, proof and one measurable next step.

informationalRead ↗

Show all articles