From ae8ba0758cefaf4d72883679ef57de05fe8a6ed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Aug 2022 11:28:40 +0300 Subject: [PATCH] IAbpStringLocalizer.GetSupportedCultures method converted to async --- .../Mvc/Client/RemoteLocalizationContributor.cs | 5 +++-- .../AbpDictionaryBasedStringLocalizer.cs | 9 +++++---- .../Abp/Localization/AbpStringLocalizerExtensions.cs | 5 +++-- .../Volo/Abp/Localization/IAbpStringLocalizer.cs | 3 ++- .../Localization/ILocalizationResourceContributor.cs | 3 ++- .../Abp/Localization/LocalizationResourceBase.cs | 5 ----- .../LocalizationResourceContributorList.cs | 12 ++++++++++-- ...VirtualFileLocalizationResourceContributorBase.cs | 5 +++-- .../Volo/Abp/Localization/AbpLocalization_Tests.cs | 5 +++-- 9 files changed, 31 insertions(+), 21 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs index cd9aea88dc..221ab4ab15 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; @@ -55,11 +56,11 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor } } - public IEnumerable GetSupportedCultures() + public Task> GetSupportedCulturesAsync() { /* This contributor does not know all the supported cultures by the remote localization resource, and it is not needed on the client side */ - return Array.Empty(); + return Task.FromResult((IEnumerable)Array.Empty()); } private Dictionary GetResourceOrNull() diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index f18da9d93e..b8bb9f11f7 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -4,6 +4,7 @@ using System.Collections.Immutable; using System.Globalization; using System.Linq; using System.Resources; +using System.Threading.Tasks; using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization; @@ -51,9 +52,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer ); } - public IEnumerable GetSupportedCultures() + public Task> GetSupportedCulturesAsync() { - return Resource.Contributors.GetSupportedCultures(); + return Resource.Contributors.GetSupportedCulturesAsync(); } protected virtual LocalizedString GetLocalizedStringFormatted(string name, params object[] arguments) @@ -224,9 +225,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, includeDynamicContributors); } - public IEnumerable GetSupportedCultures() + public Task> GetSupportedCulturesAsync() { - return _innerLocalizer.GetSupportedCultures(); + return _innerLocalizer.GetSupportedCulturesAsync(); } } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs index e9c839cdf8..7c4045ffac 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Reflection; +using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Localization; using Volo.Abp.DynamicProxy; @@ -58,12 +59,12 @@ public static class AbpStringLocalizerExtensions ); } - public static IEnumerable GetSupportedCultures(this IStringLocalizer localizer) + public static async Task> GetSupportedCulturesAsync(this IStringLocalizer localizer) { var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(localizer)).GetInternalLocalizer(); if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer) { - return abpStringLocalizer.GetSupportedCultures(); + return await abpStringLocalizer.GetSupportedCulturesAsync(); } return Array.Empty(); diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs index c94c943417..0cbbb3ea74 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading.Tasks; using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization; @@ -11,5 +12,5 @@ public interface IAbpStringLocalizer : IStringLocalizer bool includeDynamicContributors ); - IEnumerable GetSupportedCultures(); + Task> GetSupportedCulturesAsync(); } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs index 507d78dd18..67236b38ac 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Threading.Tasks; using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization; @@ -13,5 +14,5 @@ public interface ILocalizationResourceContributor void Fill(string cultureName, Dictionary dictionary); - IEnumerable GetSupportedCultures(); + Task> GetSupportedCulturesAsync(); } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs index 1d8fbf2542..a7ec4fb93b 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs @@ -32,9 +32,4 @@ public abstract class LocalizationResourceBase Contributors.Add(initialContributor); } } - - internal IEnumerable GetSupportedCultures() - { - return Contributors.GetSupportedCultures(); - } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs index 98e63a9feb..3a2fb25d5b 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Localization; namespace Volo.Abp.Localization; @@ -44,8 +45,15 @@ public class LocalizationResourceContributorList : List GetSupportedCultures() + internal async Task> GetSupportedCulturesAsync() { - return this.SelectMany(c => c.GetSupportedCultures()).Distinct(); + var cultures = new List(); + + foreach (var contributor in this) + { + cultures.AddRange(await contributor.GetSupportedCulturesAsync()); + } + + return cultures; } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs index 8eeb6da55f..4eb9de34c4 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Localization; @@ -39,9 +40,9 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza GetDictionaries().GetOrDefault(cultureName)?.Fill(dictionary); } - public IEnumerable GetSupportedCultures() + public Task> GetSupportedCulturesAsync() { - return GetDictionaries().Keys; + return Task.FromResult((IEnumerable)GetDictionaries().Keys); } private Dictionary GetDictionaries() diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs index 20823376ea..ee0e929e32 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs @@ -1,5 +1,6 @@ using System.Globalization; using System.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Localization; using Shouldly; using Volo.Abp.Localization.TestResources.Source; @@ -361,9 +362,9 @@ public class AbpLocalization_Tests : AbpIntegratedTest