en: English, default.tr: Turkish.
Unknown language codes fall back to English.
LanguageCoderepresents the selected language.ITextProviderreturns CLI text.TemplateCatalogstores generated document templates.TemplateRendererreplaces structured placeholders.
- Keep public API names in English.
- Keep Turkish output natural and technical.
- Do not scatter CLI strings across command code when a shared text/template path is practical.
Human-readable Turkish CLI output may include UTF-8 Turkish characters such as ö, ı, and ğ.
Examples:
Tarama özetioluşturulduvar olan atlandıSağlık kontrolleriRisk bulgusu yok.
JSON output keeps stable English field names and schema values regardless of --lang.
On Windows, use a UTF-8-capable terminal profile if Turkish characters render incorrectly. The CLI should not downgrade Turkish text to ASCII fallback wording.
Every command that advertises --lang en|tr is covered by the localization parity matrix. Equivalent English and Turkish invocations must preserve:
- the same exit code;
- the same command signature and option names;
- the same security visibility and Critical/High decisions;
- the same generated repository-relative paths and overwrite behavior;
- the same JSON schema and machine-readable semantics.
Human-readable headings, labels, summaries, yes/no values, generated-file statuses, and known argument errors may be localized. Stack names, severity enum names, scanner rule IDs, configuration diagnostic codes, file paths, and Core diagnostic/finding messages remain stable technical values.
JSON field names, command names, status tokens, rule IDs, diagnostic codes, and exit codes remain language-independent. JSON and SARIF must not gain translated aliases or language-specific values.
Run:
powershell -ExecutionPolicy Bypass -File scripts/check-localization-parity.ps1 -FailOnIssuesThe gate verifies all 13 JSON-capable commands are represented, runs focused English/Turkish human/error/JSON tests, smokes Turkish help, and parses Turkish-mode JSON. Generated templates remain a separate content surface; this gate does not require a resource framework or rewrite every template.