Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CurrentCultureDto property to ApplicationLocalizationDto . #19039

Merged
merged 1 commit into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ public class ApplicationLocalizationDto
{
public Dictionary<string, ApplicationLocalizationResourceDto> Resources { get; set; }

public CurrentCultureDto CurrentCulture { get; set; }

public ApplicationLocalizationDto()
{
Resources = new Dictionary<string, ApplicationLocalizationResourceDto>();
CurrentCulture = new CurrentCultureDto();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Globalization;

namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;

Expand All @@ -22,4 +23,32 @@ public class CurrentCultureDto
public string NativeName { get; set; } = default!;

public DateTimeFormatDto DateTimeFormat { get; set; } = default!;

/// <summary>
/// Creates a new <see cref="CurrentCultureDto"/> object based on the current CultureInfo.
/// </summary>
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,
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -258,28 +258,7 @@ await LazyServiceProvider

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<ApplicationSettingConfigurationDto> GetSettingConfigAsync()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization;
Expand All @@ -9,7 +10,7 @@

namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;

public class AbpApplicationLocalizationAppService :
public class AbpApplicationLocalizationAppService :
ApplicationService,
IAbpApplicationLocalizationAppService
{
Expand All @@ -23,14 +24,14 @@
ExternalLocalizationStore = externalLocalizationStore;
LocalizationOptions = localizationOptions.Value;
}

public virtual async Task<ApplicationLocalizationDto> 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
Expand All @@ -40,8 +41,10 @@
await ExternalLocalizationStore.GetResourcesAsync()
).ToArray();

var localizationConfig = new ApplicationLocalizationDto {
Resources = new Dictionary<string, ApplicationLocalizationResourceDto>(resources.Length)
var localizationConfig = new ApplicationLocalizationDto
{
Resources = new Dictionary<string, ApplicationLocalizationResourceDto>(resources.Length),
CurrentCulture = CurrentCultureDto.Create()

Check warning on line 47 in framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs

View check run for this annotation

Codecov / codecov/patch

framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs#L44-L47

Added lines #L44 - L47 were not covered by tests
};

foreach (var resource in resources)
Expand All @@ -51,7 +54,7 @@
if (localizer != null)
{
Dictionary<string, LocalizedString>? staticLocalizedStrings = null;

if (input.OnlyDynamics)
{
staticLocalizedStrings = (await localizer.GetAllStringsAsync(
Expand All @@ -60,7 +63,7 @@
includeDynamicContributors: false
)).ToDictionary(x => x.Name);
}

var localizedStringsWithDynamics = await localizer.GetAllStringsAsync(
includeParentCultures: true,
includeBaseLocalizers: false,
Expand Down Expand Up @@ -93,4 +96,4 @@
return localizationConfig;
}
}
}
}
Loading