Uygulama kültürümü, OS kültürünün ne olduğuna bakmaksızın, istediğim her şeye ayarlamak istiyorum. Bunu elde etmek için kültür olarak "fa-IR" olan CultureInfo sınıfını kullandım, ancak "PersianCalendar" sınıfını değil, varsayılan takvim olarak "GregorianCalendar" kullandı. Yani benim müşteri kültürünü uygulamaya CultureınfoRegionInfo gelen yeni bir sınıf türetmek için çalıştı:.NET CultureInfo sınıfından özel kültür nasıl elde edilir?
/// <summary>
/// Represents culture specific information, Persian calendar and number format info for Iran.
/// </summary>
public class PersianCultureInfo : CultureInfo
{
private Calendar _calendar = new PersianCalendar();
public PersianCultureInfo()
: base("fa-IR", true)
{
}
/// <summary>
/// Persian calendar with solar system algorithm for Iran.
/// </summary>
public override Calendar Calendar
{
get
{
return this._calendar;
}
}
public static PersianCultureInfo Create()
{
PersianCultureInfo culture = new PersianCultureInfo();
culture.PerpareDateTimeFormatInfo();
return culture;
}
private void PerpareDateTimeFormatInfo()
{
this.DateTimeFormat.Calendar = this.Calendar;
this.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Saturday;
}
}
sorun DateTimeFormat özelliği şu istisna atar şudur:
Not a valid calendar for the given culture.
Parameter name: value
yüzden OptionalCalendars özelliği geçersiz kılmak için çalıştı
public override Calendar[] OptionalCalendars
{
get
{
return base.OptionalCalendars.Concat<Calendar>(new Calendar[1] { new PersianCalendar() }).ToArray<Calendar>();
}
}
Ama çözüldü vermedi: tarafından liste sadece GregorianCalendar ve HijriCalendar içerdiği varsayılan çünkü, onlara PersianCalendar eklemek için sorun. Yanlış olan ne? PersianCalendar'ı CultureInfo ve DateTimeFormat için varsayılan takvim olarak nasıl doğru şekilde ayarlayabilirim?
belki bu link yardım size daha fazla Hemşerim :) http://www.codeproject.com/Articles/17495/ Farsça DateTime – Arash