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 class RemoteLocalizationContributor : ILocalizationResourceContributor
{ {
public bool IsDynamic => true;
private LocalizationResourceBase _resource; private LocalizationResourceBase _resource;
private ICachedApplicationConfigurationClient _applicationConfigurationClient; private ICachedApplicationConfigurationClient _applicationConfigurationClient;
private ILogger<RemoteLocalizationContributor> _logger; 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( return GetAllStrings(
CultureInfo.CurrentUICulture.Name, CultureInfo.CurrentUICulture.Name,
includeParentCultures, includeParentCultures,
includeBaseLocalizers includeBaseLocalizers,
includeDynamicContributors
); );
} }
@ -139,7 +143,8 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
protected virtual IReadOnlyList<LocalizedString> GetAllStrings( protected virtual IReadOnlyList<LocalizedString> GetAllStrings(
string cultureName, string cultureName,
bool includeParentCultures = true, 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) //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! //TODO: Try/catch is a workaround here!
try try
{ {
var baseLocalizedString = baseLocalizer.GetAllStrings(includeParentCultures); var baseLocalizedString = baseLocalizer.GetAllStrings(
includeParentCultures,
includeBaseLocalizers, // Always true, I know!
includeDynamicContributors
);
foreach (var localizedString in baseLocalizedString) foreach (var localizedString in baseLocalizedString)
{ {
allStrings[localizedString.Name] = localizedString; allStrings[localizedString.Name] = localizedString;
@ -173,18 +183,18 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
//Fill all strings from default culture //Fill all strings from default culture
if (!Resource.DefaultCultureName.IsNullOrEmpty()) 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 //Overwrite all strings from the language based on country culture
if (cultureName.Contains("-")) 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 //Overwrite all strings from the original culture
Resource.Contributors.Fill(cultureName, allStrings); Resource.Contributors.Fill(cultureName, allStrings, includeDynamicContributors);
return allStrings.Values.ToImmutableList(); return allStrings.Values.ToImmutableList();
} }
@ -209,9 +219,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures); 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() 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( public static IEnumerable<LocalizedString> GetAllStrings(
this IStringLocalizer stringLocalizer, this IStringLocalizer stringLocalizer,
bool includeParentCultures, bool includeParentCultures,
bool includeBaseLocalizers) bool includeBaseLocalizers,
bool includeDynamicContributors)
{ {
var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(stringLocalizer)).GetInternalLocalizer(); var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(stringLocalizer)).GetInternalLocalizer();
if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer) if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer)
{ {
return abpStringLocalizer.GetAllStrings( return abpStringLocalizer.GetAllStrings(
includeParentCultures, 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( IEnumerable<LocalizedString> GetAllStrings(
bool includeParentCultures, bool includeParentCultures,
bool includeBaseLocalizers bool includeBaseLocalizers,
bool includeDynamicContributors
); );
IEnumerable<string> GetSupportedCultures(); 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 public interface ILocalizationResourceContributor
{ {
bool IsDynamic { get; }
void Initialize(LocalizationResourceInitializationContext context); void Initialize(LocalizationResourceInitializationContext context);
LocalizedString GetOrNull(string cultureName, string name); 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 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()) foreach (var contributor in this.Select(x => x).Reverse())
{ {
if (!includeDynamicContributors && contributor.IsDynamic)
{
continue;
}
var localString = contributor.GetOrNull(cultureName, name); var localString = contributor.GetOrNull(cultureName, name);
if (localString != null) if (localString != null)
{ {
@ -20,10 +28,18 @@ public class LocalizationResourceContributorList : List<ILocalizationResourceCon
return null; 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) foreach (var contributor in this)
{ {
if (!includeDynamicContributors && contributor.IsDynamic)
{
continue;
}
contributor.Fill(cultureName, dictionary); 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 abstract class VirtualFileLocalizationResourceContributorBase : ILocalizationResourceContributor
{ {
public bool IsDynamic => false;
private readonly string _virtualPath; private readonly string _virtualPath;
private IVirtualFileProvider _virtualFileProvider; private IVirtualFileProvider _virtualFileProvider;
private Dictionary<string, ILocalizationDictionary> _dictionaries; 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")) using (CultureHelper.Use("tr"))
{ {
var localizedStrings = _localizer var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: true) .GetAllStrings(true, includeBaseLocalizers: true, includeDynamicContributors: true)
.ToList(); .ToList();
localizedStrings.ShouldContain( localizedStrings.ShouldContain(
@ -339,7 +339,7 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule
using (CultureHelper.Use("tr")) using (CultureHelper.Use("tr"))
{ {
var localizedStrings = _localizer var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: false) .GetAllStrings(true, includeBaseLocalizers: false, includeDynamicContributors: true)
.ToList(); .ToList();
localizedStrings.ShouldNotContain( localizedStrings.ShouldNotContain(

Loading…
Cancel
Save