From 02c7040b392de2c10725f9d81fa481877fd9c94a Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 10 Apr 2025 16:37:33 +0200 Subject: [PATCH] Verbesserung von LocalizationController mit XML-Dokumentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Klasse LocalizationController wurde aktualisiert, um XML-Dokumentationskommentare für eine bessere Klarheit und ein besseres Verständnis der Methoden und Eigenschaften einzuschließen. Zusammenfassungen von Konstruktoren und Methoden sowie Parameterbeschreibungen wurden in deutscher Sprache hinzugefügt. Die allgemeine Struktur und Formatierung der Klasse wurde verbessert, um die richtige Definition und Lesbarkeit zu gewährleisten. --- .../Controllers/LocalizationController.cs | 157 +++++++++++------- 1 file changed, 93 insertions(+), 64 deletions(-) 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 static readonly Guid L_KEY = Guid.NewGuid(); - private readonly ILogger _logger; - private readonly IStringLocalizer _mLocalizer; - private readonly IStringLocalizer _localizer; - private readonly IMemoryCache _cache; + private readonly ILogger _logger; + private readonly IStringLocalizer _mLocalizer; + private readonly IStringLocalizer _localizer; + private readonly IMemoryCache _cache; - public LocalizationController( - ILogger logger, - IStringLocalizer localizer, - IMemoryCache memoryCache, - IStringLocalizer _modelLocalizer) - { - _logger = logger; - _localizer = localizer; - _cache = memoryCache; - _mLocalizer = _modelLocalizer; - } + /// + /// 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) + { + _logger = logger; + _localizer = localizer; + _cache = memoryCache; + _mLocalizer = _modelLocalizer; + } - [HttpGet] - public IActionResult GetAll() => Ok(_cache.GetOrCreate(Language ?? string.Empty + L_KEY, _ => _mLocalizer.ToDictionary())); + /// + /// Ruft alle lokalisierten Daten ab. + /// + /// Eine Liste aller lokalisierten Daten. + [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); + /// + /// 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); - [HttpPost("lang")] - public IActionResult SetLanguage([FromQuery] string language) - { - if (string.IsNullOrEmpty(language)) - return BadRequest(); + /// + /// 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(); - } + Language = language; + return Ok(); + } - [HttpDelete("lang")] - public IActionResult DeleteLanguage() - { - Language = null; - 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(); + } - private string? Language + /// + /// Eigenschaft für die Verwaltung der aktuellen Sprache über Cookies. + /// + private string? Language + { + get { - get - { - var cookieValue = Request.Cookies[CookieRequestCultureProvider.DefaultCookieName]; + var cookieValue = Request.Cookies[CookieRequestCultureProvider.DefaultCookieName]; - if (string.IsNullOrEmpty(cookieValue)) - return null; + if (string.IsNullOrEmpty(cookieValue)) + return null; - var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures[0]; - return culture?.Value ?? null; - } - set + var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures[0]; + return culture?.Value ?? null; + } + set + { + if (value is null) + Response.Cookies.Delete(CookieRequestCultureProvider.DefaultCookieName); + else { - 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); } } }