Files
EnvelopeGenerator/EnvelopeGenerator.Web/Controllers/Test/TestLocalizerController.cs
TekH ab57dd4cee Add endpoints for culture detection and improve cookie parsing
Added two endpoints to TestLocalizerController for retrieving culture from Accept-Language and user cookies. Enhanced GetCulture extension to parse and return the actual culture string from cookies. Updated usings for new extension methods.
2026-02-12 16:11:40 +01:00

45 lines
1.6 KiB
C#

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
{
[ApiController]
[Route("api/test/[controller]")]
public class TestLocalizerController : ControllerBase
{
private readonly IStringLocalizer _localizer;
private readonly Cultures _cultures;
public TestLocalizerController(IStringLocalizer<Resource> localizer, Cultures cultures)
{
_localizer = localizer;
_cultures = cultures;
}
[HttpGet]
public IActionResult Localize([FromQuery] string key = "de_DE") => Ok(_localizer[key]);
[HttpGet("fi-class")]
public IActionResult GetFIClass(string? lang = null) => lang is null ? Ok(_cultures.FIClasses) : Ok(_cultures[lang]?.FIClass);
[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();
}
}