PDA

View Full Version : آموزش: فارسی سازی Telerik Scheduler - با یک مشکل



popo69
دوشنبه 11 آذر 1392, 11:16 صبح
سلام دوستان و همکاران عزیز

لطفا در مورد این پست حداکثر همکاری رو داشته باشین تا به یه نتیجه کامل برسیم...

تقویم و یا همون قرار ملاقات :

از 4 قسمت - نمایش روزانه - نمایش هفتگی - نمایش ماهانه - تایم لاین تشکیل می شه

با کلاس persianCalendar که در یکی از پست ها بود - تونستم calendar تلریک رو فارسی کنم و در تمام قسمت هایی که در بالا گفتم به درستی تاریخ ها رو نشون می ده اما در قسمت نمایش ماهانه دچار مشکل هست و گیر من اینجاست تصاویر رو قرار می دم تا منظورمو دقیقا متوجه بشید :

113413113414113415113416

تو عکسی که با خط قرمز مشخص کردم اگر توجه کنین می بینین با اینکه تاریخ آذر ماه هست ولی اسفند و اول فروردین 93 رو نشون می ده

کلاس PersianCalendar :


public class PersianCulture : CultureInfo
{
private readonly Calendar cal;
private readonly Calendar[] optionals;


public PersianCulture(): this("FA-IR", true)
{

}

public PersianCulture(string cultureName, bool useUserOverride): base(cultureName, useUserOverride)
{
//Temporary Value for cal.
cal = base.OptionalCalendars[0];

//populating new list of optional calendars.
var optionalCalendars = new List<Calendar>();
optionalCalendars.AddRange(base.OptionalCalendars) ;
optionalCalendars.Insert(0, new PersianCalendar());


Type formatType = typeof(DateTimeFormatInfo);
Type calendarType = typeof(Calendar);


PropertyInfo idProperty = calendarType.GetProperty("ID", BindingFlags.Instance | BindingFlags.NonPublic);
FieldInfo optionalCalendarfield = formatType.GetField("optionalCalendars",
BindingFlags.Instance | BindingFlags.NonPublic);

//populating new list of optional calendar ids
var newOptionalCalendarIDs = new Int32[optionalCalendars.Count];
for (int i = 0; i < newOptionalCalendarIDs.Length; i++)
newOptionalCalendarIDs[i] = (Int32)idProperty.GetValue(optionalCalendars[i], null);

optionalCalendarfield.SetValue(DateTimeFormat, newOptionalCalendarIDs);

optionals = optionalCalendars.ToArray();
cal = optionals[0];
DateTimeFormat.Calendar = optionals[0];

DateTimeFormat.MonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
DateTimeFormat.MonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
DateTimeFormat.AbbreviatedMonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
DateTimeFormat.AbbreviatedMonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };


DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };

DateTimeFormat.AMDesignator = "ق.ظ";
DateTimeFormat.PMDesignator = "ب.ظ";


DateTimeFormat.ShortDatePattern = "yyyy/MM/dd";
DateTimeFormat.LongDatePattern = "yyyy/MM/dd";

DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy/MM/dd"}, 'd');
DateTimeFormat.SetAllDateTimePatterns(new[] {"dddd, dd MMMM yyyy"}, 'D');
DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'y');
DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'Y');


}

public override Calendar Calendar
{
get { return cal; }
}

public override Calendar[] OptionalCalendars
{
get { return optionals; }
}
}


و کدی که در Form_load قرار دادم :


RadSchedulerLocalizationProvider.CurrentProvider = new telerikScheduler();
Telerik.WinControls.UI.SchedulerNavigatorLocalizat ionProvider.CurrentProvider = new telerikSchedulerNavigator();

var persianCulture = new PersianCulture();

System.Threading.Thread.CurrentThread.CurrentCultu re = persianCulture;

radScheduler1.Culture = persianCulture;


لطفا دوستانی که تجربه ای در این زمینه دارن راهنمایی کنند تا به نتیجه برسیم - که این موضوع مشکل خیلی از برنامه نویس ها هست...

popo69
سه شنبه 12 آذر 1392, 09:01 صبح
اساتید محترم لطفا راهنمایی کنید..
فکر کنم از مشکل از کلاس PersianCalendar باشه - چون در حالت عادی بدون تبدیل Calendar به PersianCalendar مشکل اشتباه نمایش ماه رو نداره
در زمانی که ماهانه رو نمایش می ده - اسفند رو مساوی December می دونه

hamirayan
سه شنبه 07 مهر 1394, 10:44 صبح
اساتید و دوستان محترم کسی راه حلی نداره؟

با سلام
با توجه به قدیمی بودن تاپیک
ولی فارسی سازی Telerik Scheduler مشکل بنده نیز می باشد.
از دوستان و اساتید محترم خواهشمندم راهنمائی بفرمائید.

Helpco
دوشنبه 19 تیر 1396, 19:52 عصر
کسی راهکاری نیافته؟