@using System.Globalization @using Oqtane.Models @namespace Oqtane.Themes.Controls @inherits ThemeControlBase @inject ILanguageService LanguageService @inject ILocalizationCookieService LocalizationCookieService @inject NavigationManager NavigationManager @if (PageState.Site.Languages.Count() > 1) {
} @code{ private bool _contentLocalization; private string MenuAlignment = string.Empty; [Parameter] public string DropdownAlignment { get; set; } = string.Empty; // Empty or Left or Right [Parameter] public string ButtonClass { get; set; } = "btn-outline-secondary"; protected override async Task OnParametersSetAsync() { MenuAlignment = DropdownAlignment.ToLower() == "right" ? "dropdown-menu-end" : string.Empty; // if AliasName is populated it means the site is using content localization _contentLocalization = PageState.Languages.Any(item => !string.IsNullOrEmpty(item.AliasName)); if (PageState.QueryString.ContainsKey("culture")) { var culture = PageState.QueryString["culture"]; if (PageState.Site.Languages.Any(item => item.Code == culture)) { await LocalizationCookieService.SetLocalizationCookieAsync(culture); } NavigationManager.NavigateTo(NavigationManager.Uri.Replace($"?culture={culture}", "")); } } private async Task SetCultureAsync(string culture) { if (culture != CultureInfo.CurrentUICulture.Name) { var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)); var interop = new Interop(JSRuntime); await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360, true, "Lax"); NavigationManager.NavigateTo(NavigationManager.Uri, true); } } }