Browse Source

Allow to not get localizations from dynamic contributors

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

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

@ -10,6 +10,8 @@ namespace Volo.Abp.AspNetCore.Mvc.Client;
public class RemoteLocalizationContributor : ILocalizationResourceContributor
{
public bool IsDynamic => true;
private LocalizationResourceBase _resource;
private ICachedApplicationConfigurationClient _applicationConfigurationClient;
private ILogger<RemoteLocalizationContributor> _logger;

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

@ -38,12 +38,16 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
);
}
public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers)
public IEnumerable<LocalizedString> GetAllStrings(
bool includeParentCultures,
bool includeBaseLocalizers,
bool includeDynamicContributors)
{
return GetAllStrings(
CultureInfo.CurrentUICulture.Name,
includeParentCultures,
includeBaseLocalizers
includeBaseLocalizers,
includeDynamicContributors
);
}
@ -139,7 +143,8 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
protected virtual IReadOnlyList<LocalizedString> GetAllStrings(
string cultureName,
bool includeParentCultures = true,
bool includeBaseLocalizers = true)
bool includeBaseLocalizers = true,
bool includeDynamicContributors = true)
{
//TODO: Can be optimized (example: if it's already default dictionary, skip overriding)
@ -154,7 +159,12 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
//TODO: Try/catch is a workaround here!
try
{
var baseLocalizedString = baseLocalizer.GetAllStrings(includeParentCultures);
var baseLocalizedString = baseLocalizer.GetAllStrings(
includeParentCultures,
includeBaseLocalizers, // Always true, I know!
includeDynamicContributors
);
foreach (var localizedString in baseLocalizedString)
{
allStrings[localizedString.Name] = localizedString;
@ -173,18 +183,18 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
//Fill all strings from default culture
if (!Resource.DefaultCultureName.IsNullOrEmpty())
{
Resource.Contributors.Fill(Resource.DefaultCultureName, allStrings);
Resource.Contributors.Fill(Resource.DefaultCultureName, allStrings, includeDynamicContributors);
}
//Overwrite all strings from the language based on country culture
if (cultureName.Contains("-"))
{
Resource.Contributors.Fill(CultureHelper.GetBaseCultureName(cultureName), allStrings);
Resource.Contributors.Fill(CultureHelper.GetBaseCultureName(cultureName), allStrings, includeDynamicContributors);
}
}
//Overwrite all strings from the original culture
Resource.Contributors.Fill(cultureName, allStrings);
Resource.Contributors.Fill(cultureName, allStrings, includeDynamicContributors);
return allStrings.Values.ToImmutableList();
}
@ -209,9 +219,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures);
}
public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers)
public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers, bool includeDynamicContributors)
{
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers);
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, includeDynamicContributors);
}
public IEnumerable<string> GetSupportedCultures()

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

@ -40,14 +40,16 @@ public static class AbpStringLocalizerExtensions
public static IEnumerable<LocalizedString> GetAllStrings(
this IStringLocalizer stringLocalizer,
bool includeParentCultures,
bool includeBaseLocalizers)
bool includeBaseLocalizers,
bool includeDynamicContributors)
{
var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(stringLocalizer)).GetInternalLocalizer();
if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer)
{
return abpStringLocalizer.GetAllStrings(
includeParentCultures,
includeBaseLocalizers
includeBaseLocalizers,
includeDynamicContributors
);
}

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

@ -7,7 +7,8 @@ public interface IAbpStringLocalizer : IStringLocalizer
{
IEnumerable<LocalizedString> GetAllStrings(
bool includeParentCultures,
bool includeBaseLocalizers
bool includeBaseLocalizers,
bool includeDynamicContributors
);
IEnumerable<string> GetSupportedCultures();

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

@ -5,6 +5,8 @@ namespace Volo.Abp.Localization;
public interface ILocalizationResourceContributor
{
bool IsDynamic { get; }
void Initialize(LocalizationResourceInitializationContext context);
LocalizedString GetOrNull(string cultureName, string name);

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

@ -6,10 +6,18 @@ namespace Volo.Abp.Localization;
public class LocalizationResourceContributorList : List<ILocalizationResourceContributor>
{
public LocalizedString GetOrNull(string cultureName, string name)
public LocalizedString GetOrNull(
string cultureName,
string name,
bool includeDynamicContributors = true)
{
foreach (var contributor in this.Select(x => x).Reverse())
{
if (!includeDynamicContributors && contributor.IsDynamic)
{
continue;
}
var localString = contributor.GetOrNull(cultureName, name);
if (localString != null)
{
@ -20,10 +28,18 @@ public class LocalizationResourceContributorList : List<ILocalizationResourceCon
return null;
}
public void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary)
public void Fill(
string cultureName,
Dictionary<string, LocalizedString> dictionary,
bool includeDynamicContributors = true)
{
foreach (var contributor in this)
{
if (!includeDynamicContributors && contributor.IsDynamic)
{
continue;
}
contributor.Fill(cultureName, dictionary);
}
}

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

@ -11,6 +11,8 @@ namespace Volo.Abp.Localization.VirtualFiles;
public abstract class VirtualFileLocalizationResourceContributorBase : ILocalizationResourceContributor
{
public bool IsDynamic => false;
private readonly string _virtualPath;
private IVirtualFileProvider _virtualFileProvider;
private Dictionary<string, ILocalizationDictionary> _dictionaries;

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

@ -310,7 +310,7 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule
using (CultureHelper.Use("tr"))
{
var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: true)
.GetAllStrings(true, includeBaseLocalizers: true, includeDynamicContributors: true)
.ToList();
localizedStrings.ShouldContain(
@ -339,7 +339,7 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule
using (CultureHelper.Use("tr"))
{
var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: false)
.GetAllStrings(true, includeBaseLocalizers: false, includeDynamicContributors: true)
.ToList();
localizedStrings.ShouldNotContain(

Loading…
Cancel
Save