Browse Source

IAbpStringLocalizer.GetSupportedCultures method converted to async

pull/13845/head
Halil İbrahim Kalkan 4 years ago
parent
commit
ae8ba0758c
  1. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs
  2. 9
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs
  3. 5
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs
  4. 3
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs
  5. 3
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs
  6. 5
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs
  7. 12
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs
  8. 5
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs
  9. 5
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

5
framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -55,11 +56,11 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
} }
} }
public IEnumerable<string> GetSupportedCultures() public Task<IEnumerable<string>> GetSupportedCulturesAsync()
{ {
/* This contributor does not know all the supported cultures by the /* This contributor does not know all the supported cultures by the
remote localization resource, and it is not needed on the client side */ remote localization resource, and it is not needed on the client side */
return Array.Empty<string>(); return Task.FromResult((IEnumerable<string>)Array.Empty<string>());
} }
private Dictionary<string, string> GetResourceOrNull() private Dictionary<string, string> GetResourceOrNull()

9
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs

@ -4,6 +4,7 @@ using System.Collections.Immutable;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Resources; using System.Resources;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization; namespace Volo.Abp.Localization;
@ -51,9 +52,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
); );
} }
public IEnumerable<string> GetSupportedCultures() public Task<IEnumerable<string>> GetSupportedCulturesAsync()
{ {
return Resource.Contributors.GetSupportedCultures(); return Resource.Contributors.GetSupportedCulturesAsync();
} }
protected virtual LocalizedString GetLocalizedStringFormatted(string name, params object[] arguments) protected virtual LocalizedString GetLocalizedStringFormatted(string name, params object[] arguments)
@ -224,9 +225,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, includeDynamicContributors); return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, includeDynamicContributors);
} }
public IEnumerable<string> GetSupportedCultures() public Task<IEnumerable<string>> GetSupportedCulturesAsync()
{ {
return _innerLocalizer.GetSupportedCultures(); return _innerLocalizer.GetSupportedCulturesAsync();
} }
} }
} }

5
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Threading.Tasks;
using JetBrains.Annotations; using JetBrains.Annotations;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Volo.Abp.DynamicProxy; using Volo.Abp.DynamicProxy;
@ -58,12 +59,12 @@ public static class AbpStringLocalizerExtensions
); );
} }
public static IEnumerable<string> GetSupportedCultures(this IStringLocalizer localizer) public static async Task<IEnumerable<string>> GetSupportedCulturesAsync(this IStringLocalizer localizer)
{ {
var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(localizer)).GetInternalLocalizer(); var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(localizer)).GetInternalLocalizer();
if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer) if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer)
{ {
return abpStringLocalizer.GetSupportedCultures(); return await abpStringLocalizer.GetSupportedCulturesAsync();
} }
return Array.Empty<string>(); return Array.Empty<string>();

3
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization; namespace Volo.Abp.Localization;
@ -11,5 +12,5 @@ public interface IAbpStringLocalizer : IStringLocalizer
bool includeDynamicContributors bool includeDynamicContributors
); );
IEnumerable<string> GetSupportedCultures(); Task<IEnumerable<string>> GetSupportedCulturesAsync();
} }

3
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization; namespace Volo.Abp.Localization;
@ -13,5 +14,5 @@ public interface ILocalizationResourceContributor
void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary); void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary);
IEnumerable<string> GetSupportedCultures(); Task<IEnumerable<string>> GetSupportedCulturesAsync();
} }

5
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs

@ -32,9 +32,4 @@ public abstract class LocalizationResourceBase
Contributors.Add(initialContributor); Contributors.Add(initialContributor);
} }
} }
internal IEnumerable<string> GetSupportedCultures()
{
return Contributors.GetSupportedCultures();
}
} }

12
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs

@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization; namespace Volo.Abp.Localization;
@ -44,8 +45,15 @@ public class LocalizationResourceContributorList : List<ILocalizationResourceCon
} }
} }
internal IEnumerable<string> GetSupportedCultures() internal async Task<IEnumerable<string>> GetSupportedCulturesAsync()
{ {
return this.SelectMany(c => c.GetSupportedCultures()).Distinct(); var cultures = new List<string>();
foreach (var contributor in this)
{
cultures.AddRange(await contributor.GetSupportedCulturesAsync());
}
return cultures;
} }
} }

5
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
@ -39,9 +40,9 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
GetDictionaries().GetOrDefault(cultureName)?.Fill(dictionary); GetDictionaries().GetOrDefault(cultureName)?.Fill(dictionary);
} }
public IEnumerable<string> GetSupportedCultures() public Task<IEnumerable<string>> GetSupportedCulturesAsync()
{ {
return GetDictionaries().Keys; return Task.FromResult((IEnumerable<string>)GetDictionaries().Keys);
} }
private Dictionary<string, ILocalizationDictionary> GetDictionaries() private Dictionary<string, ILocalizationDictionary> GetDictionaries()

5
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

@ -1,5 +1,6 @@
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Shouldly; using Shouldly;
using Volo.Abp.Localization.TestResources.Source; using Volo.Abp.Localization.TestResources.Source;
@ -361,9 +362,9 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule
} }
[Fact] [Fact]
public void Should_Get_Supported_Cultures() public async Task Should_Get_Supported_Cultures()
{ {
var cultures = _localizer.GetSupportedCultures(); var cultures = await _localizer.GetSupportedCulturesAsync();
cultures.Count().ShouldBeGreaterThan(0); cultures.Count().ShouldBeGreaterThan(0);
} }
} }
Loading…
Cancel
Save