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