43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
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 = "-";
|
|
}
|
|
}
|
|
}
|