Skip to content

Multilingual website SEO: URLs, hreflang and translation - Zephyra Studio

A multilingual website needs one URL per language, a real translation of the full content, and hreflang tags that link the versions in both directions. For most small businesses the simplest URL structure is a subdirectory such as /en/ or /sr/, and every translation needs a human read before it goes live. Hreflang does not improve a page's ranking, it only helps Google show the right version to the right audience. Below is the decision step by step: whether you need a second language at all, which URL structure to pick, how to check the tags yourself, what translation actually costs (with the arithmetic), and the questions specific to Serbian, Latin and Cyrillic script.

Do you need a second language at all

A second language makes sense when there is a specific reader you can also answer in that language. If an enquiry arrives in English and nobody on the team can read it or ship an order abroad, the English version promises something you cannot deliver.

  • You sell or ship abroad: the buyer has to understand the price, delivery and returns before paying, so the second language is part of the offer.
  • You host visitors from abroad, such as accommodation, a restaurant or a tourist service: a short English version with the address, opening hours and how to book is enough.
  • You serve a diaspora or neighbouring markets: first check in Search Console which language people already use to find you, then translate.
  • You have neither the time nor a plan to maintain a second version: one language done fully beats two where one is out of date.

One URL per language: subdirectory, subdomain or separate domain

Google's documentation for multilingual sites lists three ways to separate languages: a country-code domain (example.de), a subdomain (de.example.com) and a subdirectory (example.com/de/). It does not recommend URL parameters such as site.com?loc=de.

A separate domain gives the clearest country signal but costs more, needs more upkeep and is tied to one country. A subdomain is simple to set up and can sit on a different server. A subdirectory is the easiest to build and maintain, with a less obvious country signal for users and a single server.

For a business that wants Serbian and English, a subdirectory is usually a reasonable choice, unless separate teams and separate offers per country already exist. This site is built that way: English lives at the domain root, Serbian under /sr/, and every page has its pair.

Hreflang: the rules Google states

Hreflang is a tag that tells Google one page is the same page in another language. According to the documentation, it exists so search can point users to the most appropriate version by language or region. It is not used for ranking, and Google works out a page's language with its own algorithms, not from hreflang or the HTML lang attribute.

Here is what it looks like on this site (checked on 24 September 2026): the homepage lists en at zephyrastudio.com, sr at zephyrastudio.com/sr and an x-default pointing to the English version. The same pairs sit in each language sitemap too, more than 400 URLs per language.

The rules most often broken, all from the same documentation:

  • Return link: if page A points to B, B must point back to A. When one direction is missing, the tags are ignored.
  • Every version lists all versions, including itself.
  • URLs are fully qualified, with https://, not relative paths.
  • The language code is ISO 639-1 (sr, en) and the region is optional (en-GB). A country code without a language is not valid.
  • x-default is the fallback page for visitors whose language you do not cover. Here it is the English version.
  • The tags can live in HTML, in an HTTP header or in the sitemap. A sitemap is more practical once a site has many pages, because everything is maintained in one place.

Translation: what Google wants and what the reader wants

Google warns about sites that translate only the menu and frame and leave the main content in one language, because the same page then appears several times with a different wrapper. According to the documentation, localised versions count as duplicates only when the main content stays untranslated. A full translation of the main content is therefore a requirement.

Google's spam policy lists automated translation among the techniques for mass-producing pages that give users little value (scaled content abuse). The rule that follows easily: a translation no human has read does not get published.

Keywords are not translated literally. The service we call izrada sajta in Serbian is searched as web design or website development in English, so each language gets its own query research.

Language versus country is a separate decision. The code en targets English speakers anywhere. Add a region (en-GB, en-US) only when you actually have separate pages for those markets, for example a different currency or delivery.

Localisation is what translation does not cover:

  • Currency and payment methods, and which countries you really deliver to.
  • Phone number with country code, opening hours with a time zone, and an address in a form the reader recognises.
  • Legal pages (terms, privacy, cookies): check whether the other market asks for different terms, and have someone who knows that market review them.
  • Examples and units the reader in that country understands.

