A self-contained chunk of #52, and the one with the widest reach: docs/i18n/README.es.md is already translated, so Spanish readers arrive at the project in their own language and then hit an English-only rule reference.
What exists
docs/i18n/README.es.md — the project README in Spanish. Nothing under docs/i18n/rules/es/ yet.
What is missing
docs/i18n/rules/es/README.md — the index. Without it a translated page has no entry point, so a reader who lands on one rule has no way to discover the rest.
docs/i18n/rules/es/DOL001.md … DOL008.md — the queryset family, the most frequently triggered rules in the set.
The index alone is a genuinely useful first PR and takes an evening. Take that, or one family, or both — a PR per chunk is better than one large one.
Reference
docs/i18n/rules/it/README.md is the model for starting a locale: it covers one family and says so plainly, linking out to the full English reference for the rest. That honesty is the right call when a locale covers 8 rules out of 22, and it is what this issue should copy.
docs/i18n/rules/vi/ is the only complete locale — all 22 pages — so it shows what finished looks like.
Translate the prose, not the code
Python examples, rule codes, option names and suppression syntax stay byte-identical to the English source, so they stay copy-pasteable and greppable. django-orm-lens-disable-next-line is directive syntax, not prose — it does not get translated.
Two things checked on every translation PR, because a previous batch (#90) had to be rewritten for missing them:
- The index table repeats the canonical category, default severity and applicability from
docs/rules/README.md unchanged. Translate the description, leave the metadata alone.
- Line count and heading structure track the English source.
Acceptance criteria
- Files land under
docs/i18n/rules/es/.
- Code blocks,
DOL*** codes and CLI flags are unchanged from the English source.
docs/i18n/README.es.md links the new section.
- The PR confirms you read and write Spanish — I cannot review it myself.
A self-contained chunk of #52, and the one with the widest reach:
docs/i18n/README.es.mdis already translated, so Spanish readers arrive at the project in their own language and then hit an English-only rule reference.What exists
docs/i18n/README.es.md— the project README in Spanish. Nothing underdocs/i18n/rules/es/yet.What is missing
docs/i18n/rules/es/README.md— the index. Without it a translated page has no entry point, so a reader who lands on one rule has no way to discover the rest.docs/i18n/rules/es/DOL001.md…DOL008.md— the queryset family, the most frequently triggered rules in the set.The index alone is a genuinely useful first PR and takes an evening. Take that, or one family, or both — a PR per chunk is better than one large one.
Reference
docs/i18n/rules/it/README.mdis the model for starting a locale: it covers one family and says so plainly, linking out to the full English reference for the rest. That honesty is the right call when a locale covers 8 rules out of 22, and it is what this issue should copy.docs/i18n/rules/vi/is the only complete locale — all 22 pages — so it shows what finished looks like.Translate the prose, not the code
Python examples, rule codes, option names and suppression syntax stay byte-identical to the English source, so they stay copy-pasteable and greppable.
django-orm-lens-disable-next-lineis directive syntax, not prose — it does not get translated.Two things checked on every translation PR, because a previous batch (#90) had to be rewritten for missing them:
docs/rules/README.mdunchanged. Translate the description, leave the metadata alone.Acceptance criteria
docs/i18n/rules/es/.DOL***codes and CLI flags are unchanged from the English source.docs/i18n/README.es.mdlinks the new section.