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

@SharedLocalizer["Loading"]

} else {
  @SharedLocalizer["Name"] @Localizer["Code"] @Localizer["Translation"] @Localizer["Default"]  
@context.Name @context.Code @context.Version @if (UpgradeAvailable(context.Code)) { }
} @code { private List _languages; private List _packages; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnParametersSetAsync() { _languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); var cultures = await LocalizationService.GetCulturesAsync(); var culture = cultures.First(c => c.Name.Equals(Constants.DefaultCulture)); if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { _packages = await PackageService.GetPackagesAsync("translation"); } } private async Task DeleteLanguage(Language language) { try { await LanguageService.DeleteLanguageAsync(language.LanguageId); await logger.LogInformation("Language Deleted {Language}", language); StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Deleting Language {Language} {Error}", language, ex.Message); AddModuleMessage(Localizer["Error.Language.Delete"], MessageType.Error); } } private bool UpgradeAvailable(string code) { var upgradeavailable = false; if (_packages != null) { var package = _packages.Where(item => item.PackageId == (Constants.ClientAssemblyName + "." + code)).FirstOrDefault(); if (package != null) { upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(Constants.Version)) == 0); } } return upgradeavailable; } private async Task DownloadLanguage(string code) { try { if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { await PackageService.DownloadPackageAsync(Constants.PackageId + ".Client." + code, Constants.Version, Constants.PackagesFolder); await logger.LogInformation("Translation Downloaded {Code} {Version}", code, Constants.Version); await PackageService.InstallPackagesAsync(); AddModuleMessage(string.Format(Localizer["Success.Language.Install"], NavigateUrl("admin/system")), MessageType.Success); } } catch (Exception ex) { await logger.LogError(ex, "Error Downloading Translation {Code} {Version} {Error}", code, Constants.Version, ex.Message); AddModuleMessage(Localizer["Error.Language.Download"], MessageType.Error); } } }