oqtane.framework/Oqtane.Server/Infrastructure/Localization/RightToLeftCulture.cs

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 = "-";
}
}
}