Abp模块
abp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

47 lines
1.7 KiB

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using System;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Localization;
namespace Sanhe.Abp.Localization.Dynamic;
public class DynamicLocalizationInitializeService : BackgroundService
{
protected ILocalizationStore Store { get; }
protected AbpLocalizationOptions LocalizationOptions { get; }
protected AbpLocalizationDynamicOptions DynamicOptions { get; }
public DynamicLocalizationInitializeService(
ILocalizationStore store,
IOptions<AbpLocalizationOptions> localizationOptions,
IOptions<AbpLocalizationDynamicOptions> dynamicOptions)
{
Store = store;
DynamicOptions = dynamicOptions.Value;
LocalizationOptions = localizationOptions.Value;
}
protected async override Task ExecuteAsync(CancellationToken stoppingToken)
{
try
{
foreach (var resource in LocalizationOptions.Resources)
{
foreach (var contributor in resource.Value.Contributors)
{
if (contributor.GetType().IsAssignableFrom(typeof(DynamicLocalizationResourceContributor)))
{
var resourceLocalizationDict = await Store
.GetLocalizationDictionaryAsync(
resource.Value.ResourceName,
stoppingToken);
DynamicOptions.AddOrUpdate(resource.Value.ResourceName, resourceLocalizationDict);
}
}
}
}
catch (OperationCanceledException) { } // 忽略此异常
}
}