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.resx in English and a Messages.<language>.resx beside it for each other language, read through one Messages class, as dotnet new s3l-web --localization true writes 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).