Free audit
Technical SEO

Multilingual SEO: How to Set Up a Site in Ukrainian, English and Russian (hreflang, URLs, Translation)

KKyivan team
6 min read
Multilingual website with a UA, EN, RU language switcher and a globe
Article contents

In short: for a multilingual site to perform in search, each language needs its own URL, its own metadata and a quality translation, and counterpart pages must be linked with reciprocal hreflang tags. For Ukrainian, English and Russian versions use the codes uk, en, ru and add x-default.

What is multilingual SEO and why isn't translating the text enough?

A translation alone tells a search engine nothing about the relationship between versions. Without technical setup Google may show the wrong language, treat versions as duplicates or index only one. Multilingual SEO has four parts:

  1. URL structure, where each language has its own address.
  2. hreflang tags linking counterpart pages.
  3. Localised content and keywords, not word-for-word translation.
  4. Correct site behaviour: a language switcher and no forced IP redirects.

Which URL structure should you choose?

Option Example Pros Cons
Subdirectories site.com/en/ One domain, easier to maintain, shared authority One server and one CMS
Subdomains en.site.com Can be hosted separately Harder to analyse, sometimes treated separately
Separate domains site.com, site.com.ua Clear geo signal More expensive, authority is not combined
Parameters site.com?lang=en Quick to build Not recommended, unreliable for indexing

For most business sites subdirectories give the best balance: / or /uk/ for Ukrainian, /en/ for English, /ru/ for Russian. What matters is a stable, predictable scheme that never changes.

What is hreflang and how does it work?

hreflang is an annotation telling a search engine: "this page has versions in other languages at these addresses". It doesn't change rankings directly, but helps show users the right language version and avoids confusion with duplicates.

Rules without which hreflang fails:

  • Reciprocity. If page A points to B, B must point back to A.
  • Self-reference. Every page includes an hreflang for itself.
  • Full absolute URLs. With protocol and domain.
  • Correct codes. Language per ISO 639-1; region per ISO 3166-1 where needed.
  • Equivalence. Counterpart pages must be genuine translations of the same content.
  • Self-canonical. Don't point one language's canonical at another.

A common mistake is the code ua. Ukrainian as a language is uk; ua is a country code. Use hreflang="uk" for the language and uk-UA for language plus country.

hreflang example in the <head>

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

The same set must appear on each of the three pages. x-default points to the version for users whose language isn't supported, or to a language selection page.

hreflang in the sitemap

On large sites it is more convenient to declare hreflang in the XML sitemap rather than in every <head>:

<url>
  <loc>https://site.com/uk/services/seo/</loc>
  <xhtml:link rel="alternate" hreflang="uk" href="https://site.com/uk/services/seo/"/>
  <xhtml:link rel="alternate" hreflang="en" href="https://site.com/en/services/seo/"/>
  <xhtml:link rel="alternate" hreflang="ru" href="https://site.com/ru/services/seo/"/>
  <xhtml:link rel="alternate" hreflang="x-default" href="https://site.com/uk/services/seo/"/>
</url>

Use one method so <head> and the sitemap never contradict each other.

Default language and automatic redirects

Don't force-redirect users and bots by IP or the Accept-Language header. Googlebot usually crawls without language preferences, so a forced redirect can hide the other versions from it. Instead:

  • serve the content for the requested address;
  • offer a convenient language switcher on every page built with ordinary <a> links;
  • if needed, suggest changing language with an unobtrusive banner.

Translation and localisation: why literal translation isn't enough

Users of different languages phrase queries differently, and keywords don't translate one to one. For example, what Ukrainian users search as "створення сайту" is more often "web development" or "website design" in English. So:

  1. Research keywords separately for each language and market instead of copying from one.
  2. Have a native speaker edit the translation so it reads naturally.
  3. Localise currency, date formats, phone numbers, examples and legal text.
  4. Avoid mixed pages with part of the text in another language.
  5. Don't use unedited machine translation for important pages.

