Translations
The repo is maintained in English, with a few files translated: which those are, why the set is deliberately small, and what to do if you want to add a language. Part of the Frontend Roadmap.
What is translated
| Language | Files | Source |
|---|---|---|
Uzbek (uz) | README.uz.md, ROADMAP.uz.md | README.md, ROADMAP.md |
Everything in docs/ is English only, including this file.
The policy: entry points only
Only the two entry-point files get translated. Topic files do not.
The entry points are the parts where language actually blocks comprehension. They explain what to do, in what order, when to stop, and what to build — that is argument and instruction, and a reader who cannot follow it is stuck before they start.
The topic files are different. They are lists of English resource names with a
one-line description each, and every link on them leads to English material. A
reader who cannot read — Game for learning CSS flexbox. cannot read Flexbox
Froggy either, so translating that line buys nothing and costs a permanent second
copy to maintain.
The rule this produces is worth stating plainly, because it is the whole reason the translation is sustainable: a normal contribution — adding a link to a topic file — never touches a translated file. Only edits to the roadmap’s structure or argument do, and those are rare.
English is the source of truth
Translations follow English; English never waits for a translation.
- Change English first, then update the translations. A pull request that changes
only
README.mdis fine and is not blocked on anyone. - If a translation falls behind, that is a bug in the translation, not in the English file. Open an issue rather than reverting the English change.
- Never fix a factual error only in a translation. Fix
README.mdorROADMAP.md, then carry it across.
Translated files keep the same headings, ordering, and Markdown structure as their source. That is not cosmetic — it is what lets you diff the two side by side and see what a translation is missing.
There are two intentional exceptions, both present in the Uzbek files:
- A language-switcher line near the top of every file that has a translation,
English and translated alike:
[English](README.md) · [O'zbekcha](README.uz.md). - A one-line note in the translated file saying the topic files are in English.
Link conventions
- Topic-file links stay relative and point at the English file. In
README.uz.md,docs/CSS.mdstaysdocs/CSS.md. There is nodocs/CSS.uz.mdto point at. - Anchors on English files are never translated.
docs/HTML.md#referencekeeps#reference, because that anchor is generated from the English heading. - Entry points cross-link within their own language.
README.uz.mdlinks toROADMAP.uz.md, notROADMAP.md. Anchors into a translated file must match that file’s own translated headings —README.uz.md#mundarija, not#contents. - Repo-meta files stay English.
CONTRIBUTING.md,docs/STYLE.md,CODE_OF_CONDUCT.md, andLICENSEare linked as-is from translations. Say so in the surrounding sentence so the reader is not surprised.
CI checks every relative link in every *.md file, translations included — see
.github/workflows/link-check.yml. It does not check anchor fragments, so verify
those by hand.
Translation conventions
- Translate meaning, not words. These files have a voice and make arguments. Reading naturally in the target language beats matching the English sentence shape.
- Keep technical terms in the form developers in that language actually use.
The Uzbek files keep
framework,bundler,deploy,commit,pull request,layout,state, and similar in English, because that is what Uzbek developers say. Do not invent calques nobody uses. Where a term does have a settled native form, use it. - Do not translate file names, code, code spans, URLs, product names, badge
alt text, or GitHub alert markers (
> [!TIP],> [!WARNING],> [!NOTE]— the marker is syntax; the text after it is not). - Uzbek specifically: Latin script, and the apostrophe in
o'/g'is the plain ASCII'(U+0027) throughout — matchingO'zbekchain the switcher. Mixing'andʻbreaks text search across the file, so pick the one and keep it.
Adding a language
- Open an issue first. A translation is a standing commitment, not a one-off pull request — say who will keep it current.
- Copy
README.mdtoREADME.<code>.mdandROADMAP.mdtoROADMAP.<code>.md, using the ISO 639-1 code. Translate in place so the structure survives. - Add the language-switcher line to the new files and to
README.mdandROADMAP.md, so it is reachable from both directions. Separator is·. - Add the one-line note that the topic files are in English.
- Add a row to the table at the top of this file.
- Check every relative link resolves and that anchors into your own translated files match your translated headings.
Do not translate docs/*.md topic files. If that ever becomes worth doing, it is a
separate decision that changes the maintenance cost of every future pull request —
open an issue and make the case.