From 75556070d6138e65e3982de1a5a36f8ef0954a96 Mon Sep 17 00:00:00 2001 From: hishamco Date: Wed, 2 Dec 2020 02:04:34 +0300 Subject: [PATCH] Ability to change culture --- Oqtane.Client/Oqtane.Client.csproj | 1 + Oqtane.Client/Program.cs | 10 ++++++++++ Oqtane.Client/Themes/Controls/LanguageSwitcher.razor | 12 ++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) 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); + } }