S3L0005: English only¶
Names, comments and messages are written in English.
| Category | Snail |
| Severity | warning — an error under TreatWarningsAsErrors, which every Snail project builds with |
| Analyzer | SourceText in Snail.Sdk.Analyzers |
| Code fix | none |
What it reports¶
Cyrillic letters (U+0400–U+04FF):
| Where | Reported as |
|---|---|
| an identifier | This name is not in English |
| any comment, XML documentation included | This comment is not in English |
| a string, interpolated, raw or UTF-8 string, or a character literal | This text is not in English |
What it leaves alone¶
Literals — not names or comments — in a project of kind Tests or Benchmarks, whose text is data, and literals
inside a type or namespace whose name contains Prompt: text an LLM must read verbatim, in whatever language it is
written for.
Why¶
Names, documentation, comments and messages are professional technical English, so that every reader of the fleet — and every tool reading it — reads one language.
How to fix¶
Translate. Text that must stay in another language moves out of the code:
- what a person reads — a page, a message, a label — into resources:
Resources/Messages.resxin English and aMessages.<language>.resxbeside it for each other language, read through oneMessagesclass, asdotnet new s3l-web --localization truewrites it. The conformance check keeps the translations whole (S3LC0031); - a prompt, or a sample a feature is built around, into a type named for it, such as
SearchPrompts, or into a data file.
Suppressing it¶
Fix the code rather than silence the rule: the rule is part of the standard every Snail repository keeps. Where one place truly must differ, suppress that place and say why:
[SuppressMessage("Snail", "S3L0005:English only", Justification = "<why this place differs>")]
A NoWarn in a project or props file would hide the rule from every new line too; the
conformance check reports one as migration debt (S3LC0017).