Asp.Net Mvc çoklu dil desteği

EceKoc (834) 11 yıl önce sordu

Asp.Net Mvc'de Türkçe yayınlanacak bir web sitesi hazırladım. Fakat şimdi İngilizce dil desteği de verilecek. Modellerimin içindeki hata mesajlarını ve View'da görüntülecek adını string olarak kendim yazıyordum. (Türkçe)    

[Display(Name = "Ad")]
[Required(ErrorMessage = "Bu alan gereklidir.")]
public string Ad { get; set; }

gibi. 

Mesela anasayfada hoşgeldiniz yazdırmak için View içerisine    

UzmanimNet.Resources.Shared.Genel.Hosgeldiniz

yazdığımda seçili dil ne ise ona uygun olarak Hoşgeldiniz veya Welcome yazıyor.

Çözüm olarak 

[Display(Name = UzmanimNet.Resources.Home.DuzYazilar.Ad)]
[Required(ErrorMessage = UzmanimNet.Resources.Hatalar.Hatalar.AdBosHatasi)]
public string Ad { get; set; }

şeklinde denediğimde "An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type" hatası veriyor.

Dil İngilizce ise hata mesajını İngilizce olarak nasıl yazdıracağım?

Not: 

Hataları tutmak için Resources klasörünün altında Hatalar isimli bir klasör açtım. Onun içerisinde "Hatalar.resx" ve "Hatalar.en.resx" dosyaları var. 

Alanların isimlerini tutmak için ise Resources klasörünün altında Home isimli bir klasör açtım. Onun içerisinde "DuzYazilar.resx" ve "DuzYazilar.en.resx" dosyaları var.

Toplam 1 cevap


EceKoc (834) 11 yıl önce cevapladı
[Display(ResourceType = typeof(UzmanimNet.Resources.Home.DuzYazilar), Name="Ad")]
[Required(ErrorMessageResourceName = "AdBosHatasi", ErrorMessageResourceType = typeof(UzmanimNet.Resources.Hatalar.Hatalar) )]
public string Ad { get; set; }

"ErrorMessageResourceName" alanına yazdırmak istediğiniz yazıya verdiğiniz ismi (sorudan yola çıktığımızda bu Hatalar.resx dosyasındaki "AdBosHatasi" isimli yazı olacaktır.),
"ErrorMessageResourceType" alanına da yazının bulunduğu dosyanın adını yazıyoruz (sorudan yola çıktığımızda bu "Hatalar" klasörünün altındaki "Hatalar.resx" dosyasının adı olacaktır.).