Latin and Cyrillic: a Serbian-specific question

If you offer Serbian in both scripts, each version needs its own URL. A button that switches script on the same address does not create a second version search could find, because Google asks for every language version to have its own URL.

Google's documentation gives its script-code example in Chinese (zh-Hans and zh-Hant). Nenad Pantelić describes the same pattern for Serbian: sr-Latn for Latin and sr-Cyrl for Cyrillic, with a canonical that points each version to itself. This site is Latin only for now.

Language switcher and automatic redirects

Do not redirect visitors automatically by browser language or IP address. Google says such redirects make other versions harder to reach for both users and search, and that IP geolocation is unreliable. Put a visible language link on every page instead.

The switcher should lead to the same page in the other language, not to the homepage, and it should write each language in its own name: Srpski, English.

What translating a site costs

Translation is priced per translation page. The price list of the agency prevodioci.co.rs, valid from 1 September 2026, defines a page as 1,800 characters including spaces and lists Serbian and English from 7 euros per page without court certification and from 14 euros with it. The agency is not in the VAT system. These are from prices, and more complex text costs more.

The arithmetic: a site of 20 pages with 3,600 characters each has 72,000 characters, which is 40 pages, or about 280 euros at the lowest price on that list. If every page has 7,200 characters, the bill doubles: 80 pages and at least 560 euros.

Translation is the one-off part of the cost. The recurring part is maintenance, because every text change in one language needs the same change in every other.

We do not publish a price for building a multilingual version, because it depends on the number of pages and features. The price calculator gives a scope estimate for your case.

Pre-launch check: eight steps

  • Open the page source (view-source) on each version and look for rel="alternate" hreflang. Every version lists all versions, including itself.
  • Click through every pair and confirm the return link exists in both directions.
  • The URLs in the tags are fully qualified (https://) and open the page.
  • Each page is in one language: no Serbian and English mixed in the same text, apart from product names and terms.
  • The language switcher is visible and leads to the same page in the other language.
  • The sitemap contains all versions and is submitted in Search Console. After a few weeks, look at the page indexing report for each language.
  • Languages you have not finished stay out of the sitemap and out of the hreflang tags. This site is prepared for 24 languages but only two are published: the rest are out of the sitemap, blocked in robots.txt and marked noindex.
  • Compare page counts per language. The gap between the Serbian and English versions is your list of missing pages.

Related guides

Sources

Key takeaways

  • One URL per language, in practice most often a subdirectory, and a full translation of the main content.
  • Hreflang has to be reciprocal, with fully qualified URLs and an x-default page. It is for showing the right version, not for ranking.
  • Do not redirect visitors automatically by language or IP address, offer a visible language choice.
  • Translation is priced per 1,800-character page: 20 pages of 3,600 characters is 40 pages.
  • Keep languages you have not finished out of the sitemap and the hreflang tags.

Conclusion

The biggest cost of a second language is every change made after the translation. Before adding a language, answer who will update the second version when a price, opening hours or a service changes. If the answer is nobody, publish one language in full. If the answer is somebody, the translation and the tags are only the start of the work.

Frequently asked questions

A multilingual website needs one URL per language, a real translation of the full content, and hreflang tags that link the versions in both directions. For most small businesses the simplest URL structure is a subdirectory such as /en/ or /sr/, and every translation needs a human read before it goes live. Hreflang does not improve a page's ranking, it only helps Google show the right version to the right audience. Below is the decision step by step: whether you need a second language at all, which URL structure to pick, how to check the tags yourself, what translation actually costs (with the arithmetic), and the questions specific to Serbian, Latin and Cyrillic script.

Not when the main content is genuinely translated. Google says localised versions count as duplicates only when the main content stays untranslated. That is why the main content has to be translated in full.

Want to talk through your project?

Send a quick message or reach us on WhatsApp, no obligation. We will tell you honestly what you need and what you do not. If a website is not the answer to your problem, we will say that too.

Calculate your project price

No obligation. Reply within 24-48h.