Browse Source

Refactor MultiLingualObjectManager

pull/8271/head
Halil İbrahim Kalkan 6 years ago
parent
commit
916929c903
  1. 8
      framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs
  2. 32
      framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs

8
framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/IMultiLingualObjectManager.cs

@ -6,15 +6,15 @@ namespace Volo.Abp.MultiLingualObject
{
TTranslation GetTranslation<TMultiLingual, TTranslation>(
TMultiLingual multiLingual,
bool fallbackToParentCultures = true,
string culture = null)
string culture = null,
bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation;
Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>(
TMultiLingual multiLingual,
bool fallbackToParentCultures = true,
string culture = null)
string culture = null,
bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation;
}

32
framework/src/Volo.Abp.MultiLingualObject/Volo/Abp/MultiLingualObject/MultiLingualObjectManager.cs

@ -23,25 +23,25 @@ namespace Volo.Abp.MultiLingualObject
public TTranslation GetTranslation<TMultiLingual, TTranslation>(
TMultiLingual multiLingual,
bool fallbackToParentCultures = true,
string culture = null)
string culture = null,
bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation
{
return AsyncHelper.RunSync(() =>
GetTranslationAsync<TMultiLingual, TTranslation>(multiLingual, fallbackToParentCultures, culture));
GetTranslationAsync<TMultiLingual, TTranslation>(multiLingual, culture, fallbackToParentCultures));
}
public virtual async Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>(
TMultiLingual multiLingual,
bool fallbackToParentCultures = true,
string culture = null)
string culture = null,
bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation>
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<TTranslation> 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);
}
}
}

Loading…
Cancel
Save