refactor(HomeController): add SetLanguage and GetLanguages endpoints

This commit is contained in:
2025-09-05 14:42:04 +02:00
parent 845d06fc4c
commit ada76d5030
3 changed files with 27 additions and 36 deletions

View File

@@ -1,4 +1,6 @@
using EnvelopeGenerator.Application.Resources;
using EnvelopeGenerator.Web.Extensions;
using EnvelopeGenerator.Web.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
@@ -8,11 +10,17 @@ namespace EnvelopeGenerator.Web.Controllers
[Route("api/[controller]")]
public class LocalizationController : ControllerBase
{
private readonly ILogger<LocalizationController> _logger;
private readonly IStringLocalizer<Resource> _localizer;
public LocalizationController(IStringLocalizer<Resource> localizer)
private readonly Cultures _cultures;
public LocalizationController(IStringLocalizer<Resource> localizer, Cultures cultures, ILogger<LocalizationController> logger)
{
_localizer = localizer;
_cultures = cultures;
_logger = logger;
}
[HttpGet]
@@ -23,5 +31,19 @@ namespace EnvelopeGenerator.Web.Controllers
?? _localizer.GetAllStrings().Where(ls => !ignore.Contains(ls.Name)).ToDictionary(ls => ls.Name, ls => ls.Value); ;
return Ok(pairs);
}
[HttpPost("lang/{culture}")]
public IActionResult SetLanguage([FromRoute] string culture)
{
if (!_cultures.Languages.Contains(culture))
return BadRequest();
Response.Cookies.SetCulture(culture);
return Redirect(Request.Headers["Referer"].ToString());
}
[HttpGet("lang")]
public IActionResult GetLanguages() => Ok(_cultures.Languages);
}
}
}