diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationDto.cs index 2bbc604c95..7d654c4e80 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationDto.cs @@ -8,8 +8,11 @@ public class ApplicationLocalizationDto { public Dictionary Resources { get; set; } + public CurrentCultureDto CurrentCulture { get; set; } + public ApplicationLocalizationDto() { Resources = new Dictionary(); + CurrentCulture = new CurrentCultureDto(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs index 054e626844..c9184d59b9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; @@ -22,4 +23,32 @@ public class CurrentCultureDto public string NativeName { get; set; } = default!; public DateTimeFormatDto DateTimeFormat { get; set; } = default!; + + /// + /// Creates a new object based on the current CultureInfo. + /// + public static CurrentCultureDto Create() + { + return new CurrentCultureDto + { + Name = CultureInfo.CurrentUICulture.Name, + DisplayName = CultureInfo.CurrentUICulture.DisplayName, + EnglishName = CultureInfo.CurrentUICulture.EnglishName, + NativeName = CultureInfo.CurrentUICulture.NativeName, + IsRightToLeft = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft, + CultureName = CultureInfo.CurrentUICulture.TextInfo.CultureName, + TwoLetterIsoLanguageName = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, + ThreeLetterIsoLanguageName = CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName, + DateTimeFormat = new DateTimeFormatDto + { + CalendarAlgorithmType = CultureInfo.CurrentUICulture.DateTimeFormat.Calendar.AlgorithmType.ToString(), + DateTimeFormatLong = CultureInfo.CurrentUICulture.DateTimeFormat.LongDatePattern, + ShortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern, + FullDateTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.FullDateTimePattern, + DateSeparator = CultureInfo.CurrentUICulture.DateTimeFormat.DateSeparator, + ShortTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortTimePattern, + LongTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.LongTimePattern, + } + }; + } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs index e4c95fdcef..38d68aa96c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -258,28 +258,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp private static CurrentCultureDto GetCurrentCultureInfo() { - return new CurrentCultureDto - { - Name = CultureInfo.CurrentUICulture.Name, - DisplayName = CultureInfo.CurrentUICulture.DisplayName, - EnglishName = CultureInfo.CurrentUICulture.EnglishName, - NativeName = CultureInfo.CurrentUICulture.NativeName, - IsRightToLeft = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft, - CultureName = CultureInfo.CurrentUICulture.TextInfo.CultureName, - TwoLetterIsoLanguageName = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, - ThreeLetterIsoLanguageName = CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName, - DateTimeFormat = new DateTimeFormatDto - { - CalendarAlgorithmType = - CultureInfo.CurrentUICulture.DateTimeFormat.Calendar.AlgorithmType.ToString(), - DateTimeFormatLong = CultureInfo.CurrentUICulture.DateTimeFormat.LongDatePattern, - ShortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern, - FullDateTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.FullDateTimePattern, - DateSeparator = CultureInfo.CurrentUICulture.DateTimeFormat.DateSeparator, - ShortTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortTimePattern, - LongTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.LongTimePattern, - } - }; + return CurrentCultureDto.Create(); } private async Task GetSettingConfigAsync() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs index 5a29f4fcd6..a76691ca06 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Localization; @@ -9,7 +10,7 @@ using Volo.Abp.Localization.External; namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; -public class AbpApplicationLocalizationAppService : +public class AbpApplicationLocalizationAppService : ApplicationService, IAbpApplicationLocalizationAppService { @@ -23,14 +24,14 @@ public class AbpApplicationLocalizationAppService : ExternalLocalizationStore = externalLocalizationStore; LocalizationOptions = localizationOptions.Value; } - + public virtual async Task GetAsync(ApplicationLocalizationRequestDto input) { if (!CultureHelper.IsValidCultureCode(input.CultureName)) { throw new AbpException("The selected culture is not valid! Make sure you enter a valid culture name."); } - + using (CultureHelper.Use(input.CultureName)) { var resources = LocalizationOptions @@ -40,8 +41,10 @@ public class AbpApplicationLocalizationAppService : await ExternalLocalizationStore.GetResourcesAsync() ).ToArray(); - var localizationConfig = new ApplicationLocalizationDto { - Resources = new Dictionary(resources.Length) + var localizationConfig = new ApplicationLocalizationDto + { + Resources = new Dictionary(resources.Length), + CurrentCulture = CurrentCultureDto.Create() }; foreach (var resource in resources) @@ -51,7 +54,7 @@ public class AbpApplicationLocalizationAppService : if (localizer != null) { Dictionary? staticLocalizedStrings = null; - + if (input.OnlyDynamics) { staticLocalizedStrings = (await localizer.GetAllStringsAsync( @@ -60,7 +63,7 @@ public class AbpApplicationLocalizationAppService : includeDynamicContributors: false )).ToDictionary(x => x.Name); } - + var localizedStringsWithDynamics = await localizer.GetAllStringsAsync( includeParentCultures: true, includeBaseLocalizers: false, @@ -93,4 +96,4 @@ public class AbpApplicationLocalizationAppService : return localizationConfig; } } -} \ No newline at end of file +}