using Convert_It_Online.Services; using Microsoft.AspNetCore.Routing; using System.Globalization; namespace Convert_It_Online.Routing { public class LocalizedControllerRouteConstraint : IRouteConstraint { private readonly IUrlTranslationService _urlTranslationService; public LocalizedControllerRouteConstraint(IUrlTranslationService urlTranslationService) { _urlTranslationService = urlTranslationService; } public bool Match(HttpContext? httpContext, IRouter? route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) { if (values.TryGetValue("translatedController", out var value) && value is string controllerName) { if (values.TryGetValue("culture", out var cultureValue) && cultureValue is string cultureName) { var culture = new CultureInfo(cultureName); var originalController = _urlTranslationService.GetOriginalController(controllerName, culture); if (originalController != null) { values["controller"] = originalController; return true; } } } return false; } } }