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

@Localizer["Loading..."]

} else { @if (_supportedCultures?.Count() > 1) {
} else { } @Localizer["Cancel"]
@if (_packages != null && _packages.Count > 0) {
@Localizer["Name"] @Localizer["Version"]
@context.Name @context.Version
@Localizer["Cancel"] } else { }
@Localizer["Cancel"]
} @code { private string _code = string.Empty; private string _isDefault = "False"; private List _packages; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; private IEnumerable _supportedCultures; protected override async Task OnParametersSetAsync() { _supportedCultures = await LocalizationService.GetCulturesAsync(); _supportedCultures = _supportedCultures.Where(c => !c.Name.Equals(Constants.DefaultCulture)); _packages = await PackageService.GetPackagesAsync("language"); } 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 InstallLanguages() { try { await PackageService.InstallPackagesAsync(); AddModuleMessage(Localizer["Language Packages Installed Successfully. You Must Restart Your Application To Apply These Changes.", NavigateUrl("admin/system")], MessageType.Success); } catch (Exception ex) { await logger.LogError(ex, "Error Installing Language Package"); } } private async Task DownloadLanguage(string packageid, string version) { try { await PackageService.DownloadPackageAsync(packageid, version, "Packages"); await logger.LogInformation("Language Paclage {Name} {Version} Downloaded Successfully", packageid, version); AddModuleMessage(Localizer["Language Package Downloaded Successfully. Click Install To Complete Installation."], MessageType.Success); StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Downloading Language Package {Name} {Version}", packageid, version); AddModuleMessage(Localizer["Error Downloading Language Package"], 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); } } }