diff --git a/EnvelopeGenerator.Domain/Resources/Model.cs b/EnvelopeGenerator.Domain/Resources/Model.cs new file mode 100644 index 00000000..d47af8ad --- /dev/null +++ b/EnvelopeGenerator.Domain/Resources/Model.cs @@ -0,0 +1,7 @@ +namespace EnvelopeGenerator.Domain.Resources +{ + // Marker type for IStringLocalizer lookup of Resources/Model.resx. + public class Model + { + } +} diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor index 0f968fdd..cc5c2817 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor @@ -8,6 +8,7 @@ @using EnvelopeGenerator.Server.Client.Services @using EnvelopeGenerator.Application.Common.Dto @using EnvelopeGenerator.Application.Common.Dto.History +@using EnvelopeGenerator.Domain.Resources @using EnvelopeGenerator.Server.Services @using Microsoft.Extensions.Localization @inject EnvelopeGenerator.Server.Client.Services.EnvelopeService EnvelopeService @@ -21,7 +22,7 @@ @inject NavigationManager Navigation @inject IJSRuntime JSRuntime @inject AppVersionService AppVersion -@inject IStringLocalizer ModelLocalizer +@inject IStringLocalizer ModelLocalizer diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/LocalizationController.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/LocalizationController.cs index 6aa622c4..0fbb72cb 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/LocalizationController.cs +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Controllers/LocalizationController.cs @@ -92,10 +92,10 @@ public class LocalizationController : ControllerBase var cookieValue = Request.Cookies[CookieRequestCultureProvider.DefaultCookieName]; if (string.IsNullOrEmpty(cookieValue)) - return null; + return "de-DE"; var culture = CookieRequestCultureProvider.ParseCookieValue(cookieValue)?.Cultures[0]; - return culture?.Value ?? null; + return culture?.Value ?? "de-DE"; } set { @@ -118,4 +118,4 @@ public class LocalizationController : ControllerBase } } } -} \ No newline at end of file +} diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs index 584049e6..782ad06d 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs @@ -410,16 +410,16 @@ try // Set CORS policy app.UseCors("AllowSpecificOriginsPolicy"); - // Localization - string[] supportedCultureNames = ["de-DE", "en-US"]; - IList list = [.. supportedCultureNames.Select(cn => new CultureInfo(cn))]; - var cultureInfo = list.FirstOrDefault() ?? throw new InvalidOperationException("There is no supported culture."); + // Localization (fixed to German for now; persisted via cookie) + var defaultCulture = new CultureInfo("de-DE"); + IList list = [defaultCulture]; var requestLocalizationOptions = new RequestLocalizationOptions { + DefaultRequestCulture = new RequestCulture(defaultCulture), SupportedCultures = list, - SupportedUICultures = list + SupportedUICultures = list, + RequestCultureProviders = [new CookieRequestCultureProvider()] }; - requestLocalizationOptions.RequestCultureProviders.Add(new QueryStringRequestCultureProvider()); app.UseRequestLocalization(requestLocalizationOptions); app.UseHttpsRedirection();