@namespace Oqtane.Modules.Admin.Languages @inherits ModuleBase @using System.Globalization @using Microsoft.AspNetCore.Localization @inject NavigationManager NavigationManager @inject ILocalizationService LocalizationService @inject ILanguageService LanguageService @inject IStringLocalizer Localizer @if (_supportedCultures == null) {

@Localizer["Loading..."]

} else { @if (_supportedCultures?.Count() > 1) {
} @Localizer["Cancel"] } @code { private string _code = string.Empty; private string _isDefault = "False"; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; private IEnumerable _supportedCultures; protected override async Task OnParametersSetAsync() { _supportedCultures = await LocalizationService.GetCulturesAsync(); if (_supportedCultures.Count() <= 1) { AddModuleMessage(Localizer["The Only Supported Culture That Has Been Defined Is English"], MessageType.Warning); } else { _supportedCultures = _supportedCultures.Where(c => !c.Name.Equals(Constants.DefaultCulture)); } } private async Task SaveLanguage() { var language = new Language { SiteId = PageState.Page.SiteId, Name = CultureInfo.GetCultureInfo(_code).DisplayName, Code = _code, IsDefault = (_isDefault == null ? false : Boolean.Parse(_isDefault)) }; try { language = await LanguageService.AddLanguageAsync(language); if (language.IsDefault) { await SetCultureAsync(language.Code); } await logger.LogInformation("Language Added {Language}", language); NavigationManager.NavigateTo(NavigateUrl()); } catch (Exception ex) { await logger.LogError(ex, "Error Adding Language {Language} {Error}", language, ex.Message); AddModuleMessage(Localizer["Error Adding Language"], MessageType.Error); } } 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); } } }