mirror of https://github.com/abpframework/abp.git
5 changed files with 135 additions and 12 deletions
@ -0,0 +1,46 @@ |
|||
using System.Collections.Generic; |
|||
using System.Reflection; |
|||
using Microsoft.Extensions.Localization; |
|||
using Volo.Abp.DynamicProxy; |
|||
|
|||
namespace Volo.Abp.Localization |
|||
{ |
|||
public static class AbpStringLocalizerExtensions |
|||
{ |
|||
public static IStringLocalizer GetInternalLocalizer(this IStringLocalizer stringLocalizer) |
|||
{ |
|||
var localizerField = stringLocalizer.GetType() |
|||
.GetField( |
|||
"_localizer", |
|||
BindingFlags.Instance | |
|||
BindingFlags.NonPublic |
|||
); |
|||
|
|||
if (localizerField == null) |
|||
{ |
|||
return stringLocalizer; |
|||
} |
|||
|
|||
return localizerField.GetValue(stringLocalizer) as IStringLocalizer; |
|||
} |
|||
|
|||
public static IEnumerable<LocalizedString> GetAllStrings( |
|||
this IStringLocalizer stringLocalizer, |
|||
bool includeParentCultures, |
|||
bool includeBaseLocalizers) |
|||
{ |
|||
var internalLocalizer = (ProxyHelper.UnProxy(stringLocalizer) as IStringLocalizer).GetInternalLocalizer(); |
|||
if (internalLocalizer is IStringLocalizerSupportsInheritance stringLocalizerSupportsInheritance) |
|||
{ |
|||
return stringLocalizerSupportsInheritance.GetAllStrings( |
|||
includeParentCultures, |
|||
includeBaseLocalizers |
|||
); |
|||
} |
|||
|
|||
return stringLocalizer.GetAllStrings( |
|||
includeParentCultures |
|||
); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
using System.Collections.Generic; |
|||
using Microsoft.Extensions.Localization; |
|||
|
|||
namespace Volo.Abp.Localization |
|||
{ |
|||
public interface IStringLocalizerSupportsInheritance |
|||
{ |
|||
IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue