Files
EnvelopeGenerator/EnvelopeGenerator.Web/Middleware/CultureMiddleware.cs
TekH a982f48ef9 Improve culture cookie handling and localization responses
Refactored GetCulture to return null if cookie is missing or invalid, and added GetCultureOrDefault for fallback. Updated TestLocalizerController and CultureMiddleware to use new methods for more accurate culture detection. Localizer now returns only the localized string value.
2026-02-13 09:46:01 +01:00

38 lines
1.1 KiB
C#

using EnvelopeGenerator.Web.Extensions;
using EnvelopeGenerator.Web.Models;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Options;
using System.Globalization;
namespace EnvelopeGenerator.Web.Middleware;
public class CultureMiddleware
{
private readonly RequestDelegate _next;
private readonly MultiCulture _cultures;
public CultureMiddleware(RequestDelegate next, IOptions<MultiCulture> culturesOpt)
{
_next = next;
_cultures = culturesOpt.Value;
}
public async Task InvokeAsync(HttpContext context)
{
var cookieValue = context.Request.Cookies.GetCulture();
if (!_cultures.Languages.Contains(cookieValue))
{
var requestCulture = context.GetCultureByAcceptLanguage()?.Name;
var culture = _cultures.GetOrDefault(requestCulture);
var cultureInfo = culture.Info ?? new CultureInfo(culture.Language);
context.Response.Cookies.SetCulture(culture.Language);
CultureInfo.CurrentCulture = cultureInfo;
CultureInfo.CurrentUICulture = cultureInfo;
}
await _next(context);
}
}