Skip to content

Commit

Permalink
update settings for all RTL languages.
Browse files Browse the repository at this point in the history
  • Loading branch information
zyhfish committed Feb 16, 2025
1 parent aff99ac commit 94b03d2
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 75 deletions.
7 changes: 3 additions & 4 deletions Oqtane.Server/Extensions/ApplicationBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,11 @@ public static IApplicationBuilder UseOqtaneLocalization(this IApplicationBuilder
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);

for (var i = 0; i < options.SupportedCultures.Count; i++)
foreach(var culture in options.SupportedCultures)
{
if (options.SupportedCultures[i].Name.Equals("fa-IR", StringComparison.OrdinalIgnoreCase))
if (culture.TextInfo.IsRightToLeft)
{
options.SupportedCultures[i] = PersianCulture.GetPersianCultureInfo();
break;
RightToLeftCulture.ResolveFormat(culture);
}
}
});
Expand Down
70 changes: 0 additions & 70 deletions Oqtane.Server/Infrastructure/Localization/PersianCulture.cs

This file was deleted.

42 changes: 42 additions & 0 deletions Oqtane.Server/Infrastructure/Localization/RightToLeftCulture.cs
Original file line number Diff line number Diff line change
@@ -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 = "-";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Oqtane.Infrastructure
{
public class PersianCalendar : System.Globalization.PersianCalendar
public class RightToLeftCultureCalendar : System.Globalization.PersianCalendar
{
public override int GetYear(DateTime time)
{
Expand Down

0 comments on commit 94b03d2

Please sign in to comment.