在 Abp 框架 .NET Core 3 中使用具有非英语文化的公历日期
Use Gregorian Date with non English Culture in Abp framework .NET Core 3
当更改 ASP.net 样板文件中的语言时(.NET core 3 with Angular),UI 中的日期已更改为 Ar Culture 我想在 Ar 中使用公历日期文化。
有没有没有很多变通办法的直接解决方案我在下面找到了建议解决方案,但我不喜欢这样的解决方案
https://forum.aspnetboilerplate.com/viewtopic.php?p=26993
已编辑(更多详细信息):
在 Abp 框架中有一个多语言选项,所以当我将语言切换为阿拉伯语时,整个系统文化切换为具有回历日期格式的阿拉伯文化,我想将系统更改为具有公历日期的阿拉伯文化,我该怎么做,如果有自定义代码,我应该把它放在哪里(例如 Startup.cs class),因为我已经尝试过自定义代码,但系统在 Configure Function 中不接受它在 Startup.cs class
Startup.csclass代码
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
/*****************************************************************************/
CultureInfo myCIintl = new CultureInfo("ar-SA", false);
Calendar[] myOptCals = new CultureInfo("ar-SA").OptionalCalendars;
// Checks which ones are GregorianCalendar then determines the GregorianCalendar version.
Console.WriteLine("The ar-SA culture supports the following calendars:");
foreach (Calendar cal in myOptCals)
{
if (cal.GetType() == typeof(GregorianCalendar))
{
GregorianCalendar myGreCal = (GregorianCalendar)cal;
myCIintl.DateTimeFormat.Calendar = myGreCal;
GregorianCalendarTypes calType = myGreCal.CalendarType;
Console.WriteLine(" {0} ({1})", cal, calType);
}
else
{
Console.WriteLine(" {0}", cal);
}
}
/*****************************************************************************/
app.UseAbp(options => { options.UseAbpRequestLocalization = false; }); // Initializes ABP framework.
app.UseCors(_defaultCorsPolicyName); // Enable CORS!
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAbpRequestLocalization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<AbpCommonHub>("/signalr");
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}");
});
// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger();
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint(_appConfiguration["App:ServerRootAddress"].EnsureEndsWith('/') + "swagger/v1/swagger.json", "MyApp API V1");
options.IndexStream = () => Assembly.GetExecutingAssembly()
.GetManifestResourceStream("MyApp .Web.Host.wwwroot.swagger.ui.index.html");
}); // URL: /swagger
}
我找到了解决方案(简单的解决方案):
首先,如果您想了解有关日期和日历评论的丰富信息this link,但我所做的是:
1- 转到 AbpLanguages 数据库 table 并删除所有记录。
2- 在 DefaultLanguagesCreator class 中将 ar 更改为 ar-EG 因为 ar 文化的默认日历是 System.Globalization.UmAlQuraCalendar 但 ar-EG 文化的默认日历是 System.Globalization.GregorianCalendar (我想要的日历)
3- 然后清理,重建解决方案。
4- 不要忘记将 XML 本地化文件中的文化更改为 ar-EG.
当更改 ASP.net 样板文件中的语言时(.NET core 3 with Angular),UI 中的日期已更改为 Ar Culture 我想在 Ar 中使用公历日期文化。 有没有没有很多变通办法的直接解决方案我在下面找到了建议解决方案,但我不喜欢这样的解决方案
https://forum.aspnetboilerplate.com/viewtopic.php?p=26993
已编辑(更多详细信息):
在 Abp 框架中有一个多语言选项,所以当我将语言切换为阿拉伯语时,整个系统文化切换为具有回历日期格式的阿拉伯文化,我想将系统更改为具有公历日期的阿拉伯文化,我该怎么做,如果有自定义代码,我应该把它放在哪里(例如 Startup.cs class),因为我已经尝试过自定义代码,但系统在 Configure Function 中不接受它在 Startup.cs class
Startup.csclass代码
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
/*****************************************************************************/
CultureInfo myCIintl = new CultureInfo("ar-SA", false);
Calendar[] myOptCals = new CultureInfo("ar-SA").OptionalCalendars;
// Checks which ones are GregorianCalendar then determines the GregorianCalendar version.
Console.WriteLine("The ar-SA culture supports the following calendars:");
foreach (Calendar cal in myOptCals)
{
if (cal.GetType() == typeof(GregorianCalendar))
{
GregorianCalendar myGreCal = (GregorianCalendar)cal;
myCIintl.DateTimeFormat.Calendar = myGreCal;
GregorianCalendarTypes calType = myGreCal.CalendarType;
Console.WriteLine(" {0} ({1})", cal, calType);
}
else
{
Console.WriteLine(" {0}", cal);
}
}
/*****************************************************************************/
app.UseAbp(options => { options.UseAbpRequestLocalization = false; }); // Initializes ABP framework.
app.UseCors(_defaultCorsPolicyName); // Enable CORS!
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAbpRequestLocalization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<AbpCommonHub>("/signalr");
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute("defaultWithArea", "{area}/{controller=Home}/{action=Index}/{id?}");
});
// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger();
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint(_appConfiguration["App:ServerRootAddress"].EnsureEndsWith('/') + "swagger/v1/swagger.json", "MyApp API V1");
options.IndexStream = () => Assembly.GetExecutingAssembly()
.GetManifestResourceStream("MyApp .Web.Host.wwwroot.swagger.ui.index.html");
}); // URL: /swagger
}
我找到了解决方案(简单的解决方案):
首先,如果您想了解有关日期和日历评论的丰富信息this link,但我所做的是:
1- 转到 AbpLanguages 数据库 table 并删除所有记录。
2- 在 DefaultLanguagesCreator class 中将 ar 更改为 ar-EG 因为 ar 文化的默认日历是 System.Globalization.UmAlQuraCalendar 但 ar-EG 文化的默认日历是 System.Globalization.GregorianCalendar (我想要的日历)
3- 然后清理,重建解决方案。
4- 不要忘记将 XML 本地化文件中的文化更改为 ar-EG.