diff --git a/Oqtane.Client/Program.cs b/Oqtane.Client/Program.cs index 6689db41..43dc617a 100644 --- a/Oqtane.Client/Program.cs +++ b/Oqtane.Client/Program.cs @@ -16,6 +16,7 @@ using Oqtane.Modules; using Oqtane.Providers; using Oqtane.Services; using Oqtane.Shared; +using Oqtane.UI; namespace Oqtane.Client { @@ -92,7 +93,8 @@ namespace Oqtane.Client var host = builder.Build(); var jsRuntime = host.Services.GetRequiredService(); - var culture = await jsRuntime.InvokeAsync("oqtaneCulture.get"); + var interop = new Interop(jsRuntime); + var culture = await interop.getCulture(); if (culture != null) { var cultureInfo = CultureInfo.GetCultureInfo(culture); diff --git a/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor b/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor index 8ce1c52d..ddde387b 100644 --- a/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor +++ b/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor @@ -25,13 +25,15 @@ protected override async Task OnParametersSetAsync() { - _selectedCulture = _selectedCulture = await JSRuntime.InvokeAsync("oqtaneCulture.get"); + var interop = new Interop(JSRuntime); + _selectedCulture = await interop.getCulture(); _supportedCultures = await LocalizationService.GetSupportedCultures(); } private async Task SetCultureAsync(string culture) { - await JSRuntime.InvokeVoidAsync("oqtaneCulture.set", culture); + var interop = new Interop(JSRuntime); + await interop.setCulture(culture); NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true); } diff --git a/Oqtane.Client/UI/Interop.cs b/Oqtane.Client/UI/Interop.cs index 53b8df4f..83a88ad5 100644 --- a/Oqtane.Client/UI/Interop.cs +++ b/Oqtane.Client/UI/Interop.cs @@ -1,4 +1,4 @@ -using Microsoft.JSInterop; +using Microsoft.JSInterop; using Oqtane.Models; using System.Threading.Tasks; @@ -234,5 +234,32 @@ namespace Oqtane.UI } } + public async Task getCulture() + { + try + { + var culture = await _jsRuntime.InvokeAsync("Oqtane.Interop.getCulture"); + + return culture; + } + catch + { + return null; + } + } + + public Task setCulture(string culture) + { + try + { + _jsRuntime.InvokeVoidAsync("Oqtane.Interop.setCulture", culture); + + return Task.CompletedTask; + } + catch + { + return Task.CompletedTask; + } + } } } diff --git a/Oqtane.Server/Pages/_Host.cshtml b/Oqtane.Server/Pages/_Host.cshtml index 92dea6bc..ecf906e4 100644 --- a/Oqtane.Server/Pages/_Host.cshtml +++ b/Oqtane.Server/Pages/_Host.cshtml @@ -1,4 +1,4 @@ -@page "/" +@page "/" @namespace Oqtane.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @using System.Globalization @@ -48,12 +48,6 @@ @if (Configuration.GetSection("Runtime").Value == "WebAssembly") { - } else { diff --git a/Oqtane.Server/wwwroot/js/interop.js b/Oqtane.Server/wwwroot/js/interop.js index 2e4092e4..dc3f0394 100644 --- a/Oqtane.Server/wwwroot/js/interop.js +++ b/Oqtane.Server/wwwroot/js/interop.js @@ -362,5 +362,11 @@ Oqtane.Interop = { setInterval(function () { window.location.href = url; }, wait * 1000); + }, + getCulture: function () { + return window.localStorage['OqtaneCulture']; + }, + setCulture: function (culture) { + window.localStorage['OqtaneCulture'] = culture; } };