SEO for bilingual sites: Russian and Uzbek without duplicate content
A properly configured bilingual Russian/Uzbek site is not treated as duplicate content by Google — hreflang and canonical tags need to work together, not substitute for each other. Getting that pairing wrong is the single most common reason one language falls out of the index.
URL structure: prefixes, not parameters
For the Uzbekistan market, the working approach is language-prefixed subfolders: site.uz/ru/uslugi and site.uz/uz/xizmatlar. This structure is clear to both Google and users, scales cleanly to a third language (English), and needs no subdomain or separate domain — which keeps link authority consolidated on one domain.
Avoid passing language through a GET parameter (site.uz/uslugi?lang=uz) — Google handles that scheme worse, the parameter is easily lost when a link is shared, and parameter-based hreflang markup has historically produced more errors in Search Console.
Translate the URL slug too, rather than transliterating it one-to-one: /uz/xizmatlar reads and ranks better for Uzbek queries than /uz/uslugi copied straight from the Russian version. It's extra work when launching a second language, but it directly affects relevance.
hreflang: linking versions without errors
The hreflang tag in each page's <head> must list every language version, including itself (self-referencing hreflang) — a frequent source of errors, since developers sometimes forget to include the page's own link in its hreflang set, leaving Google with an incomplete cluster.
A correct block for a service page looks like: <link rel="alternate" hreflang="ru" href="https://site.uz/ru/uslugi/remont" />, <link rel="alternate" hreflang="uz" href="https://site.uz/uz/xizmatlar/tamir" />, <link rel="alternate" hreflang="x-default" href="https://site.uz/ru/uslugi/remont" />. The x-default value points at the fallback version for users whose language matches none of the options — usually the traffic-dominant language, which for most Tashkent sites is Russian.
hreflang must be reciprocal: if the Russian page links to the Uzbek page via hreflang, the Uzbek page must link back. Google at best ignores a one-way relationship, and the coverage report or international targeting section flags it as an unconfirmed link error.
Canonical tags: don't fight hreflang
Every language version needs a self-referencing canonical — the Russian page's canonical points to itself, the Uzbek version's canonical points to itself. A common mistake is pointing every language version's canonical at the Russian page, as if the Uzbek version were a duplicate: this directly contradicts hreflang logic and pushes Google to drop the Uzbek version from the index as a secondary copy.
hreflang and canonical solve different problems and don't substitute for each other: canonical says 'this is the one correct version of this specific page', hreflang says 'here are the alternate versions for other languages and regions'. When canonical and hreflang contradict each other on the same page, Google's documentation explicitly warns it may ignore hreflang entirely.
Duplicate content: when it's real and when it isn't
Fully translated content in two languages is not treated as duplicate content by Google — duplicate detection operates at the language/locale level, not purely on text structure. The real problem comes from technical shortcuts: identical titles on both versions, a missing hreflang link, the same image with the same untranslated alt text on both languages.
The genuine duplication risk is partially translated pages: some blocks translated, some left in Russian inside the Uzbek page. In that situation Google sometimes can't confidently determine the page's language, which blurs relevance for both languages at once, not just Uzbek.
Another source of duplicates is auto-generated versions with no real translation, where the Uzbek text is unedited machine translation. Technically that isn't flagged as a duplicate, but the content quality loses to competitors with genuine translation, and Google reflects that through content-quality ranking signals.
Sitemap and Search Console for two languages
A sensible approach: either one combined sitemap.xml listing URLs for both language versions with correct hreflang markup via the xhtml:link tag inside the sitemap itself, or two separate files, sitemap-ru.xml and sitemap-uz.xml, merged into a sitemap-index.xml. The second option is easier to debug independently if one language runs into indexing trouble.
In Google Search Console, both language sections fall under the same domain-level property when a subfolder structure is used — there's no need to verify ownership separately per language. But for the Performance report, filtering by the /ru/ and /uz/ URL prefix separately is worthwhile to see each language's real trend rather than a blended total.
For the first 4-6 weeks after launching a second language, watch the coverage report for Uzbek URLs specifically — if Google mass-labels them 'Duplicate, submitted URL not selected as canonical', that almost always points to the canonical/hreflang pairing error described above, not a content problem itself.