From fc40d2f79bf881a3334c454cceb81ed1bf54e575 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Thu, 2 Aug 2018 16:43:28 +0300 Subject: [PATCH] Refactored AbpDataAnnotationAutoLocalizationMetadataDetailsProvider --- ...AutoLocalizationMetadataDetailsProvider.cs | 27 ++++++++++++++----- ...bpMvcDataAnnotationsLocalizationOptions.cs | 4 +-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs index e167cc9ec2..fae03d74b8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs @@ -12,6 +12,8 @@ namespace Volo.Abp.AspNetCore.Mvc { public class AbpDataAnnotationAutoLocalizationMetadataDetailsProvider : IDisplayMetadataProvider { + private const string PropertyLocalizationKeyPrefix = "Property:"; + private readonly Lazy _stringLocalizerFactory; private readonly Lazy> _localizationOptions; @@ -24,27 +26,38 @@ namespace Volo.Abp.AspNetCore.Mvc public void CreateDisplayMetadata(DisplayMetadataProviderContext context) { var displayMetadata = context.DisplayMetadata; - if (displayMetadata.DisplayName != null) { return; } var attributes = context.Attributes; - var displayAttribute = attributes.OfType().FirstOrDefault(); - var displayNameAttribute = attributes.OfType().FirstOrDefault(); - if (displayAttribute != null || displayNameAttribute != null) + if (attributes.OfType().Any() || + attributes.OfType().Any()) + { + return; + } + + if (_localizationOptions.Value.Value.DataAnnotationLocalizerProvider == null) { return; } var containerType = context.Key.ContainerType ?? context.Key.ModelType; var localizer = _localizationOptions.Value.Value.DataAnnotationLocalizerProvider(containerType, _stringLocalizerFactory.Value); - if (context.Key.Name == "BirthDate") + + displayMetadata.DisplayName = () => { - displayMetadata.DisplayName = () => localizer[context.Key.Name]; - } + var localizedString = localizer[PropertyLocalizationKeyPrefix + context.Key.Name]; + + if (localizedString.ResourceNotFound) + { + localizedString = localizer[context.Key.Name]; + } + + return localizedString; + }; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpMvcDataAnnotationsLocalizationOptions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpMvcDataAnnotationsLocalizationOptions.cs index bca738b101..70c15cfd55 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpMvcDataAnnotationsLocalizationOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpMvcDataAnnotationsLocalizationOptions.cs @@ -15,12 +15,12 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization } public void AddAssemblyResource( - [NotNull] Type resourceType, + [NotNull] Type resourceType, params Assembly[] assemblies) { if (assemblies.IsNullOrEmpty()) { - assemblies = new Assembly[] {resourceType.Assembly}; + assemblies = new[] { resourceType.Assembly }; } foreach (var assembly in assemblies)