現在リリースされている 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) を使用している場合は、エラー メッセージ内で {0} の代わりに {MaxLength} を使用できます。
{MaxLength} 文字未満で使用してください。
...そして、FV はこれを最大値として入力した値に自動的に置き換えます。ドキュメントには、すべての名前付きプレースホルダーの完全なリストがあります。