@namespace Oqtane.Modules.Admin.Languages @inherits ModuleBase @using System.Globalization @inject NavigationManager NavigationManager @inject ILocalizationService LocalizationService @inject ILanguageService LanguageService @inject IPackageService PackageService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @if (_cultures == null) {

@SharedLocalizer["Loading"]

} else {
@SharedLocalizer["Cancel"]
@SharedLocalizer["Cancel"]
} @code { private ElementReference form; private bool validated = false; private string _code = "-"; private string _default = "False"; private List _languages; private IEnumerable _cultures; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnParametersSetAsync() { var languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); _languages = languages.Select(l => l.Code).ToList(); await LoadCultures(); } private async Task LoadCultures() { _cultures = await LocalizationService.GetCulturesAsync(false); _cultures = _cultures.Where(c => !c.Name.Equals(Constants.DefaultCulture) && !_languages.Contains(c.Name)); _code = "-"; } private async Task SaveLanguage() { validated = true; var interop = new Interop(JSRuntime); if (await interop.FormValid(form) && _code != "-") { var language = new Language { SiteId = PageState.Page.SiteId, Code = _code, IsDefault = (_default == null ? false : Boolean.Parse(_default)) }; 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.Language.Add"], MessageType.Error); } } else { AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } 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, true, "Lax"); } } private void OnUpload() { AddModuleMessage(string.Format(Localizer["Success.Language.Download"], NavigateUrl("admin/system")), MessageType.Success); } }