diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/LocalizationController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/LocalizationController.cs
index 2636d67c..244bbc47 100644
--- a/EnvelopeGenerator.GeneratorAPI/Controllers/LocalizationController.cs
+++ b/EnvelopeGenerator.GeneratorAPI/Controllers/LocalizationController.cs
@@ -6,85 +6,114 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Localization;
-namespace EnvelopeGenerator.GeneratorAPI.Controllers
+namespace EnvelopeGenerator.GeneratorAPI.Controllers;
+
+///
+/// Controller für die Verwaltung der Lokalisierung und Spracheinstellungen.
+///
+[Route("api/[controller]")]
+[ApiController]
+public class LocalizationController : ControllerBase
{
- [Route("api/[controller]")]
- [ApiController]
- public class LocalizationController : ControllerBase
+ private static readonly Guid L_KEY = Guid.NewGuid();
+
+ private readonly ILogger _logger;
+ private readonly IStringLocalizer _mLocalizer;
+ private readonly IStringLocalizer _localizer;
+ private readonly IMemoryCache _cache;
+
+ ///
+ /// Konstruktor für den .
+ ///
+ /// Logger für die Protokollierung.
+ /// Lokalisierungsdienst für Ressourcen.
+ /// Speicher-Cache für die Zwischenspeicherung von Daten.
+ /// Lokalisierungsdienst für Modelle.
+ public LocalizationController(
+ ILogger logger,
+ IStringLocalizer localizer,
+ IMemoryCache memoryCache,
+ IStringLocalizer _modelLocalizer)
{
- private static readonly Guid L_KEY = Guid.NewGuid();
+ _logger = logger;
+ _localizer = localizer;
+ _cache = memoryCache;
+ _mLocalizer = _modelLocalizer;
+ }
- private readonly ILogger _logger;
- private readonly IStringLocalizer _mLocalizer;
- private readonly IStringLocalizer _localizer;
- private readonly IMemoryCache _cache;
+ ///
+ /// Ruft alle lokalisierten Daten ab.
+ ///
+ /// Eine Liste aller lokalisierten Daten.
+ [HttpGet]
+ public IActionResult GetAll() => Ok(_cache.GetOrCreate(Language ?? string.Empty + L_KEY, _ => _mLocalizer.ToDictionary()));
- public LocalizationController(
- ILogger logger,
- IStringLocalizer localizer,
- IMemoryCache memoryCache,
- IStringLocalizer _modelLocalizer)
+ ///
+ /// Ruft die aktuelle Sprache ab.
+ ///
+ /// Die aktuelle Sprache oder ein NotFound-Ergebnis, wenn keine Sprache gesetzt ist.
+ [HttpGet("lang")]
+ public IActionResult GetLanguage() => Language is null ? NotFound() : Ok(Language);
+
+ ///
+ /// Setzt die Sprache.
+ ///
+ /// Die zu setzende Sprache.
+ /// Ein Ok-Ergebnis, wenn die Sprache erfolgreich gesetzt wurde, oder ein BadRequest-Ergebnis, wenn die Eingabe ungültig ist.
+ [HttpPost("lang")]
+ public IActionResult SetLanguage([FromQuery] string language)
+ {
+ if (string.IsNullOrEmpty(language))
+ return BadRequest();
+
+ Language = language;
+ return Ok();
+ }
+
+ ///
+ /// Löscht die aktuelle Sprache.
+ ///
+ /// Ein Ok-Ergebnis, wenn die Sprache erfolgreich gelöscht wurde.
+ [HttpDelete("lang")]
+ public IActionResult DeleteLanguage()
+ {
+ Language = null;
+ return Ok();
+ }
+
+ ///
+ /// Eigenschaft für die Verwaltung der aktuellen Sprache über Cookies.
+ ///
+ private string? Language
+ {
+ get
{
- _logger = logger;
- _localizer = localizer;
- _cache = memoryCache;
- _mLocalizer = _modelLocalizer;
+ var cookieValue = Request.Cookies[CookieRequestCultureProvider.DefaultCookieName];
+
+ if (string.IsNullOrEmpty(cookieValue))
+ return null;
+
+ var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures[0];
+ return culture?.Value ?? null;
}
-
- [HttpGet]
- public IActionResult GetAll() => Ok(_cache.GetOrCreate(Language ?? string.Empty + L_KEY, _ => _mLocalizer.ToDictionary()));
-
- [HttpGet("lang")]
- public IActionResult GetLanguage() => Language is null ? NotFound() : Ok(Language);
-
- [HttpPost("lang")]
- public IActionResult SetLanguage([FromQuery] string language)
+ set
{
- if (string.IsNullOrEmpty(language))
- return BadRequest();
-
- Language = language;
- return Ok();
- }
-
- [HttpDelete("lang")]
- public IActionResult DeleteLanguage()
- {
- Language = null;
- return Ok();
- }
-
- private string? Language
- {
- get
+ if (value is null)
+ Response.Cookies.Delete(CookieRequestCultureProvider.DefaultCookieName);
+ else
{
- var cookieValue = Request.Cookies[CookieRequestCultureProvider.DefaultCookieName];
-
- if (string.IsNullOrEmpty(cookieValue))
- return null;
-
- var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures[0];
- return culture?.Value ?? null;
- }
- set
- {
- if (value is null)
- Response.Cookies.Delete(CookieRequestCultureProvider.DefaultCookieName);
- else
+ var cookieOptions = new CookieOptions()
{
- var cookieOptions = new CookieOptions()
- {
- Expires = DateTimeOffset.UtcNow.AddYears(1),
- Secure = false,
- SameSite = SameSiteMode.Strict,
- HttpOnly = true
- };
+ Expires = DateTimeOffset.UtcNow.AddYears(1),
+ Secure = false,
+ SameSite = SameSiteMode.Strict,
+ HttpOnly = true
+ };
- Response.Cookies.Append(
- CookieRequestCultureProvider.DefaultCookieName,
- CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(value)),
- cookieOptions);
- }
+ Response.Cookies.Append(
+ CookieRequestCultureProvider.DefaultCookieName,
+ CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(value)),
+ cookieOptions);
}
}
}