Merge pull request #5094 from zyhfish/task/set-fa-ir-culture
Fix #5054: resolve the issue in fa-IR language.
This commit is contained in:
commit
7a4ea8cf1b
|
@ -34,6 +34,14 @@ namespace Oqtane.Extensions
|
||||||
options.SetDefaultCulture(defaultCulture)
|
options.SetDefaultCulture(defaultCulture)
|
||||||
.AddSupportedCultures(supportedCultures)
|
.AddSupportedCultures(supportedCultures)
|
||||||
.AddSupportedUICultures(supportedCultures);
|
.AddSupportedUICultures(supportedCultures);
|
||||||
|
|
||||||
|
foreach(var culture in options.SupportedCultures)
|
||||||
|
{
|
||||||
|
if (culture.TextInfo.IsRightToLeft)
|
||||||
|
{
|
||||||
|
RightToLeftCulture.ResolveFormat(culture);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Oqtane.Infrastructure
|
||||||
|
{
|
||||||
|
public class RightToLeftCulture
|
||||||
|
{
|
||||||
|
public static CultureInfo ResolveFormat(CultureInfo cultureInfo)
|
||||||
|
{
|
||||||
|
SetNumberFormatInfo(cultureInfo.NumberFormat);
|
||||||
|
SetCalenar(cultureInfo);
|
||||||
|
|
||||||
|
return cultureInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetCalenar(CultureInfo cultureInfo)
|
||||||
|
{
|
||||||
|
var calendar = new RightToLeftCultureCalendar();
|
||||||
|
|
||||||
|
var fieldInfo = cultureInfo.GetType().GetField("_calendar", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
|
if (fieldInfo != null)
|
||||||
|
{
|
||||||
|
fieldInfo.SetValue(cultureInfo, calendar);
|
||||||
|
}
|
||||||
|
|
||||||
|
var info = cultureInfo.DateTimeFormat.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
|
if (info != null)
|
||||||
|
{
|
||||||
|
info.SetValue(cultureInfo.DateTimeFormat, calendar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetNumberFormatInfo(NumberFormatInfo persianNumberFormatInfo)
|
||||||
|
{
|
||||||
|
persianNumberFormatInfo.NumberDecimalSeparator = ".";
|
||||||
|
persianNumberFormatInfo.DigitSubstitution = DigitShapes.NativeNational;
|
||||||
|
persianNumberFormatInfo.NumberNegativePattern = 0;
|
||||||
|
persianNumberFormatInfo.NegativeSign = "-";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Oqtane.Infrastructure
|
||||||
|
{
|
||||||
|
public class RightToLeftCultureCalendar : System.Globalization.PersianCalendar
|
||||||
|
{
|
||||||
|
public override int GetYear(DateTime time)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return base.GetYear(time);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.Year;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetMonth(DateTime time)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return base.GetMonth(time);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.Month;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetDayOfMonth(DateTime time)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return base.GetDayOfMonth(time);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.Day;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetDayOfYear(DateTime time)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return base.GetDayOfYear(time);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.DayOfYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override DayOfWeek GetDayOfWeek(DateTime time)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return base.GetDayOfWeek(time);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.DayOfWeek;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user