Translation status¶
English (README.md) is the source of truth. Everything else here is native human work, and nothing on this page is generated by translating prose automatically — if a machine rewrote a translator's sentences, the translator would stop translating.
scripts/check-translations.py is read-only. It reports drift; a human who reads the language fixes it.
Matrix¶
| Locale | File | Scope | Native reviewer | Translated from | Status | Next action |
|---|---|---|---|---|---|---|
हिंदी (hi) | docs/hi/index.md | full | @Sushanttmishraa — account deleted | 96711bc (2026-08-13) | active | a new native reviewer is wanted; the translation itself is unaffected |
한국어 (ko) | docs/ko/index.md | partial | @doeil1614-ops | 3baacb8 (2026-09-12) | active | re-check against English when the README changes materially |
简体中文 (zh-CN) | docs/zh-CN/index.md | partial | needed | 96711bc (2026-08-13) | active | covers install + quickstart only; a native reviewer is wanted |
Русский (ru) | docs/ru/index.md | full | @4nmus | 96711bc (2026-08-13) | active | re-check against English when the README changes materially |
Türkçe (tr) | docs/tr/index.md | partial | @musabustun | 119a9c4 (2026-09-13) | active | covers the hero, install and quickstart, "what it does" and privacy only; re-check against English when the README changes materially |
español (es) | docs/es/index.md | partial | @laurash96 | 5b5fd29 (2026-09-20) | active | covers the hero, install and quickstart, "what it does" and privacy only; re-check against English when the README changes materially |
| Deutsch (de) | docs/de/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #337 | | Nederlands (nl) | docs/nl/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #347 | | Tiếng Việt (vi) | docs/vi/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #357 | | bahasa Indonesia (id) | docs/id/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #343 | | français (fr) | docs/fr/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #341 | | italiano (it) | docs/it/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #344 | | polski (pl) | docs/pl/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #348 | | português do Brasil (pt-BR) | docs/pt-BR/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #349 | | svenska (sv) | docs/sv/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #350 | | čeština (cs) | docs/cs/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #336 | | ελληνικά (el) | docs/el/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #338 | | українська (uk) | docs/uk/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #355 | | اردو (ur) | docs/ur/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #356 | | العربية (ar) | docs/ar/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #334 | | فارسی (fa) | docs/fa/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #340 | | বাংলা (bn) | docs/bn/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #335 | | தமிழ் (ta) | docs/ta/index.md | partial | @Guruharishb | 3baacb8 | active | re-check against English when the README changes materially | | తెలుగు (te) | docs/te/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #352 | | ไทย (th) | docs/th/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #353 | | 日本語 (ja) | docs/ja/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #345 | | 繁體中文 (zh-TW) | docs/zh-TW/index.md | partial | needed | 3baacb8 | draft | needs a native reviewer — #358 |
The rows above are machine-assisted drafts, generated by scripts/gen-readme-translation.py from the string table in scripts/translations.py. Each one says so in the reader's own language at the top of the file. Reviewing one is a much smaller job than translating a README from scratch, and it is the single most useful thing a native speaker can do here — correct the prose in the string table and regenerate.
Correct the table, not the page: the page is output and the next regeneration rewrites it. Once your language is reviewed, set its status to active and name yourself as reviewer in the page's metadata comment — the generator leaves a page alone from then on, and the row above follows what the page says.
Scope is what the translation claims to cover — full (the whole README) or partial (a named subset). A partial translation is not a defect; an undeclared partial translation is, because a reader cannot tell what is missing.
Status is one of:
| Status | Meaning |
|---|---|
active | reviewed by a native speaker and believed current |
draft | usable but not yet native-reviewed — must show a visible banner saying so |
stale | known to lag English materially; needs a pass before it is trusted |
Sync metadata¶
Every translation carries one HTML comment, directly under the language switcher. It renders as nothing on GitHub and exists so the checker — and the next translator — can answer "which English commit was this translated from?":
<!-- yazses-l10n: locale=ru; source=README.md; source_sha=96711bc; scope=full; status=active; reviewer=@4nmus -->
| Key | Meaning |
|---|---|
locale | BCP-47-ish tag matching the filename (README.<locale>.md) |
source | always README.md — English is the source of truth |
source_sha | the short SHA of the English README this was translated from |
scope | full or partial |
status | active, draft or stale |
reviewer | GitHub handle of the native reviewer, if there is one |
If you are updating a translation¶
- Find what changed in English since your
source_sha:
- Translate the prose that changed. Copy every command, path and URL verbatim — a translated command is the one kind of drift that actively harms a reader, because
yazses диагностикаis not a command that exists. - Update
source_shain your metadata comment to the English commit you just synced to, and update your row in the matrix above. - Run the checker:
It never edits your file. Exit code 1 means it found something for you to look at.
If you are adding a new language¶
Copy README.md to README.<locale>.md, add your language to the switcher line at the top of every README (including the English one), add the metadata comment, and add a row to the matrix. Start at status=draft with a visible banner near the top saying the translation has not been native-reviewed yet; the checker enforces that banner so a reader is never misled about how vetted the text is.
What the checker does not do¶
It cannot read your language. It does not judge translation quality, tone, or whether a sentence still means what the English one means. Those need a human, which is why the reviewer column exists.