What else should you localise beyond body text?

  • title, description, H1, image ALT attributes;
  • slugs (transliterated or translated, with one consistent approach);
  • Schema.org markup: inLanguage, names and descriptions;
  • breadcrumbs, menus, buttons, form messages;
  • cookie banner and privacy policy;
  • sitemap and analytics tracking per language.

Set <html lang="uk"> to match the page language: it helps accessibility and browsers, although hreflang remains the main signal to search engines about alternates.

Common mistakes

  • hreflang="ua" instead of uk.
  • No return links between versions.
  • Every language version has a canonical pointing at one language.
  • Partially translated pages and mixed content.
  • Automatic redirects by IP.
  • A JavaScript-only language switcher with no plain links.
  • Menu and footer left in one language on translated pages.
  • Different hreflang sets in <head> and in the sitemap.

How do you verify the setup?

  1. Crawl the site with a crawler that supports hreflang and review errors: missing return links, invalid codes, pages in the set that redirect or are noindex.
  2. Check in Search Console that all language versions are indexed.
  3. Review Performance by country and page: are users landing on the right language?
  4. Open several URLs manually and compare their hreflang sets with the actual addresses.

The separate International Targeting report in Search Console has been retired, so rely on a crawler, indexing and performance data.

Action plan

  1. Choose a URL scheme and freeze it.
  2. Map page counterparts between languages in the CMS.
  3. Add hreflang (in <head> or the sitemap) and x-default.
  4. Prepare localised title, description, H1 and slug.
  5. Research keywords for each language separately.
  6. Build the language switcher with links.
  7. Verify with a crawler and Search Console.

FAQ

Is hreflang mandatory?

No, but for a site with several languages it is the most reliable way to declare counterparts. Without it a search engine may show the wrong version.

Can you combine several languages on one page?

Better not. One page, one language, with separate URLs for the others.

What hreflang code is used for Ukrainian?

uk. The code ua is invalid for a language.

Do duplicates between languages hurt?

Translated pages aren't treated as duplicates when they are genuinely in different languages and properly linked. Problems arise with partial translations and identical text on different URLs.

Do you need a separate language selection page?

Not necessarily. x-default pointing to the main language version plus a switcher on every page is often enough.

Which matters more: hreflang or translation quality?

Both. hreflang links pages together, while translation quality and keyword localisation decide whether they get found and convert.

Setting up a site in several languages? Get a free Kyivan audit — a developer will check hreflang, canonicals, URL structure and metadata localisation.

Share: Telegram Facebook
K
Kyivan team

Web developer and SEO specialists. We write about technical SEO, Google Shopping and ads.

Three steps to the top of Google

We work in order: first we remove what interferes with the site, then we prepare it for search queries and only then we build up positions. This way, the result lasts longer.

Start with an audit
  1. 1Stage 1

    Technical problems.

    We find and eliminate what prevents Google from reading the site.

    • Indexing, 404 and Redirect Errors
    • Slow loading of pages
    • Duplicate pages and canonical
    ResultA site that the search engine understands and indexes
    Learn more →
  2. 2Stage 2

    Website optimization

    We prepare pages for queries that customers are looking for.

    • Structure, URL and internal linking
    • Title, H1, Schema.org micro markup
    • Texts and content for semantics
    ResultPages that meet customer requests
    Learn more →
  3. 3Stage 3

    SEO promotion

    We are building up positions, traffic and the main thing, applications and sales.

    • Extension of semantics and new pages
    • Expert content and links
    • Reports on applications, not only on items
    ResultStable growth of traffic and applications
    Learn more →

FAQ

Didn't find an answer?

Write to us and we will respond.

Ask a question
Free audit

Find out what's holding your site back in Google

Answer five short questions and we'll send a list of issues with a fix plan.

  • Technical errors that block indexing and speed
  • What to fix first
  • An action plan in plain language
  1. 1Site
  2. 2Goals
  3. 3Platform
  4. 4Situation
  5. 5Contacts
20%
What kind of site do you have?

Choose one option