diff --git a/zero/Localization/ConfigurationLocalizer.cs b/zero/Localization/ConfigurationLocalizer.cs index 4fa20668..d749fc5e 100644 --- a/zero/Localization/ConfigurationLocalizer.cs +++ b/zero/Localization/ConfigurationLocalizer.cs @@ -1,32 +1,35 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; +using System.Collections.Concurrent; namespace zero.Localization; public class ConfigurationLocalizer : Localizer { - private IConfiguration _configuration; + protected ConcurrentDictionary FileCache { get; set; } = []; public ConfigurationLocalizer(IConfiguration configuration, ICultureResolver cultureResolver, IOptionsMonitor options) : base(cultureResolver) { - _configuration = configuration; + IConfigurationSection section = configuration.GetSection($"Zero:Localization:{LanguageCode}"); + + if (section != null) + { + foreach (IConfigurationSection child in section.GetChildren()) + { + FileCache.TryAdd(child.Key, new Translation() { Value = child.Value }); + } + } } protected override Translation LoadTranslation(string key) { - IConfigurationSection section = _configuration.GetSection($"Zero:Localization:{LanguageCode}:{key}"); - - if (section == null) + if (!FileCache.TryGetValue(key, out Translation translation)) { return null; } - return new() - { - Key = key, - Value = section.Value - }; + return translation; } } \ No newline at end of file diff --git a/zero/Localization/Models/Translation.cs b/zero/Localization/Models/Translation.cs index 0a635d69..3fc3849e 100644 --- a/zero/Localization/Models/Translation.cs +++ b/zero/Localization/Models/Translation.cs @@ -1,6 +1,6 @@ namespace zero.Localization; -public class Translation +public record Translation { /// /// Key of the translation diff --git a/zero/Localization/ZeroLocalizationModule.cs b/zero/Localization/ZeroLocalizationModule.cs index d6ac58aa..45d3e938 100644 --- a/zero/Localization/ZeroLocalizationModule.cs +++ b/zero/Localization/ZeroLocalizationModule.cs @@ -1,12 +1,8 @@ -using FluentValidation; -using Microsoft.AspNetCore.Mvc.DataAnnotations; -using Microsoft.AspNetCore.Mvc.Localization; +using Microsoft.AspNetCore.Mvc.Localization; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Localization; -using Microsoft.Extensions.Options; namespace zero.Localization;