Refactoring

This commit is contained in:
hishamco
2020-09-30 00:07:00 +03:00
parent f83c1b1741
commit 2e2d46996a
10 changed files with 130 additions and 75 deletions

View File

@ -4,44 +4,13 @@ using System.Linq;
using System.Reflection;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Oqtane.Infrastructure;
using Oqtane.Infrastructure.Localization;
namespace Oqtane.Extensions
{
public static class ApplicationBuilderExtensions
{
private static readonly string DefaultCultureKey = "Localization:DefaultCulture";
private static readonly string SupportedCulturesKey = "Localization:SupportedCultures";
public static IApplicationBuilder UseOqtaneLocalization(this IApplicationBuilder app)
{
var configuration = app.ApplicationServices.GetService<IConfiguration>();
var defaultCulture = configuration.GetSection(DefaultCultureKey).Value;
var supportedCultures = configuration.GetSection(SupportedCulturesKey).Get<string[]>();
if (defaultCulture == CultureInfo.InstalledUICulture.Name)
{
LocalizationSettings.DefaultCulture = defaultCulture;
}
if (supportedCultures.Length > 0)
{
LocalizationSettings.SupportedCultures.AddRange(supportedCultures);
}
CultureInfo.CurrentUICulture = new CultureInfo(defaultCulture);
app.UseRequestLocalization(options => {
options.SetDefaultCulture(defaultCulture)
.AddSupportedUICultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
});
return app;
}
public static IApplicationBuilder ConfigureOqtaneAssemblies(this IApplicationBuilder app, IWebHostEnvironment env)
{
var startUps = AppDomain.CurrentDomain
@ -55,5 +24,22 @@ namespace Oqtane.Extensions
return app;
}
public static IApplicationBuilder UseOqtaneLocalization(this IApplicationBuilder app)
{
var localizationManager = app.ApplicationServices.GetService<ILocalizationManager>();
var defaultCulture = localizationManager.GetDefaultCulture();
var supportedCultures = localizationManager.GetSupportedCultures();
CultureInfo.CurrentUICulture = new CultureInfo(defaultCulture);
app.UseRequestLocalization(options => {
options.SetDefaultCulture(defaultCulture)
.AddSupportedUICultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
});
return app;
}
}
}

View File

@ -5,7 +5,6 @@ using System.Reflection;
using System.Runtime.Loader;
using Microsoft.Extensions.Hosting;
using Oqtane.Infrastructure;
using Oqtane.Infrastructure.Localization;
using Oqtane.Modules;
using Oqtane.Services;
using Oqtane.Shared;
@ -134,35 +133,39 @@ namespace Microsoft.Extensions.DependencyInjection
AssemblyLoadContext.Default.Resolving += ResolveDependencies;
foreach (var culture in LocalizationSettings.SupportedCultures)
using (var serviceScope = ServiceActivator.GetScope())
{
if (culture == Constants.DefaultCulture)
var localizationManager = serviceScope.ServiceProvider.GetService<ILocalizationManager>();
foreach (var culture in localizationManager.GetSupportedCultures())
{
continue;
}
var assembliesFolder = new DirectoryInfo(Path.Combine(assemblyPath, culture));
foreach (var assemblyFile in assembliesFolder.EnumerateFiles(Constants.StalliteAssemblyExtension))
{
AssemblyName assemblyName;
try
if (culture == Constants.DefaultCulture)
{
assemblyName = AssemblyName.GetAssemblyName(assemblyFile.FullName);
}
catch
{
Console.WriteLine($"Not Satellite Assembly : {assemblyFile.Name}");
continue;
}
try
var assembliesFolder = new DirectoryInfo(Path.Combine(assemblyPath, culture));
foreach (var assemblyFile in assembliesFolder.EnumerateFiles(Constants.StalliteAssemblyExtension))
{
Assembly assembly = AssemblyLoadContext.Default.LoadFromStream(new MemoryStream(File.ReadAllBytes(assemblyFile.FullName)));
Console.WriteLine($"Loaded : {assemblyName}");
}
catch (Exception e)
{
Console.WriteLine($"Failed : {assemblyName}\n{e}");
AssemblyName assemblyName;
try
{
assemblyName = AssemblyName.GetAssemblyName(assemblyFile.FullName);
}
catch
{
Console.WriteLine($"Not Satellite Assembly : {assemblyFile.Name}");
continue;
}
try
{
Assembly assembly = AssemblyLoadContext.Default.LoadFromStream(new MemoryStream(File.ReadAllBytes(assemblyFile.FullName)));
Console.WriteLine($"Loaded : {assemblyName}");
}
catch (Exception e)
{
Console.WriteLine($"Failed : {assemblyName}\n{e}");
}
}
}
}