From 049ded6f7ec34e610c8501e6ef3e869ac4224ea9 Mon Sep 17 00:00:00 2001 From: hishamco Date: Thu, 3 Dec 2020 16:14:23 +0300 Subject: [PATCH] Fallback to default culture if its required --- Oqtane.Client/Program.cs | 18 ++++++++++++++---- .../Themes/Controls/LanguageSwitcher.razor | 5 +---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Oqtane.Client/Program.cs b/Oqtane.Client/Program.cs index fcc03099..cc85b9b9 100644 --- a/Oqtane.Client/Program.cs +++ b/Oqtane.Client/Program.cs @@ -95,13 +95,16 @@ namespace Oqtane.Client var jsRuntime = host.Services.GetRequiredService(); var interop = new Interop(jsRuntime); var culture = await interop.GetLocalStorage("OqtaneCulture"); - if (culture != null) + var localizationService = host.Services.GetRequiredService(); + var cultures = await localizationService.GetCulturesAsync(); + + if (culture == null || !cultures.Any(c => c.Name.Equals(culture, StringComparison.OrdinalIgnoreCase))) { - var cultureInfo = CultureInfo.GetCultureInfo(culture); - CultureInfo.DefaultThreadCurrentCulture = cultureInfo; - CultureInfo.DefaultThreadCurrentUICulture = cultureInfo; + culture = cultures.Single(c => c.IsDefault).Name; } + SetCulture(culture); + ServiceActivator.Configure(host.Services); await host.RunAsync(); @@ -155,5 +158,12 @@ namespace Oqtane.Client } } } + + private static void SetCulture(string culture) + { + var cultureInfo = CultureInfo.GetCultureInfo(culture); + CultureInfo.DefaultThreadCurrentCulture = cultureInfo; + CultureInfo.DefaultThreadCurrentUICulture = cultureInfo; + } } } diff --git a/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor b/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor index ab61c2f4..e1d16002 100644 --- a/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor +++ b/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor @@ -14,14 +14,13 @@ } @code{ - private string _selectedCulture; private IEnumerable _supportedCultures; [Parameter] @@ -29,8 +28,6 @@ protected override async Task OnParametersSetAsync() { - var interop = new Interop(JSRuntime); - _selectedCulture = await interop.GetLocalStorage("OqtaneCulture"); _supportedCultures = await LocalizationService.GetCulturesAsync(); }