Minimal API doğrulama mesajları .NET 11'de nasıl yerelleştirilir
ASP.NET Core 11 ile Minimal API ve Blazor doğrulama hata mesajları ve alan adları, ek paket olmadan yerelleştirilebiliyor. AddValidation ve AddLocalization çağrıları ile resx dosyaları yeterli. Yazar, dört kültürle çalışan bir örnek ve entegrasyon testi sunuyor.
Kilit noktalar
- Program.cs içinde AddLocalization ve AddValidation çağrılarını ekleyin; ek paket gerekmez.
- Hata anahtarı ErrorMessage değerinden gelir; yoksa Tip_Üye_Öznitelik_Error gibi kurallı anahtarlar denenir.
- Alan adını çevirmek için [Display(Name = ...)] özniteliğini kullanın; {0} bu değeri alır.
- Kültür seçimi için UseRequestLocalization çalıştığından emin olun; lookup CurrentUICulture ile yapılır.
- Model sınıfları .cs dosyasında olmalı, çünkü üretec .razor içindeki tipleri görmez.
- [ValidatableType] ve [SkipValidation] .NET 11'de kararlı; .NET 10'daki ASP0029 bastırması gerekmez.
Şimdiye kadar yerelleştirilmiş doğrulama mesajları yalnızca MVC tarafında yerleşikti; Minimal API'lerde ise FluentValidation, özel endpoint filter'ı ya da elle yazılmış IStringLocalizer altyapısı gerekiyordu. .NET 11 ile Microsoft.Extensions.Validation paketi bu desteği doğrudan sunuyor. AddValidation çağrısı otomatik doğrulamayı açar, AddLocalization ise doğrulama hattında yerelleştirmeyi etkinleştirir.
Doğrulama anahtarları ErrorMessage değeri ya da {Tip}_{Üye}_{Öznitelik}_Error gibi kurallara göre aranır ve bulunamazsa İngilizce varsayılan mesaj kullanılır. Kültür, UseRequestLocalization ile seçilir; sorgu dizesi, çerez veya Accept-Language başlığı desteklenir. Kaynak modeller .cs dosyasında olmalı ve Razor dosyalarındaki tipler üretecin dışında kalır. Ayrıntılar ve test kodu için orijinal yazıya bakmanız önerilir.
Gerçek dünyada kullanımı
- Çok dilli bir SaaS için Minimal API tabanlı bir müşteri kayıt endpoint'i, hata mesajlarını kullanıcının dilinde döndürür.
- Blazor uygulamasında form doğrulama mesajlarını resx dosyalarından yerelleştiren bir ekip.
- Bir class library'deki modeller için ayrı bir AddValidation uzantısı yazıp host uygulamasından çağıran kütüphane geliştirici.
Neden önemli
.NET 11 ile Minimal API'lerde yerel doğrulama için FluentValidation veya özel filtre yazmak çoğu durumda gereksiz hale geliyor. Mevcut elle yazılmış çeviri kodunu gözden geçirmek iyi bir fırsat.