diff --git a/EnvelopeGenerator.Web/Controllers/Test/TestLocalizerController.cs b/EnvelopeGenerator.Web/Controllers/Test/TestLocalizerController.cs index dac5d26d..b6c09b14 100644 --- a/EnvelopeGenerator.Web/Controllers/Test/TestLocalizerController.cs +++ b/EnvelopeGenerator.Web/Controllers/Test/TestLocalizerController.cs @@ -1,9 +1,12 @@ using AngleSharp.Common; using DigitalData.Core.API; using EnvelopeGenerator.Application.Resources; +using EnvelopeGenerator.Web.Extensions; using EnvelopeGenerator.Web.Models; +using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Localization; +using System.Globalization; namespace EnvelopeGenerator.Web.Controllers.Test { @@ -28,5 +31,14 @@ namespace EnvelopeGenerator.Web.Controllers.Test [HttpGet("culture")] public IActionResult GetCultures(string? lang = null) => lang is null ? Ok(_cultures) : Ok(_cultures[lang]); + + [HttpGet("culture/accept-language")] + public IActionResult GetCultureByAcceptLanguage() + => HttpContext.GetCultureByAcceptLanguage()?.Name is string culture + ? Ok(culture) + : NotFound(); + + [HttpGet("culture/user")] + public IActionResult GetUserCulture() => Request.Cookies.GetCulture() is string cult ? Ok(cult) : NotFound(); } } diff --git a/EnvelopeGenerator.Web/Extensions/WebExtensions.cs b/EnvelopeGenerator.Web/Extensions/WebExtensions.cs index ed4fa7c3..02439e19 100644 --- a/EnvelopeGenerator.Web/Extensions/WebExtensions.cs +++ b/EnvelopeGenerator.Web/Extensions/WebExtensions.cs @@ -61,7 +61,18 @@ public static class WebExtensions #region Cookie public static string? GetCulture(this IRequestCookieCollection cookies) - => cookies[CookieRequestCultureProvider.DefaultCookieName]; + { + var cookieValue = cookies[CookieRequestCultureProvider.DefaultCookieName]; + + if (!string.IsNullOrEmpty(cookieValue)) + { + var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures.FirstOrDefault().Value; + if (!string.IsNullOrEmpty(culture)) + return culture; + } + + return null; + } public static void SetCulture(this IResponseCookies cookies, string culture) {