From 45018d04b197cdc822d2c9ef88180cea1b38d542 Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 18 Jun 2026 12:43:56 +0200 Subject: [PATCH] Refactor culture initialization logic Moved culture initialization from App.razor to Program.cs to ensure culture settings are applied before the app starts. Removed CultureService injection and OnInitializedAsync method from App.razor. Updated LanguageSelector.razor to change language without page reload, enhancing user experience. Added System.Globalization to Program.cs for culture support. --- EnvelopeGenerator.ReceiverUI/App.razor | 11 ----------- EnvelopeGenerator.ReceiverUI/Program.cs | 8 ++++++++ .../Shared/LanguageSelector.razor | 9 ++++++++- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/EnvelopeGenerator.ReceiverUI/App.razor b/EnvelopeGenerator.ReceiverUI/App.razor index 6176d21c..3a56f120 100644 --- a/EnvelopeGenerator.ReceiverUI/App.razor +++ b/EnvelopeGenerator.ReceiverUI/App.razor @@ -1,6 +1,4 @@ @using System.Globalization -@using EnvelopeGenerator.ReceiverUI.Services -@inject CultureService CultureService @@ -12,12 +10,3 @@ - -@code { - protected override async Task OnInitializedAsync() - { - var culture = await CultureService.InitializeCultureAsync(); - CultureInfo.DefaultThreadCurrentCulture = culture; - CultureInfo.DefaultThreadCurrentUICulture = culture; - } -} diff --git a/EnvelopeGenerator.ReceiverUI/Program.cs b/EnvelopeGenerator.ReceiverUI/Program.cs index 6e725a86..0ef22b94 100644 --- a/EnvelopeGenerator.ReceiverUI/Program.cs +++ b/EnvelopeGenerator.ReceiverUI/Program.cs @@ -9,6 +9,7 @@ using DevExpress.Blazor.Reporting; using DevExpress.XtraReports.Web.Extensions; using EnvelopeGenerator.Application.Resources; using Microsoft.Extensions.Localization; +using System.Globalization; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); @@ -48,5 +49,12 @@ builder.Services.AddScoped(); ReportStorageWebExtension.RegisterExtensionGlobal(new InMemoryReportStorageWebExtension()); var host = builder.Build(); + +// Initialize culture BEFORE running the app +var cultureService = host.Services.GetRequiredService(); +var culture = await cultureService.InitializeCultureAsync(); +CultureInfo.DefaultThreadCurrentCulture = culture; +CultureInfo.DefaultThreadCurrentUICulture = culture; + await FontLoader.LoadFonts(host.Services.GetRequiredService(), new List { "opensans.ttf" }); await host.RunAsync(); diff --git a/EnvelopeGenerator.ReceiverUI/Shared/LanguageSelector.razor b/EnvelopeGenerator.ReceiverUI/Shared/LanguageSelector.razor index 4896bfe7..e426e22a 100644 --- a/EnvelopeGenerator.ReceiverUI/Shared/LanguageSelector.razor +++ b/EnvelopeGenerator.ReceiverUI/Shared/LanguageSelector.razor @@ -43,7 +43,14 @@ if (CultureInfo.CurrentCulture.Name != culture) { await CultureService.SetCultureAsync(culture); - Navigation.NavigateTo(Navigation.Uri, forceLoad: true); + + // Set culture without page reload + var cultureInfo = new CultureInfo(culture); + CultureInfo.DefaultThreadCurrentCulture = cultureInfo; + CultureInfo.DefaultThreadCurrentUICulture = cultureInfo; + + // Navigate without reload to trigger re-render + Navigation.NavigateTo(Navigation.Uri, forceLoad: false); } isOpen = false;