Browse Source

Merge branch 'rel-6.0' of https://github.com/abpframework/abp into rel-6.0

pull/13423/head 6.0.0-rc.1
Volosoft Agent 4 years ago
parent
commit
97278177a1
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs
  3. 9
      framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObjectManager.cs
  4. 31
      framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager.cs
  5. 11
      framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager_Tests.cs

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs

@ -20,7 +20,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling;
public class AbpExceptionFilter : IAsyncExceptionFilter, ITransientDependency
{
public async Task OnExceptionAsync(ExceptionContext context)
public virtual async Task OnExceptionAsync(ExceptionContext context)
{
if (!ShouldHandleException(context))
{

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs

@ -25,7 +25,7 @@ public class AbpExceptionPageFilter : IAsyncPageFilter, ITransientDependency
return Task.CompletedTask;
}
public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
public virtual async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
{
if (context.HandlerMethod == null || !ShouldHandleException(context))
{

9
framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/IMultiLingualObjectManager.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Volo.Abp.MultiLingualObjects;
@ -10,4 +11,10 @@ public interface IMultiLingualObjectManager
bool fallbackToParentCultures = true)
where TMultiLingual : IMultiLingualObject<TTranslation>
where TTranslation : class, IObjectTranslation;
Task<TTranslation> GetTranslationAsync<TTranslation>(
ICollection<TTranslation> translations,
string culture = null,
bool fallbackToParentCultures = true)
where TTranslation : class, IObjectTranslation;
}

31
framework/src/Volo.Abp.MultiLingualObjects/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager.cs

@ -19,22 +19,21 @@ public class MultiLingualObjectManager : IMultiLingualObjectManager, ITransientD
{
SettingProvider = settingProvider;
}
public virtual async Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>(
TMultiLingual multiLingual,
string culture = null,
bool fallbackToParentCultures = true)
where TMultiLingual : IMultiLingualObject<TTranslation>
public virtual async Task<TTranslation> GetTranslationAsync<TTranslation>(
ICollection<TTranslation> translations,
string culture,
bool fallbackToParentCultures)
where TTranslation : class, IObjectTranslation
{
culture ??= CultureInfo.CurrentUICulture.Name;
if (multiLingual.Translations.IsNullOrEmpty())
if (translations.IsNullOrEmpty())
{
return null;
}
var translation = multiLingual.Translations.FirstOrDefault(pt => pt.Language == culture);
var translation = translations.FirstOrDefault(pt => pt.Language == culture);
if (translation != null)
{
return translation;
@ -44,7 +43,7 @@ public class MultiLingualObjectManager : IMultiLingualObjectManager, ITransientD
{
translation = GetTranslationBasedOnCulturalRecursive(
CultureInfo.CurrentUICulture.Parent,
multiLingual.Translations,
translations,
0
);
@ -56,16 +55,26 @@ public class MultiLingualObjectManager : IMultiLingualObjectManager, ITransientD
var defaultLanguage = await SettingProvider.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage);
translation = multiLingual.Translations.FirstOrDefault(pt => pt.Language == defaultLanguage);
translation = translations.FirstOrDefault(pt => pt.Language == defaultLanguage);
if (translation != null)
{
return translation;
}
translation = multiLingual.Translations.FirstOrDefault();
translation = translations.FirstOrDefault();
return translation;
}
public virtual Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>(
TMultiLingual multiLingual,
string culture = null,
bool fallbackToParentCultures = true)
where TMultiLingual : IMultiLingualObject<TTranslation>
where TTranslation : class, IObjectTranslation
{
return GetTranslationAsync(multiLingual.Translations, culture: culture, fallbackToParentCultures: fallbackToParentCultures);
}
protected virtual TTranslation GetTranslationBasedOnCulturalRecursive<TTranslation>(
CultureInfo culture, ICollection<TTranslation> translations, int currentDepth)
where TTranslation : class, IObjectTranslation

11
framework/test/Volo.Abp.MultiLingualObjects.Tests/Volo/Abp/MultiLingualObjects/MultiLingualObjectManager_Tests.cs

@ -51,6 +51,17 @@ public class MultiLingualObjectManager_Tests : AbpIntegratedTest<AbpMultiLingual
}
}
[Fact]
public async Task GetTranslationFromListAsync()
{
using (CultureHelper.Use("en-us"))
{
var translation = await _multiLingualObjectManager.GetTranslationAsync(_book.Translations);
translation.Name.ShouldBe("C# in Depth");
}
}
[Fact]
public async Task Should_Get_Specified_Language()
{

Loading…
Cancel
Save