using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Volo.Abp.Localization; namespace Kurs.Languages.Localization; public class DatabaseLocalizationResourceContributor : ILocalizationResourceContributor { private LocalizationResourceBase _resource; private IDatabaseResourceLocalizer _databaseResourceLocalizer; private ILanguageProvider _languageProvider; public bool IsDynamic => false; public void Initialize(LocalizationResourceInitializationContext context) { _resource = context.Resource; _databaseResourceLocalizer = context.ServiceProvider.GetRequiredService(); _languageProvider = context.ServiceProvider.GetRequiredService(); } public LocalizedString GetOrNull(string cultureName, string name) { return _databaseResourceLocalizer.GetOrNull(_resource, cultureName, name); } public async Task FillAsync(string cultureName, Dictionary dictionary) { await _databaseResourceLocalizer.FillAsync(_resource, cultureName, dictionary); } public void Fill(string cultureName, Dictionary dictionary) { _databaseResourceLocalizer.Fill(_resource, cultureName, dictionary); } public async Task> GetSupportedCulturesAsync() { var langs = await _languageProvider.GetLanguagesAsync(); return langs.Select(a => a.CultureName).ToList(); } }