Ädded remaining customized date/time formats for Persian calendar, and extracted them into a separate class.

This commit is contained in:
Daniel Stolt
2014-08-16 01:00:43 +02:00
parent c816d8e24f
commit 2f4ab2e272
3 changed files with 72 additions and 25 deletions

View File

@@ -174,7 +174,7 @@ namespace Orchard.Localization.Services {
public virtual string[] AmPmDesignators {
get {
return new [] { DateTimeFormat.AMDesignator, DateTimeFormat.PMDesignator };
return new[] { DateTimeFormat.AMDesignator, DateTimeFormat.PMDesignator };
}
}
@@ -208,30 +208,7 @@ namespace Orchard.Localization.Services {
// "orphaned" (i.e. not supported for any culture!) in the .NET Framework, something generally
// considered a serious bug, I think it's justified to add this particular override
if (culture.Name == "fa-IR" && calendar is PersianCalendar) {
var persianFormats = (DateTimeFormatInfo)culture.DateTimeFormat.Clone();
var persianCalendarMonthNames = new[] {
"فررودين",
"ارديبهشت",
"خرداد",
"تير",
"مرداد",
"شهريور",
"مهر",
"آبان",
"آذر",
"دي",
"بهمن",
"اسفند",
"" // 13 months names always necessary...
};
persianFormats.MonthNames =
persianFormats.AbbreviatedMonthNames =
persianFormats.MonthGenitiveNames =
persianFormats.AbbreviatedMonthGenitiveNames =
persianCalendarMonthNames;
return persianFormats;
return PersianDateTimeFormatInfo.Build(culture.DateTimeFormat);
}
}

View File

@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Orchard.Localization.Services {
internal static class PersianDateTimeFormatInfo {
internal static DateTimeFormatInfo Build(DateTimeFormatInfo original) {
var persianFormats = (DateTimeFormatInfo)original.Clone();
var persianCalendarMonthNames = new[] {
"فررودين",
"ارديبهشت",
"خرداد",
"تير",
"مرداد",
"شهريور",
"مهر",
"آبان",
"آذر",
"دي",
"بهمن",
"اسفند",
"" // 13 months names always necessary...
};
persianFormats.MonthNames =
persianFormats.AbbreviatedMonthNames =
persianFormats.MonthGenitiveNames =
persianFormats.AbbreviatedMonthGenitiveNames =
persianCalendarMonthNames;
persianFormats.SetAllDateTimePatterns(new[] {
"yyyy/MM/dd",
"yy/MM/dd",
"yyyy/M/d",
"yy/M/d"
}, 'd');
persianFormats.SetAllDateTimePatterns(new[] {
"dddd، d MMMM yyyy",
"d MMMM yyyy"
}, 'D');
persianFormats.SetAllDateTimePatterns(new[] {
"MMMM yyyy",
"MMMM yy"
}, 'y');
persianFormats.SetAllDateTimePatterns(new[] {
"HH:mm",
"H:mm",
"hh:mm tt",
"h:mm tt"
}, 't');
persianFormats.SetAllDateTimePatterns(new[] {
"HH:mm:ss",
"H:mm:ss",
"hh:mm:ss tt",
"h:mm:ss tt"
}, 'T');
return persianFormats;
}
}
}

View File

@@ -278,6 +278,7 @@
<Compile Include="Localization\Services\IDateFormatter.cs" />
<Compile Include="Localization\Services\IDateTimeFormatProvider.cs" />
<Compile Include="Localization\Services\ILocalizedStringManager.cs" />
<Compile Include="Localization\Services\PersianDateTimeFormatInfo.cs" />
<Compile Include="Localization\Services\SiteCalendarSelector.cs" />
<Compile Include="Logging\OrchardFileAppender.cs" />
<Compile Include="Logging\OrchardLog4netFactory.cs" />