using Microsoft.AspNetCore.Localization; using PrivaPub.StaticServices; using System.Globalization; namespace PrivaPub.Services { public class RequestLocalizationOptionsService { RequestLocalizationOptions RequestLocalizationOptions { get; set; } readonly AppConfigurationService AppConfigurationService; public RequestLocalizationOptionsService(AppConfigurationService appConfigurationService) { AppConfigurationService = appConfigurationService; } public async Task Get() { if (RequestLocalizationOptions != default) return RequestLocalizationOptions; if (AppConfigurationService.AppConfiguration == default) await AppConfigurationService.Init(); RequestLocalizationOptions = new RequestLocalizationOptions(); var cultures = AppConfigurationService .AppConfiguration .SupportedLanguages .Select(sl => new CultureInfo(sl)) .ToArray(); RequestLocalizationOptions.DefaultRequestCulture = new(cultures.First(), cultures.First()); RequestLocalizationOptions.SupportedCultures = cultures; RequestLocalizationOptions.SupportedUICultures = cultures; RequestLocalizationOptions.RequestCultureProviders = new IRequestCultureProvider[] { new AcceptLanguageHeaderRequestCultureProvider { Options = RequestLocalizationOptions } }; RequestLocalizationOptions.ApplyCurrentCultureToResponseHeaders = true; return RequestLocalizationOptions; } } }