refactor(HomeController): add SetLanguage and GetLanguages endpoints
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user