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>( TTranslation GetTranslation<TMultiLingual, TTranslation>(
TMultiLingual multiLingual, TMultiLingual multiLingual,
bool fallbackToParentCultures = true, string culture = null,
string culture = null) bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation> where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation; where TTranslation : class, IMultiLingualTranslation;
Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>( Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>(
TMultiLingual multiLingual, TMultiLingual multiLingual,
bool fallbackToParentCultures = true, string culture = null,
string culture = null) bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation> where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation; 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>( public TTranslation GetTranslation<TMultiLingual, TTranslation>(
TMultiLingual multiLingual, TMultiLingual multiLingual,
bool fallbackToParentCultures = true, string culture = null,
string culture = null) bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation> where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation where TTranslation : class, IMultiLingualTranslation
{ {
return AsyncHelper.RunSync(() => return AsyncHelper.RunSync(() =>
GetTranslationAsync<TMultiLingual, TTranslation>(multiLingual, fallbackToParentCultures, culture)); GetTranslationAsync<TMultiLingual, TTranslation>(multiLingual, culture, fallbackToParentCultures));
} }
public virtual async Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>( public virtual async Task<TTranslation> GetTranslationAsync<TMultiLingual, TTranslation>(
TMultiLingual multiLingual, TMultiLingual multiLingual,
bool fallbackToParentCultures = true, string culture = null,
string culture = null) bool fallbackToParentCultures = true)
where TMultiLingual : IHasMultiLingual<TTranslation> where TMultiLingual : IHasMultiLingual<TTranslation>
where TTranslation : class, IMultiLingualTranslation where TTranslation : class, IMultiLingualTranslation
{ {
culture ??= CultureInfo.CurrentUICulture.Name; culture ??= CultureInfo.CurrentUICulture.Name;
if (multiLingual.Translations == null || !multiLingual.Translations.Any()) if (multiLingual.Translations.IsNullOrEmpty())
{ {
return null; return null;
} }
@ -54,9 +54,12 @@ namespace Volo.Abp.MultiLingualObject
if (fallbackToParentCultures) if (fallbackToParentCultures)
{ {
translation = translation = GetTranslationBasedOnCulturalRecursive(
GetTranslationBasedOnCulturalRecursive( CultureInfo.CurrentUICulture.Parent,
CultureInfo.CurrentUICulture.Parent, multiLingual.Translations, 0); multiLingual.Translations,
0
);
if (translation != null) if (translation != null)
{ {
return translation; return translation;
@ -79,17 +82,16 @@ namespace Volo.Abp.MultiLingualObject
CultureInfo culture, ICollection<TTranslation> translations, int currentDepth) CultureInfo culture, ICollection<TTranslation> translations, int currentDepth)
where TTranslation : class, IMultiLingualTranslation where TTranslation : class, IMultiLingualTranslation
{ {
if (culture == null || culture.Name.IsNullOrWhiteSpace() || translations.IsNullOrEmpty() || if (culture == null ||
culture.Name.IsNullOrWhiteSpace() ||
translations.IsNullOrEmpty() ||
currentDepth > MaxCultureFallbackDepth) currentDepth > MaxCultureFallbackDepth)
{ {
return null; return null;
} }
var translation = translations.FirstOrDefault(pt => var translation = translations.FirstOrDefault(pt => pt.Language.Equals(culture.Name, StringComparison.OrdinalIgnoreCase));
pt.Language.Equals(culture.Name, StringComparison.OrdinalIgnoreCase)); return translation ?? GetTranslationBasedOnCulturalRecursive(culture.Parent, translations, currentDepth + 1);
return translation ??
GetTranslationBasedOnCulturalRecursive(culture.Parent,
translations, currentDepth + 1);
} }
} }
} }

Loading…
Cancel
Save