The English side is not a partial translation; it is a full mirror. Every path holds the same number of pages in both languages:
| Path | Chinese | English | Match |
|---|---|---|---|
| about | 1 | 1 | ✓ |
| access | 1 | 1 | ✓ |
| api | 1 | 1 | ✓ |
| claims | 1 | 1 | ✓ |
| community | 1 | 1 | ✓ |
| compat | 1 | 1 | ✓ |
| context | 1 | 1 | ✓ |
| dev | 1 | 1 | ✓ |
| english | 1 | 1 | ✓ |
| fix | 1 | 1 | ✓ |
| lab | 12 | 12 | ✓ |
| nav | 1 | 1 | ✓ |
| plugins | 14 | 14 | ✓ |
| prompts | 1040 | 1040 | ✓ |
| recipes | 24 | 24 | ✓ |
| start | 1 | 1 | ✓ |
| topics | 62 | 62 | ✓ |
| workspace | 1 | 1 | ✓ |
The 1040 under prompts are 520 prompts with a pair of pages each.
Checking it yourself
The mapping is /xxx/yyy.html ↔ /en/xxx/yyy.html: the filename is unchanged and en/ is inserted at the front. To send a Chinese page to an English reader, prepend en/ to the URL.
Why 1:1 is achievable: the build renders the same data twice and switches which language's fields it reads via
LANG. There is therefore no 'this page was forgotten' case — missing English surfaces at build time when a field comes back empty, and audit_cn.py blocks any Chinese that leaks into an English page.