From d8cc28bac433140a773d1ae3ed3d15163d879c96 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Thu, 18 Jun 2020 10:13:43 +0800 Subject: [PATCH 01/34] abp update command enhancement(--check-all). Resolve #4225 --- .../Volo/Abp/Cli/Commands/UpdateCommand.cs | 11 ++++- .../ProjectModification/NpmPackagesUpdater.cs | 47 ++++++++++-------- .../VoloNugetPackagesVersionUpdater.cs | 49 +++++++++++++++---- 3 files changed, 74 insertions(+), 33 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs index ca8bfa9bf8..6b8510d6a3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs @@ -63,11 +63,13 @@ namespace Volo.Abp.Cli.Commands solution = Directory.GetFiles(directory, "*.sln", SearchOption.AllDirectories).FirstOrDefault(); } + var checkAll = commandLineArgs.Options.ContainsKey(Options.CheckAll.Long); + if (solution != null) { var solutionName = Path.GetFileName(solution).RemovePostFix(".sln"); - await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, includePreviews); + await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, includePreviews, checkAll: checkAll); Logger.LogInformation($"Volo packages are updated in {solutionName} solution."); return; @@ -79,7 +81,7 @@ namespace Volo.Abp.Cli.Commands { var projectName = Path.GetFileName(project).RemovePostFix(".csproj"); - await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, includePreviews); + await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, includePreviews, checkAll: checkAll); Logger.LogInformation($"Volo packages are updated in {projectName} project."); return; @@ -149,6 +151,11 @@ namespace Volo.Abp.Cli.Commands public const string Npm = "npm"; public const string NuGet = "nuget"; } + + public static class CheckAll + { + public const string Long = "check-all"; + } } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 1a279fafc7..02ae0040bc 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -1,4 +1,5 @@ -using System; +using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; @@ -52,34 +53,38 @@ namespace Volo.Abp.Cli.ProjectModification _npmGlobalPackagesChecker.Check(); - foreach (var file in fileList) + var packagesUpdated = new ConcurrentDictionary(); + async Task UpdateAsync(string file) { - var packagesUpdated = await UpdatePackagesInFile(file, includePreviews, switchToStable); + var updated = await UpdatePackagesInFile(file, includePreviews, switchToStable); + packagesUpdated.TryAdd(file, updated); + }; - if (packagesUpdated) - { - var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar); + Task.WaitAll(fileList.Select(UpdateAsync).ToArray()); + + foreach (var file in packagesUpdated.Where(x => x.Value)) + { + var fileDirectory = Path.GetDirectoryName(file.Key).EnsureEndsWith(Path.DirectorySeparatorChar); - if (IsAngularProject(fileDirectory)) + if (IsAngularProject(fileDirectory)) + { + if (includePreviews) { - if (includePreviews) - { - await CreateNpmrcFileAsync(Path.GetDirectoryName(file)); - } - else if (switchToStable) - { - await DeleteNpmrcFileAsync(Path.GetDirectoryName(file)); - } + await CreateNpmrcFileAsync(Path.GetDirectoryName(file.Key)); } - - RunYarn(fileDirectory); - - if (!IsAngularProject(fileDirectory)) + else if (switchToStable) { - Thread.Sleep(500); - RunGulp(fileDirectory); + await DeleteNpmrcFileAsync(Path.GetDirectoryName(file.Key)); } } + + RunYarn(fileDirectory); + + if (!IsAngularProject(fileDirectory)) + { + Thread.Sleep(500); + RunGulp(fileDirectory); + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs index fb2a386ef9..9661dceddd 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs @@ -1,4 +1,5 @@ -using System; +using System; +using System.Collections.Generic; using NuGet.Versioning; using System.IO; using System.Linq; @@ -24,19 +25,47 @@ namespace Volo.Abp.Cli.ProjectModification Logger = NullLogger.Instance; } - public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews = false, bool switchToStable = false) + public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews = false, bool switchToStable = false, bool checkAll = false) { var projectPaths = ProjectFinder.GetProjectFiles(solutionPath); - foreach (var filePath in projectPaths) + if (checkAll) { - await UpdateInternalAsync(filePath, includePreviews, switchToStable); + Task.WaitAll(projectPaths.Select(projectPath => UpdateInternalAsync(projectPath, includePreviews, switchToStable)).ToArray()); + } + else + { + var latestVersionFromNuget = await _nuGetService.GetLatestVersionOrNullAsync("Volo.Abp.Core"); + var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core"); + + async Task UpdateAsync(string filePath) + { + var fileContent = File.ReadAllText(filePath); + var updatedContent = await UpdateVoloPackagesAsync(fileContent, includePreviews, switchToStable, latestVersionFromNuget, latestVersionFromMyGet); + + File.WriteAllText(filePath, updatedContent); + } + + Task.WaitAll(projectPaths.Select(UpdateAsync).ToArray()); } } - public async Task UpdateProjectAsync(string projectPath, bool includePreviews = false, bool switchToStable = false) + public async Task UpdateProjectAsync(string projectPath, bool includePreviews = false, bool switchToStable = false, bool checkAll = false) { - await UpdateInternalAsync(projectPath, includePreviews, switchToStable); + if (checkAll) + { + await UpdateInternalAsync(projectPath, includePreviews, switchToStable); + } + else + { + var latestVersionFromNuget = await _nuGetService.GetLatestVersionOrNullAsync("Volo.Abp.Core"); + var latestVersionFromMyGet = await GetLatestVersionFromMyGet("Volo.Abp.Core"); + + var fileContent = File.ReadAllText(projectPath); + var updatedContent = await UpdateVoloPackagesAsync(fileContent, includePreviews, switchToStable, latestVersionFromNuget, latestVersionFromMyGet); + + File.WriteAllText(projectPath, updatedContent); + } } protected virtual async Task UpdateInternalAsync(string projectPath, bool includePreviews = false, bool switchToStable = false) @@ -47,7 +76,7 @@ namespace Volo.Abp.Cli.ProjectModification File.WriteAllText(projectPath, updatedContent); } - private async Task UpdateVoloPackagesAsync(string content, bool includePreviews = false, bool switchToStable = false) + private async Task UpdateVoloPackagesAsync(string content, bool includePreviews = false, bool switchToStable = false, SemanticVersion latestNugetVersion = null, string latestMyGetVersion = null) { string packageId = null; @@ -81,7 +110,7 @@ namespace Volo.Abp.Cli.ProjectModification if (includePreviews || (currentVersion.Contains("-preview") && !switchToStable)) { - var latestVersion = await GetLatestVersionFromMyGet(packageId); + var latestVersion = latestMyGetVersion ?? await GetLatestVersionFromMyGet(packageId); if (currentVersion != latestVersion) { @@ -95,7 +124,7 @@ namespace Volo.Abp.Cli.ProjectModification } else { - var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId); + var latestVersion = latestNugetVersion ?? await _nuGetService.GetLatestVersionOrNullAsync(packageId); if (latestVersion != null && (currentVersion.Contains("-preview") || currentSemanticVersion < latestVersion)) { @@ -109,7 +138,7 @@ namespace Volo.Abp.Cli.ProjectModification } } - return await Task.FromResult(doc.OuterXml); + return doc.OuterXml; } } catch (Exception ex) From 4401221fba64de9182e1a6354adca2e9d03cb872 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Thu, 18 Jun 2020 10:22:48 +0800 Subject: [PATCH 02/34] Update CLI document. --- docs/en/CLI.md | 1 + .../src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/en/CLI.md b/docs/en/CLI.md index f68ac2ce2e..160bb549c3 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -115,6 +115,7 @@ abp update [options] * `--nuget`: Only updates NuGet packages. * `--solution-path` or `-sp`: Specify the solution path. Use the current directory by default * `--solution-name` or `-sn`: Specify the solution name. Search `*.sln` files in the directory by default. +* `--check-all`: Check the new version of each package separately. Default is `false`. ### add-package diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs index 6b8510d6a3..5fe255828e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs @@ -109,6 +109,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine("--nuget (Only updates Nuget packages)"); sb.AppendLine("-sp|--solution-path (Specify the solution path)"); sb.AppendLine("-sn|--solution-name (Specify the solution name)"); + sb.AppendLine("--check-all (Check the new version of each package separately)"); sb.AppendLine(""); sb.AppendLine("Some examples:"); sb.AppendLine(""); From f62332e2a6a463e20f7b15b7b07dc450701a934c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ak=C4=B1n=20Sabri=20=C3=87am?= Date: Thu, 18 Jun 2020 21:35:07 +0300 Subject: [PATCH 03/34] added missing turkish keys and values --- .../Admin/Localization/Resources/tr.json | 156 ++++++++++++++++++ .../Base/Localization/Resources/tr.json | 6 +- .../Commercial/Localization/Resources/tr.json | 15 +- .../Www/Localization/Resources/tr.json | 156 ++++++++++++++++++ .../Resources/AbpLocalization/tr.json | 7 + .../Volo/Abp/Emailing/Localization/tr.json | 6 + .../TestResources/Base/CountryNames/tr.json | 5 +- .../TestResources/Base/Validation/tr.json | 7 + .../Localization/TestResources/Source/tr.json | 6 +- .../TestResources/SourceExt/tr.json | 6 + .../Account/Localization/Resources/tr.json | 10 +- .../Blogging/Localization/Resources/tr.json | 7 +- .../Resources/VoloDocs/Web/tr.json | 3 +- .../Docs/ApplicationContracts/tr.json | 16 +- .../Volo/Docs/Localization/Domain/tr.json | 17 +- .../Localization/Resources/tr.json | 12 +- .../Localization/ApplicationContracts/tr.json | 10 ++ .../Resources/ProductManagement/tr.json | 16 ++ 18 files changed, 438 insertions(+), 23 deletions(-) create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json create mode 100644 framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json create mode 100644 framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json create mode 100644 framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json create mode 100644 samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/Localization/ApplicationContracts/tr.json create mode 100644 samples/MicroserviceDemo/modules/product/src/ProductManagement.Web/Localization/Resources/ProductManagement/tr.json diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json index 5af6a13c50..b7f7cb41a5 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json @@ -1,5 +1,161 @@ { "culture": "tr", "texts": { + "Permission:Organizations": "Organizasyonlar", + "Permission:Manage": "Organizasyonları Yönet", + "Permission:DiscountRequests": "İndirim Talepleri", + "Permission:DiscountManage": "İndirim Taleplerini Yönet", + "Permission:Disable": "Devre Dışı Bırak", + "Permission:Enable": "Etkinleşir", + "Permission:EnableSendEmail": "E-Posta Göndermeyi Etkinleştir", + "Permission:SendEmail": "E-Posta Gönder", + "Permission:NpmPackages": "NPM Paketleri", + "Permission:NugetPackages": "Nuget Paketleri", + "Permission:Maintenance": "Bakım", + "Permission:Maintain": "Bakım Yap", + "Permission:ClearCaches": "Önbelleği temizle", + "Permission:Modules": "Modüller", + "Permission:Packages": "Paketler", + "Permission:Edit": "Güncelle", + "Permission:Delete": "Sil", + "Permission:Create": "Oluştur", + "Permission:Accounting": "Muhasebe", + "Permission:Accounting:Quotation": "Fiyatlandırma", + "Permission:Accounting:Invoice": "Fatura", + "Menu:Organizations": "Organizasyonlar", + "Menu:Accounting": "Muhasebe", + "Menu:Packages": "Paketler", + "Menu:DiscountRequests": "İndirim Talepleri", + "NpmPackageDeletionWarningMessage": "Bu NPM Paketi silinecektir. Onaylıyor musunuz?", + "NugetPackageDeletionWarningMessage": "Bu Nuget Paketi silinecektir. Onaylıyor musunuz?", + "ModuleDeletionWarningMessage": "Bu Modül silinecektir. Onaylıyor musunuz?", + "Name": "İsim", + "DisplayName": "Görüntülenen isim", + "ShortDescription": "Kısa açıklama", + "NameFilter": "İsim", + "CreationTime": "Oluşturma zamanı", + "IsPro": "Is pro", + "ShowOnModuleList": "Modül listesinde göster", + "EfCoreConfigureMethodName": "Metot adını yapılandır", + "IsProFilter": "Is pro", + "ApplicationType": "Uygulama tipi", + "Target": "Hedef", + "TargetFilter": "Hedef", + "ModuleClass": "Modül sınıfı", + "NugetPackageTarget.DomainShared": "Domain Shared", + "NugetPackageTarget.Domain": "Domain", + "NugetPackageTarget.Application": "Application", + "NugetPackageTarget.ApplicationContracts": "Application Contracts", + "NugetPackageTarget.HttpApi": "Http Api", + "NugetPackageTarget.HttpApiClient": "Http Api Client", + "NugetPackageTarget.Web": "Web", + "NugetPackageTarget.EntityFrameworkCore": "DeleteAllEntityFramework Core", + "NugetPackageTarget.MongoDB": "MongoDB", + "Edit": "Güncelle", + "Delete": "Sil", + "Refresh": "Yenile", + "NpmPackages": "NPM Paketleri", + "NugetPackages": "Nuget Paketleri", + "NpmPackageCount": "NPM Paket Sayısı", + "NugetPackageCount": "Nuget Paket Sayısı", + "Module": "Modüller", + "ModuleInfo": "Modül bilgisi", + "CreateANpmPackage": "Bir NPM paketi oluştur", + "CreateAModule": "Bir modül oluştur", + "CreateANugetPackage": "Bir Nuget paketi oluştur", + "AddNew": "Yenisini Ekle", + "PackageAlreadyExist{0}": "\"{0}\"isimli paket zaten eklendi.", + "ModuleAlreadyExist{0}": "\"{0}\" isimli modül zaten eklendi.", + "ClearCache": "Önbelleği Temizle", + "SuccessfullyCleared": "Başarıyla temizlendi", + "Menu:NpmPackages": "NPM Paketleri", + "Menu:Modules": "Modüller", + "Menu:Maintenance": "Bakım", + "Menu:NugetPackages": "Nuget Paketleri", + "CreateAnOrganization": "Bir organizasyon oluştur", + "Organizations": "Organizasyonlar", + "LongName": "Uzun isim", + "LicenseType": "Lisans tipi", + "MissingLicenseTypeField": "Lisans tipi alanı zorunludur.", + "LicenseStartTime": "Lisans başlama zamanı", + "LicenseEndTime": "Lisans bitiş zamanı", + "AllowedDeveloperCount": "İzin verilen developer sayısı", + "UserNameOrEmailAddress": "Kullanıcı adı veya e-posta adresi", + "AddOwner": "Owner ekle", + "UserName": "Kullanıcı Adı", + "Email": "E-Posta", + "Developers": "Developers", + "AddDeveloper": "Developer Ekle", + "Create": "Oluştur", + "UserNotFound": "Kullanıcı bulunamadı", + "{0}WillBeRemovedFromDevelopers": "{0} kullanıcı adlı developer silinecektir, Onaylıyor musunuz?", + "{0}WillBeRemovedFromOwners": "{0} kullanıcı adlı owner silinecektir, Onaylıyor musunuz?", + "Computers": "Bilgisayarlar", + "UniqueComputerId": "Özgün bilgisayar id", + "LastSeenDate": "Son görülme tarihi", + "{0}Computer{1}WillBeRemovedFromRecords": "{0} kullanıcı isimli kullanıcının bilgisayarı ({1}) kayıtlardan kaldırılacaktır", + "OrganizationDeletionWarningMessage": "Organizasyon silinecektir.", + "DeletingLastOwnerWarningMessage": "Bir organizasyon en az bir ownera sahip olmalıdır! Bu nedenle bu ownerı kaldıramazsınız", + "This{0}AlreadyExistInThisOrganization": "{0} zaten bu organizasyonda bulunmaktadır", + "AreYouSureYouWantToDeleteAllComputers": "Tüm bilgisayaları silmek istediğinize emin misiniz?", + "DeleteAll": "Tümünü sil", + "DoYouWantToCreateNewUser": "Yeni kullanıcı oluşturmak istiyor musunuz?", + "MasterModules": "Master Modüller", + "OrganizationName": "Organizasyon adı", + "OrganizationNamePlaceholder": "Organizasyon adı...", + "UsernameOrEmail": "Kullanıcı adı veya e-posta", + "UsernameOrEmailPlaceholder": "Kullanıcı adı veya e-posta", + "Member": "Üye", + "PurchaseOrderNo": "Satın alma sipariş no", + "QuotationDate": "Fiyatlandırma tarihi", + "CompanyName": "Şirket adı", + "CompanyAddress": "Şirket adresi", + "Price": "Fiyat", + "DiscountText": "İndirim metni", + "DiscountQuantity": "İndirim miktarı", + "DiscountPrice": "İndirim fiyatı", + "Quotation": "Fiyatlandırma", + "ExtraText": "Eksta metin", + "ExtraAmount": "Eksta miktar", + "DownloadQuotation": "Fiyatlandırmayı İndir", + "Invoice": "Fatura", + "TaxNumber": "Vergi Numarası", + "InvoiceNumber": "Fatura Numarası", + "InvoiceDate": "Fatura Tarihi", + "InvoiceNote": "Fatura Notu", + "Quantity": "Miktar", + "AddProduct": "Ürün Ekle", + "AddProductWarning": "Ürün eklemelisiniz!", + "TotalPrice": "Toplam Fiyat", + "Generate": "Üret", + "MissingQuantityField": "Miktar alanı zorunludur!", + "MissingPriceField": "Fiyat alanı zorunludur!", + "CodeUsageStatus": "Statü", + "Country": "Ülke", + "DeveloperCount": "Developer Sayısı", + "RequestCode": "Talep Kodu", + "WebSite": "Web Sitesi", + "GithubUsername": "Github Kullanıcı adı", + "PhoneNumber": "Telefon Numarası", + "ProjectDescription": "Proje Açıklaması", + "Referrer": "Yönlendiren", + "DiscountRequests": "İndirim Talebi", + "Copylink": "Kopyalama Linki", + "Disable": "Devre Dışı Bırak", + "Enable": "Etkinleştir", + "EnableSendEmail": "E-Posta Göndermeyi Etkinleştir", + "SendEmail": "E-Posta Gönder", + "SuccessfullyDisabled": "Başarıyla Devre Dışı Bırakıldı", + "SuccessfullyEnabled": "Başarıyla Etkinleştirildi", + "EmailSent": "E-Posta Gönderildi", + "SuccessfullySent": "Başarıyla Gönderildi", + "SuccessfullyDeleted": "Başarıyla Silindi", + "DiscountRequestDeletionWarningMessage": "İndirim talebi silinecektir", + "BusinessType": "İş tipi", + "TotalQuestionCount": "Toplam soru sayısı", + "RemainingQuestionCount": "Kalan soru sayısı", + "TotalQuestionMustBeGreaterWarningMessage": "Toplam soru sayısı kalan soru sayısından büyük olmalıdır!", + "QuestionCountsMustBeGreaterThanZero": "Toplam soru sayısı ve kalan soru sayısı sıfır veya sıfırdan daha büyük olmalıdır!", + "UnlimitedQuestionCount": "Sınırsız soru sayısı" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json index 767346cd5e..1a25bde775 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json @@ -1,4 +1,4 @@ -{ +{ "culture": "tr", "texts": { "Volo.AbpIo.Domain:010004": "Maksimum üye sayısı aşıldı!", @@ -18,12 +18,14 @@ "ReadyToGetStarted?": "Başlamaya hazır mısın?", "JoinOurCommunity": "Topluluğumuza katılın", "GetStartedUpper": "BAŞLAYIN", + "ForkMeOnGitHub": "Fork me on GitHub", "Features": "Özellikler", "GetStarted": "Başlayın", "Documents": "Dokümanlar", "Community": "Topluluk", "ContributionGuide": "Katkı Rehberi", "Blog": "Blog", + "Commercial": "Ticari", "SeeDocuments": "Dokümanlara Göz Atın" } -} +} \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json index 77dab7302e..90db761f1b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json @@ -1,4 +1,4 @@ -{ +{ "culture": "tr", "texts": { "OrganizationManagement": "Organizasyon yönetimi", @@ -6,6 +6,8 @@ "Volo.AbpIo.Commercial:010003": "Bu organizasyonda yetkili değilsiniz!", "OrganizationNotFoundMessage": "Organizasyon bulunamadı!", "DeveloperCount": "Yazılımcı sayısı", + "QuestionCount": "Kalan / toplam sorular", + "Unlimited": "Sınırsız", "Owners": "Yetkili sayısı", "AddMember": "Üye ekle", "AddOwner": "Yetkili ekle", @@ -19,12 +21,15 @@ "StartDate": "Başlangıç tarihi", "EndDate": "bitiş tarihi", "Modules": "Modüller", - "Volo.AbpIo.Commercial:010004": "Kullanıcı bulunamadı! İlgili kullanıcının daha önceden sisteme kayıt olmuş olması gerekiyor.", "LicenseExtendMessage": "Lisans bitiş tarihiniz {0} tarihine kadar uzatıldı", "LicenseUpgradeMessage": "Lisansınız {0} lisansa yükseltildi", "LicenseAddDeveloperMessage": "Lisansınıza {0} geliştirici eklendi", - "MyOrganizations": "Organizasyonlarım", - "ApiKey": "API anahtarı", - "UserNameNotFound": "{0} kullanıcı adı ile bir kullanıcı yok" + "Volo.AbpIo.Commercial:010004": "Kullanıcı bulunamadı! İlgili kullanıcının daha önceden sisteme kayıt olmuş olması gerekiyor.", + "MyOrganizations": "Organizasyonlarım", + "ApiKey": "API anahtarı", + "UserNameNotFound": "{0} kullanıcı adı ile bir kullanıcı yok", + "SuccessfullyAddedToNewsletter": "Bültenimize abone olduğunuz için teşekkürler!", + "MyProfile": "Profilim", + "EmailNotValid": "Lütfen uygun bir e-posta adresi giriniz" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json index 5af6a13c50..5f423e940b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json @@ -1,5 +1,161 @@ { "culture": "tr", "texts": { + "GetStarted": "Başlamak - Başlangıç Templateleri", + "Create": "Oluştur", + "NewProject": "Yeni Proje", + "DirectDownload": "Doğrudan İndir", + "ProjectName": "Proje ismi", + "ProjectType": "Proje tipi", + "DatabaseProvider": "Veritabanı sağlayacısı", + "NTier": "N-Tier", + "IncludeUserInterface": "Kullanıcı arayüzünü dahil et", + "CreateNow": "Şimdi oluştur", + "TheStartupProject": "Başlangıç projesi", + "Tutorial": "Öğretici", + "UsingCLI": "CLI Kullanmak", + "SeeDetails": "Detayları Görüntüle", + "AbpShortDescription": "ABP modern web uygulamaları geliştirmek için eksiksiz bir mimari ve günlü bir altyapıdır! Size SOLID geliştirme tecrübelerini sunmak için en iyi uygulama ve kuralları takip eder.", + "SourceCodeUpper": "KAYNAK KOD", + "LatestReleaseLogs": "Son release kayıtları", + "Infrastructure": "Altyapı", + "Architecture": "Mimari", + "Modular": "Modüler", + "DontRepeatYourself": "Kendini Tekrar Etme", + "DeveloperFocused": "Developer Odaklı", + "FullStackApplicationInfrastructure": "Full stack uygulama altyapısı", + "DomainDrivenDesign": "Domain Driven Design", + "DomainDrivenDesignExplanation": "DDD paterni ve prensiplerinden yola çıkarak dizayn edildi ve geliştirildi. Uygulamanız için katmanlı bir model sunmaktadır.", + "Authorization": "Yetkilendirme", + "AuthorizationExplanation": "Kullanıcı, rol ve ayrıntılı izin sistemi ile modern yetkilendirme. Microsoft Identity library üzerine kurulmuştur.", + "MultiTenancy": "Multi-Tenancy", + "MultiTenancyExplanationShort": "SaaS uygulamaları kolaylaştı! Veritababından kullanıcı arayüzüne entegre edilmiş multi-tenancy", + "CrossCuttingConcerns": "Cross Cutting Concerns", + "CrossCuttingConcernsExplanationShort": "Yetkilendirme, validasyon, hata yakalama, caching, audit logging, işlem yönetimi ve bunun gibi konular için eksiksiz altyapı.", + "BuiltInBundlingMinification": "Hazır Paketleme & Küçültme", + "BuiltInBundlingMinificationExplanation": "Paketleme ve küçültmek için external araçları kullanmayı bırakın. ABP daha basit, dinamik, güçlü, modüler ve hazır yolları öneriyor.", + "VirtualFileSystem": "Sanal Dosya Sistemi", + "VirtualFileSystemExplanation": "Sayfaları, scriptleri, stilleri, resimleri... paketlere/kütüpanelere gömün ve farklı uygulamalarda yeniden kullanın. ", + "Theming": "Theming", + "ThemingExplanationShort": "Bootstrap tabanlı standart kullanıcı arayüzlerini kullan ve kişiselleştir veya kendin yeni bir tane oluştur.", + "BootstrapTagHelpersDynamicForms": "Bootstrap Tag Helpers & Dinamik Formlar", + "BootstrapTagHelpersDynamicFormsExplanation": "Bootstrap komponentlerinin tekrar eden detaylarını manuel olarak yazmak yerine, Bu işlemi basitleştirmek ve iyileştirme avantajından faydalanmak için ABP'nin tag helperlarını kullanın. Dinamik form bir C# sınıfından model olarak eksiksik form oluşturabilir.", + "HTTPAPIsDynamicProxies": "HTTP APIs & Dynamic Proxies", + "HTTPAPIsDynamicProxiesExplanation": "Application servislerini otomatik olarak Rest stil Http API olarak ayarlayın ve dinamaik Javascript & C# proxyler ile kullanın.", + "CompleteArchitectureInfo": "Bakım yapılabilir yazılım çözümleri üretmek için modern mimari.", + "DomainDrivenDesignBasedLayeringModelExplanation": "DDD tabanlı bir katmanlı mimari geliştirmek ve bakım yapılabilir bir kod altyapısı inşaa etmek için size yardım eder.", + "DomainDrivenDesignBasedLayeringModelExplanationCont": "DDD patern ve prensiplerinden yola çıkarak uygulamanızı geliştirmeye yardımcı olmak için başlanıç templateler, soyutlamalar, base sınıflar, servisler, dokümantasyon ve rehberlik sağlar. ", + "MicroserviceCompatibleModelExplanation": "Core framework & pre-build modüller mikroservis mimari göz önünde bulundurularak dizayn edildi.", + "MicroserviceCompatibleModelExplanationCont": "Microservice çözümlerini daha kolay geliştirmek için altyapı, entegrasyon, örnekler ve dokümantasyon sunarken eğer bir tek parça uygulama istiyorsanız ek karmaşıklık getirmez.", + "ModularInfo": "ABP yeniden kullanılabilir uygulama modülleri geliştirebilmenize izin veren eksiksiz modüler sistem sunar.", + "PreBuiltModulesThemes": "Pre-Built Modüller & Temalar", + "PreBuiltModulesThemesExplanation": "Açık kaynak ve ticari modüller & temalar iş uygulamanızda kullanıma hazırdır.", + "NuGetNPMPackages": "NUGET & NPM Packages", + "NuGetNPMPackagesExplanation": "NUGET & NPM paketleri olarak dağıtılmıştır. Yüklemek ve güncellemek kolaydır.", + "ExtensibleReplaceable": "Genişletilebilir/Değiştirilebilir", + "ExtensibleReplaceableExplanation": "Tüm sevisler & modüller genişletilebilirlik göz önünde bulundurularak dizayn edildi. Servislerin, sayfaların stillerin, komponentlerin vb. yerlerini değiştirebilirsizinz.", + "CrossCuttingConcernsExplanation2": "Kodunu daha temiz tut ve kendi uygulama koduna odaklan.", + "CrossCuttingConcernsExplanation3": "Ortak uygulama isterlerini tekrar ve tekrar geliştirmek için zaman harcamayın.", + "AuthenticationAuthorization": "Kimlik Doğrulama & Yetkilendirme", + "ExceptionHandling": "Hata yakalama", + "Validation": "Validasyon", + "DatabaseConnection": "Veritabanı bağlantısı", + "TransactionManagement": "İşlem yönetimi", + "AuditLogging": "Audit Logging", + "Caching": "Caching", + "Multitenancy": "Multitenancy", + "DataFiltering": "Date filtreleme", + "ConventionOverConfiguration": "Yapılandırma Üzerinde Kurallar", + "ConventionOverConfigurationExplanation": "ABP minimal veya sıfır yapılandırma ile ortak uygulama kurallarını varsayılan olarak uygular.", + "ConventionOverConfigurationExplanationList1": "Dependency injection için bilinen servisler otomatik olarak kaydedilir.", + "ConventionOverConfigurationExplanationList2": "Application servisler isimlerdirme kuralları ile HTTP API ler olarak uygulanır.", + "ConventionOverConfigurationExplanationList3": "C# ve JavaScript için dinamik HTTP istemci proxyleri yaratır.", + "ConventionOverConfigurationExplanationList4": "Entityleriniz için varsayılaan repositoriler sunar.", + "ConventionOverConfigurationExplanationList5": "Her web request veya application servis metodu için Unit of Work işlemini yönetir.", + "ConventionOverConfigurationExplanationList6": "Entityleriniz için oluşturma, güncelleme & silme işlemlerini yayınlar.", + "BaseClasses": "Ana Sınıflar", + "BaseClassesExplanation": "Ortak uygulama paternleri için pre-built ana sınıflar.", + "DeveloperFocusedExplanation": "ABP developerlar içindir.", + "DeveloperFocusedExplanationCont": "İhtiyacınız olduğunda düşük seviyede çalışmanızı kısıtlamadan günlük yazılım geliştirmenizi basitleştirmeyi amaçlar.", + "SeeAllFeatures": "Tüm Özellikleri Görüntüle", + "CLI_CommandLineInterface": "CLI (Command Line Interface)", + "CLI_CommandLineInterfaceExplanation": "CLI yeni proje oluşturma ve uygulamanıza modüller ekleme işlemlerini otomatik hale getirir.", + "StartupTemplates": "Başlangıç Templateler", + "StartupTemplatesExplanation": "Çeşitli başlangıç templateleri size geliştirme başlatmak için tam yapılandırılmış bir çözüm sağlar.", + "BasedOnFamiliarTools": "Bilinen Araçlara Dayalı ", + "BasedOnFamiliarToolsExplanation": "Zaten bildiğiniz popüler araçlar ile geliştirilme ve egtegre edilmiştir. Düşük öğrenme eğrisi, koaly adaptasyon, rahat geliştirme.", + "ORMIndependent": "ORM Bağımsız", + "ORMIndependentExplanation": "", + "Features": "ABP Framework Özelliklerini Keşfet", + "ABPCLI": "ABP CLI", + "Modularity": "Modülerlik", + "BootstrapTagHelpers": "Bootstrap Tag Helpers", + "DynamicForms": "Dinamik Formlar", + "BundlingMinification": "Paketleme & Küçültme", + "BackgroundJobs": "Arkaplan İşleri", + "DDDInfrastructure": "DDD altyapısı", + "DomainDrivenDesignInfrastructure": "Domain Driven Design Altyapısı", + "AutoRESTAPIs": "Otomatik REST APIler", + "DynamicClientProxies": "Dinamik Client Proxies", + "DistributedEventBus": "Dağıtılmış Event Bus", + "DistributedEventBusWithRabbitMQIntegration": "RabbitMQ Entegrasyonu ile Dağıtılmış Event Bus", + "TestInfrastructure": "Test ALtyapısı", + "AuditLoggingEntityHistories": "Audit Logging & Entity Histories", + "ObjectToObjectMapping": "Object to Object Mapping", + "EmailSMSAbstractions": "E-Posta & SMS Soyutlamaları", + "EmailSMSAbstractionsWithTemplatingSupport": "Template Destekli E-Posta & SMS Soyutlamaları", + "Localization": "Localization", + "SettingManagement": "Ayar Yönetimi", + "ExtensionMethods": "Extension Methods", + "ExtensionMethodsHelpers": "Extension Methods & Helpers", + "AspectOrientedProgramming": "Aspect Oriented Programming", + "DependencyInjection": "Dependency Injection", + "DependencyInjectionByConventions": "Dependency Injection by Conventions", + "ABPCLIExplanation": "ABP CLI (Command Line Interface) ABP tabanlı çözümler ortak işlemleri gerçekleştiren bir komut satırı aracıdır.", + "ModularityExplanation": "ABP, entityleri, servisleri, veritabanı entegrasyonu, APIleri, UI komponentleri ve bunun gibi özelliklere sahip olabilecek kendi uygulama modüllerini geliştirmeniz için eksiksiz bir altyapı sağlar. ", + "MultiTenancyExplanation": "ABP framework sadece multi-tenant uygulama geliştirmenizi desteklemekle kalmaz aynı zamanda kodunuzun çoğunlukla tenantların birbirinden haberi olmaycak şekilde olmasını sağlar.", + "MultiTenancyExplanation2": "Anlık tenant'ı otomatik olarak belirleybilir, farklı tenantların verilerini birbirlerinden izole edebilir.", + "MultiTenancyExplanation3": "Tek bir veritabanını, her tenant için ayrı bir veritabanını ve hibrid yaklaşımları destekler.", + "MultiTenancyExplanation4": "Sen kendi uygulama kodunu odaklan ve bırak framework sizin adınıza multi-tenancy üstesinden gelsin.", + "BootstrapTagHelpersExplanation": "Bootstrap komponentlerinin tekrar eden detaylarını manuel olarak yazmak yerine, Bu işlemi basitleştirmek ve iyileştirme avantajından faydalanmak için ABP'nin tag helperlarını kullanın. Dinamik form bir C# sınıfından model olarak eksiksik form oluşturabilir.", + "DynamicFormsExplanation": "Dinamik form & input tag helpers bir C# sınıfından model olarak eksiksik form oluşturabilir.", + "AuthenticationAuthorizationExplanation": "ASP.NET Core Identity & IdentityServer4 ile entegre edilmiş zengin kimlik doğrulama ve yetkilendirme opsiyonları. Genişletilebilir ve detaylandırılabilr bir izin sistemi sunar.", + "CrossCuttingConcernsExplanation": "Tüm bu ortak şeyleri geliştirmek için kendini sürekli tekrar etme. Kendi iş koduna odaklan ve bırak ABP bunları kurallar ile otomatik hale getirsin.", + "DatabaseConnectionTransactionManagement": "Veritabanı Bğlantısı & İşlem Yönetimi", + "CorrelationIdTracking": "Correlation-Id Tracking", + "BundlingMinificationExplanation": "ABP daha basit, dinamik, güçlü, modüler ve hazır paketlenmiş ve küçültülmüş sistemi öneriyor.", + "VirtualFileSystemnExplanation": "Sanal Dosya Sistemi fiziksel olarak disk üzerinde var olmayan dosyalarını yönetmeyi mümkün kılmaktadır. Bunlar genellikle önceden assemblyler içerisinde gömülü olan(js,css,image,cshtml..) dosyalardır ve bunlar fiziksel dosylar gibi runtimeda kullanılır.", + "ThemingExplanation": "Theming sistem son Bootstrap Framework tabanlı ortak bir kütüphane ve layout tanımlayarak uygulamanızı & modüllerini bağımsız olarak geliştirmenizi sağlamaktadır.", + "DomainDrivenDesignInfrastructureExplanation": "Domain Driven Design pattern ve prensiplerine dayalı katmanlı uygulama geliştirmek için eksiksiz bit altyapı", + "Specification": "Specification", + "Repository": "Repository", + "DomainService": "Domain Service", + "ValueObject": "Value Object", + "ApplicationService": "Application Service", + "DataTransferObject": "Data Transfer Object", + "AggregateRootEntity": "Aggregate Root, Entity", + "AutoRESTAPIsExplanation": "ABP, application servislerinizi otomatik olarak API Controller olarak kurallı bir şekilde yapılandırabilir.", + "DynamicClientProxiesExplanation": "Apilerinizi, JavaScript ve C# clients tarafından kolaylıkla kullanın.", + "DistributedEventBusWithRabbitMQIntegrationExplanation": "Easily publish & consume distributed events using built-in Distributed Event Bus with RabbitMQ integration available.", + "TestInfrastructureExplanation": "The framework has been developed unit & integration testing in mind. Provides you base classes to make it easier. Startup templates come with pre-configured for testing.", + "AuditLoggingEntityHistoriesExplanation": "", + "EmailSMSAbstractionsWithTemplatingSupportExplanation": "", + "LocalizationExplanation": "", + "SettingManagementExplanation": "", + "ExtensionMethodsHelpersExplanation": "", + "AspectOrientedProgrammingExplanation": "", + "DependencyInjectionByConventionsExplanation": "", + "DataFilteringExplanation": "", + "PublishEvents": "Publish Events", + "HandleEvents": "Handle Events", + "AndMore": "", + "Code": "Code", + "Result": "Sonuç", + "SeeTheDocumentForMoreInformation": "See the {0} document for more information", + "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core", + "UiFramework": "UI Framework", + "EmailAddress": "E-Posta Adresi", + "Mobile": "Mobil", + "ReactNative": "React Native" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json new file mode 100644 index 0000000000..4eb4a1209b --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/tr.json @@ -0,0 +1,7 @@ +{ + "culture": "tr", + "texts": { + "DisplayName:Abp.Localization.DefaultLanguage": "Varsayılan dil", + "Description:Abp.Localization.DefaultLanguage": "Varsayılan uygulama dili." + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json new file mode 100644 index 0000000000..6c3c94cfdf --- /dev/null +++ b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/tr.json @@ -0,0 +1,6 @@ +{ + "culture": "tr", + "texts": { + "hello": "Merhaba" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json index 1f38b5c8d4..a6b6ce2a44 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/tr.json @@ -1,6 +1,7 @@ -{ +{ "culture": "tr", "texts": { - "USA": "Amerika Birleşik Devletleri" + "USA": "Amerika Birleşik Devletleri", + "Brazil": "Brezilya" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json new file mode 100644 index 0000000000..4a1cb24c25 --- /dev/null +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/tr.json @@ -0,0 +1,7 @@ +{ + "culture": "tr", + "texts": { + "ThisFieldIsRequired": "Bu alan zorunludur", + "MaxLenghtErrorMessage": "Bu alan maksimum '{0}' karakter olabilir" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json index fa2d23246b..eddd61c662 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/tr.json @@ -1,9 +1,11 @@ -{ +{ "culture": "tr", "texts": { "Hello {0}.": "Merhaba {0}.", "Car": "Araba", "CarPlural": "Araba", - "Universe": "Evren" + "MaxLenghtErrorMessage": "Bu alanın uzunluğu maksimum '{0}' karakter olabilir", + "Universe": "Evren", + "FortyTwo": "Kırk İki" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json new file mode 100644 index 0000000000..df3fe71cd9 --- /dev/null +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/tr.json @@ -0,0 +1,6 @@ +{ + "culture": "tr", + "texts": { + "SeeYou": "Görüşürüz" + } +} \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json index 44cebc1190..60d5f40634 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/tr.json @@ -1,4 +1,4 @@ -{ +{ "culture": "tr", "texts": { "UserName": "Kullanıcı adı", @@ -11,10 +11,12 @@ "InvalidUserNameOrPassword": "Kullanıcı adı ya da şifre geçersiz!", "LoginIsNotAllowed": "Giriş yapamazsınız! E-posta adresinizi ya da telefon numaranızı doğrulamanız gerekiyor.", "SelfRegistrationDisabledMessage": "Bu uygulama için kullanıcıların kendi kendilerine kaydolmaları engellenmiştir. Yeni bir kullanıcı kaydetmek için lütfen uygulama yöneticisi ile iletişime geçin.", + "LocalLoginDisabledMessage": "Bu uygulama için local login devre dışı bırakılmıştır.", "Login": "Giriş yap", "Cancel": "İptal", "Register": "Kayıt ol", "AreYouANewUser": "Yeni bir kullanıcı mısınız?", + "AlreadyRegistered": "Zaten kayıtlı mı?", "InvalidLoginRequest": "Başarısız giriş isteği", "ThereAreNoLoginSchemesConfiguredForThisClient": "Bu client için konfigüre edilmiş giriş şeması bulunamadı.", "LogInUsingYourProviderAccount": "{0} hesabınızla giriş yapın.", @@ -34,6 +36,10 @@ "PasswordChanged": "Şifre değiştirildi", "NewPasswordConfirmFailed": "Lütfen yeni şifreyi onaylayın.", "Manage": "Manage", - "ManageYourProfile": "Profilinizi yönetin" + "ManageYourProfile": "Profilinizi yönetin", + "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "self-registration etkin mi ?", + "Description:Abp.Account.IsSelfRegistrationEnabled": "Bir kullanıcının hesabı kendisi tarafından kaydedip kaydedememesidir.", + "DisplayName:Abp.Account.EnableLocalLogin": "Yerel bir hesapla kimlik doğrulaması", + "Description:Abp.Account.EnableLocalLogin": "Sunucunun, kullanıcıların yerel bir hesapla kimlik doğrulamasına izin verip vermeyeceğini belirtir." } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json index b4b6cba0be..78e18601ff 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json @@ -1,4 +1,4 @@ -{ +{ "culture": "tr", "texts": { "Menu:Blogs": "Bloglar", @@ -20,7 +20,6 @@ "SeeAll": "Hepsini Gör", "PopularTags": "Popüler Etiketler", "WiewsWithCount": "{0} görüntüleme", - "ShareOnTwitter": "Twitter'da paylaş", "LastPosts": "Son Yazılar", "LeaveComment": "Yorum Bırak", "TagsInThisArticle": "Makalenin Etiketleri", @@ -33,6 +32,7 @@ "AreYouSure": "Emin misiniz?", "CommentWithCount": "{0} yorum", "Comment": "Yorum", + "ShareOnTwitter": "Twitter'da paylaş", "CoverImage": "Kapak resmi", "CreateANewPost": "Yeni Yazı oluştur", "CreateANewBlog": "Yeni Blog Ekle", @@ -43,6 +43,7 @@ "Description": "Açıklama", "Blogs": "Bloglar", "Tags": "Etiketler", - "ShareOn": "Paylaş" + "ShareOn": "Paylaş", + "TitleLengthWarning": "Başlığınınz SEO dostu olabilmesi için 60 karakterden az olmasını sağlayın!" } } \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json index 8f49c6e952..c88e95867d 100644 --- a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json +++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/tr.json @@ -1,6 +1,7 @@ -{ +{ "culture": "tr", "texts": { + "DocsTitle": "VoloDocs", "WelcomeVoloDocs": "VoloDocs Hoşgeldiniz!", "NoProjectWarning": "Henüz bir proje yok!", "CreateYourFirstProject": "İlk projenizi oluşturmak için tıklayın", diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json index c40893e538..319a901004 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json @@ -1,4 +1,4 @@ -{ +{ "culture": "tr", "texts": { "Permission:DocumentManagement": "Döküman yönetimi", @@ -7,6 +7,7 @@ "Permission:Delete": "Sil", "Permission:Create": "Oluştur", "Permission:Documents": "Döküman", + "Menu:Documents": "Dokümanlar", "Menu:DocumentManagement": "Dökümanlar", "Menu:ProjectManagement": "Projeler", "CreateANewProject": "Yeni proje oluştur", @@ -29,8 +30,19 @@ "DisplayName:LatestVersionBranchName": "Son versiyon Branch adı", "DisplayName:GitHubRootUrl": "GitHub kök adresi", "DisplayName:GitHubAccessToken": "GitHub erişim token", + "DisplayName:GitHubUserAgent": "GitHub kullanıcı temsilcisi", "DisplayName:All": "Çekme bütün", "DisplayName:LanguageCode": "Dil kodu", - "DisplayName:Version": "versiyon" + "DisplayName:Version": "versiyon", + "Documents": "Dokümanlar", + "RemoveFromCache": "Önbellekten kaldır", + "Reindex": "Yeniden İndeksle", + "ReindexCompleted": "Yeniden indeksleme tamamlandı", + "RemovedFromCache": "Önbellekten kaldırıldı", + "RemoveFromCacheConfirmation": "Bu maddeyi önbellekten kaldırmak istediğiniz emin misiniz?", + "ReIndexDocumentConfirmation": "Bu maddeyi yeniden indekslemek istediğinize emin misiniz?", + "DeleteDocumentFromDbConfirmation": "Bu maddeyi veritabanından silmek istediğinize emin misiniz?", + "DeleteFromDatabase": "Veritabanından sil", + "Deleted": "Silindi" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json index 612274f95d..f41a049932 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/tr.json @@ -1,4 +1,4 @@ -{ +{ "culture": "tr", "texts": { "Documents": "Dökümanlar", @@ -9,17 +9,30 @@ "Edit": "Düzenle", "LastEditTime": "Son Düzenleme", "Delete": "Sil", + "ClearCache": "Önbelleği temizle", + "ClearCacheConfirmationMessage": "\"{0}\" Projesinin tüm önbelliğini temizlemek istediğinize emin misiniz? ", + "ReIndexAllProjects": "Tüm projeleri yeniden indexle", + "ReIndexProject": "Projeyi yeniden indeksle", + "ReIndexProjectConfirmationMessage": "\"{0}\" Projesini yeniden insdekslemek istediğinize emin misiniz?", + "SuccessfullyReIndexProject": "\"{0}\" Projesi başarıyla yeniden indekslendi", + "ReIndexAllProjectConfirmationMessage": "Tüm projeleri yeniden indekslemek istediğinize emin misiniz?", + "SuccessfullyReIndexAllProject": "Tüm projeler başarıyla yeniden indekslendi", "InThisDocument": "Bu dökümanda", "GoToTop": "En üste çık", "Projects": "Proje(ler)", "NoProjectWarning": "Hiç proje yok!", "DocumentNotFound": "Aradığınız döküman bulunamadı!", + "ProjectNotFound": "Talep edilen proje bulunamadı!", "NavigationDocumentNotFound": "Bu döküman için menü bulunamadı!", "DocumentNotFoundInSelectedLanguage": "İstediğiniz dilde belge bulunamadı. Varsayılan dilde belge gösterilir.", + "FilterTopics": "Konuları Filtrele", + "FullSearch": "Dokümanlarda Ara", + "Volo.Docs.Domain:010001": "Elastic search etkin değil", "MultipleVersionDocumentInfo": "Bu dökümanın birden çok versiyonu bulunmaktadır. Sizin için en uygun olan seçenekleri seçiniz.", "New": "Yeni", "Upd": "Günc", "NewExplanation": "Son iki hafta içinde oluşturuldu.", - "UpdatedExplanation": "Son iki hafta içinde güncellendi." + "UpdatedExplanation": "Son iki hafta içinde güncellendi.", + "Volo.Docs.Domain:010002": "ShortName {ShortName} zaten var." } } \ No newline at end of file diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/tr.json b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/tr.json index febe7634a4..30f659ff45 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/tr.json +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/tr.json @@ -1,6 +1,14 @@ { "culture": "tr", "texts": { - + "VirtualFileExplorer": "Sanal dosya gezgini", + "VirtualFileType": "Sanal dosya tipi", + "Menu:VirtualFileExplorer": "Sanal dosya gezgini ", + "LastUpdateTime": "Son güncelleme zamanı", + "VirtualFileName": "Sanal dosya adı", + "FileContent": "Dosyaa içeriği", + "Size": "Boyut", + "BackToRoot": "Kök'e dön", + "EmptyFileInfoList": "Sanal dosyalar yok" } -} +} \ No newline at end of file diff --git a/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/Localization/ApplicationContracts/tr.json b/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/Localization/ApplicationContracts/tr.json new file mode 100644 index 0000000000..eec8580dc8 --- /dev/null +++ b/samples/MicroserviceDemo/modules/product/src/ProductManagement.Application.Contracts/ProductManagement/Localization/ApplicationContracts/tr.json @@ -0,0 +1,10 @@ +{ + "culture": "tr", + "texts": { + "Permission:ProductManagement": "Ürün Yönetimi", + "Permission:Products": "Ürünler", + "Permission:Edit": "Güncelle", + "Permission:Delete": "Sil", + "Permission:Create": "Oluştur" + } +} \ No newline at end of file diff --git a/samples/MicroserviceDemo/modules/product/src/ProductManagement.Web/Localization/Resources/ProductManagement/tr.json b/samples/MicroserviceDemo/modules/product/src/ProductManagement.Web/Localization/Resources/ProductManagement/tr.json new file mode 100644 index 0000000000..0c1b3532e7 --- /dev/null +++ b/samples/MicroserviceDemo/modules/product/src/ProductManagement.Web/Localization/Resources/ProductManagement/tr.json @@ -0,0 +1,16 @@ +{ + "culture": "tr", + "texts": { + "Menu:ProductManagement": "Ürün Yönetimi", + "Menu:Products": "Ürünler", + "ProductManagement": "Ürün Yönetimi", + "CreateANewProduct": "Yeni Bir Ürün Oluştur", + "Products": "Ürünler", + "StockCount": "Stok Sayısı", + "Code": "Kod", + "Name": "İsim", + "Price": "Fiyat", + "ImageName": "Fotoğraf İsmi", + "ProductDeletionWarningMessage": "Bu ürünü silmek istediğinize emin misiniz?" + } +} \ No newline at end of file From baa5af32922ba8c7dbf1600a4a7a618fab4283e9 Mon Sep 17 00:00:00 2001 From: berkansasmaz Date: Fri, 19 Jun 2020 10:43:17 +0300 Subject: [PATCH 04/34] Fixed bugs in permission management document --- docs/en/UI/Angular/Permission-Management.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/en/UI/Angular/Permission-Management.md b/docs/en/UI/Angular/Permission-Management.md index d86e8c96b2..ab53e35e78 100644 --- a/docs/en/UI/Angular/Permission-Management.md +++ b/docs/en/UI/Angular/Permission-Management.md @@ -8,7 +8,7 @@ You can get permission as boolean value from store: ```js import { Store } from '@ngxs/store'; -import { ConfigState } from '../states'; +import { ConfigState } from '@abp/ng.core'; export class YourComponent { constructor(private store: Store) {} @@ -24,7 +24,7 @@ export class YourComponent { Or you can get it via `ConfigStateService`: ```js -import { ConfigStateService } from '../services/config-state.service'; +import { ConfigStateService } from '@abp/ng.core'; export class YourComponent { constructor(private configStateService: ConfigStateService) {} @@ -42,7 +42,7 @@ export class YourComponent { You can use the `PermissionDirective` to manage visibility of a DOM Element accordingly to user's permission. ```html -
+
This content is only visible if the user has 'AbpIdentity.Roles' permission.
``` @@ -58,6 +58,8 @@ You can use `PermissionGuard` if you want to control authenticated user's permis Add `requiredPolicy` to the `routes` property in your routing module. ```js +import { PermissionGuard } from '@abp/ng.core'; +// ... const routes: Routes = [ { path: 'path', From 6c99075aa779478cb6fde07015b8a5cbd1506fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 19 Jun 2020 11:55:10 +0300 Subject: [PATCH 05/34] Completed the rabbitmq integration document --- ...tributed-Event-Bus-RabbitMQ-Integration.md | 133 +++++++++++++++++- docs/en/RabbitMq.md | 3 + 2 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 docs/en/RabbitMq.md diff --git a/docs/en/Distributed-Event-Bus-RabbitMQ-Integration.md b/docs/en/Distributed-Event-Bus-RabbitMQ-Integration.md index dc3d5c172f..9587a111bf 100644 --- a/docs/en/Distributed-Event-Bus-RabbitMQ-Integration.md +++ b/docs/en/Distributed-Event-Bus-RabbitMQ-Integration.md @@ -1,3 +1,134 @@ # Distributed Event Bus RabbitMQ Integration -TODO \ No newline at end of file +> This document explains **how to configure the [RabbitMQ](https://www.rabbitmq.com/)** as the distributed event bus provider. See the [distributed event bus document](Distributed-Event-Bus.md) to learn how to use the distributed event bus system + +## Installation + +Use the ABP CLI to add [Volo.Abp.EventBus.RabbitMQ](https://www.nuget.org/packages/Volo.Abp.EventBus.RabbitMQ) NuGet package to your project: + +* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed before. +* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.EventBus.RabbitMQ` package. +* Run `abp add-package Volo.Abp.EventBus.RabbitMQ` command. + +If you want to do it manually, install the [Volo.Abp.EventBus.RabbitMQ](https://www.nuget.org/packages/Volo.Abp.EventBus.RabbitMQ) NuGet package to your project and add `[DependsOn(typeof(AbpEventBusRabbitMqModule))]` to the [ABP module](Module-Development-Basics.md) class inside your project. + +## Configuration + +You can configure using the standard [configuration system](Configuration.md), like using the `appsettings.json` file, or using the [options](Options.md) classes. + +### `appsettings.json` file configuration + +This is the simplest way to configure the RabbitMQ settings. It is also very strong since you can use any other configuration source (like environment variables) that is [supported by the AspNet Core](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/). + +**Example: The minimal configuration to connect to a local RabbitMQ server with default configurations** + +````json +{ + "RabbitMQ": { + "EventBus": { + "ClientName": "MyClientName", + "ExchangeName": "MyExchangeName" + } + } +} +```` + +* `ClientName` is the name of this application, which is used as the **queue name** on the RabbitMQ. +* `ExchangeName` is the **exchange name**. + +See [the RabbitMQ document](https://www.rabbitmq.com/dotnet-api-guide.html#exchanges-and-queues) to understand these options better. + +#### Connections + +If you need to connect to another server than the localhost, you need to configure the connection properties. + +**Example: Specify the host name (as an IP address)** + +````json +{ + "RabbitMQ": { + "Connections": { + "Default": { + "HostName": "123.123.123.123" + } + }, + "EventBus": { + "ClientName": "MyClientName", + "ExchangeName": "MyExchangeName" + } + } +} +```` + +Defining multiple connections is allowed. In this case, you can specify the connection that is used for the event bus. + +**Example: Declare two connections and use one of them for the event bus** + +````json +{ + "RabbitMQ": { + "Connections": { + "Default": { + "HostName": "123.123.123.123" + }, + "SecondConnection": { + "HostName": "321.321.321.321" + } + }, + "EventBus": { + "ClientName": "MyClientName", + "ExchangeName": "MyExchangeName", + "ConnectionName": "SecondConnection" + } + } +} +```` + +This allows you to use multiple RabbitMQ server in your application, but select one of them for the event bus. + +You can use any of the [ConnectionFactry](http://rabbitmq.github.io/rabbitmq-dotnet-client/api/RabbitMQ.Client.ConnectionFactory.html#properties) properties as the connection properties. + +**Example: Specify the connection port** + +````csharp +{ + "RabbitMQ": { + "Connections": { + "Default": { + "HostName": "123.123.123.123", + "Port": "5672" + } + } + } +} +```` + +### The Options Classes + +`AbpRabbitMqOptions` and `AbpRabbitMqEventBusOptions` classes can be used to configure the connection strings and event bus options for the RabbitMQ. + +You can configure this options inside the `ConfigureServices` of your [module](Module-Development-Basics.md). + +**Example: Configure the connection** + +````csharp +Configure(options => +{ + options.Connections.Default.UserName = "user"; + options.Connections.Default.Password = "pass"; + options.Connections.Default.HostName = "123.123.123.123"; + options.Connections.Default.Port = 5672; +}); +```` + +**Example: Configure the client and exchange names** + +````csharp +Configure(options => +{ + options.ClientName = "TestApp1"; + options.ExchangeName = "TestMessages"; +}); +```` + +Using these options classes can be combined with the `appsettings.json` way. Configuring an option property in the code overrides the value in the configuration file. \ No newline at end of file diff --git a/docs/en/RabbitMq.md b/docs/en/RabbitMq.md new file mode 100644 index 0000000000..11dc305b41 --- /dev/null +++ b/docs/en/RabbitMq.md @@ -0,0 +1,3 @@ +# RabbitMQ + +TODO! \ No newline at end of file From 167c4cc756d426dab249dd9df2b1056251928c2b Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Fri, 19 Jun 2020 17:32:42 +0800 Subject: [PATCH 06/34] Update Select2ScriptContributor.cs --- .../Mvc/UI/Packages/Select2/Select2ScriptContributor.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs index 1e5f138f97..81696d5e71 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Select2/Select2ScriptContributor.cs @@ -12,6 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.Select2 { //TODO: Add select2.full.min.js or localize! context.Files.AddIfNotContains("/libs/select2/js/select2.min.js"); + context.Files.AddIfNotContains("/libs/select2/js/select2-bootstrap-modal-patch.js"); } } } From 0668a2e219dcfc8dc259aa42dbbe09d51317d732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 19 Jun 2020 12:48:07 +0300 Subject: [PATCH 07/34] Define AutoEntityDistributedEventSelectorListExtensions.Add methods and move Remove to this extension class. --- .../AutoEntityDistributedEventSelectorList.cs | 5 +-- ...yDistributedEventSelectorListExtensions.cs | 39 +++++++++++++++++++ ...IAutoEntityDistributedEventSelectorList.cs | 4 +- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs index f705f892d5..328c74e324 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs @@ -4,9 +4,6 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed { public class AutoEntityDistributedEventSelectorList : List, IAutoEntityDistributedEventSelectorList { - public bool RemoveByName(string name) - { - return RemoveAll(s => s.Name == name) > 0; - } + } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs index e078dfaf43..d2a0622f54 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorListExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; @@ -69,6 +70,44 @@ namespace Volo.Abp.Domain.Entities.Events.Distributed ); } + public static void Add( + [NotNull] this IAutoEntityDistributedEventSelectorList selectors, + string selectorName, + Func predicate) + { + Check.NotNull(selectors, nameof(selectors)); + + if (selectors.Any(s => s.Name == selectorName)) + { + throw new AbpException($"There is already a selector added before with the same name: {selectorName}"); + } + + selectors.Add( + new NamedTypeSelector( + selectorName, + predicate + ) + ); + } + + public static void Add( + [NotNull] this IAutoEntityDistributedEventSelectorList selectors, + Func predicate) + { + selectors.Add(Guid.NewGuid().ToString("N"), predicate); + } + + public static bool RemoveByName( + [NotNull] this IAutoEntityDistributedEventSelectorList selectors, + [NotNull] string name) + { + Check.NotNull(selectors, nameof(selectors)); + Check.NotNull(name, nameof(name)); + + return selectors.RemoveAll(s => s.Name == name).Count > 0; + } + + public static bool IsMatch([NotNull] this IAutoEntityDistributedEventSelectorList selectors, Type entityType) { Check.NotNull(selectors, nameof(selectors)); diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs index 589942e60e..fc130eb55c 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs @@ -1,9 +1,9 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace Volo.Abp.Domain.Entities.Events.Distributed { public interface IAutoEntityDistributedEventSelectorList : IList { - bool RemoveByName(string name); } } \ No newline at end of file From 58bbbe71dd37572b64549a1b2527ee2275a30310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arma=C4=9Fan=20=C3=9Cnl=C3=BC?= <36102404+armgnunlu@users.noreply.github.com> Date: Fri, 19 Jun 2020 15:26:41 +0300 Subject: [PATCH 08/34] Resolved #4332 --- .../Pages/Documents/Project/Index.cshtml | 155 +++++++++--------- .../Pages/Documents/Shared/Scripts/vs.js | 6 +- .../Pages/Documents/Shared/Styles/vs.css | 89 +++++++--- .../Pages/Documents/Shared/Styles/vs.min.css | 2 +- .../Pages/Documents/Shared/Styles/vs.scss | 131 +++++++++++---- 5 files changed, 256 insertions(+), 127 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml index 7f521de34b..90a754b1a9 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml @@ -131,10 +131,10 @@
@*
- -
*@ + +
*@ -
-
- - } @if (Model.Navigation == null || !Model.Navigation.HasChildItems) { @@ -209,48 +190,60 @@ {
@@ -318,8 +311,20 @@
- +
+
@L["InThisDocument"]