Files
EnvelopeGenerator/EnvelopeGenerator.Web/Controllers/LocalizationController.cs
TekH 489b2d0917 Rename Cultures class to MultiCulture throughout codebase
Refactored all references from Cultures to MultiCulture in controllers and base classes. Updated the class definition in MultiCulture.cs to improve clarity and consistency in culture-related functionality. No functional changes were made.
2026-02-12 17:15:14 +01:00

49 lines
1.6 KiB
C#

using EnvelopeGenerator.Application.Resources;
using EnvelopeGenerator.Web.Extensions;
using EnvelopeGenerator.Web.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
namespace EnvelopeGenerator.Web.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class LocalizationController : ControllerBase
{
private readonly ILogger<LocalizationController> _logger;
private readonly IStringLocalizer<Resource> _localizer;
private readonly MultiCulture _cultures;
public LocalizationController(IStringLocalizer<Resource> localizer, MultiCulture cultures, ILogger<LocalizationController> logger)
{
_localizer = localizer;
_cultures = cultures;
_logger = logger;
}
[HttpGet]
public IActionResult GetLocalized([FromQuery] string[]? name = null, [FromQuery] string[]? ignore = null)
{
ignore ??= Array.Empty<string>();
var pairs = name?.ToDictionary(n => n, n => _localizer[n].Value)
?? _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);
}
}