---
title: "How many languages an export site should have, and how the URLs should work"
description: "The URL structure that keeps language versions from competing with each other, and the five places a new language has to be added before it works."
canonical: https://aumcreate.com/blog/export-site-languages
datePublished: 2026-08-27
dateModified: 2026-08-27
---
# How many languages an export site should have, and how the URLs should work

> Each language needs its own URL and an hreflang annotation pointing at the others. Machine-translating a site into eight languages produces eight versions of the same thin page competing with each other; two languages written properly outperform them. Choose by where your buyers actually are, not by how many flags fit in the header.

The usual approach is a language dropdown with eight flags, driven by machine translation. It feels like reach. What it produces is eight versions of the same page, most of them thin, all of them telling search engines that this content exists in eight places.

Two decisions come first, and they are separate: how many languages, and how the URLs are shaped.

## How many: count buyers, not flags

- A language earns its place if you can answer an enquiry in it. A page in Portuguese that leads to an English-only reply is worse than no Portuguese page.
- It earns its place if the content is written in it, not converted into it. Converted text reads as converted, and buyers notice in their own language faster than you notice in theirs.
- It earns its place if you will keep it current. A language version that falls a year behind becomes a page showing an old price.

On this site we run four, and each one is written rather than translated — the Chinese is not the English rearranged, because the two audiences do not ask the same questions in the same order.

## The URL structure

| Approach | What it costs | When to use it |
| --- | --- | --- |
| Subdirectory (/zh/, /ja/) | Nothing. One domain, one accumulation of authority | Almost always |
| Subdomain (zh.example.com) | Authority is split per subdomain | Only when the versions are run by different teams |
| Separate ccTLD (example.jp) | A separate site to build authority for, from zero | When a market legally requires a local presence |

One more rule that is easy to get wrong: the default language should live at the root, not at /en/. If both / and /en/ serve the same English page, that is a duplicate, and you have to pick one and redirect the other. We redirect /en/ to /.

## hreflang, and the part nobody warns you about

hreflang tells a search engine that these pages are the same content in different languages, so they are not treated as duplicates. It has to be reciprocal: every version points at every other version, including itself. A one-way annotation is silently ignored.

The trap is the code format. The URL segment is lowercase (/zh-hant/) but the hreflang value has to be canonical BCP-47 with the script capitalised (zh-Hant). Getting this wrong throws no error and breaks nothing visible — the annotation is simply ignored, and you find out months later when the wrong language version ranks in the wrong country.

## The five places a language has to be added

On this site, adding Japanese meant touching five things. Four of them fail loudly if you miss them. The fifth does not.

- The routing tables — the list of locales and their BCP-47 forms.
- The message file for the new locale.
- Every content file typed as one-entry-per-language — the compiler catches these.
- The font stack. This one is silent: a Japanese page with no font override falls back to a Chinese font, and characters like 直 and 骨 render with Chinese glyph shapes. It looks fine to anyone who does not read Japanese, and instantly wrong to anyone who does.
- The SEO check tables, so the new language is actually verified.

The font one is the reason to write this list down somewhere the next person will read it. Nothing tests it, nothing warns you, and the only detector is a native reader who now thinks the site was made carelessly.

---

Part of: [An export site is a structure problem before it is a content problem](https://aumcreate.com/blog/export-site-structure-first)
