diff --git a/Oqtane.Client/Oqtane.Client.csproj b/Oqtane.Client/Oqtane.Client.csproj
index 3ce83439..da11a472 100644
--- a/Oqtane.Client/Oqtane.Client.csproj
+++ b/Oqtane.Client/Oqtane.Client.csproj
@@ -17,6 +17,7 @@
https://github.com/oqtane/oqtane.framework/releases/tag/v2.0.0
Oqtane
true
+ true
diff --git a/Oqtane.Client/Program.cs b/Oqtane.Client/Program.cs
index 7fdfa6bd..6689db41 100644
--- a/Oqtane.Client/Program.cs
+++ b/Oqtane.Client/Program.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
@@ -10,6 +11,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.JSInterop;
using Oqtane.Modules;
using Oqtane.Providers;
using Oqtane.Services;
@@ -89,6 +91,14 @@ namespace Oqtane.Client
}
var host = builder.Build();
+ var jsRuntime = host.Services.GetRequiredService();
+ var culture = await jsRuntime.InvokeAsync("oqtaneCulture.get");
+ if (culture != null)
+ {
+ var cultureInfo = CultureInfo.GetCultureInfo(culture);
+ CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
+ CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
+ }
ServiceActivator.Configure(host.Services);
diff --git a/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor b/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor
index 3b630a7a..8ce1c52d 100644
--- a/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor
+++ b/Oqtane.Client/Themes/Controls/LanguageSwitcher.razor
@@ -2,6 +2,7 @@
@inherits ThemeControlBase
@using System.Globalization
@inject ILocalizationService LocalizationService
+@inject NavigationManager NavigationManager
@if (_supportedCultures != null)
{
@@ -12,7 +13,7 @@
@@ -24,7 +25,14 @@
protected override async Task OnParametersSetAsync()
{
- _selectedCulture = await JSRuntime.InvokeAsync("oqtaneCulture.get");
+ _selectedCulture = _selectedCulture = await JSRuntime.InvokeAsync("oqtaneCulture.get");
_supportedCultures = await LocalizationService.GetSupportedCultures();
}
+
+ private async Task SetCultureAsync(string culture)
+ {
+ await JSRuntime.InvokeVoidAsync("oqtaneCulture.set", culture);
+
+ NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true);
+ }
}