2
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.
1
[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.).
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol