From 916929c90325ce14beaf72fac55f0fa19399df78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:09:23 +0300 Subject: [PATCH 1/8] Refactor MultiLingualObjectManager --- .../IMultiLingualObjectManager.cs | 8 ++--- .../MultiLingualObjectManager.cs | 32 ++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs index e6ddc840e5..48128648a0 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs +++ b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs @@ -6,15 +6,15 @@ namespace Volo.Abp.MultiLingualObject { TTranslation GetTranslation( TMultiLingual multiLingual, - bool fallbackToParentCultures = true, - string culture = null) + string culture = null, + bool fallbackToParentCultures = true) where TMultiLingual : IHasMultiLingual where TTranslation : class, IMultiLingualTranslation; Task GetTranslationAsync( TMultiLingual multiLingual, - bool fallbackToParentCultures = true, - string culture = null) + string culture = null, + bool fallbackToParentCultures = true) where TMultiLingual : IHasMultiLingual where TTranslation : class, IMultiLingualTranslation; } diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs index db2b373d70..ed41778fd5 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs +++ b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs @@ -23,25 +23,25 @@ namespace Volo.Abp.MultiLingualObject public TTranslation GetTranslation( TMultiLingual multiLingual, - bool fallbackToParentCultures = true, - string culture = null) + string culture = null, + bool fallbackToParentCultures = true) where TMultiLingual : IHasMultiLingual where TTranslation : class, IMultiLingualTranslation { return AsyncHelper.RunSync(() => - GetTranslationAsync(multiLingual, fallbackToParentCultures, culture)); + GetTranslationAsync(multiLingual, culture, fallbackToParentCultures)); } public virtual async Task GetTranslationAsync( TMultiLingual multiLingual, - bool fallbackToParentCultures = true, - string culture = null) + string culture = null, + bool fallbackToParentCultures = true) where TMultiLingual : IHasMultiLingual where TTranslation : class, IMultiLingualTranslation { culture ??= CultureInfo.CurrentUICulture.Name; - if (multiLingual.Translations == null || !multiLingual.Translations.Any()) + if (multiLingual.Translations.IsNullOrEmpty()) { return null; } @@ -54,9 +54,12 @@ namespace Volo.Abp.MultiLingualObject if (fallbackToParentCultures) { - translation = - GetTranslationBasedOnCulturalRecursive( - CultureInfo.CurrentUICulture.Parent, multiLingual.Translations, 0); + translation = GetTranslationBasedOnCulturalRecursive( + CultureInfo.CurrentUICulture.Parent, + multiLingual.Translations, + 0 + ); + if (translation != null) { return translation; @@ -79,17 +82,16 @@ namespace Volo.Abp.MultiLingualObject CultureInfo culture, ICollection translations, int currentDepth) where TTranslation : class, IMultiLingualTranslation { - if (culture == null || culture.Name.IsNullOrWhiteSpace() || translations.IsNullOrEmpty() || + if (culture == null || + culture.Name.IsNullOrWhiteSpace() || + translations.IsNullOrEmpty() || currentDepth > MaxCultureFallbackDepth) { return null; } - var translation = translations.FirstOrDefault(pt => - pt.Language.Equals(culture.Name, StringComparison.OrdinalIgnoreCase)); - return translation ?? - GetTranslationBasedOnCulturalRecursive(culture.Parent, - translations, currentDepth + 1); + var translation = translations.FirstOrDefault(pt => pt.Language.Equals(culture.Name, StringComparison.OrdinalIgnoreCase)); + return translation ?? GetTranslationBasedOnCulturalRecursive(culture.Parent, translations, currentDepth + 1); } } } From 12fa0d810f383c7cf364f14b1f5948a7c390be2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:18:17 +0300 Subject: [PATCH 2/8] Remove sync usage of IMultiLingualObjectManager --- .../IMultiLingualObjectManager.cs | 7 - .../MultiLingualObjectManager.cs | 11 -- .../MultiLingualObjectManager_Tests.cs | 11 -- .../MultiLingualObject_Tests.cs | 132 ------------------ 4 files changed, 161 deletions(-) delete mode 100644 framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObject_Tests.cs diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs index 48128648a0..7cd860f9ef 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs +++ b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs @@ -4,13 +4,6 @@ namespace Volo.Abp.MultiLingualObject { public interface IMultiLingualObjectManager { - TTranslation GetTranslation( - TMultiLingual multiLingual, - string culture = null, - bool fallbackToParentCultures = true) - where TMultiLingual : IHasMultiLingual - where TTranslation : class, IMultiLingualTranslation; - Task GetTranslationAsync( TMultiLingual multiLingual, string culture = null, diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs index ed41778fd5..f8e653120a 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs +++ b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs @@ -21,17 +21,6 @@ namespace Volo.Abp.MultiLingualObject SettingProvider = settingProvider; } - public TTranslation GetTranslation( - TMultiLingual multiLingual, - string culture = null, - bool fallbackToParentCultures = true) - where TMultiLingual : IHasMultiLingual - where TTranslation : class, IMultiLingualTranslation - { - return AsyncHelper.RunSync(() => - GetTranslationAsync(multiLingual, culture, fallbackToParentCultures)); - } - public virtual async Task GetTranslationAsync( TMultiLingual multiLingual, string culture = null, diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs b/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs index 269bf91b54..d23d3153b1 100644 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs +++ b/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs @@ -40,17 +40,6 @@ namespace Volo.Abp.MultiLingualObject _book.Translations.Add(zh); } - [Fact] - public void GetTranslation() - { - using (CultureHelper.Use("en-us")) - { - var translation = _multiLingualObjectManager.GetTranslation(_book); - - translation.Name.ShouldBe("C# in Depth"); - } - } - [Fact] public async Task GetTranslationAsync() { diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObject_Tests.cs b/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObject_Tests.cs deleted file mode 100644 index 917a11a2a8..0000000000 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObject_Tests.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.Extensions.DependencyInjection; -using Shouldly; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Localization; -using Volo.Abp.MultiLingualObject.TestObjects; -using Volo.Abp.ObjectMapping; -using Volo.Abp.Testing; -using Xunit; - -namespace Volo.Abp.MultiLingualObject -{ - public class MultiLingualObject_Tests : AbpIntegratedTest - { - private readonly IObjectMapper _objectMapper; - private readonly MultiLingualBook _book; - - public MultiLingualObject_Tests() - { - _objectMapper = ServiceProvider.GetRequiredService(); - - var id = Guid.NewGuid(); - _book = new MultiLingualBook(id, 100) - { - Translations = new List() - }; - - var en = new MultiLingualBookTranslation - { - Language = "en", - Name = "C# in Depth", - }; - var zh = new MultiLingualBookTranslation - { - Language = "zh-Hans", - Name = "深入理解C#", - }; - - _book.Translations.Add(en); - _book.Translations.Add(zh); - } - - protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) - { - options.UseAutofac(); - } - - [Fact] - public void Should_Map_Current_UI_Culture() - { - using (CultureHelper.Use("zh-Hans")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBe("深入理解C#"); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - - [Fact] - public void Should_Map_Fallback_UI_Culture() - { - using (CultureHelper.Use("en-us")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBe("C# in Depth"); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - - [Fact] - public void Should_Map_Default_Language() - { - using (CultureHelper.Use("tr")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBe("C# in Depth"); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - - [Fact] - public void NoTranslations_ShouldStillMapObject() - { - _book.Translations.Clear(); - - using (CultureHelper.Use("tr")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBeNull(); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - } - - public class MultiLingualBookObjectMapper : IObjectMapper, - ITransientDependency - { - private readonly IMultiLingualObjectManager _multiLingualObjectManager; - - public MultiLingualBookObjectMapper(IMultiLingualObjectManager multiLingualObjectManager) - { - _multiLingualObjectManager = multiLingualObjectManager; - } - - public MultiLingualBookDto Map(MultiLingualBook source) - { - var translation = - _multiLingualObjectManager.GetTranslation(source); - - return new MultiLingualBookDto - { - Price = source.Price, - Id = source.Id, - Name = translation?.Name - }; - } - - public MultiLingualBookDto Map(MultiLingualBook source, MultiLingualBookDto destination) - { - return default; - } - } -} From 310bdbe2441a9526901688614704f7530253d53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:23:41 +0300 Subject: [PATCH 3/8] Fixed module dependency. --- .../Volo/Abp/AutoMapper/AbpAutoMapperModule.cs | 4 +++- .../Volo/Abp/AutoMapper/AutoMapperTestModule.cs | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs index 3969a04a1a..2e53215689 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.Auditing; using Volo.Abp.Modularity; +using Volo.Abp.MultiLingualObject; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectMapping; @@ -12,7 +13,8 @@ namespace Volo.Abp.AutoMapper [DependsOn( typeof(AbpObjectMappingModule), typeof(AbpObjectExtendingModule), - typeof(AbpAuditingModule) + typeof(AbpAuditingModule), + typeof(AbpMultiLingualObjectModule) )] public class AbpAutoMapperModule : AbpModule { diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs index 6e9fb10bf2..605319ccff 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs @@ -6,8 +6,7 @@ namespace Volo.Abp.AutoMapper { [DependsOn( typeof(AbpAutoMapperModule), - typeof(AbpObjectExtendingTestModule), - typeof(AbpMultiLingualObjectModule) + typeof(AbpObjectExtendingTestModule) )] public class AutoMapperTestModule : AbpModule { From 81bda24a700484dfb530ec99e04f17ab3016436e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:28:27 +0300 Subject: [PATCH 4/8] Remove usage of multilingual entities. --- .../AbpAutoMapperMultiLingualDtoExtensions.cs | 54 --------- .../Volo.Abp.AutoMapper.csproj | 1 - .../Abp/AutoMapper/AbpAutoMapperModule.cs | 6 +- .../Volo.Abp.Ddd.Domain.csproj | 1 - .../Volo/Abp/Domain/AbpDddDomainModule.cs | 2 - .../AbpAutoMapperMultiLingualDto_Tests.cs | 114 ------------------ 6 files changed, 1 insertion(+), 177 deletions(-) delete mode 100644 framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions.cs delete mode 100644 framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDto_Tests.cs diff --git a/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions.cs b/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions.cs deleted file mode 100644 index 83cb2b35b9..0000000000 --- a/framework/src/Volo.Abp.AutoMapper/AutoMapper/AbpAutoMapperMultiLingualDtoExtensions.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Volo.Abp.MultiLingualObject; -using Volo.Abp.Threading; - -namespace AutoMapper -{ - public static class AbpAutoMapperMultiLingualDtoExtensions - { - public static CreateMultiLingualMapResult CreateMultiLingualMap(this Profile profile) - where TTranslation : class, IMultiLingualTranslation - where TSource : IHasMultiLingual - { - - return new( - profile.CreateMap().BeforeMap>(), - profile.CreateMap()); - } - } - - public class AbpMultiLingualMapperAction : IMappingAction - where TTranslation : class, IMultiLingualTranslation - where TSource : IHasMultiLingual - { - private readonly IMultiLingualObjectManager _multiLingualObjectManager; - - public AbpMultiLingualMapperAction(IMultiLingualObjectManager multiLingualObjectManager) - { - _multiLingualObjectManager = multiLingualObjectManager; - } - - public void Process(TSource source, TDestination destination, ResolutionContext context) - { - var translation = AsyncHelper.RunSync(() => _multiLingualObjectManager.GetTranslationAsync(source)); - if (translation != null) - { - context.Mapper.Map(translation, destination); - } - } - } - - public class CreateMultiLingualMapResult - { - public IMappingExpression EntityMap { get; } - - public IMappingExpression TranslateMap { get; } - - public CreateMultiLingualMapResult( - IMappingExpression entityMap, - IMappingExpression translateMap) - { - EntityMap = entityMap; - TranslateMap = translateMap; - } - } -} diff --git a/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj b/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj index 4a5f44f937..9f028d31ee 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj +++ b/framework/src/Volo.Abp.AutoMapper/Volo.Abp.AutoMapper.csproj @@ -16,7 +16,6 @@ - diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs index 2e53215689..cb576ba1de 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs @@ -4,7 +4,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.Auditing; using Volo.Abp.Modularity; -using Volo.Abp.MultiLingualObject; using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectMapping; @@ -13,8 +12,7 @@ namespace Volo.Abp.AutoMapper [DependsOn( typeof(AbpObjectMappingModule), typeof(AbpObjectExtendingModule), - typeof(AbpAuditingModule), - typeof(AbpMultiLingualObjectModule) + typeof(AbpAuditingModule) )] public class AbpAutoMapperModule : AbpModule { @@ -29,8 +27,6 @@ namespace Volo.Abp.AutoMapper context.Services.AddSingleton(CreateMappings); context.Services.AddSingleton(provider => provider.GetRequiredService()); - - context.Services.AddTransient(typeof(AbpMultiLingualMapperAction<,,>)); } private MapperAccessor CreateMappings(IServiceProvider serviceProvider) diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj index e676f24313..87879334af 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj @@ -20,7 +20,6 @@ - diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs index 0ebbe859bd..523a6ee4f2 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs @@ -6,7 +6,6 @@ using Volo.Abp.EventBus; using Volo.Abp.ExceptionHandling; using Volo.Abp.Guids; using Volo.Abp.Modularity; -using Volo.Abp.MultiLingualObject; using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectMapping; using Volo.Abp.Specifications; @@ -26,7 +25,6 @@ namespace Volo.Abp.Domain typeof(AbpTimingModule), typeof(AbpUnitOfWorkModule), typeof(AbpObjectMappingModule), - typeof(AbpMultiLingualObjectModule), typeof(AbpExceptionHandlingModule), typeof(AbpSpecificationsModule) )] diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDto_Tests.cs b/framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDto_Tests.cs deleted file mode 100644 index 0efb72625b..0000000000 --- a/framework/test/Volo.Abp.AutoMapper.Tests/AutoMapper/AbpAutoMapperMultiLingualDto_Tests.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.Extensions.DependencyInjection; -using Shouldly; -using Volo.Abp; -using Volo.Abp.AutoMapper; -using Volo.Abp.Localization; -using Volo.Abp.MultiLingualObject.TestObjects; -using Volo.Abp.Testing; -using Xunit; - -namespace AutoMapper -{ - public class AbpAutoMapperMultiLingualDto_Tests : AbpIntegratedTest - { - private readonly Volo.Abp.ObjectMapping.IObjectMapper _objectMapper; - private readonly MultiLingualBook _book; - - public AbpAutoMapperMultiLingualDto_Tests() - { - _objectMapper = ServiceProvider.GetRequiredService(); - - var id = Guid.NewGuid(); - _book = new MultiLingualBook(id, 100) - { - Translations = new List() - }; - - var en = new MultiLingualBookTranslation - { - Language = "en", - Name = "C# in Depth", - }; - var zh = new MultiLingualBookTranslation - { - Language = "zh-Hans", - Name = "深入理解C#", - }; - - _book.Translations.Add(en); - _book.Translations.Add(zh); - } - - protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) - { - options.UseAutofac(); - } - - [Fact] - public void Should_Map_Current_UI_Culture() - { - using (CultureHelper.Use("zh-Hans")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBe("深入理解C#"); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - - [Fact] - public void Should_Map_Fallback_UI_Culture() - { - using (CultureHelper.Use("en-us")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBe("C# in Depth"); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - - [Fact] - public void Should_Map_Default_Language() - { - using (CultureHelper.Use("tr")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBe("C# in Depth"); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - - [Fact] - public void NoTranslations_ShouldStillMapObject() - { - _book.Translations.Clear(); - - using (CultureHelper.Use("tr")) - { - var bookDto = _objectMapper.Map(_book); - - bookDto.Name.ShouldBeNull(); - bookDto.Price.ShouldBe(_book.Price); - bookDto.Id.ShouldBe(_book.Id); - } - } - } - - public class BookProfile : Profile - { - public BookProfile() - { - var mapResult = this.CreateMultiLingualMap(); - - mapResult.EntityMap.ValidateMemberList(MemberList.None); - mapResult.TranslateMap.ValidateMemberList(MemberList.None); - } - } -} From 69976559bf118e96a12254d6224835b31aeabf4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:29:58 +0300 Subject: [PATCH 5/8] Update common.ps1 --- nupkg/common.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index cea7664613..9fd545dc35 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -147,7 +147,6 @@ $projects = ( "framework/src/Volo.Abp.Validation", "framework/src/Volo.Abp.VirtualFileSystem", "framework/src/Volo.Abp.Kafka", - "framework/src/Volo.Abp.MultiLingualObject", "framework/src/Volo.Abp.Swashbuckle", # modules/account From 70d5347bd553fe7e6c2918a4da07eea2f7696753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:31:22 +0300 Subject: [PATCH 6/8] Update docs-nav.json --- docs/en/docs-nav.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index ec3341c623..efca73a484 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -376,10 +376,6 @@ "text": "Entities & Aggregate Roots", "path": "Entities.md" }, - { - "text": "Multi-Lingual-Entities", - "path": "Multi-Lingual-Entities.md" - }, { "text": "Value Objects", "path": "Value-Objects.md" From d7d764253a657fbb92cf2507d31a5bdbfc91ac05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 30 Mar 2021 16:36:27 +0300 Subject: [PATCH 7/8] Rename multilanguage objects. --- framework/Volo.Abp.sln | 4 ++-- .../Volo/Abp/MultiLingualObject/IHasMultiLingual.cs | 10 ---------- .../MultiLingualObject/IMultiLingualTranslation.cs | 7 ------- .../FodyWeavers.xml | 0 .../FodyWeavers.xsd | 0 .../Volo.Abp.MultiLingualObjects.csproj} | 1 - .../AbpMultiLingualObjectsModule.cs} | 4 ++-- .../Abp/MultiLingualObjects/IMultiLingualObject.cs | 10 ++++++++++ .../IMultiLingualObjectManager.cs | 6 +++--- .../Abp/MultiLingualObjects/IObjectTranslation.cs | 7 +++++++ .../MultiLingualObjects}/MultiLingualObjectManager.cs | 9 ++++----- .../Volo.Abp.AutoMapper.Tests.csproj | 2 +- .../Volo/Abp/AutoMapper/AutoMapperTestModule.cs | 1 - .../TestObjects/MultiLingualBookTranslation.cs | 11 ----------- .../Volo.Abp.MultiLingualObjects.Tests.csproj} | 2 +- .../AbpMultiLingualObjectsTestModule.cs} | 9 ++++----- .../MultiLingualObjectManager_Tests.cs | 6 +++--- .../TestObjects/MultiLingualBook.cs | 4 ++-- .../TestObjects/MultiLingualBookDto.cs | 2 +- .../TestObjects/MultiLingualBookTranslation.cs | 9 +++++++++ 20 files changed, 49 insertions(+), 55 deletions(-) delete mode 100644 framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IHasMultiLingual.cs delete mode 100644 framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualTranslation.cs rename framework/src/{Volo.Abp.MultiLingualObject => Volo.Abp.MultiLingualObjects}/FodyWeavers.xml (100%) rename framework/src/{Volo.Abp.MultiLingualObject => Volo.Abp.MultiLingualObjects}/FodyWeavers.xsd (100%) rename framework/src/{Volo.Abp.MultiLingualObject/Volo.Abp.MultiLingualObject.csproj => Volo.Abp.MultiLingualObjects/Volo.Abp.MultiLingualObjects.csproj} (92%) rename framework/src/{Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectModule.cs => Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsModule.cs} (57%) create mode 100644 framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObject.cs rename framework/src/{Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject => Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects}/IMultiLingualObjectManager.cs (63%) create mode 100644 framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IObjectTranslation.cs rename framework/src/{Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject => Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects}/MultiLingualObjectManager.cs (91%) delete mode 100644 framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookTranslation.cs rename framework/test/{Volo.Abp.MultiLingualObject.Tests/Volo.Abp.MultiLingualObject.Tests.csproj => Volo.Abp.MultiLingualObjects.Tests/Volo.Abp.MultiLingualObjects.Tests.csproj} (93%) rename framework/test/{Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectTestModule.cs => Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsTestModule.cs} (60%) rename framework/test/{Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject => Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects}/MultiLingualObjectManager_Tests.cs (93%) rename framework/test/{Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject => Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects}/TestObjects/MultiLingualBook.cs (72%) rename framework/test/{Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject => Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects}/TestObjects/MultiLingualBookDto.cs (79%) create mode 100644 framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookTranslation.cs diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index fb631f3ee5..67d2fa2573 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -331,9 +331,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.GlobalFeatures", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.GlobalFeatures.Tests", "test\Volo.Abp.GlobalFeatures.Tests\Volo.Abp.GlobalFeatures.Tests.csproj", "{231F1581-AA21-44C3-BF27-51EB3AD5355C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiLingualObject", "src\Volo.Abp.MultiLingualObject\Volo.Abp.MultiLingualObject.csproj", "{C9142DED-1F6C-4385-A37D-81E46B233306}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiLingualObjects", "src\Volo.Abp.MultiLingualObjects\Volo.Abp.MultiLingualObjects.csproj", "{C9142DED-1F6C-4385-A37D-81E46B233306}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiLingualObject.Tests", "test\Volo.Abp.MultiLingualObject.Tests\Volo.Abp.MultiLingualObject.Tests.csproj", "{A30D63B0-E952-4052-BAEE-38B8BF924093}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MultiLingualObjects.Tests", "test\Volo.Abp.MultiLingualObjects.Tests\Volo.Abp.MultiLingualObjects.Tests.csproj", "{A30D63B0-E952-4052-BAEE-38B8BF924093}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Http.Client.IdentityModel.WebAssembly", "src\Volo.Abp.Http.Client.IdentityModel.WebAssembly\Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj", "{3D35A1E0-A9A1-404F-9B55-5F1A7EB6D5B8}" EndProject diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IHasMultiLingual.cs b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IHasMultiLingual.cs deleted file mode 100644 index 8ea05ecabd..0000000000 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IHasMultiLingual.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; - -namespace Volo.Abp.MultiLingualObject -{ - public interface IHasMultiLingual - where TTranslation : class, IMultiLingualTranslation - { - ICollection Translations { get; set; } - } -} diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualTranslation.cs b/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualTranslation.cs deleted file mode 100644 index 3676e08b44..0000000000 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualTranslation.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Volo.Abp.MultiLingualObject -{ - public interface IMultiLingualTranslation - { - string Language { get; set; } - } -} diff --git a/framework/src/Volo.Abp.MultiLingualObject/FodyWeavers.xml b/framework/src/Volo.Abp.MultiLingualObjects/FodyWeavers.xml similarity index 100% rename from framework/src/Volo.Abp.MultiLingualObject/FodyWeavers.xml rename to framework/src/Volo.Abp.MultiLingualObjects/FodyWeavers.xml diff --git a/framework/src/Volo.Abp.MultiLingualObject/FodyWeavers.xsd b/framework/src/Volo.Abp.MultiLingualObjects/FodyWeavers.xsd similarity index 100% rename from framework/src/Volo.Abp.MultiLingualObject/FodyWeavers.xsd rename to framework/src/Volo.Abp.MultiLingualObjects/FodyWeavers.xsd diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo.Abp.MultiLingualObject.csproj b/framework/src/Volo.Abp.MultiLingualObjects/Volo.Abp.MultiLingualObjects.csproj similarity index 92% rename from framework/src/Volo.Abp.MultiLingualObject/Volo.Abp.MultiLingualObject.csproj rename to framework/src/Volo.Abp.MultiLingualObjects/Volo.Abp.MultiLingualObjects.csproj index d6df31e1ed..da83bc80f4 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo.Abp.MultiLingualObject.csproj +++ b/framework/src/Volo.Abp.MultiLingualObjects/Volo.Abp.MultiLingualObjects.csproj @@ -5,7 +5,6 @@ netstandard2.0 - Volo.Abp.MultiLingualObject Volo.Abp.MultiLingualObject $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; false diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectModule.cs b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsModule.cs similarity index 57% rename from framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectModule.cs rename to framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsModule.cs index 120cf7bac1..248a0eff75 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectModule.cs +++ b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsModule.cs @@ -1,11 +1,11 @@ using Volo.Abp.Localization; using Volo.Abp.Modularity; -namespace Volo.Abp.MultiLingualObject +namespace Volo.Abp.MultiLingualObjects { [DependsOn( typeof(AbpLocalizationModule))] - public class AbpMultiLingualObjectModule : AbpModule + public class AbpMultiLingualObjectsModule : AbpModule { } } diff --git a/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObject.cs b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObject.cs new file mode 100644 index 0000000000..31a82f1b06 --- /dev/null +++ b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObject.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; + +namespace Volo.Abp.MultiLingualObjects +{ + public interface IMultiLingualObject + where TTranslation : class, IObjectTranslation + { + ICollection Translations { get; set; } + } +} diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObjectManager.cs similarity index 63% rename from framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs rename to framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObjectManager.cs index 7cd860f9ef..8a649cd51a 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs +++ b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObjectManager.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace Volo.Abp.MultiLingualObject +namespace Volo.Abp.MultiLingualObjects { public interface IMultiLingualObjectManager { @@ -8,7 +8,7 @@ namespace Volo.Abp.MultiLingualObject TMultiLingual multiLingual, string culture = null, bool fallbackToParentCultures = true) - where TMultiLingual : IHasMultiLingual - where TTranslation : class, IMultiLingualTranslation; + where TMultiLingual : IMultiLingualObject + where TTranslation : class, IObjectTranslation; } } diff --git a/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IObjectTranslation.cs b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IObjectTranslation.cs new file mode 100644 index 0000000000..c1a8caa492 --- /dev/null +++ b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IObjectTranslation.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.MultiLingualObjects +{ + public interface IObjectTranslation + { + string Language { get; set; } + } +} diff --git a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager.cs similarity index 91% rename from framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs rename to framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager.cs index f8e653120a..e7185ec0c4 100644 --- a/framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs +++ b/framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager.cs @@ -6,9 +6,8 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Localization; using Volo.Abp.Settings; -using Volo.Abp.Threading; -namespace Volo.Abp.MultiLingualObject +namespace Volo.Abp.MultiLingualObjects { public class MultiLingualObjectManager : IMultiLingualObjectManager, ITransientDependency { @@ -25,8 +24,8 @@ namespace Volo.Abp.MultiLingualObject TMultiLingual multiLingual, string culture = null, bool fallbackToParentCultures = true) - where TMultiLingual : IHasMultiLingual - where TTranslation : class, IMultiLingualTranslation + where TMultiLingual : IMultiLingualObject + where TTranslation : class, IObjectTranslation { culture ??= CultureInfo.CurrentUICulture.Name; @@ -69,7 +68,7 @@ namespace Volo.Abp.MultiLingualObject protected virtual TTranslation GetTranslationBasedOnCulturalRecursive( CultureInfo culture, ICollection translations, int currentDepth) - where TTranslation : class, IMultiLingualTranslation + where TTranslation : class, IObjectTranslation { if (culture == null || culture.Name.IsNullOrWhiteSpace() || diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj b/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj index 37ffca1657..2bedb82ed5 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo.Abp.AutoMapper.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs index 605319ccff..fcc9918dd4 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperTestModule.cs @@ -1,5 +1,4 @@ using Volo.Abp.Modularity; -using Volo.Abp.MultiLingualObject; using Volo.Abp.ObjectExtending; namespace Volo.Abp.AutoMapper diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookTranslation.cs b/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookTranslation.cs deleted file mode 100644 index 5f35554078..0000000000 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookTranslation.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace Volo.Abp.MultiLingualObject.TestObjects -{ - public class MultiLingualBookTranslation : IMultiLingualTranslation - { - public string Name { get; set; } - - public string Language { get; set; } - } -} diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo.Abp.MultiLingualObject.Tests.csproj b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo.Abp.MultiLingualObjects.Tests.csproj similarity index 93% rename from framework/test/Volo.Abp.MultiLingualObject.Tests/Volo.Abp.MultiLingualObject.Tests.csproj rename to framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo.Abp.MultiLingualObjects.Tests.csproj index 52d2f7ac2f..164a5da272 100644 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo.Abp.MultiLingualObject.Tests.csproj +++ b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo.Abp.MultiLingualObjects.Tests.csproj @@ -9,7 +9,7 @@ - + diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectTestModule.cs b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsTestModule.cs similarity index 60% rename from framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectTestModule.cs rename to framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsTestModule.cs index f8f79a3065..d563a6aab3 100644 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/AbpMultiLingualObjectTestModule.cs +++ b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/AbpMultiLingualObjectsTestModule.cs @@ -1,21 +1,20 @@ -using Autofac.Extensions.DependencyInjection; -using Volo.Abp.Autofac; +using Volo.Abp.Autofac; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.ObjectMapping; using Volo.Abp.Settings; -namespace Volo.Abp.MultiLingualObject +namespace Volo.Abp.MultiLingualObjects { [DependsOn( typeof(AbpAutofacModule), typeof(AbpLocalizationModule), typeof(AbpSettingsModule), typeof(AbpObjectMappingModule), - typeof(AbpMultiLingualObjectModule), + typeof(AbpMultiLingualObjectsModule), typeof(AbpTestBaseModule) )] - public class AbpMultiLingualObjectTestModule : AbpModule + public class AbpMultiLingualObjectsTestModule : AbpModule { } } diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager_Tests.cs similarity index 93% rename from framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs rename to framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager_Tests.cs index d23d3153b1..d3d5ae3617 100644 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/MultiLingualObjectManager_Tests.cs +++ b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager_Tests.cs @@ -4,13 +4,13 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Shouldly; using Volo.Abp.Localization; -using Volo.Abp.MultiLingualObject.TestObjects; +using Volo.Abp.MultiLingualObjects.TestObjects; using Volo.Abp.Testing; using Xunit; -namespace Volo.Abp.MultiLingualObject +namespace Volo.Abp.MultiLingualObjects { - public class MultiLingualObjectManager_Tests : AbpIntegratedTest + public class MultiLingualObjectManager_Tests : AbpIntegratedTest { private readonly IMultiLingualObjectManager _multiLingualObjectManager; private readonly MultiLingualBook _book; diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBook.cs b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBook.cs similarity index 72% rename from framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBook.cs rename to framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBook.cs index d12022a44b..2dcae93b73 100644 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBook.cs +++ b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBook.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.MultiLingualObject.TestObjects +namespace Volo.Abp.MultiLingualObjects.TestObjects { - public class MultiLingualBook : IHasMultiLingual + public class MultiLingualBook : IMultiLingualObject { public MultiLingualBook(Guid id, decimal price) { diff --git a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookDto.cs b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookDto.cs similarity index 79% rename from framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookDto.cs rename to framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookDto.cs index 8814f9a855..fe5868074f 100644 --- a/framework/test/Volo.Abp.MultiLingualObject.Tests/Volo/Abp/MultiLingualObject/TestObjects/MultiLingualBookDto.cs +++ b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookDto.cs @@ -1,6 +1,6 @@ using System; -namespace Volo.Abp.MultiLingualObject.TestObjects +namespace Volo.Abp.MultiLingualObjects.TestObjects { public class MultiLingualBookDto { diff --git a/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookTranslation.cs b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookTranslation.cs new file mode 100644 index 0000000000..e1b85df173 --- /dev/null +++ b/framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/TestObjects/MultiLingualBookTranslation.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.MultiLingualObjects.TestObjects +{ + public class MultiLingualBookTranslation : IObjectTranslation + { + public string Name { get; set; } + + public string Language { get; set; } + } +} From e0f3ecc59c2a63fb8d1ef39a4f4c826b51220ba3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 30 Mar 2021 22:32:46 +0800 Subject: [PATCH 8/8] Remove Multi-Lingual-Entities.md --- docs/zh-Hans/Multi-Lingual-Entities.md | 100 ------------------------- docs/zh-Hans/docs-nav.json | 4 - 2 files changed, 104 deletions(-) delete mode 100644 docs/zh-Hans/Multi-Lingual-Entities.md diff --git a/docs/zh-Hans/Multi-Lingual-Entities.md b/docs/zh-Hans/Multi-Lingual-Entities.md deleted file mode 100644 index 2deff4e38f..0000000000 --- a/docs/zh-Hans/Multi-Lingual-Entities.md +++ /dev/null @@ -1,100 +0,0 @@ -# 多语言实体 - -ABP框架为多语言实体定义了两个基本接口用于翻译实体的标准模型. - -## IHasMultiLingual - -`IHasMultiLingual` 接口用于标记多语言实体. 通过 `IHasMultiLingual` 接口被标记为多语言的实体定义与语言无关的信息. 多语言实体包含翻译集合,其中包含与语言有关的信息. - -示例: - -```csharp -public class Product : Entity, IMultiLingualEntity -{ - public decimal Price { get; set; } - - public ICollection Translations { get; set; } -} -``` - -## IMultiLingualTranslation - -`IMultiLingualTranslation` 接口用于标记多语言实体的翻译. 通过 `IHasMultiLingual` 接口被标记为的翻译实体定义与语言有关的信息. 翻译实体包含 `Language` 字段,用于翻译的语言代码. - -示例: - -```csharp -public class ProductTranslation : Entity, IMultiLingualTranslation -{ - public string Name { get; set; } - - public string Language { get; set; } -} -``` - -## 映射为DTO对象 - -ABP提供了[对象到对象的映射](Object-To-Object-Mapping.md)系统,你可以通过实现 `IObjectMapper` 接口将多语言实体映射为DTO. - -示例: - -```csharp -public class MultiLingualProductObjectMapper : IObjectMapper, ITransientDependency -{ - private readonly IMultiLingualObjectManager _multiLingualObjectManager; - - public MultiLingualProductObjectMapper(IMultiLingualObjectManager multiLingualObjectManager) - { - _multiLingualObjectManager = multiLingualObjectManager; - } - - public ProductDto Map(Product source) - { - var translation = _multiLingualObjectManager.GetTranslation(source); - - return new ProductDto - { - Price = source.Price, - Id = source.Id, - Name = translation?.Name - }; - } - - public ProductDto Map(Product source, ProductDto destination) - { - return default; - } -} - -``` - -### AutoMapper集成 - -ABP提供了 `CreateMultiLingualMap` 扩展方法用于将多语言实体映射为DTO. - -示例: - -```csharp -public class ProductProfile : Profile -{ - public ProductProfile() - { - var mapResult = this.CreateMultiLingualMap(); - } -} -``` - -`CreateMultiLingualMap` 扩展方法返回了一个类型为 `CreateMultiLingualMapResult` 的对象,它包含 `EntityMap` 和 `TranslationMap` 字段. 这些字段可以用于自定义多语言映射. - -示例: - -```csharp -this.CreateMultiLingualMap(context) - .EntityMap.ForMember(dest => dest.ProductCount, opt => opt.MapFrom(src => src.Products.Count)); -``` - -## IMultiLingualObjectManager - -`IMultiLingualObjectManager` 接口定义了 `GetTranslation` 和 `GetTranslationAsync` 方法用于获取实体当前的翻译对象. - -`IMultiLingualObjectManager` 的默认实现首先使用当前的UI语言寻找翻译, 如果当前的UI语言没有对应的翻译, 那么会搜索默认语言设置(参阅[设置](Settings.md))用于寻找翻译. 如果默认语言没有对应的翻译, 那么它会返回已存在翻译集合中的第一个翻译对象. diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json index 241633caf5..4f47dd2760 100644 --- a/docs/zh-Hans/docs-nav.json +++ b/docs/zh-Hans/docs-nav.json @@ -354,10 +354,6 @@ "text": "实体&聚合根", "path": "Entities.md" }, - { - "text": "多语言实体", - "path": "Multi-Lingual-Entities.md" - }, { "text": "值对象" },