Browse Source

Refactor localization.

pull/179/head
Halil İbrahim Kalkan 9 years ago
parent
commit
d51f8c8cb5
  1. 2
      src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs
  2. 11
      src/Volo.Abp/Volo/Abp/Localization/AbpStringLocalizerFactory.cs
  3. 2
      src/Volo.Abp/Volo/Abp/Localization/ILocalizationDictionaryProvider.cs
  4. 2
      src/Volo.Abp/Volo/Abp/Localization/Json/JsonEmbeddedFileLocalizationDictionaryProvider.cs
  5. 2
      src/Volo.Abp/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs
  6. 2
      src/Volo.Abp/Volo/Abp/Localization/LocalizationDictionaryProviderBase.cs
  7. 13
      src/Volo.Abp/Volo/Abp/Localization/LocalizationResource.cs
  8. 14
      src/Volo.Abp/Volo/Abp/Localization/LocalizationResourceInitializationContext.cs

2
src/Volo.Abp.Identity.Web/AbpIdentityWebModule.cs

@ -38,7 +38,7 @@ namespace Volo.Abp.Identity.Web
{ {
options.FileSets.AddEmbedded<AbpIdentityWebModule>("Volo.Abp.Identity.Web"); options.FileSets.AddEmbedded<AbpIdentityWebModule>("Volo.Abp.Identity.Web");
}); });
services.Configure<AbpLocalizationOptions>(options => services.Configure<AbpLocalizationOptions>(options =>
{ {
options.Resources.AddJson<IdentityResource>("en"); options.Resources.AddJson<IdentityResource>("en");

11
src/Volo.Abp/Volo/Abp/Localization/AbpStringLocalizerFactory.cs

@ -43,19 +43,10 @@ namespace Volo.Abp.Localization
private AbpDictionaryBasedStringLocalizer CreateAbpStringLocalizer(LocalizationResource resource) private AbpDictionaryBasedStringLocalizer CreateAbpStringLocalizer(LocalizationResource resource)
{ {
resource.Initialize(_serviceProvider); resource.Initialize(_serviceProvider);
return new AbpDictionaryBasedStringLocalizer(
//Wrap reader by wrappers (like db wrapper which implement multitenancy/regions and so on...)
//Notes: Localizer will be cached, so wrappers are responsible to cache/invalidate themselves!
var localizer = new AbpDictionaryBasedStringLocalizer(
resource, resource,
resource.BaseResourceTypes.Select(Create).ToList() resource.BaseResourceTypes.Select(Create).ToList()
); );
//TODO: Wrap with DB provider or other premium sources
return localizer;
} }
public virtual IStringLocalizer Create(string baseName, string location) public virtual IStringLocalizer Create(string baseName, string location)

2
src/Volo.Abp/Volo/Abp/Localization/ILocalizationDictionaryProvider.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Localization
{ {
IDictionary<string, ILocalizationDictionary> Dictionaries { get; } IDictionary<string, ILocalizationDictionary> Dictionaries { get; }
void Initialize(); void Initialize(LocalizationResourceInitializationContext context);
void Extend(ILocalizationDictionaryProvider dictionaryProvider); void Extend(ILocalizationDictionaryProvider dictionaryProvider);
} }

2
src/Volo.Abp/Volo/Abp/Localization/Json/JsonEmbeddedFileLocalizationDictionaryProvider.cs

@ -17,7 +17,7 @@ namespace Volo.Abp.Localization.Json
_rootNamespace = rootNamespace; _rootNamespace = rootNamespace;
} }
public override void Initialize() //TODO: Extract initialization to a factory..? public override void Initialize(LocalizationResourceInitializationContext context) //TODO: Extract initialization to a factory..?
{ {
var rootNameSpaceWithDot = _rootNamespace + "."; var rootNameSpaceWithDot = _rootNamespace + ".";

2
src/Volo.Abp/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs

@ -26,7 +26,7 @@ namespace Volo.Abp.Localization.Json
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new AbpException("Invalid localization file format! " + filePath, ex); throw new AbpException("Invalid localization file format: " + filePath, ex);
} }
} }

2
src/Volo.Abp/Volo/Abp/Localization/LocalizationDictionaryProviderBase.cs

@ -11,7 +11,7 @@ namespace Volo.Abp.Localization
Dictionaries = new Dictionary<string, ILocalizationDictionary>(); Dictionaries = new Dictionary<string, ILocalizationDictionary>();
} }
public virtual void Initialize() public virtual void Initialize(LocalizationResourceInitializationContext context)
{ {
} }

13
src/Volo.Abp/Volo/Abp/Localization/LocalizationResource.cs

@ -17,7 +17,10 @@ namespace Volo.Abp.Localization
public List<Type> BaseResourceTypes { get; } public List<Type> BaseResourceTypes { get; }
public LocalizationResource([NotNull] Type resourceType, [NotNull] string defaultCultureName, [NotNull] ILocalizationDictionaryProvider dictionaryProvider) public LocalizationResource(
[NotNull] Type resourceType,
[NotNull] string defaultCultureName,
[NotNull] ILocalizationDictionaryProvider dictionaryProvider)
{ {
Check.NotNull(resourceType, nameof(resourceType)); Check.NotNull(resourceType, nameof(resourceType));
Check.NotNull(defaultCultureName, nameof(defaultCultureName)); Check.NotNull(defaultCultureName, nameof(defaultCultureName));
@ -33,13 +36,15 @@ namespace Volo.Abp.Localization
AddBaseResourceTypes(); AddBaseResourceTypes();
} }
public virtual void Initialize(IServiceProvider serviceProvider) //TODO: Create a LocalizationResourceInitializationContext! public virtual void Initialize(IServiceProvider serviceProvider)
{ {
DictionaryProvider.Initialize(); var context = new LocalizationResourceInitializationContext(serviceProvider);
DictionaryProvider.Initialize(context);
foreach (var extension in Extensions) foreach (var extension in Extensions)
{ {
extension.Initialize(); extension.Initialize(context);
DictionaryProvider.Extend(extension); DictionaryProvider.Extend(extension);
} }
} }

14
src/Volo.Abp/Volo/Abp/Localization/LocalizationResourceInitializationContext.cs

@ -0,0 +1,14 @@
using System;
namespace Volo.Abp.Localization
{
public class LocalizationResourceInitializationContext
{
public IServiceProvider ServiceProvider { get; }
public LocalizationResourceInitializationContext(IServiceProvider serviceProvider)
{
ServiceProvider = serviceProvider;
}
}
}
Loading…
Cancel
Save