@namespace Oqtane.Themes.Controls @inherits ThemeControlBase @using System.Globalization @using Microsoft.AspNetCore.Localization @using Oqtane.Models @inject ILanguageService LanguageService @inject NavigationManager NavigationManager @if (_supportedCultures?.Count() > 1) {
} @code{ private IEnumerable _supportedCultures; protected override async Task OnParametersSetAsync() { var languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); var defaultCulture = CultureInfo.GetCultureInfo(Constants.DefaultCulture); languages.Add(new Language { Code = defaultCulture.Name, Name = defaultCulture.DisplayName }); _supportedCultures = languages.Select(l => new Culture { Name = l.Code, DisplayName = l.Name }); } private async Task SetCultureAsync(string culture) { if (culture != CultureInfo.CurrentUICulture.Name) { var interop = new Interop(JSRuntime); var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)); await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360); NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true); } } }