@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["Default"] @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { @Localizer["Translation"]   }
@if (!context.IsDefault) { } @context.Name @context.Code @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { @((string.IsNullOrEmpty(context.Version)) ? "---" : context.Version) @{ var translation = TranslationAvailable(context.Code, context.Version); } @if (translation != null) { if (string.IsNullOrEmpty(context.Version)) { } else { if (Version.Parse(translation.Version).CompareTo(Version.Parse(context.Version)) > 0) { } } } }
} @if (_package != null) {
} @code { private List _languages; private List _packages; private Package _package; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnParametersSetAsync() { await GetLanguages(); if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { _packages = await PackageService.GetPackagesAsync("translation"); } } private async Task GetLanguages() { _languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId, Constants.ClientId); } private async Task DeleteLanguage(Language language) { try { await LanguageService.DeleteLanguageAsync(language.LanguageId); await logger.LogInformation("Language Deleted {Language}", language); await GetLanguages(); StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Deleting Language {Language} {Error}", language, ex.Message); AddModuleMessage(Localizer["Error.Language.Delete"], MessageType.Error); } } private Package TranslationAvailable(string code, string version) { return _packages?.FirstOrDefault(item => item.PackageId == (Constants.PackageId + "." + code)); } private async Task GetPackage(string code, string version) { try { _package = await PackageService.GetPackageAsync(Constants.PackageId + "." + code, version, false); if (_package != null) { StateHasChanged(); } else { await logger.LogError("Error Getting Package {PackageId} {Version}", Constants.PackageId + "." + code, Constants.Version); AddModuleMessage(Localizer["Error.Translation.Download"], MessageType.Error); } } catch (Exception ex) { await logger.LogError(ex, "Error Getting Package {PackageId} {Version}", Constants.PackageId + "." + code, Constants.Version); AddModuleMessage(Localizer["Error.Translation.Download"], MessageType.Error); } } private async Task DownloadPackage() { try { await PackageService.DownloadPackageAsync(_package.PackageId, _package.Version); await logger.LogInformation("Language Package {Name} {Version} Downloaded Successfully", _package.PackageId, _package.Version); AddModuleMessage(string.Format(Localizer["Success.Language.Download"], NavigateUrl("admin/system")), MessageType.Success); _package = null; StateHasChanged(); } catch (Exception ex) { await logger.LogError(ex, "Error Downloading Translation {Name} {Version}", _package.PackageId, _package.Version); AddModuleMessage(Localizer["Error.Language.Download"], MessageType.Error); } } private void HideModal() { _package = null; StateHasChanged(); } }