Browse Source

Added GetSupportedCultures to IAbpStringLocalizer

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

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

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -52,6 +53,13 @@ public class RemoteLocalizationContributor : ILocalizationResourceContributor
} }
} }
public IEnumerable<string> GetSupportedCultures()
{
/* 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<string>();
}
private Dictionary<string, string> GetResourceOrNull() private Dictionary<string, string> GetResourceOrNull()
{ {
var applicationConfigurationDto = _applicationConfigurationClient.Get(); var applicationConfigurationDto = _applicationConfigurationClient.Get();

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

@ -47,6 +47,11 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
); );
} }
public IEnumerable<string> GetSupportedCultures()
{
return Resource.Contributors.GetSupportedCultures();
}
protected virtual LocalizedString GetLocalizedStringFormatted(string name, params object[] arguments) protected virtual LocalizedString GetLocalizedStringFormatted(string name, params object[] arguments)
{ {
return GetLocalizedStringFormatted(name, CultureInfo.CurrentUICulture.Name, arguments); return GetLocalizedStringFormatted(name, CultureInfo.CurrentUICulture.Name, arguments);
@ -208,5 +213,10 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
{ {
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers); return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers);
} }
public IEnumerable<string> GetSupportedCultures()
{
return _innerLocalizer.GetSupportedCultures();
}
} }
} }

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

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using JetBrains.Annotations; using JetBrains.Annotations;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
@ -41,10 +42,10 @@ public static class AbpStringLocalizerExtensions
bool includeParentCultures, bool includeParentCultures,
bool includeBaseLocalizers) bool includeBaseLocalizers)
{ {
var internalLocalizer = (ProxyHelper.UnProxy(stringLocalizer) as IStringLocalizer).GetInternalLocalizer(); var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(stringLocalizer)).GetInternalLocalizer();
if (internalLocalizer is IAbpStringLocalizer stringLocalizerSupportsInheritance) if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer)
{ {
return stringLocalizerSupportsInheritance.GetAllStrings( return abpStringLocalizer.GetAllStrings(
includeParentCultures, includeParentCultures,
includeBaseLocalizers includeBaseLocalizers
); );
@ -54,4 +55,15 @@ public static class AbpStringLocalizerExtensions
includeParentCultures includeParentCultures
); );
} }
public static IEnumerable<string> GetSupportedCultures(this IStringLocalizer localizer)
{
var internalLocalizer = ((IStringLocalizer)ProxyHelper.UnProxy(localizer)).GetInternalLocalizer();
if (internalLocalizer is IAbpStringLocalizer abpStringLocalizer)
{
return abpStringLocalizer.GetSupportedCultures();
}
return Array.Empty<string>();
}
} }

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

@ -9,4 +9,6 @@ public interface IAbpStringLocalizer : IStringLocalizer
bool includeParentCultures, bool includeParentCultures,
bool includeBaseLocalizers bool includeBaseLocalizers
); );
}
IEnumerable<string> GetSupportedCultures();
}

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

@ -10,4 +10,6 @@ public interface ILocalizationResourceContributor
LocalizedString GetOrNull(string cultureName, string name); LocalizedString GetOrNull(string cultureName, string name);
void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary); void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary);
IEnumerable<string> GetSupportedCultures();
} }

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

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

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

@ -27,4 +27,9 @@ public class LocalizationResourceContributorList : List<ILocalizationResourceCon
contributor.Fill(cultureName, dictionary); contributor.Fill(cultureName, dictionary);
} }
} }
internal IEnumerable<string> GetSupportedCultures()
{
return this.SelectMany(c => c.GetSupportedCultures()).Distinct();
}
} }

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

@ -37,6 +37,11 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
GetDictionaries().GetOrDefault(cultureName)?.Fill(dictionary); GetDictionaries().GetOrDefault(cultureName)?.Fill(dictionary);
} }
public IEnumerable<string> GetSupportedCultures()
{
return GetDictionaries().Keys;
}
private Dictionary<string, ILocalizationDictionary> GetDictionaries() private Dictionary<string, ILocalizationDictionary> GetDictionaries()
{ {
var dictionaries = _dictionaries; var dictionaries = _dictionaries;

Loading…
Cancel
Save