В текущей версии FluentValidation (v2) это не поддерживается при использовании локализованных сообщений.
Первый аргумент WithLocalizedMessage всегда должен идентифицировать свойство ресурса - вы не можете поместить в него произвольный код (например, вызов string.format).
Если вы используете нелокализованное сообщение, вы можете сделать это:
RuleFor(x => x.Property).Length(1,255).WithMessage("Max number of chars is {0}", "255");
Вы также сможете использовать этот подход с локализованными сообщениями об ошибках начиная с FluentValidation v3, но пока нет бинарной версии, поэтому, если вы хотите использовать это, вы можете получить и собрать исходный код с сайта проекта.
В качестве альтернативы, вместо использования числовых заполнителей вы можете использовать встроенную поддержку FV для именованных заполнителей для валидаторов по умолчанию. Поэтому, если вы используете .Length (1, 255), вы можете использовать {MaxLength} внутри сообщения об ошибке вместо {0}:
Пожалуйста, используйте меньше, чем {MaxLength} символов.
... и FV автоматически заменит это значение, которое вы ввели как максимальное. В документации .
содержится полный список всех названных заполнителей
.