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.
45 lines
1.6 KiB
C#
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 MultiCulture _cultures;
|
|
|
|
public TestLocalizerController(IStringLocalizer<Resource> localizer, MultiCulture cultures)
|
|
{
|
|
_localizer = localizer;
|
|
_cultures = cultures;
|
|
}
|
|
|
|
[HttpGet("{key}")]
|
|
public IActionResult Localize([FromRoute] string key) => Ok(_localizer[key].Value);
|
|
|
|
[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.GetCultureOrDefault() is string cult ? Ok(cult) : NotFound();
|
|
}
|
|
}
|