From 3a8d06b23878c9821d447fc246740a9d64070b48 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 15 Dec 2023 15:40:27 +0800 Subject: [PATCH 01/88] Support tenant place holder in `IsRedirectAllowedUrlAsync` method. --- .../Abp/Ui/Navigation/Urls/AppUrlProvider.cs | 17 +++++++---- .../Abp/Ui/Navigation/Urls/IAppUrlProvider.cs | 4 +-- .../Abp/Ui/Navigation/AppUrlProvider_Tests.cs | 29 ++++++++++++++++--- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs index b8bebd95a5..0b89e19197 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs @@ -43,9 +43,14 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency ); } - public bool IsRedirectAllowedUrl(string url) + public virtual async Task IsRedirectAllowedUrlAsync(string url) { - var allow = Options.RedirectAllowedUrls.Any(x => url.StartsWith(x, StringComparison.CurrentCultureIgnoreCase)); + var redirectAllowedUrls = new List(); + foreach (var redirectAllowedUrl in Options.RedirectAllowedUrls) + { + redirectAllowedUrls.Add((await NormalizeUrlAsync(redirectAllowedUrl))!); + } + var allow = redirectAllowedUrls.Any(x => url.StartsWith(x, StringComparison.CurrentCultureIgnoreCase)); if (!allow) { Logger.LogError($"Invalid RedirectUrl: {url}, Use {nameof(AppUrlProvider)} to configure it!"); @@ -59,7 +64,7 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency { return url; } - + return await ReplacePlaceHoldersAsync(url!); } @@ -117,15 +122,15 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency return url; } - private async Task GetCurrentTenantNameAsync() + protected virtual async Task GetCurrentTenantNameAsync() { if (CurrentTenant.Id.HasValue && CurrentTenant.Name.IsNullOrEmpty()) { var tenantConfiguration = await TenantStore.FindAsync(CurrentTenant.Id.Value); - return tenantConfiguration!.Name; + return tenantConfiguration?.Name; } - return CurrentTenant.Name!; + return CurrentTenant.Name; } public Task GetUrlOrNullAsync([NotNull] string appName, string? urlName = null) diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs index 4e800a524e..755cdfacaf 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs @@ -9,7 +9,7 @@ public interface IAppUrlProvider Task GetUrlOrNullAsync([NotNull] string appName, string? urlName = null); - bool IsRedirectAllowedUrl(string url); - + Task IsRedirectAllowedUrlAsync(string url); + Task NormalizeUrlAsync(string? url); } diff --git a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs index 53ca25e7c7..a6fc63240d 100644 --- a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs +++ b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs @@ -35,7 +35,9 @@ public class AppUrlProvider_Tests : AbpIntegratedTest options.RedirectAllowedUrls.AddRange(new List() { "https://wwww.volosoft.com", - "https://wwww.aspnetzero.com" + "https://wwww.aspnetzero.com", + "https://{{tenantName}}.abp.io", + "https://{{tenantId}}.abp.io" }); options.Applications["BLAZOR"].RootUrl = "https://{{tenantId}}.abp.io"; @@ -87,9 +89,28 @@ public class AppUrlProvider_Tests : AbpIntegratedTest } [Fact] - public void IsRedirectAllowedUrl() + public async Task IsRedirectAllowedUrlAsync() { - _appUrlProvider.IsRedirectAllowedUrl("https://community.abp.io").ShouldBeFalse(); - _appUrlProvider.IsRedirectAllowedUrl("https://wwww.volosoft.com").ShouldBeTrue(); + (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://community.abp.io")).ShouldBeFalse(); + (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://wwww.volosoft.com")).ShouldBeTrue(); + + using (_currentTenant.Change(null)) + { + (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://www.abp.io")).ShouldBeFalse(); + (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://abp.io")).ShouldBeTrue(); + } + + using (_currentTenant.Change(Guid.NewGuid(), "community")) + { + (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://community.abp.io")).ShouldBeTrue(); + (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://community2.abp.io")).ShouldBeFalse(); + } + + var tenantId = Guid.NewGuid(); + using (_currentTenant.Change(tenantId)) + { + (await _appUrlProvider.IsRedirectAllowedUrlAsync($"https://{tenantId}.abp.io")).ShouldBeTrue(); + (await _appUrlProvider.IsRedirectAllowedUrlAsync($"https://{Guid.NewGuid()}.abp.io")).ShouldBeFalse(); + } } } From 12ee5cf88152668b36510179275904089c189556 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 18 Dec 2023 14:35:02 +0800 Subject: [PATCH 02/88] Update related method to async. --- .../Mvc/UI/RazorPages/AbpPageModel.cs | 22 +++++++++---------- .../Volo/Abp/AspNetCore/Mvc/AbpController.cs | 21 +++++++++--------- .../ChallengeAccountController.cs | 22 +++++++++---------- .../IdentityServerSupportedLoginModel.cs | 2 +- .../Pages/Account/LoggedOut.cshtml.cs | 18 +++++++-------- .../Pages/Account/Login.cshtml.cs | 6 ++--- .../Pages/Account/Logout.cshtml.cs | 2 +- .../Pages/Account/Manage.cshtml.cs | 2 +- .../ResetPasswordConfirmation.cshtml.cs | 6 ++--- 9 files changed, 51 insertions(+), 50 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs index 907e462526..2a6623863b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo/Abp/AspNetCore/Mvc/UI/RazorPages/AbpPageModel.cs @@ -122,40 +122,40 @@ public abstract class AbpPageModel : PageModel return localizer; } - protected RedirectResult RedirectSafely(string returnUrl, string? returnUrlHash = null) + protected virtual async Task RedirectSafelyAsync(string returnUrl, string? returnUrlHash = null) { - return Redirect(GetRedirectUrl(returnUrl, returnUrlHash)); + return Redirect(await GetRedirectUrlAsync(returnUrl, returnUrlHash)); } - protected virtual string GetRedirectUrl(string returnUrl, string? returnUrlHash = null) + protected virtual async Task GetRedirectUrlAsync(string returnUrl, string? returnUrlHash = null) { - returnUrl = NormalizeReturnUrl(returnUrl); + returnUrl = await NormalizeReturnUrlAsync(returnUrl); if (!returnUrlHash.IsNullOrWhiteSpace()) { - returnUrl = returnUrl + returnUrlHash; + returnUrl += returnUrlHash; } return returnUrl; } - private string NormalizeReturnUrl(string returnUrl) + protected virtual async Task NormalizeReturnUrlAsync(string returnUrl) { if (returnUrl.IsNullOrEmpty()) { - return GetAppHomeUrl(); + return await GetAppHomeUrlAsync(); } - if (Url.IsLocalUrl(returnUrl) || AppUrlProvider.IsRedirectAllowedUrl(returnUrl)) + if (Url.IsLocalUrl(returnUrl) || await AppUrlProvider.IsRedirectAllowedUrlAsync(returnUrl)) { return returnUrl; } - return GetAppHomeUrl(); + return await GetAppHomeUrlAsync(); } - protected virtual string GetAppHomeUrl() + protected virtual Task GetAppHomeUrlAsync() { - return "~/"; //TODO: ??? + return Task.FromResult("~/"); //TODO: ??? } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs index 0a3f042784..5513667648 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; @@ -104,14 +105,14 @@ public abstract class AbpController : Controller, IAvoidDuplicateCrossCuttingCon return localizer; } - protected virtual RedirectResult RedirectSafely(string returnUrl, string? returnUrlHash = null) + protected virtual async Task RedirectSafelyAsync(string returnUrl, string? returnUrlHash = null) { - return Redirect(GetRedirectUrl(returnUrl, returnUrlHash)); + return Redirect(await GetRedirectUrlAsync(returnUrl, returnUrlHash)); } - protected virtual string GetRedirectUrl(string returnUrl, string? returnUrlHash = null) + protected virtual async Task GetRedirectUrlAsync(string returnUrl, string? returnUrlHash = null) { - returnUrl = NormalizeReturnUrl(returnUrl); + returnUrl = await NormalizeReturnUrlAsync(returnUrl); if (!returnUrlHash.IsNullOrWhiteSpace()) { @@ -121,23 +122,23 @@ public abstract class AbpController : Controller, IAvoidDuplicateCrossCuttingCon return returnUrl; } - protected virtual string NormalizeReturnUrl(string returnUrl) + protected virtual async Task NormalizeReturnUrlAsync(string returnUrl) { if (returnUrl.IsNullOrEmpty()) { - return GetAppHomeUrl(); + return await GetAppHomeUrlAsync(); } - if (Url.IsLocalUrl(returnUrl) || AppUrlProvider.IsRedirectAllowedUrl(returnUrl)) + if (Url.IsLocalUrl(returnUrl) || await AppUrlProvider.IsRedirectAllowedUrlAsync(returnUrl)) { return returnUrl; } - return GetAppHomeUrl(); + return await GetAppHomeUrlAsync(); } - protected virtual string GetAppHomeUrl() + protected virtual Task GetAppHomeUrlAsync() { - return Url.Content("~/"); + return Task.FromResult(Url.Content("~/")); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs index 36b941cd4a..0c9efbc195 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Authentication/ChallengeAccountController.cs @@ -22,38 +22,38 @@ public abstract class ChallengeAccountController : AbpController } [HttpGet] - public virtual ActionResult Login(string returnUrl = "", string returnUrlHash = "") + public virtual async Task LoginAsync(string returnUrl = "", string returnUrlHash = "") { if (CurrentUser.IsAuthenticated) { - return RedirectSafely(returnUrl, returnUrlHash); + return await RedirectSafelyAsync(returnUrl, returnUrlHash); } - return Challenge(new AuthenticationProperties { RedirectUri = GetRedirectUrl(returnUrl, returnUrlHash) }, ChallengeAuthenticationSchemas); + return Challenge(new AuthenticationProperties { RedirectUri = await GetRedirectUrlAsync(returnUrl, returnUrlHash) }, ChallengeAuthenticationSchemas); } [HttpGet] - public virtual async Task Logout(string returnUrl = "", string returnUrlHash = "") + public virtual async Task LogoutAsync(string returnUrl = "", string returnUrlHash = "") { await HttpContext.SignOutAsync(); if (HttpContext.User.Identity?.AuthenticationType == AuthenticationType) { - return RedirectSafely(returnUrl, returnUrlHash); + return await RedirectSafelyAsync(returnUrl, returnUrlHash); } - return SignOut(new AuthenticationProperties { RedirectUri = GetRedirectUrl(returnUrl, returnUrlHash) }, ChallengeAuthenticationSchemas); + return SignOut(new AuthenticationProperties { RedirectUri = await GetRedirectUrlAsync(returnUrl, returnUrlHash) }, ChallengeAuthenticationSchemas); } [HttpGet] - public virtual async Task FrontChannelLogout(string sid) + public virtual async Task FrontChannelLogoutAsync(string sid) { if (User.Identity != null && User.Identity.IsAuthenticated) { var currentSid = User.FindFirst("sid")?.Value ?? string.Empty; if (string.Equals(currentSid, sid, StringComparison.Ordinal)) { - await Logout(); + await LogoutAsync(); } } @@ -61,7 +61,7 @@ public abstract class ChallengeAccountController : AbpController } [HttpGet] - public virtual Task AccessDenied() + public virtual Task AccessDeniedAsync() { return Task.FromResult(Challenge( new AuthenticationProperties @@ -78,9 +78,9 @@ public abstract class ChallengeAccountController : AbpController } [HttpGet] - public virtual async Task Challenge(string returnUrl = "", string returnUrlHash = "") + public virtual async Task ChallengeAsync(string returnUrl = "", string returnUrlHash = "") { await HttpContext.SignOutAsync(); - return Challenge(new AuthenticationProperties { RedirectUri = GetRedirectUrl(returnUrl, returnUrlHash) }, ChallengeAuthenticationSchemas); + return Challenge(new AuthenticationProperties { RedirectUri = await GetRedirectUrlAsync(returnUrl, returnUrlHash) }, ChallengeAuthenticationSchemas); } } diff --git a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs index d60c90ce60..0a2aadd64a 100644 --- a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs +++ b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Pages/Account/IdentityServerSupportedLoginModel.cs @@ -177,7 +177,7 @@ public class IdentityServerSupportedLoginModel : LoginModel // Clear the dynamic claims cache. await IdentityDynamicClaimsPrincipalContributorCache.ClearAsync(user.Id, user.TenantId); - return RedirectSafely(ReturnUrl, ReturnUrlHash); + return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); } public override async Task OnPostExternalLogin(string provider) diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.cshtml.cs index efa1a7a618..cafa4fc1ea 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.cshtml.cs @@ -18,28 +18,28 @@ public class LoggedOutModel : AccountPageModel [BindProperty(SupportsGet = true)] public string PostLogoutRedirectUri { get; set; } - public virtual Task OnGetAsync() + public virtual async Task OnGetAsync() { - NormalizeUrl(); - return Task.FromResult(Page()); + await NormalizeUrlAsync(); + return Page(); } - public virtual Task OnPostAsync() + public virtual async Task OnPostAsync() { - NormalizeUrl(); - return Task.FromResult(Page()); + await NormalizeUrlAsync(); + return Page(); } - protected virtual void NormalizeUrl() + protected virtual async Task NormalizeUrlAsync() { if (!PostLogoutRedirectUri.IsNullOrWhiteSpace()) { - PostLogoutRedirectUri = Url.Content(GetRedirectUrl(PostLogoutRedirectUri)); + PostLogoutRedirectUri = Url.Content(await GetRedirectUrlAsync(PostLogoutRedirectUri)); } if(!SignOutIframeUrl.IsNullOrWhiteSpace()) { - SignOutIframeUrl = Url.Content(GetRedirectUrl(SignOutIframeUrl)); + SignOutIframeUrl = Url.Content(await GetRedirectUrlAsync(SignOutIframeUrl)); } } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs index 7b7d4a2b94..6ab8350b60 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml.cs @@ -143,7 +143,7 @@ public class LoginModel : AccountPageModel // Clear the dynamic claims cache. await IdentityDynamicClaimsPrincipalContributorCache.ClearAsync(user.Id, user.TenantId); - return RedirectSafely(ReturnUrl, ReturnUrlHash); + return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); } /// @@ -237,7 +237,7 @@ public class LoginModel : AccountPageModel await IdentityDynamicClaimsPrincipalContributorCache.ClearAsync(user.Id, user.TenantId); } - return RedirectSafely(returnUrl, returnUrlHash); + return await RedirectSafelyAsync(returnUrl, returnUrlHash); } //TODO: Handle other cases for result! @@ -279,7 +279,7 @@ public class LoginModel : AccountPageModel // Clear the dynamic claims cache. await IdentityDynamicClaimsPrincipalContributorCache.ClearAsync(user.Id, user.TenantId); - return RedirectSafely(returnUrl, returnUrlHash); + return await RedirectSafelyAsync(returnUrl, returnUrlHash); } protected virtual async Task ReplaceEmailToUsernameOfInputIfNeeds() diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Logout.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Logout.cshtml.cs index ce1ecd0e82..e8980cc99f 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Logout.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Logout.cshtml.cs @@ -27,7 +27,7 @@ public class LogoutModel : AccountPageModel await SignInManager.SignOutAsync(); if (ReturnUrl != null) { - return RedirectSafely(ReturnUrl, ReturnUrlHash); + return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); } if (await SettingProvider.IsTrueAsync(AccountSettingNames.EnableLocalLogin)) diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs index d669ec41a1..415a6851b6 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs @@ -38,7 +38,7 @@ public class ManageModel : AccountPageModel { if (!Url.IsLocalUrl(ReturnUrl) && !ReturnUrl.StartsWith(UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase).RemovePostFix("/")) && - !AppUrlProvider.IsRedirectAllowedUrl(ReturnUrl)) + !await AppUrlProvider.IsRedirectAllowedUrlAsync(ReturnUrl)) { ReturnUrl = null; } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/ResetPasswordConfirmation.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/ResetPasswordConfirmation.cshtml.cs index 47eff4080d..a65754b1c0 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/ResetPasswordConfirmation.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/ResetPasswordConfirmation.cshtml.cs @@ -14,10 +14,10 @@ public class ResetPasswordConfirmationModel : AccountPageModel [BindProperty(SupportsGet = true)] public string ReturnUrlHash { get; set; } - public virtual Task OnGetAsync() + public virtual async Task OnGetAsync() { - ReturnUrl = GetRedirectUrl(ReturnUrl, ReturnUrlHash); + ReturnUrl = await GetRedirectUrlAsync(ReturnUrl, ReturnUrlHash); - return Task.FromResult(Page()); + return Page(); } } From 30ba1b59e070157033be516608d127b544c80739 Mon Sep 17 00:00:00 2001 From: honurbu Date: Wed, 27 Dec 2023 11:03:56 +0300 Subject: [PATCH 03/88] TestimonialSend message added abp.io en.json --- .../AbpIoLocalization/Www/Localization/Resources/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index 7c79878cf5..47404c4142 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -462,7 +462,8 @@ "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must be sign in", "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", "ThisExtensionIsNotAllowedForImage": "This extension is not allowed.", - "FileUploadError": "File upload error" + "FileUploadError": "File upload error", + "TestimonialSend": "Thank you! We've received your testimonial. We'll review and take the next step soon." } } From f06b1d7b6cbc16874532f4458c6cef691c5b00bb Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Wed, 27 Dec 2023 11:44:01 +0300 Subject: [PATCH 04/88] CLI: Add `switch-to-prerc` command. --- .../Volo/Abp/Cli/AbpCliCoreModule.cs | 1 + .../Abp/Cli/Commands/SwitchToPreRcCommand.cs | 45 +++++++ .../ProjectModification/NpmPackagesUpdater.cs | 33 ++++-- .../PackagePreviewSwitcher.cs | 110 +++++++++++++----- 4 files changed, 147 insertions(+), 42 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index e7289b7edd..3dbe72f014 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -56,6 +56,7 @@ public class AbpCliCoreModule : AbpModule options.Commands[SwitchToPreviewCommand.Name] = typeof(SwitchToPreviewCommand); options.Commands[SwitchToStableCommand.Name] = typeof(SwitchToStableCommand); options.Commands[SwitchToNightlyCommand.Name] = typeof(SwitchToNightlyCommand); + options.Commands[SwitchToPreRcCommand.Name] = typeof(SwitchToPreRcCommand); options.Commands[SwitchToLocal.Name] = typeof(SwitchToLocal); options.Commands[TranslateCommand.Name] = typeof(TranslateCommand); options.Commands[BuildCommand.Name] = typeof(BuildCommand); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs new file mode 100644 index 0000000000..078a593f18 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs @@ -0,0 +1,45 @@ +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.ProjectModification; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands; + +public class SwitchToPreRcCommand : IConsoleCommand, ITransientDependency +{ + public const string Name = "switch-to-prerc"; + + private readonly PackagePreviewSwitcher _packagePreviewSwitcher; + + public SwitchToPreRcCommand(PackagePreviewSwitcher packagePreviewSwitcher) + { + _packagePreviewSwitcher = packagePreviewSwitcher; + } + + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + await _packagePreviewSwitcher.SwitchToPreRc(commandLineArgs); + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(" abp switch-to-prerc [options]"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine("-d|--directory"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Switches npm packages to pre-rc preview ABP version."; + } +} \ No newline at end of file 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 d016fad655..e9964ce947 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 @@ -53,7 +53,7 @@ public class NpmPackagesUpdater : ITransientDependency public async Task Update(string rootDirectory, bool includePreviews = false, bool includeReleaseCandidates = false, - bool switchToStable = false, string version = null) + bool switchToStable = false, string version = null, bool includePreRc = false) { var fileList = _packageJsonFileFinder.Find(rootDirectory); @@ -66,7 +66,7 @@ public class NpmPackagesUpdater : ITransientDependency foreach (var file in fileList) { - if (includePreviews) + if (includePreviews || includePreRc) { await CreateNpmrcFileAsync(Path.GetDirectoryName(file)); } @@ -82,7 +82,9 @@ public class NpmPackagesUpdater : ITransientDependency { var updated = await UpdatePackagesInFile(file, includePreviews, includeReleaseCandidates, switchToStable, - version); + version, + includePreRc); + packagesUpdated.TryAdd(file, updated); } @@ -162,7 +164,8 @@ public class NpmPackagesUpdater : ITransientDependency bool includePreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false, - string specifiedVersion = null) + string specifiedVersion = null, + bool includePreRc = false) { var packagesUpdated = false; var fileContent = File.ReadAllText(filePath); @@ -177,7 +180,7 @@ public class NpmPackagesUpdater : ITransientDependency foreach (var abpPackage in abpPackages) { var updated = await TryUpdatingPackage(filePath, abpPackage, includePreviews, includeReleaseCandidates, - switchToStable, specifiedVersion); + switchToStable, specifiedVersion, includePreRc); if (updated) { @@ -198,7 +201,8 @@ public class NpmPackagesUpdater : ITransientDependency bool includePreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false, - string specifiedVersion = null) + string specifiedVersion = null, + bool includePreRc = false) { var currentVersion = (string)package.Value; @@ -221,7 +225,11 @@ public class NpmPackagesUpdater : ITransientDependency } else { - if ((includePreviews || + if (includePreRc && !includeReleaseCandidates) + { + version = await GetLatestVersion(package, includePreRc: true, workingDirectory: filePath.RemovePostFix("package.json")); + } + else if ((includePreviews || (!switchToStable && (currentVersion != null && currentVersion.Contains("-preview")))) && !includeReleaseCandidates) { @@ -262,9 +270,10 @@ public class NpmPackagesUpdater : ITransientDependency return version.Split("-", StringSplitOptions.RemoveEmptyEntries).Length > 1; } - protected virtual async Task GetLatestVersion(JProperty package, bool includeReleaseCandidates = false, bool includePreviews = false, string workingDirectory = null) + protected virtual async Task GetLatestVersion(JProperty package, bool includeReleaseCandidates = false, bool includePreviews = false, string workingDirectory = null, bool includePreRc = false) { - var key = package.Name + (includePreviews ? "(preview)" : string.Empty); + var postfix = includePreviews ? "(preview)" : (includePreRc ? "(prerc)" : string.Empty); + var key = package.Name + postfix; if (_fileVersionStorage.ContainsKey(key)) { @@ -275,7 +284,11 @@ public class NpmPackagesUpdater : ITransientDependency string newVersion = string.Empty; - if (includePreviews) + if (includePreRc) + { + newVersion = versionList.FirstOrDefault(v => v.Contains("-prerc")); + } + else if (includePreviews) { newVersion = versionList.FirstOrDefault(v => v.Contains("-preview")); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs index 9e65595182..2b9a595742 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs @@ -44,6 +44,52 @@ public class PackagePreviewSwitcher : ITransientDependency await SwitchProjectsToPreview(projectPaths); } } + + public async Task SwitchToStable(CommandLineArgs commandLineArgs) + { + var solutionPaths = GetSolutionPaths(commandLineArgs); + + if (solutionPaths.Any()) + { + await SwitchSolutionsToStable(solutionPaths); + } + else + { + var projectPaths = GetProjectPaths(commandLineArgs); + + await SwitchProjectsToStable(projectPaths); + } + } + + public async Task SwitchToNightlyPreview(CommandLineArgs commandLineArgs) + { + var solutionPaths = GetSolutionPaths(commandLineArgs); + + if (solutionPaths.Any()) + { + await SwitchSolutionsToNightlyPreview(solutionPaths); + } + else + { + var projectPaths = GetProjectPaths(commandLineArgs); + + await SwitchProjectsToNightlyPreview(projectPaths); + } + } + + public async Task SwitchToPreRc(CommandLineArgs commandLineArgs) + { + var solutionPaths = GetSolutionPaths(commandLineArgs); + + if (solutionPaths.Any()) + { + await SwitchNpmPackageVersionsOfSolutionsToPreRc(solutionPaths); + } + else + { + await SwitchNpmPackageVersionsOfProjectsToPreRc(GetProjectPaths(commandLineArgs)); + } + } private async Task SwitchProjectsToPreview(List projects) { @@ -88,22 +134,6 @@ public class PackagePreviewSwitcher : ITransientDependency } } - public async Task SwitchToStable(CommandLineArgs commandLineArgs) - { - var solutionPaths = GetSolutionPaths(commandLineArgs); - - if (solutionPaths.Any()) - { - await SwitchSolutionsToStable(solutionPaths); - } - else - { - var projectPaths = GetProjectPaths(commandLineArgs); - - await SwitchProjectsToStable(projectPaths); - } - } - private async Task SwitchProjectsToStable(List projects) { foreach (var project in projects) @@ -156,22 +186,6 @@ public class PackagePreviewSwitcher : ITransientDependency } } - public async Task SwitchToNightlyPreview(CommandLineArgs commandLineArgs) - { - var solutionPaths = GetSolutionPaths(commandLineArgs); - - if (solutionPaths.Any()) - { - await SwitchSolutionsToNightlyPreview(solutionPaths); - } - else - { - var projectPaths = GetProjectPaths(commandLineArgs); - - await SwitchProjectsToNightlyPreview(projectPaths); - } - } - private async Task SwitchProjectsToNightlyPreview(List projects) { foreach (var project in projects) @@ -220,6 +234,38 @@ public class PackagePreviewSwitcher : ITransientDependency } } } + + private async Task SwitchNpmPackageVersionsOfProjectsToPreRc(List projects) + { + foreach (var project in projects) + { + var folder = Path.GetDirectoryName(project); + + await _npmPackagesUpdater.Update( + folder, + includePreRc: true); + } + } + + private async Task SwitchNpmPackageVersionsOfSolutionsToPreRc(List solutionPaths) + { + foreach (var solutionPath in solutionPaths) + { + var solutionFolder = Path.GetDirectoryName(solutionPath); + var solutionAngularFolder = GetSolutionAngularFolder(solutionFolder); + + await _npmPackagesUpdater.Update( + solutionFolder, + includePreRc: true); + + if (solutionAngularFolder != null) + { + await _npmPackagesUpdater.Update( + solutionAngularFolder, + includePreRc: true); + } + } + } private List GetSolutionPaths(CommandLineArgs commandLineArgs) { From 6e5a97d90331e90e10130e50db3fe8f79b7dd45e Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 27 Dec 2023 11:59:46 +0300 Subject: [PATCH 05/88] Update SwitchToPreRcCommand.cs --- .../Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs index 078a593f18..5e1de3af4a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchToPreRcCommand.cs @@ -40,6 +40,6 @@ public class SwitchToPreRcCommand : IConsoleCommand, ITransientDependency public string GetShortDescription() { - return "Switches npm packages to pre-rc preview ABP version."; + return "Switches npm packages to pre-rc ABP version."; } -} \ No newline at end of file +} From 4d798c24f2a02e2ac26d5ffe303301e7170b8615 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 27 Dec 2023 21:25:21 +0800 Subject: [PATCH 06/88] Add `ValidateUserNameAsync` & `GetRandomUserNameAsync` to `IdentityUserManager`. --- .../Volo/Abp/Identity/IdentityUserManager.cs | 41 ++++++++++++++++- .../Abp/Identity/IdentityUserManager_Tests.cs | 44 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index f8bfe5b603..fce656cc09 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -82,7 +82,7 @@ public class IdentityUserManager : UserManager, IDomainService return await CreateAsync(user); } - + public async override Task DeleteAsync(IdentityUser user) { user.Claims.Clear(); @@ -397,4 +397,43 @@ public class IdentityUserManager : UserManager, IDomainService await UserRepository.UpdateOrganizationAsync(sourceOrganizationId, targetOrganizationId, CancellationToken); } + + public virtual async Task ValidateUserNameAsync(string userName, Guid? userId = null) + { + if (string.IsNullOrWhiteSpace(userName)) + { + return false; + } + + if (!string.IsNullOrEmpty(Options.User.AllowedUserNameCharacters) && userName.Any(c => !Options.User.AllowedUserNameCharacters.Contains(c))) + { + return false; + } + + var owner = await FindByNameAsync(userName); + if (owner != null && owner.Id != userId) + { + return false; + } + + return true; + } + + public virtual Task GetRandomUserNameAsync(int length) + { + var allowedUserNameCharacters = Options.User.AllowedUserNameCharacters; + if (allowedUserNameCharacters.IsNullOrWhiteSpace()) + { + allowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+"; + } + + var randomUserName = string.Empty; + var random = new Random(); + while (randomUserName.Length < length) + { + randomUserName += allowedUserNameCharacters[random.Next(0, allowedUserNameCharacters.Length)]; + } + + return Task.FromResult(randomUserName); + } } diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs index ec29d3d29a..f5b648516e 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Security.Claims; +using System.Text.RegularExpressions; using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection; @@ -378,6 +379,49 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase } } + [Fact] + public async Task ValidateUserNameAsync() + { + var result = await _identityUserManager.ValidateUserNameAsync("M_y+User-001@abp.io"); + result.ShouldBeTrue(); + + var user = CreateRandomUser(); + (await _identityUserManager.CreateAsync(user)).CheckErrors(); + + result = await _identityUserManager.ValidateUserNameAsync(user.UserName, user.Id); + result.ShouldBeTrue(); + + result = await _identityUserManager.ValidateUserNameAsync(user.UserName); + result.ShouldBeFalse(); + + result = await _identityUserManager.ValidateUserNameAsync("无效的字符"); + result.ShouldBeFalse(); + } + + [Fact] + public async Task GetRandomUserNameAsync() + { + _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+"; + var username = await _identityUserManager.GetRandomUserNameAsync(15); + username.Length.ShouldBe(15); + username.All(c => _identityUserManager.Options.User.AllowedUserNameCharacters.Contains(c)).ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz0123456789"; + username = await _identityUserManager.GetRandomUserNameAsync(15); + username.Length.ShouldBe(15); + username.All(c => _identityUserManager.Options.User.AllowedUserNameCharacters.Contains(c)).ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = "0123456789"; + username = await _identityUserManager.GetRandomUserNameAsync(15); + username.Length.ShouldBe(15); + username.All(c => _identityUserManager.Options.User.AllowedUserNameCharacters.Contains(c)).ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = null!; + username = await _identityUserManager.GetRandomUserNameAsync(15); + username.Length.ShouldBe(15); + username.All(c => "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+".Contains(c)).ShouldBeTrue(); + } + private async Task CreateRandomDefaultRoleAsync() { await _identityRoleRepository.InsertAsync( From 75c5d729704b5720f6d1871a979aab19ba70dee5 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 28 Dec 2023 10:31:52 +0800 Subject: [PATCH 07/88] Add `GetUserNameFromEmailAsync` to `IdentityUserManager`. --- .../Pages/Account/AccountPageModel.cs | 19 ------- .../Pages/Account/Register.cshtml.cs | 4 +- .../Volo/Abp/Identity/IdentityUserManager.cs | 53 +++++++++++++++++++ .../Abp/Identity/IdentityUserManager_Tests.cs | 29 ++++++++++ 4 files changed, 84 insertions(+), 21 deletions(-) diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs index f229253c4a..ebd556f8e2 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/AccountPageModel.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; using Volo.Abp.Account.Localization; @@ -55,22 +54,4 @@ public abstract class AccountPageModel : AbpPageModel return exception.Message; } - - protected virtual async Task GetUserNameFromEmail(string email) - { - var userName = email.Split('@')[0]; - var existUser = await UserManager.FindByNameAsync(userName); - while (existUser != null) - { - var randomUserName = userName + RandomHelper.GetRandom(1000, 9999); - existUser = await UserManager.FindByNameAsync(randomUserName); - if (existUser == null) - { - userName = randomUserName; - break; - } - } - - return userName; - } } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs index 9e0a2c191b..c481715a16 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Register.cshtml.cs @@ -102,7 +102,7 @@ public class RegisterModel : AccountPageModel return; } - var userName = await GetUserNameFromEmail(emailClaim.Value); + var userName = await UserManager.GetUserNameFromEmailAsync(emailClaim.Value); Input = new PostInput { UserName = userName, EmailAddress = emailClaim.Value }; } } @@ -128,7 +128,7 @@ public class RegisterModel : AccountPageModel } if (Input.UserName.IsNullOrWhiteSpace()) { - Input.UserName = await GetUserNameFromEmail(Input.EmailAddress); + Input.UserName = await UserManager.GetUserNameFromEmailAsync(Input.EmailAddress); } await RegisterExternalUserAsync(externalLoginInfo, Input.UserName, Input.EmailAddress); } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index fce656cc09..3e116aaed9 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -436,4 +436,57 @@ public class IdentityUserManager : UserManager, IDomainService return Task.FromResult(randomUserName); } + + public virtual async Task GetUserNameFromEmailAsync(string email) + { + var userName = email.Split('@')[0]; + if (!Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() && !userName.All(Options.User.AllowedUserNameCharacters.Contains)) + { + // The user name contains not allowed characters. We will use the email address as user name. + return email; + } + + if (await ValidateUserNameAsync(userName)) + { + return userName; + } + + const int maxTryCount = 10; + var tryCount = 0; + + if (Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() || "0123456789".All(Options.User.AllowedUserNameCharacters.Contains)) + { + var randomUserName = userName; + var isUserNameValid = await ValidateUserNameAsync(randomUserName); + while (tryCount < maxTryCount) + { + randomUserName = userName + RandomHelper.GetRandom(1000, 9999); + isUserNameValid = await ValidateUserNameAsync(randomUserName); + if (isUserNameValid) + { + return randomUserName; + } + tryCount++; + } + if (isUserNameValid) + { + return randomUserName; + } + } + + tryCount = 0; + while (tryCount < maxTryCount) + { + var randomUserName = userName + await GetRandomUserNameAsync(4); + var isUserNameValid = await ValidateUserNameAsync(randomUserName); + if (isUserNameValid) + { + return randomUserName; + } + tryCount++; + } + + // We could not find a valid user name so we are returning the email address. + return email; + } } diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs index f5b648516e..c90a84e0e0 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs @@ -5,6 +5,7 @@ using System.Security.Claims; using System.Text.RegularExpressions; using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; @@ -422,6 +423,34 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase username.All(c => "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+".Contains(c)).ShouldBeTrue(); } + [Fact] + public async Task GetUserNameFromEmailAsync() + { + _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz0123456789"; + var username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); + username.Length.ShouldBe(9); //admin and random 4 numbers + username.ShouldContain("admin"); + Regex.IsMatch(username, @"\d{4}$").ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz"; + username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); + username.Length.ShouldBe(9); //admin and random 4 characters + username.ShouldContain("admin"); + Regex.IsMatch(username, @"[a-z]{4}$").ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + username = await _identityUserManager.GetUserNameFromEmailAsync("ADMIN@abp.io"); + username.Length.ShouldBe(9); //admin and random 4 characters + username.ShouldContain("ADMIN"); + Regex.IsMatch(username, @"[A-Z]{4}$").ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = null!; + username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); + username.Length.ShouldBe(9); //admin and random 4 numbers + username.ShouldContain("admin"); + Regex.IsMatch(username, @"[0-9]{4}$").ShouldBeTrue(); + } + private async Task CreateRandomDefaultRoleAsync() { await _identityRoleRepository.InsertAsync( From 1d2375d5c075fc20387aa1abb8f9e7f44bcc46e7 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 28 Dec 2023 15:46:33 +0800 Subject: [PATCH 08/88] Handle the case when email contains invalid chars. --- .../Volo/Abp/Identity/IdentityUserManager.cs | 66 ++++++++++--------- .../Abp/Identity/IdentityUserManager_Tests.cs | 7 +- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index 3e116aaed9..f2f347944c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -439,54 +439,58 @@ public class IdentityUserManager : UserManager, IDomainService public virtual async Task GetUserNameFromEmailAsync(string email) { + const int maxTryCount = 20; + var tryCount = 0; + var userName = email.Split('@')[0]; + if (!Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() && !userName.All(Options.User.AllowedUserNameCharacters.Contains)) { - // The user name contains not allowed characters. We will use the email address as user name. - return email; + // The username contains not allowed characters. So, we are generating a random username. + do + { + var randomUserName = await GetRandomUserNameAsync(userName.Length); + if ( await ValidateUserNameAsync(randomUserName)) + { + return randomUserName; + } + tryCount++; + } while (tryCount < maxTryCount); } - - if (await ValidateUserNameAsync(userName)) + else if (await ValidateUserNameAsync(userName)) { + // The username is valid. return userName; } - - const int maxTryCount = 10; - var tryCount = 0; - - if (Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() || "0123456789".All(Options.User.AllowedUserNameCharacters.Contains)) + else if (Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() || "0123456789".All(Options.User.AllowedUserNameCharacters.Contains)) { - var randomUserName = userName; - var isUserNameValid = await ValidateUserNameAsync(randomUserName); - while (tryCount < maxTryCount) + // The AllowedUserNameCharacters includes numbers. So, we are generating 4 random numbers and appending to the username. + tryCount = 0; + do { - randomUserName = userName + RandomHelper.GetRandom(1000, 9999); - isUserNameValid = await ValidateUserNameAsync(randomUserName); - if (isUserNameValid) + var randomUserName = userName + RandomHelper.GetRandom(1000, 9999); + if ( await ValidateUserNameAsync(randomUserName)) { return randomUserName; } tryCount++; - } - if (isUserNameValid) - { - return randomUserName; - } + } while (tryCount < maxTryCount); } - - tryCount = 0; - while (tryCount < maxTryCount) + else { - var randomUserName = userName + await GetRandomUserNameAsync(4); - var isUserNameValid = await ValidateUserNameAsync(randomUserName); - if (isUserNameValid) + tryCount = 0; + do { - return randomUserName; - } - tryCount++; + // The AllowedUserNameCharacters does not include numbers. So, we are generating 4 random characters and appending to the username. + var randomUserName = userName + await GetRandomUserNameAsync(4); + if (await ValidateUserNameAsync(randomUserName)) + { + return randomUserName; + } + tryCount++; + } while (tryCount < maxTryCount); } - // We could not find a valid user name so we are returning the email address. - return email; + throw new AbpException($"Could not get a valid user name for the given email address: {email}, allowed characters: {Options.User.AllowedUserNameCharacters}, tried {maxTryCount} times."); } } diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs index c90a84e0e0..52f50fba1d 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs @@ -427,7 +427,12 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase public async Task GetUserNameFromEmailAsync() { _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz0123456789"; - var username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); + var username = await _identityUserManager.GetUserNameFromEmailAsync("Yönetici@abp.io"); + username.Length.ShouldBe("Yönetici".Length); //random username + username.All(c => "abcdefghijklmnopqrstuvwxyz0123456789".Contains(c)).ShouldBeTrue(); + + _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz0123456789"; + username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); username.Length.ShouldBe(9); //admin and random 4 numbers username.ShouldContain("admin"); Regex.IsMatch(username, @"\d{4}$").ShouldBeTrue(); From c1f129b96c4fcdd1f6f5ac93cac59670e7bd982e Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 28 Dec 2023 16:11:11 +0800 Subject: [PATCH 09/88] Use `AbpIdentityResultException` to replace `AbpException`. --- .../Volo/Abp/Identity/IdentityUserManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index f2f347944c..33c3c7baaf 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -491,6 +491,7 @@ public class IdentityUserManager : UserManager, IDomainService } while (tryCount < maxTryCount); } - throw new AbpException($"Could not get a valid user name for the given email address: {email}, allowed characters: {Options.User.AllowedUserNameCharacters}, tried {maxTryCount} times."); + Logger.LogError($"Could not get a valid user name for the given email address: {email}, allowed characters: {Options.User.AllowedUserNameCharacters}, tried {maxTryCount} times."); + throw new AbpIdentityResultException(IdentityResult.Failed(new IdentityErrorDescriber().InvalidUserName(userName))); } } From ae3eb1468e1e4710dbf907869aa308ea4eb169cc Mon Sep 17 00:00:00 2001 From: ahmetfarukulu Date: Fri, 29 Dec 2023 08:25:47 +0300 Subject: [PATCH 10/88] Cli update command version null check added --- .../Volo/Abp/Cli/Commands/UpdateCommand.cs | 4 +-- .../VoloNugetPackagesVersionUpdater.cs | 29 +++++++++++-------- 2 files changed, 19 insertions(+), 14 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 6df7418e9d..35d23e8f21 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 @@ -79,7 +79,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency await _nugetPackagesVersionUpdater.UpdateSolutionAsync(solution, checkAll: checkAll, version: version); - Logger.LogInformation($"Volo packages are updated in {solutionName} solution."); + Logger.LogInformation("Volo packages are updated in {SolutionName} solution", solutionName); } return; } @@ -92,7 +92,7 @@ public class UpdateCommand : IConsoleCommand, ITransientDependency await _nugetPackagesVersionUpdater.UpdateProjectAsync(project, checkAll: checkAll, version: version); - Logger.LogInformation($"Volo packages are updated in {projectName} project."); + Logger.LogInformation("Volo packages are updated in {ProjectName} project", projectName); return; } 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 653cbc7b66..3060435928 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 @@ -181,6 +181,11 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency packageId = package.Attributes["Include"].Value; var versionAttribute = package.Attributes["Version"]; + if (versionAttribute == null) + { + Logger.LogWarning("Package: {PackageId} uses central package management. Skipped!", packageId); + continue; + } var currentVersion = versionAttribute.Value; var isLeptonXPackage = packageId.Contains("LeptonX"); @@ -194,17 +199,17 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency var isVersionParsed = SemanticVersion.TryParse(currentVersion, out var currentSemanticVersion); if (!isVersionParsed) { - Logger.LogWarning("Could not parse package \"{0}\" version v{1}. Skipped.", packageId, currentVersion); + Logger.LogWarning("Could not parse package \"{PackageId}\" version v{CurrentVersion}. Skipped!", packageId, currentVersion); continue; } - Logger.LogDebug("Checking package: \"{0}\" - Current version: {1}", packageId, currentSemanticVersion); + Logger.LogDebug("Checking package: \"{PackageId}\" - Current version: {CurrentSemanticVersion}", packageId, currentSemanticVersion); if (!specifiedVersion.IsNullOrWhiteSpace()) { if (isLeptonXPackage || isStudioPackage) { - Logger.LogWarning("Package: {0} could not be updated. Please manually update the package version yourself to prevent version mismatches.", packageId); + Logger.LogWarning("Package: {PackageId} could not be updated. Please manually update the package version yourself to prevent version mismatches!", packageId); continue; } @@ -213,17 +218,17 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency var specifiedSemanticVersion = SemanticVersion.Parse(specifiedVersion); if (specifiedSemanticVersion > currentSemanticVersion) { - Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, currentVersion, specifiedVersion); + Logger.LogInformation("Updating package \"{PackageId}\" from v{CurrentVersion} to v{SpecifiedVersion}", packageId, currentVersion, specifiedVersion); versionAttribute.Value = specifiedVersion; } else { - Logger.LogWarning("Unable to update package \"{0}\" version v{1} to v{2}.", packageId, currentVersion, specifiedVersion); + Logger.LogWarning("Unable to update package \"{PackageId}\" version v{CurrentVersion} to v{SpecifiedVersion}", packageId, currentVersion, specifiedVersion); } } else { - Logger.LogWarning("Package \"{0}\" specified version v{1} does not exist.", packageId, specifiedVersion); + Logger.LogWarning("Package \"{PackageId}\" specified version v{SpecifiedVersion} does not exist!", packageId, specifiedVersion); } } else @@ -253,18 +258,18 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency if(latestVersion == null) { - Logger.LogWarning("Package: {0} could not be updated. Please manually update the package version yourself to prevent version mismatches.", packageId); + Logger.LogWarning("Package: {PackageId} could not be updated. Please manually update the package version yourself to prevent version mismatches!", packageId); continue; } if (currentVersion != latestVersion) { - Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, currentVersion, latestVersion); + Logger.LogInformation("Updating package \"{PackageId}\" from v{CurrentVersion} to v{LatestVersion}", packageId, currentVersion, latestVersion); versionAttribute.Value = latestVersion; } else { - Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, currentVersion); + Logger.LogDebug("Package: \"{PackageId}-v{CurrentVersion}\" is up to date", packageId, currentVersion); } } else @@ -285,12 +290,12 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency if (latestVersion != null && (currentSemanticVersion < latestVersion || (currentSemanticVersion.IsPrerelease && switchToStable))) { - Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, currentSemanticVersion.ToString(), latestVersion.ToString()); + Logger.LogInformation("Updating package \"{PackageId}\" from v{CurrentSemanticVersion} to v{LatestVersion}", packageId, currentSemanticVersion.ToString(), latestVersion.ToString()); versionAttribute.Value = latestVersion.ToString(); } else { - Logger.LogInformation("Package: \"{0}-v{1}\" is up to date.", packageId, currentSemanticVersion); + Logger.LogInformation("Package: \"{PackageId}-v{CurrentSemanticVersion}\" is up to date", packageId, currentSemanticVersion); } } } @@ -301,7 +306,7 @@ public class VoloNugetPackagesVersionUpdater : ITransientDependency } catch (Exception ex) { - Logger.LogError("Cannot update Volo.* packages! An error occurred while updating the package \"{0}\". Error: {1}", packageId, ex.Message); + Logger.LogError("Cannot update Volo.* packages! An error occurred while updating the package \"{PackageId}\". Error: {ErrorMessage}", packageId, ex.Message); Logger.LogException(ex); } From 70a563f01df9a2d8e82015c6b0ef45a75de82265 Mon Sep 17 00:00:00 2001 From: honurbu Date: Fri, 29 Dec 2023 11:54:56 +0300 Subject: [PATCH 11/88] Update abpio en.json for testimonials. --- .../AbpIoLocalization/Www/Localization/Resources/en.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index 47404c4142..08807cd696 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -463,7 +463,9 @@ "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", "ThisExtensionIsNotAllowedForImage": "This extension is not allowed.", "FileUploadError": "File upload error", - "TestimonialSend": "Thank you! We've received your testimonial. We'll review and take the next step soon." + "TestimonialSend": "Thank you! We've received your testimonial. We'll review and take the next step soon.", + "Title": "Title", + "TitlePlaceholder": "Software Developer, CTO etc." } } From 31ad7030b62e752185e6228f71b1f704bb6d3df9 Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 29 Dec 2023 17:41:37 +0300 Subject: [PATCH 12/88] Update en.json --- .../AbpIoLocalization/Commercial/Localization/Resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 36f88f6f28..cdbd5e693d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -49,7 +49,7 @@ "IndexPageHeroSection": "A complete web development platformbuilt-on framework", "AbpCommercialShortDescription": "ABP Commercial provides pre-built application modules, rapid application development tooling, professional UI themes, premium support and more.", "LiveDemo": "Live Demo", - "LiveDemoLead": "{1} using your ABP account, {3} to abp.io
or fill the form below to create a live demo now", + "LiveDemoLead": "{1} using your ABP account, {3} to abp.io or fill the form below to create a live demo now", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "There is already an account with the given email address: {0}
You should login with your account to proceed.", "GetLicence": "Get a License", "Application": "Application", From b531fb72fcd22594dcadf9199e866c31382e9a7c Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 29 Dec 2023 17:46:15 +0300 Subject: [PATCH 13/88] Fix: Alignment problem in Live Demo page --- .../Commercial/Localization/Resources/ar.json | 2 +- .../Commercial/Localization/Resources/cs.json | 2 +- .../Commercial/Localization/Resources/de.json | 2 +- .../Commercial/Localization/Resources/es.json | 4 ++-- .../Commercial/Localization/Resources/fi.json | 2 +- .../Commercial/Localization/Resources/fr.json | 2 +- .../Commercial/Localization/Resources/hi.json | 2 +- .../Commercial/Localization/Resources/hr.json | 2 +- .../Commercial/Localization/Resources/hu.json | 2 +- .../Commercial/Localization/Resources/is.json | 2 +- .../Commercial/Localization/Resources/it.json | 2 +- .../Commercial/Localization/Resources/nl.json | 2 +- .../Commercial/Localization/Resources/pt-BR.json | 2 +- .../Commercial/Localization/Resources/sk.json | 2 +- .../Commercial/Localization/Resources/tr.json | 2 +- .../Commercial/Localization/Resources/zh-Hant.json | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json index 2953d946a0..7897e0cef2 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": " نظام أساسي كامل لتطوير الويب مدمج framework ", "AbpCommercialShortDescription": "يوفر ABP Commercial وحدات تطبيق مسبقة الإنشاء وأدوات تطوير سريعة للتطبيقات وموضوعات واجهة مستخدم احترافية ودعمًا متميزًا والمزيد.", "LiveDemo": "عرض حي", - "LiveDemoLead": "{1} باستخدام حساب ABP الخاص بك، {3}إلى abp.io.
أو املأ النموذج أدناه لإنشاء عرض توضيحي مباشر الآن", + "LiveDemoLead": "{1} باستخدام حساب ABP الخاص بك، {3}إلى abp.io.أو املأ النموذج أدناه لإنشاء عرض توضيحي مباشر الآن", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "هناك حساب بالفعل باستخدام عنوان البريد الإلكتروني المحدد: {0}
يمكنك تسجيل الدخول باستخدام حسابك للمتابعة.", "GetLicence": "احصل على ترخيص", "Application": "تطبيق", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json index 8d58160eaf..2923ec57f6 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Kompletní platforma pro vývoj webuvestavěná na framework", "AbpCommercialShortDescription": "ABP Commercial poskytuje předpřipravené aplikační moduly, nástroje pro rychlý vývoj aplikací, profesionální témata uživatelského rozhraní, prémiovou podporu a další.", "LiveDemo": "Živá ukázka", - "LiveDemoLead": "{1} pomocí vašeho účtu ABP, {3} na abp.io.
Nebo vyplňte níže uvedený formulář a vytvořte si nyní živou ukázku", + "LiveDemoLead": "{1} pomocí vašeho účtu ABP, {3} na abp.io. Nebo vyplňte níže uvedený formulář a vytvořte si nyní živou ukázku", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Zadaná e-mailová adresa {0} je již registrována.
Můžete se přihlásit se svým účtem a pokračovat.", "GetLicence": "Získejte licenci", "Application": "aplikace", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json index 26e63a2fd8..b17a24f3e9 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Eine komplette Webentwicklungsplattformaufgebaute Framework", "AbpCommercialShortDescription": "ABP Commercial bietet vorgefertigte Anwendungsmodule, schnelle Anwendungsentwicklungstools, professionelle UI-Themen, Premium-Support und mehr.", "LiveDemo": "Live-Demo", - "LiveDemoLead": "{1} mit Ihrem ABP-Konto, {3} zu abp.io.
Oder füllen Sie das Formular unten aus, um jetzt eine Live-Demo zu erstellen", + "LiveDemoLead": "{1} mit Ihrem ABP-Konto, {3} zu abp.io. Oder füllen Sie das Formular unten aus, um jetzt eine Live-Demo zu erstellen", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Es gibt bereits ein Konto mit der angegebenen E-Mail-Adresse: {0}
Sie können sich mit Ihrem Konto anmelden, um fortzufahren.", "GetLicence": "Holen Sie sich eine Lizenz", "Application": "Anwendung", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json index 75a1d52ec0..1c205bfb3e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json @@ -37,7 +37,7 @@ "StartUsingYourLicenseNow": "¡Empiece a usar su licencia ahora!", "WelcomePage": "Pagina de bienvenida", "UnsubscriptionExpireEmail": "Cancelar la suscripción a los correos electrónicos de recordatorio de la fecha de vencimiento de la licencia", - "UnsubscribeLicenseExpireEmailReminderMessage": "Esta suscripción de correo electrónico solo contiene un recordatorio de la fecha de vencimiento de su licencia.", + "UnsubscribeLicenseExpireEmailReminderMessage": "Esta suscripción de correo electrónico solo contiene un recordatorio de la fcha de vencimiento de su licencia.", "UnsubscribeFromLicenseExpireEmails": "Si no desea recibir los correos electrónicos sobre la fecha de vencimiento de su licencia, puede cancelar la suscripción en cualquier momento que desee.", "Unsubscribe": "Darse de baja", "NotOrganizationMember": "No eres miembro de ninguna organización.", @@ -46,7 +46,7 @@ "IndexPageHeroSection": " Una plataforma de desarrollo web completa integrada marco ", "AbpCommercialShortDescription": "ABP Commercial proporciona módulos de aplicaciones prediseñados, herramientas de desarrollo rápido de aplicaciones, temas de interfaz de usuario profesionales, soporte premium y más.", "LiveDemo": "Demo en vivo", - "LiveDemoLead": "{1} usando su cuenta ABP, {3} a abp.io.
O complete el siguiente formulario para crear una demostración en vivo ahora", + "LiveDemoLead": "{1} usando su cuenta ABP, {3} a abp.io. O complete el siguiente formulario para crear una demostración en vivo ahora", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Ya existe una cuenta con la dirección de correo electrónico especificada: {0}
Puede iniciar sesión con su cuenta para continuar.", "GetLicence": "Obtener una licencia", "Application": "Solicitud", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json index 22226ba956..a1be88768f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json @@ -49,7 +49,7 @@ "IndexPageHeroSection": " Täydellinen verkkokehitysympäristö sisäänrakennettu kehys ", "AbpCommercialShortDescription": "ABP Commercial tarjoaa valmiita sovellusmoduuleja, nopean sovelluskehitystyökalun, ammattimaiset käyttöliittymäteemat, ensiluokkaisen tuen ja paljon muuta.", "LiveDemo": "Live-esittely", - "LiveDemoLead": "{1} käyttämällä ABP-tiliäsi, {3} abp.io: lle.
Tai täytä alla oleva lomake luodaksesi live-esittelyn nyt", + "LiveDemoLead": "{1} käyttämällä ABP-tiliäsi, {3} abp.io: lle. Tai täytä alla oleva lomake luodaksesi live-esittelyn nyt", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Sähköpostiosoitteella {0} on jo tili.
Voit kirjautua sisään tilillesi jatkaaksesi.", "GetLicence": "Hanki lisenssi", "Application": "Sovellus", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json index bf3e156df7..5e7dc31332 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Une plate-forme de développement Web complète intégrée cadre ", "AbpCommercialShortDescription": "ABP Commercial fournit des modules d'application prédéfinis, des outils de développement rapide d'applications, des thèmes d'interface utilisateur professionnels, un support premium et plus encore.", "LiveDemo": "Démo en direct", - "LiveDemoLead": "{1} en utilisant votre compte ABP, {3} à abp.io.
Ou remplissez le formulaire ci-dessous pour créer une démo en direct maintenant", + "LiveDemoLead": "{1} en utilisant votre compte ABP, {3} à abp.io. Ou remplissez le formulaire ci-dessous pour créer une démo en direct maintenant", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Il existe déjà un compte avec l'adresse e-mail fournie: {0}
Vous pouvez vous connecter avec votre compte pour continuer.", "GetLicence": "Obtenez une licence", "Application": "Application", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json index d59067b0d3..60bd38cb55 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "एक पूर्ण वेब डेवलपमेंट प्लेटफॉर्मबिल्ट-ऑन Framework", "AbpCommercialShortDescription": "एबीपी कमर्शियल प्री-बिल्ट एप्लिकेशन मॉड्यूल, रैपिड एप्लिकेशन डेवलपमेंट टूलिंग, पेशेवर यूआई थीम, प्रीमियम सपोर्ट आदि प्रदान करता है।", "LiveDemo": "लाइव डेमो", - "LiveDemoLead": "{1} अपने एबीपी खाते का उपयोग करते हुए, {3} abp.io पर आपका स्वागत है।
या अब एक लाइव डेमो बनाने के लिए नीचे दिए गए फॉर्म को भरें", + "LiveDemoLead": "{1} अपने एबीपी खाते का उपयोग करते हुए, {3} abp.io पर आपका स्वागत है। या अब एक लाइव डेमो बनाने के लिए नीचे दिए गए फॉर्म को भरें", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "दिए गए ईमेल पते {0} के साथ पहले से ही एक खाता है।
आप अपने खाते से लॉगिन करके आगे बढ़ सकते हैं।", "GetLicence": "एक लाइसेंस प्राप्त करें", "Application": "आवेदन", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json index 6cacd8f01d..762376d384 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json @@ -49,7 +49,7 @@ "IndexPageHeroSection": "Kompletna ugrađena platforma za web razvoj okvir", "AbpCommercialShortDescription": "ABP Commercial nudi unaprijed izgrađene aplikacijske module, alate za brzi razvoj aplikacija, profesionalne UI teme, vrhunsku podršku i više.", "LiveDemo": "Demo uživo", - "LiveDemoLead": "{1} koristeći svoj ABP račun, {3} na abp.io.
Ili ispunite obrazac u nastavku da sada napravite demo uživo", + "LiveDemoLead": "{1} koristeći svoj ABP račun, {3} na abp.io. Ili ispunite obrazac u nastavku da sada napravite demo uživo", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Već postoji račun s navedenom adresom e-pošte: {0}
Za nastavak se možete prijaviti svojim računom.", "GetLicence": "Nabavite licencu", "Application": "Primjena", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json index 58169ed73c..0a3dd2894c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json @@ -49,7 +49,7 @@ "IndexPageHeroSection": "Teljes webfejlesztői platformbeépített keretrendszer", "AbpCommercialShortDescription": "Az ABP Commercial előre beépített alkalmazásmodulokat, gyors alkalmazásfejlesztési eszközöket, professzionális felhasználói felületi témákat, prémium támogatást és még sok mást kínál.", "LiveDemo": "Élő Demo", - "LiveDemoLead": "{1} az ABP-fiókjával, {3} az abp.io-ra.
Vagy töltse ki az alábbi űrlapot, hogy most létrehozzon egy élő bemutatót", + "LiveDemoLead": "{1} az ABP-fiókjával, {3} az abp.io-ra. Vagy töltse ki az alábbi űrlapot, hogy most létrehozzon egy élő bemutatót", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Már van fiók a megadott e-mail címmel: {0}
Bejelentkezhet a fiókjával a folytatáshoz.", "GetLicence": "Szerezzen engedélyt", "Application": "Alkalmazás", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json index fb4ed42598..e5262ec3f9 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Heilstætt vefþróunar umhverfi byggt á ABP", "AbpCommercialShortDescription": "ABP Commercial býður upp á forsmíðaðar forritareiningar, tól sem hraða þróun, fagmanlega hannaðar UI þemur, úrvals stuðning og fleira.", "LiveDemo": "Virkt sýnidæmi", - "LiveDemoLead": "{1} með þínum ABP reikningi, {3} til abp.io.
Eða fylltu út formið hér að neðan til að búa til virkt sýnidæmi núna", + "LiveDemoLead": "{1} með þínum ABP reikningi, {3} til abp.io. Eða fylltu út formið hér að neðan til að búa til virkt sýnidæmi núna", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Það er nú þegar reikningur með þessu netfangi: {0}
Þú getur skráð þig inn með þínum reikningi til að halda áfram.", "GetLicence": "Sækja Leyfi", "Application": "Umsókn", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json index 361974dada..79bcbd5051 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": " Una completa piattaforma di sviluppo web integrata framework ", "AbpCommercialShortDescription": "ABP Commercial fornisce moduli applicativi predefiniti, strumenti per lo sviluppo rapido di applicazioni, temi dell'interfaccia utente professionale, supporto premium e altro ancora.", "LiveDemo": "Dimostrazione dal vivo", - "LiveDemoLead": "{1} utilizzando il tuo account ABP, {3} a abp.io.
O compilare il modulo sottostante per creare una demo live ora", + "LiveDemoLead": "{1} utilizzando il tuo account ABP, {3} a abp.io. O compilare il modulo sottostante per creare una demo live ora", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Esiste già un account con l'indirizzo email specificato: {0}
Puoi accedere con il tuo account per procedere.", "GetLicence": "Ottieni una licenza", "Application": "Applicazione", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json index 3e1bc497ab..4f78bbef5e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Een compleet webontwikkelingsplatformingebouwd raamwerk", "AbpCommercialShortDescription": "ABP Commercial biedt kant-en-klare applicatiemodules, tooling voor snelle applicatieontwikkeling, professionele UI-thema's, premium ondersteuning en meer.", "LiveDemo": "Live demonstratie", - "LiveDemoLead": "{1} met behulp van uw ABP-account, {3} naar abp.io.
Of vul het onderstaande formulier in om nu een live demo te maken", + "LiveDemoLead": "{1} met behulp van uw ABP-account, {3} naar abp.io. Of vul het onderstaande formulier in om nu een live demo te maken", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Er is al een account met het opgegeven e-mailadres: {0}
U kunt inloggen met uw account om door te gaan.", "GetLicence": "Verkrijg een licentie", "Application": "Sollicitatie", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json index 138499cf79..5cd6d14cba 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": " Uma completa plataforma de desenvolvimento web integrada estrutura ", "AbpCommercialShortDescription": "ABP Commercial fornece módulos de aplicativos pré-construídos, ferramentas de desenvolvimento rápido de aplicativos, temas de UI profissionais, suporte premium e muito mais.", "LiveDemo": "Demonstração ao vivo", - "LiveDemoLead": "{1} usando sua conta ABP, {3} para abp.io.
Ou preencha o formulário abaixo para criar uma demonstração ao vivo agora", + "LiveDemoLead": "{1} usando sua conta ABP, {3} para abp.io. Ou preencha o formulário abaixo para criar uma demonstração ao vivo agora", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Já existe uma conta com o endereço de e-mail fornecido: {0}
Você pode fazer login com sua conta para continuar.", "GetLicence": "Obtenha uma licença", "Application": "Aplicativo", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json index 8da110fc4d..cbbedf9104 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Kompletná web vývojová platformapostavená na frameworku", "AbpCommercialShortDescription": "ABP Commercial poskytuje predpripravené aplikačné moduly, nástroje na rýchly vývoj aplikácií, profesionálne témy používateľského rozhrania, prémiovú podporu a ďalšie.", "LiveDemo": "Live ukážka", - "LiveDemoLead": "{1} použitím vášho ABP účtu, {3} na abp.io.
Alebo vyplňte nižšie uvedený formulár a vytvorte si teraz live ukážku", + "LiveDemoLead": "{1} použitím vášho ABP účtu, {3} na abp.io. Alebo vyplňte nižšie uvedený formulár a vytvorte si teraz live ukážku", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Už existuje účet s danou emailovou adresou: {0}
Môžete sa prihlásiť pomocou svojho účtu a pokračovať.", "GetLicence": "Získajte licenciu", "Application": "Aplikácia", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json index 0ea5c73e71..546fea32c7 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json @@ -48,7 +48,7 @@ "IndexPageHeroSection": "A complete web development platformbuilt-on framework", "AbpCommercialShortDescription": "ABP Commercial, önceden oluşturulmuş uygulama modülleri, hızlı uygulama geliştirme araçları, profesyonel UI temaları, premium destek ve daha fazlasını sağlar.", "LiveDemo": "Canlı Demo", - "LiveDemoLead": "{1} ABP hesabınızı kullanarak, {3} abp.io'ya hoş geldiniz.
Veya aşağıdaki formu doldurarak şimdi canlı bir demo oluşturun", + "LiveDemoLead": "{1} ABP hesabınızı kullanarak, {3} abp.io'ya hoş geldiniz. Veya aşağıdaki formu doldurarak şimdi canlı bir demo oluşturun", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Zaten {0} e-posta adresiyle bir hesap var.
Devam etmek için hesabınızla giriş yapabilirsiniz.", "GetLicence": "Lisans Alın", "Application": "Başvuru", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json index dce55a0613..263596e74e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json @@ -48,7 +48,7 @@ "IndexPageHeroSection": "一個完整的web開發平臺基於 框架", "AbpCommercialShortDescription": "ABP商業版提供了預構建的應用程序模塊, 快速的應用程序開發工具, 專業的UI主題, 高級支持等.", "LiveDemo": "在線演示", - "LiveDemoLead": " {1} 使用你的ABP賬號, {3} 到 abp.io.
或者填寫下面的表單立即創建一個在線演示", + "LiveDemoLead": " {1} 使用你的ABP賬號, {3} 到 abp.io. 或者填寫下面的表單立即創建一個在線演示", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "已經有一個使用該電子郵件地址的賬號: {0}
你可以使用你的賬號登錄以繼續.", "GetLicence": "獲得許可", "Application": "應用程序", From 5d019d9ef19b71306cca00a7d8ef5d2ec6238845 Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 29 Dec 2023 17:46:32 +0300 Subject: [PATCH 14/88] Update second part languages --- .../Commercial/Localization/Resources/pl-PL.json | 2 +- .../Commercial/Localization/Resources/ro-RO.json | 2 +- .../AbpIoLocalization/Commercial/Localization/Resources/ru.json | 2 +- .../AbpIoLocalization/Commercial/Localization/Resources/sl.json | 2 +- .../AbpIoLocalization/Commercial/Localization/Resources/vi.json | 2 +- .../Commercial/Localization/Resources/zh-Hans.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json index 961c514013..bfe963343d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "A complete web development platformbuilt-on framework", "AbpCommercialShortDescription": "ABP Commercial zapewnia gotowe moduły aplikacji, narzędzia do szybkiego tworzenia aplikacji, profesjonalne motywy interfejsu użytkownika, wsparcie premium i nie tylko.", "LiveDemo": "Demo na żywo", - "LiveDemoLead": "{1} korzystając z konta ABP, {3} to abp.io.
Lub wypełnij poniższy formularz, aby utworzyć teraz demo na żywo", + "LiveDemoLead": "{1} korzystając z konta ABP, {3} to abp.io. Lub wypełnij poniższy formularz, aby utworzyć teraz demo na żywo", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Istnieje już konto o podanym adresie e-mail: {0}
Możesz się zalogować na swoje konto, aby kontynuować.", "GetLicence": "Uzyskaj licencję", "Application": "Podanie", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json index 6013166634..f067fa5be8 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "A complete web development platformbuilt-on framework", "AbpCommercialShortDescription": "ABP Commercial oferă module de aplicaţii pre-construite, instrumente de dezvoltare rapidă a aplicaţiilor, teme UI profesionale, asistenţă premium şi multe altele.", "LiveDemo": "Live Demo", - "LiveDemoLead": "{1} folosind contul ABP, {3} la abp.io.
Sau completaţi formularul de mai jos pentru a crea un demo live acum", + "LiveDemoLead": "{1} folosind contul ABP, {3} la abp.io. Sau completaţi formularul de mai jos pentru a crea un demo live acum", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Există deja un cont cu adresa de email specificată: {0}
Puteţi să vă autentificaţi cu contul dumneavoastră pentru a continua.", "GetLicence": "Obţine o licenţă", "Application": "Application", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json index 9fc25da395..6d93f7108d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json @@ -49,7 +49,7 @@ "IndexPageHeroSection": "Полный платформа веб-разработкипостроен на рамки", "AbpCommercialShortDescription": "ABP Commercial предоставляет готовые модули приложений, инструменты для быстрой разработки приложений, профессиональные темы пользовательского интерфейса, премиальную поддержку и многое другое.", "LiveDemo": "Живая демонстрация", - "LiveDemoLead": "{1} используя свою учетную запись ABP, {3} на abp.io.
Или заполните форму ниже, чтобы создать живую демо-версию прямо сейчас", + "LiveDemoLead": "{1} используя свою учетную запись ABP, {3} на abp.io. Или заполните форму ниже, чтобы создать живую демо-версию прямо сейчас", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Уже существует учетная запись с данным адресом электронной почты: {0}
Вы можете войти в свою учетную запись, чтобы продолжить.", "GetLicence": "Получить лицензию", "Application": "Приложение", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json index 75324cfc4a..1fb0df744b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": "Popolna platforma za spletno razvojvgrajena okvir", "AbpCommercialShortDescription": "ABP Commercial ponuja vnaprej izdelane aplikacijske module, orodja za hiter razvoj aplikacij, profesionalne teme uporabniškega vmesnika, vrhunsko podporo in še več.", "LiveDemo": "Demo v živo", - "LiveDemoLead": "{1} s svojim ABP računom, {3} na abp.io.
Ali izpolnite spodnji obrazec, da ustvarite demo v živo zdaj", + "LiveDemoLead": "{1} s svojim ABP računom, {3} na abp.io. Ali izpolnite spodnji obrazec, da ustvarite demo v živo zdaj", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Za navedeni e-poštni naslov že obstaja račun: {0}
Lahko se prijavite s svojim računom, da nadaljujete.", "GetLicence": "Pridobite licenco", "Application": "Aplikacija", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json index 68098444e0..be454b234f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json @@ -46,7 +46,7 @@ "IndexPageHeroSection": " Nền tảng phát triển web hoàn chỉnh được tích hợp sẵn khung ", "AbpCommercialShortDescription": "ABP Commercial cung cấp các mô-đun ứng dụng được tạo sẵn, công cụ phát triển ứng dụng nhanh chóng, các chủ đề giao diện người dùng chuyên nghiệp, hỗ trợ cao cấp và hơn thế nữa.", "LiveDemo": "Bản thử trực tiếp", - "LiveDemoLead": "{1} hoặc {3} đến abp.io.
Hoặc điền vào biểu mẫu bên dưới để tạo bản trình diễn trực tiếp ngay bây giờ", + "LiveDemoLead": "{1} hoặc {3} đến abp.io. Hoặc điền vào biểu mẫu bên dưới để tạo bản trình diễn trực tiếp ngay bây giờ", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "Đã có một tài khoản với địa chỉ email đã cho: {0}
Bạn có thể đăng nhập vào tài khoản của mình để tiếp tục.", "GetLicence": "Nhận giấy phép", "Application": "Ứng dụng", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index ea0371478c..9230891668 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -49,7 +49,7 @@ "IndexPageHeroSection": "一个完整的web开发平台基于 框架", "AbpCommercialShortDescription": "ABP商业版提供了预构建的应用程序模块, 快速的应用程序开发工具, 专业的UI主题, 高级支持等.", "LiveDemo": "在线演示", - "LiveDemoLead": "{1} 到你的ABP账户, {3} 到 abp.io.
或者填写下面的表单立即创建在线演示", + "LiveDemoLead": "{1} 到你的ABP账户, {3} 到 abp.io. 或者填写下面的表单立即创建在线演示", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "已经有一个使用此电子邮件地址的帐户: {0}
你可以使用你的帐户登录继续.", "GetLicence": "获得许可", "Application": "应用程序", From 82029fb1cf066cbee288f384f54430375d055c53 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Sat, 30 Dec 2023 21:43:03 +0800 Subject: [PATCH 15/88] Revise all zh-Hans.json localization texts. --- .../Localization/Resources/zh-Hans.json | 18 +- .../Admin/Localization/Resources/zh-Hans.json | 692 +++---- .../Base/Localization/Resources/zh-Hans.json | 284 +-- .../Blog/Localization/Resources/zh-Hans.json | 4 +- .../Localization/Resources/zh-Hans.json | 1673 +++++++++-------- .../Localization/Resources/zh-Hans.json | 372 ++-- .../Docs/Localization/Resources/zh-Hans.json | 4 +- .../Localization/Resources/zh-Hans.json | 2 +- .../Www/Localization/Resources/zh-Hans.json | 606 +++--- .../UI/MultiTenancy/Localization/zh-Hans.json | 22 +- .../Authorization/Localization/zh-Hans.json | 12 +- .../Resources/AbpDdd/zh-Hans.json | 4 +- .../Abp/Emailing/Localization/zh-Hans.json | 34 +- .../Localization/zh-Hans.json | 40 +- .../Abp/Features/Localization/zh-Hans.json | 8 +- .../GlobalFeatures/Localization/zh-Hans.json | 4 +- .../Volo/Abp/Ldap/Localization/zh-Hans.json | 14 +- .../Resources/AbpLocalization/zh-Hans.json | 2 +- .../MultiTenancy/Localization/zh-Hans.json | 10 +- .../Volo/Abp/Timing/Localization/zh-Hans.json | 4 +- .../Localization/Resource/zh-Hans.json | 2 +- .../Localization/Resources/AbpUi/zh-Hans.json | 66 +- .../Abp/Validation/Localization/zh-Hans.json | 66 +- .../Mvc/Localization/Resource/zh-Hans.json | 4 +- .../Abp/Emailing/Localization/zh-Hans.json | 2 +- .../Volo/Abp/Http/Localization/zh-Hans.json | 2 +- .../Base/CountryNames/zh-Hans.json | 2 +- .../Base/Validation/zh-Hans.json | 14 +- .../TestResources/Source/zh-Hans.json | 12 +- .../TextTemplating/Localization/zh-Hans.json | 2 +- .../Localization/Resources/zh-Hans.json | 90 +- .../AuditLogging/Localization/zh-Hans.json | 94 +- .../Database/Localization/zh-Hans.json | 2 +- .../Localization/Resources/zh-Hans.json | 92 +- .../Localization/Resources/zh-Hans.json | 274 +-- .../Resources/VoloDocs/Web/zh-Hans.json | 8 +- .../Docs/ApplicationContracts/zh-Hans.json | 56 +- .../Docs/Localization/Domain/zh-Hans.json | 52 +- .../Localization/Domain/zh-Hans.json | 18 +- .../Abp/Identity/Localization/zh-Hans.json | 192 +- .../LocalizationExtensions/zh-Hans.json | 4 +- .../Localization/Resources/zh-Hans.json | 24 +- .../Localization/OpenIddict/zh-Hans.json | 18 +- .../Localization/Domain/zh-Hans.json | 8 +- .../AbpSettingManagement/zh-Hans.json | 44 +- .../Localization/Resources/zh-Hans.json | 6 +- .../Localization/Resources/zh-Hans.json | 20 +- .../Localization/MyProjectName/zh-Hans.json | 6 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 6 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 14 +- .../Localization/MyProjectName/zh-Hans.json | 2 +- 56 files changed, 2516 insertions(+), 2515 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json index 2bf4bb3837..6639472368 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json @@ -1,17 +1,17 @@ { "culture": "zh-Hans", "texts": { - "Account": "账户", + "Account": "ABP 账户 - 登录和注册 | ABP.IO", "Welcome": "欢迎", - "UseOneOfTheFollowingLinksToContinue": "使用下面的链接继续", - "FrameworkHomePage": "框架首页", - "FrameworkDocumentation": "框架文档", + "UseOneOfTheFollowingLinksToContinue": "使用以下链接之一继续", + "FrameworkHomePage": "框架主页", + "FrameworkDocumentation": "框架文件", "OfficialBlog": "官方博客", - "CommercialHomePage": "商业版首页", - "CommercialSupportWebSite": "商业版支持网站", - "CommunityWebSite": "ABP社区网站", - "ManageAccount": "我的帐户 | ABP.IO", + "CommercialHomePage": "商业主页", + "CommercialSupportWebSite": "商业支持网站", + "CommunityWebSite": "ABP 社区网站", + "ManageAccount": "我的账户 | ABP.IO", "ManageYourProfile": "管理您的个人资料", - "ReturnToApplication": "返回应用" + "ReturnToApplication": "返回申请表" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json index 8952533623..b30ba8a355 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json @@ -1,314 +1,314 @@ { "culture": "zh-Hans", "texts": { - "Permission:Organizations": "组织", + "Permission:Organizations": "组织机构", "Permission:Manage": "管理组织", - "Permission:DiscountRequests": "折扣请求", - "Permission:DiscountManage": "管理折扣请求", + "Permission:DiscountRequests": "折扣申请", + "Permission:DiscountManage": "管理折扣申请", "Permission:Disable": "禁用", - "Permission:Enable": "启动", - "Permission:EnableSendEmail": "启用发送邮件", - "Permission:SendEmail": "发送邮件", - "Permission:NpmPackages": "NPM包", - "Permission:NugetPackages": "Nuget包", + "Permission:Enable": "启用", + "Permission:EnableSendEmail": "启用发送电子邮件", + "Permission:SendEmail": "发送电子邮件", + "Permission:NpmPackages": "NPM 软件包", + "Permission:NugetPackages": "Nuget 软件包", "Permission:Maintenance": "维护", "Permission:Maintain": "维护", "Permission:ClearCaches": "清除缓存", "Permission:Modules": "模块", - "Permission:Packages": "包", + "Permission:Packages": "套餐", "Permission:Edit": "编辑", "Permission:Delete": "删除", "Permission:Create": "创建", - "Permission:Accounting": "账单", + "Permission:Accounting": "会计", "Permission:Accounting:Quotation": "报价", "Permission:Accounting:Invoice": "发票", - "Menu:Organizations": "组织", - "Menu:Accounting": "账单", - "Menu:Packages": "包", - "Menu:DiscountRequests": "折扣请求", - "NpmPackageDeletionWarningMessage": "该NPM包将会被删除. 你确定吗?", - "NugetPackageDeletionWarningMessage": "该Nuget包将会被删除. 你确定吗?", - "ModuleDeletionWarningMessage": "该模块将会被删除. 你确定吗?", + "Menu:Organizations": "组织机构", + "Menu:Accounting": "会计", + "Menu:Packages": "套餐", + "Menu:DiscountRequests": "折扣申请", + "NpmPackageDeletionWarningMessage": "此 NPM 软件包将被删除。你确认吗?", + "NugetPackageDeletionWarningMessage": "此 Nuget 软件包将被删除。你确认吗?", + "ModuleDeletionWarningMessage": "本模块将被删除。您确认吗?", "Name": "名称", "DisplayName": "显示名称", - "ShortDescription": "简述", + "ShortDescription": "简要说明", "NameFilter": "名称", "CreationTime": "创建时间", - "IsPro": "是否为专业版", - "IsFreeToActiveLicenseOwners": "许可证所有者免费", - "ShowOnModuleList": "展示模块列表", - "EfCoreConfigureMethodName": "配置方法法", - "IsProFilter": "是否为专业版", - "ApplicationType": "应用程序类型", + "IsPro": "亲", + "IsFreeToActiveLicenseOwners": "免费提供给许可证所有者", + "ShowOnModuleList": "显示在模块列表中", + "EfCoreConfigureMethodName": "配置方法名称", + "IsProFilter": "亲", + "ApplicationType": "应用类型", "Target": "目标", "TargetFilter": "目标", - "ModuleClass": "模块分类", - "NugetPackageTarget.DomainShared": "Domain Shared", - "NugetPackageTarget.Domain": "Domain", - "NugetPackageTarget.Application": "Application", - "NugetPackageTarget.ApplicationContracts": "Application Contracts", + "ModuleClass": "模块类", + "NugetPackageTarget.DomainShared": "共享域名", + "NugetPackageTarget.Domain": "域名", + "NugetPackageTarget.Application": "应用", + "NugetPackageTarget.ApplicationContracts": "应用合同", "NugetPackageTarget.HttpApi": "Http Api", - "NugetPackageTarget.HttpApiClient": "Http Api Client", - "NugetPackageTarget.Web": "Web", - "NugetPackageTarget.EntityFrameworkCore": "EntityFramework Core", + "NugetPackageTarget.HttpApiClient": "Http Api 客户端", + "NugetPackageTarget.Web": "网络", + "NugetPackageTarget.EntityFrameworkCore": "DeleteAllEntityFramework Core", "NugetPackageTarget.MongoDB": "MongoDB", "Edit": "编辑", "Delete": "删除", "Refresh": "刷新", - "NpmPackages": "NPM包", - "NugetPackages": "Nuget包", - "NpmPackageCount": "NPM包数量", - "NugetPackageCount": "Nuget包数量", + "NpmPackages": "NPM 软件包", + "NugetPackages": "Nuget 软件包", + "NpmPackageCount": "故宫博物院软件包数量", + "NugetPackageCount": "Nuget 软件包计数", "Module": "模块", "ModuleInfo": "模块信息", - "CreateANpmPackage": "创建NPM包", + "CreateANpmPackage": "创建 NPM 软件包", "CreateAModule": "创建模块", - "CreateANugetPackage": "创建Nuget包", - "AddNew": "新建", - "PackageAlreadyExist{0}": "\"{0}\"已经被添加.", - "ModuleAlreadyExist{0}": "\"{0}\" 模块已经添加.", + "CreateANugetPackage": "创建 Nuget 软件包", + "AddNew": "添加新内容", + "PackageAlreadyExist{0}": "已添加\"{0}\"软件包。", + "ModuleAlreadyExist{0}": "已添加\"{0}\"模块。", "ClearCache": "清除缓存", - "SuccessfullyCleared": "清除成功", - "Menu:NpmPackages": "NPM包", + "SuccessfullyCleared": "成功清除", + "Menu:NpmPackages": "NPM 软件包", "Menu:Modules": "模块", "Menu:Maintenance": "维护", - "Menu:NugetPackages": "Nuget包", - "CreateAnOrganization": "创建新组织", - "Organizations": "组织", - "LongName": "完整名称", - "LicenseType": "授权类型", - "MissingLicenseTypeField": "许可证类型字段是必需的!", - "LicenseStartTime": "授权开始时间", - "LicenseEndTime": "授权结束时间", + "Menu:NugetPackages": "Nuget 软件包", + "CreateAnOrganization": "创建组织", + "Organizations": "组织机构", + "LongName": "长名", + "LicenseType": "许可证类型", + "MissingLicenseTypeField": "许可证类型字段为必填字段!", + "LicenseStartTime": "许可证开始时间", + "LicenseEndTime": "许可证结束时间", "AllowedDeveloperCount": "允许的开发人员数量", "UserNameOrEmailAddress": "用户名或电子邮件地址", "AddOwner": "添加所有者", "UserName": "用户名", - "Email": "电子邮件地址", - "Developers": "开发者", - "AddDeveloper": "添加开发者", + "Email": "电子邮件", + "Developers": "开发人员", + "AddDeveloper": "添加开发人员", "Create": "创建", - "UserNotFound": "用户不存在", - "{0}WillBeRemovedFromDevelopers": "{0} 将从开发者中移除, 你确定吗?", - "{0}WillBeRemovedFromOwners": "{0} 将从所有者中移除, 你确定吗?", - "{0}WillBeRemovedFromMembers": "{0} 将从成员中删除, 你确定吗?", + "UserNotFound": "未找到用户", + "{0}WillBeRemovedFromDevelopers": "{0}将从开发人员中删除,您确认吗?", + "{0}WillBeRemovedFromOwners": "{0}将从所有者中删除,你确认吗?", + "{0}WillBeRemovedFromMembers": "{0}将从成员中删除,您确认吗?", "Computers": "计算机", - "UniqueComputerId": "计算机唯一ID", - "LastSeenDate": "上次查看日期", - "{0}Computer{1}WillBeRemovedFromRecords": "计算机 {0} ({1}) 将从记录中删除", + "UniqueComputerId": "唯一的计算机 ID", + "LastSeenDate": "最后出现日期", + "{0}Computer{1}WillBeRemovedFromRecords": "将从记录中删除 {0} ({1}) 的计算机", "OrganizationDeletionWarningMessage": "组织将被删除", - "DeletingLastOwnerWarningMessage": "一个组织必须至少有一个所有者!因此你不能删除此所有者", - "This{0}AlreadyExistInThisOrganization": "该组织中已经存在此 {0}", + "DeletingLastOwnerWarningMessage": "一个组织必须至少有一个所有者!因此,您不能删除该所有者", + "This{0}AlreadyExistInThisOrganization": "该{0}已经存在于该组织中", "AreYouSureYouWantToDeleteAllComputers": "您确定要删除所有计算机吗?", - "DeleteAll": "删除所有", - "DoYouWantToCreateNewUser": "你想要创建一个新用户吗", + "DeleteAll": "全部删除", + "DoYouWantToCreateNewUser": "您想创建新用户吗?", "MasterModules": "主模块", "OrganizationName": "组织名称", - "CreationDate": "创建时间", - "LicenseStartDate": "许可开始时间", - "LicenseEndDate": "许可结束时间", + "CreationDate": "创建日期", + "LicenseStartDate": "许可证开始日期", + "LicenseEndDate": "许可证终止日期", "OrganizationNamePlaceholder": "组织名称...", "TotalQuestionCountPlaceholder": "问题总数...", - "RemainingQuestionCountPlaceholder": "剩下的问题数...", - "LicenseTypePlaceholder": "许可类型...", - "CreationDatePlaceholder": "创建时间...", - "LicenseStartDatePlaceholder": "许可开始时间...", - "LicenseEndDatePlaceholder": "许可结束时间...", - "UsernameOrEmail": "用户名或邮箱", - "UsernameOrEmailPlaceholder": "用户名或邮箱...", + "RemainingQuestionCountPlaceholder": "剩余问题数...", + "LicenseTypePlaceholder": "许可证类型...", + "CreationDatePlaceholder": "创建日期...", + "LicenseStartDatePlaceholder": "许可证开始日期...", + "LicenseEndDatePlaceholder": "许可证终止日期...", + "UsernameOrEmail": "用户名或电子邮件", + "UsernameOrEmailPlaceholder": "用户名或电子邮件...", "Member": "成员", - "PurchaseOrderNo": "订单编号", + "PurchaseOrderNo": "订购单编号", "QuotationDate": "报价日期", "CompanyName": "公司名称", "CompanyAddress": "公司地址", "Price": "价格", - "DiscountText": "折扣文字", + "DiscountText": "折扣文本", "DiscountQuantity": "折扣数量", - "DiscountPrice": "折扣价格", - "Quotation": "报价单", - "ExtraText": "额外文字", + "DiscountPrice": "折扣价", + "Quotation": "报价", + "ExtraText": "附加文本", "ExtraAmount": "额外金额", "DownloadQuotation": "下载报价单", "Invoice": "发票", "TaxNumber": "税号", - "InvoiceNumber": "发票数字", + "InvoiceNumber": "发票号码", "InvoiceDate": "发票日期", - "InvoiceNote": "发票说明", + "InvoiceNote": "发票附注", "Quantity": "数量", "AddProduct": "添加产品", - "AddProductWarning": "你需要添加产品", + "AddProductWarning": "您需要添加产品!", "TotalPrice": "总价", "Generate": "生成", - "MissingQuantityField": "数量字段为必填项!", - "MissingPriceField": "价格字段为必填项!", - "CodeUsageStatus": "状态", + "MissingQuantityField": "数量字段为必填字段!", + "MissingPriceField": "价格字段为必填字段!", + "CodeUsageStatus": "现状", "Country": "国家", - "DeveloperCount": "开发者数量", - "RequestCode": "请求码", + "DeveloperCount": "开发人员数量", + "RequestCode": "申请代码", "WebSite": "网站", - "GithubUsername": "Github用户名", - "PhoneNumber": "手机号", - "ProjectDescription": "产品描述", + "GithubUsername": "Github 用户名", + "PhoneNumber": "电话号码", + "ProjectDescription": "项目说明", "Referrer": "推荐人", - "DiscountRequests": "折扣请求", - "Copylink": "拷贝链接", + "DiscountRequests": "折扣申请", + "Copylink": "复制链接", "Disable": "禁用", "Enable": "启用", - "EnableSendEmail": "启用发送邮件", - "SendEmail": "发送邮件", - "SuccessfullyDisabled": "禁用成功", - "SuccessfullyEnabled": "启用成功", - "EmailSent": "邮件发送", - "SuccessfullySent": "发送成功", - "SuccessfullyDeleted": "删除成功", - "DiscountRequestDeletionWarningMessage": "折扣成功将被删除", - "BusinessType": "商业类型", + "EnableSendEmail": "启用发送电子邮件", + "SendEmail": "发送电子邮件", + "SuccessfullyDisabled": "成功禁用", + "SuccessfullyEnabled": "成功启用", + "EmailSent": "发送电子邮件", + "SuccessfullySent": "成功发送", + "SuccessfullyDeleted": "成功删除", + "DiscountRequestDeletionWarningMessage": "折扣申请将被删除", + "BusinessType": "业务类型", "TotalQuestionCount": "问题总数", "RemainingQuestionCount": "剩余问题数", - "TotalQuestionMustBeGreaterWarningMessage": "TotalQuestionCount必须大于RemainingQuestionCount!", - "QuestionCountsMustBeGreaterThanZero": "TotalQuestionCount和RemainingQuestionCount必须为0或大于0", - "UnlimitedQuestionCount": "无限的问题计数", - "Notes": "笔记", + "TotalQuestionMustBeGreaterWarningMessage": "TotalQuestionCount 必须大于 RemainingQuestionCount!", + "QuestionCountsMustBeGreaterThanZero": "总问题数(TotalQuestionCount)和剩余问题数(RemainingQuestionCount)必须为零或大于零!", + "UnlimitedQuestionCount": "问题数量不限", + "Notes": "说明", "Menu:Community": "社区", - "Menu:Posts": "文章", + "Menu:Posts": "职位", "Wait": "等待", "Approve": "批准", "Reject": "拒绝", - "Details": "详情", - "Url": "Url", + "Details": "详细信息", + "Url": "网址", "Title": "标题", - "ContentSource": "内容源", - "Status": "状态", + "ContentSource": "内容来源", + "Status": "现状", "ReadPost": "阅读文章", - "PostHasBeenWaiting": "文章还在等待", - "PostHasBeenApproved": "文章已被批准", - "PostHasBeenRejected": "文章已被拒绝", + "PostHasBeenWaiting": "职位一直在等待", + "PostHasBeenApproved": "职位已获批准", + "PostHasBeenRejected": "帖子已被拒绝", "Permission:Community": "社区", - "Permission:CommunityPost": "文字", + "Permission:CommunityPost": "职位", "Link": "链接", "Enum:ContentSource:0": "Github", "Enum:ContentSource:1": "外部", - "Enum:Status:0": "等待中", - "Enum:Status:1": "已拒绝", - "Enum:Status:2": "已批准", - "Summary": "概要", - "AuthorName": "作者名称", + "Enum:Status:0": "等待", + "Enum:Status:1": "拒绝", + "Enum:Status:2": "批准", + "Summary": "摘要", + "AuthorName": "作者姓名", "CoverImage": "封面图片", - "RemoveCacheConfirmationMessage": "你确定要删除\"{0}\" 文章缓存?", - "SuccessfullyRemoved": "清除成功", + "RemoveCacheConfirmationMessage": "您确定删除了\"{0}\"职位的缓存吗?", + "SuccessfullyRemoved": "成功清除", "RemoveCache": "删除缓存", "Language": "语言", - "Optional": "可选的", - "CreatePostLanguageInfo": "发帖所用的语言", - "Enum:ContentSource:2": "视频发布", + "Optional": "可选", + "CreatePostLanguageInfo": "帖子所使用的语言", + "Enum:ContentSource:2": "视频", "VideoPreview": "视频预览", - "VideoPreviewErrorMessage": "无法从YouTube获取给定的视频网址. 可能是由于视频是私有视频,或者给定的URL不可用.", + "VideoPreviewErrorMessage": "无法从 Youtube 获取给定的视频 URL。造成这种情况的原因可能是视频为私人视频或给定的 URL 不可用。", "DeleteCoverImage": "删除封面图片", - "DeleteCoverImageConfirmationMessage": "你确定要删除封面图片吗", - "DeleteCoverImageSuccessMessage": "成功删除封面图片", - "PaymentsOf": "付款的", - "ShowPaymentsOfOrganization": "显示付款", + "DeleteCoverImageConfirmationMessage": "您确定要删除\"{0}\"的封面图像吗?", + "DeleteCoverImageSuccessMessage": "封面图像已成功删除", + "PaymentsOf": "支付", + "ShowPaymentsOfOrganization": "付款", "Date": "日期", - "Products": "商品", + "Products": "产品", "TotalAmount": "总金额", "Currency": "货币", "Gateway": "网关", - "State": "状态", + "State": "国家", "FailReason": "失败原因", "ReIndexAllPosts": "重新索引所有帖子", - "ReIndexAllPostsConfirmationMessage": "你确定要重新索引所有的帖子吗", - "SuccessfullyReIndexAllPosts": "成功索引所有的帖子", + "ReIndexAllPostsConfirmationMessage": "您确定要重新索引所有帖子吗?", + "SuccessfullyReIndexAllPosts": "所有帖子都已成功重新索引。", "Permission:FullSearch": "全文检索", - "Menu:CliAnalytics": "客户端分析", - "Menu:Reports": "报表", + "Menu:CliAnalytics": "Cli 分析", + "Menu:Reports": "报告", "TemplateName": "模板名称", "TemplateVersion": "模板版本", - "DatabaseProvider": "数据库提供者", - "IsTiered": "是分层的", - "ProjectName": "项目名", + "DatabaseProvider": "数据库提供商", + "IsTiered": "是否分层", + "ProjectName": "项目名称", "Username": "用户名", "Tool": "工具", - "Command": "命令", - "UiFramework": "界面框架", + "Command": "指挥", + "UiFramework": "用户界面框架", "Options": "选项", - "CliAnalytics": "客户端分析", - "Reports": "报表", - "Permission:CliAnalyticses": "客户端分析", - "Permission:CliAnalytics": "客户端分析", - "Permission:Reports": "报表", + "CliAnalytics": "Cli 分析", + "Reports": "报告", + "Permission:CliAnalyticses": "Cli Analyticses", + "Permission:CliAnalytics": "Cli 分析", + "Permission:Reports": "报告", "Search": "搜索", - "ClearFilter": "清除过滤", - "LicensePrivateKey": "许可私有密钥", - "LicensePublicKey": "许可公有密钥", - "ApiKey": "NuGet API密钥", - "ShowInvoiceRequestsOfOrganization": "发票请求", + "ClearFilter": "清除过滤器", + "LicensePrivateKey": "许可证私钥", + "LicensePublicKey": "许可证公钥", + "ApiKey": "NuGet API 密钥", + "ShowInvoiceRequestsOfOrganization": "发票申请", "ShowQuestionsOfOrganization": "问题", "Question": "问题", - "Open": "打开", + "Open": "开放", "Questions": "问题", - "InvoiceRequests": "发票请求", + "InvoiceRequests": "发票申请", "Address": "地址", "TaxNo": "税号", - "Permission:InvoiceRequest": "发票请求", + "Permission:InvoiceRequest": "发票申请", "Permission:Question": "问题", - "AddNoteSuccessMessage": "注释添加成功", - "NameSurname": "姓", - "Note": "注释", + "AddNoteSuccessMessage": "成功添加注释", + "NameSurname": "姓名", + "Note": "备注", "Add": "添加", "ProjectDownloads": "项目下载", "ShowProjectDownloadsOfOrganization": "项目下载", - "ShowAuditLogsOfOrganization": "审核日志", - "Enum:EntityChangeType:0": "已建立", - "Enum:EntityChangeType:1": "更新", + "ShowAuditLogsOfOrganization": "审计日志", + "Enum:EntityChangeType:0": "创建", + "Enum:EntityChangeType:1": "已更新", "Enum:EntityChangeType:2": "已删除", - "TenantId": "租户ID", - "ChangeTime": "变更时间", + "TenantId": "租户编号", + "ChangeTime": "更改时间", "EntityTypeFullName": "实体类型全名", - "AuditLogsFor{0}Organization": "\"{0}\" 组织的审核日志", + "AuditLogsFor{0}Organization": "{0}\"组织的审计日志", "Permission:EntityChange": "实体变更", "Permission:ProjectDownload": "项目下载", - "Permission:PaymentRequest": "支付请求", - "CreatorEmailAddress": "创作者的电子邮件地址", + "Permission:PaymentRequest": "付款申请", + "CreatorEmailAddress": "创建者电子邮件地址", "EmailSendDate": "电子邮件发送日期", - "PaymentRequestsFor{0}Organization": "\"{0}\" 组织的付款请求", + "PaymentRequestsFor{0}Organization": "{0}\"组织的付款申请", "PaymentDetails": "付款详情", "PaymentProduct": "付款产品", "ProductName": "产品名称", "Code": "代码", "GenerateInvoice": "生成发票", - "ExportOrganizationsToExcel": "将组织导出到Excel", - "ThisExtensionIsNotAllowed": "不允许此扩展名.", - "TheFileIsTooLarge": "文件过大.", - "PostDeletionConfirmationMessage": "您确定要硬删除这篇文章吗?", - "ChooseCoverImage": "选项一张封面图片", - "Menu:Quotation": "引述", + "ExportOrganizationsToExcel": "导出到 Excel", + "ThisExtensionIsNotAllowed": "不允许延期。", + "TheFileIsTooLarge": "文件太大!", + "PostDeletionConfirmationMessage": "你确定要硬删掉这个帖子吗?", + "ChooseCoverImage": "选择封面图片...", + "Menu:Quotation": "报价", "Menu:Invoice": "发票", - "Menu:PaymentRequests": "付款请求", - "Permission:PaymentRequests": "付款请求", - "PaymentRequests": "付款请求", - "Creator": "创造者", + "Menu:PaymentRequests": "付款申请", + "Permission:PaymentRequests": "付款申请", + "PaymentRequests": "付款申请", + "Creator": "创作者", "ExtraProperties": "额外属性", - "Organization": "组织", + "Organization": "组织结构", "Waiting": "等待", - "Completed": "完全的", - "Failed": "失败的", - "PaymentRequestDeletionWarningMessage": "此付款请求将被删除。你确认吗?", - "Payment": "支付", + "Completed": "已完成", + "Failed": "失败", + "PaymentRequestDeletionWarningMessage": "此付款申请将被删除。您确认吗?", + "Payment": "付款方式", "AddPayment": "添加付款", - "Enum:PurchaseType:1": "新执照", - "Enum:PurchaseType:2": "许可证延长", + "Enum:PurchaseType:1": "新许可证", + "Enum:PurchaseType:2": "许可证扩展", "Enum:PurchaseType:3": "许可证升级", - "Enum:PurchaseType:4": "附加开发人员", + "Enum:PurchaseType:4": "其他开发人员", "LicenceType": "许可证类型", "PurchaseType": "购买类型", - "ReceiptNo": "收据号", + "ReceiptNo": "收据编号", "PaymentTime": "付款时间", "ProductPrice": "产品价格", - "AdditionalDeveloper": "附加开发人员", - "ThisPaymentHasBeenAlreadyUsed": "此付款已被使用", + "AdditionalDeveloper": "其他开发人员", + "ThisPaymentHasBeenAlreadyUsed": "该款项已被使用", "PaymentTimeCannotBeFutureTime": "付款时间不能是未来时间!", - "SaveAndDownload": "保存并下载", - "BillingInfo": "计费信息", + "SaveAndDownload": "保存和下载", + "BillingInfo": "账单信息", "DeleteInvoice": "删除发票", "PaymentStateSetTo": "付款状态设置为 {0}", "ChangeState": "更改状态", @@ -316,248 +316,248 @@ "Menu:TrialLicenses": "试用许可证", "TrialLicenses": "试用许可证", "UserNameFilter": "用户名", - "TrialLicenseStatusFilter": "地位", + "TrialLicenseStatusFilter": "现状", "TrialLicenseStartDateFilter": "开始日期", "TrialLicenseEndDateFilter": "结束日期", - "FirstName": "名字", - "LastName": "姓", + "FirstName": "姓名", + "LastName": "姓氏", "StartDate": "开始日期", "EndDate": "结束日期", "PurchasedDate": "购买日期", - "OrganizationDetail": "组织详情", + "OrganizationDetail": "机构详情", "TrialLicenseStatus": "试用许可证状态", "TrialLicenseDetail": "试用许可证详情", "AcceptsMarketingCommunications": "营销传播", "PurposeOfUsage": "使用目的", - "CountryName": "国家的名字", + "CountryName": "国家名称", "CompanySize": "公司规模", - "DetailTrialLicense": "细节", - "Requested": "已请求", - "Activated": "活性", + "DetailTrialLicense": "详细信息", + "Requested": "要求", + "Activated": "已激活", "PurchasedToNormalLicense": "已购买", - "Expired": "已到期", - "TrialLicenseDeletionWarningMessage": "您确定要删除试用许可证吗?试用许可证、组织、支持帐户将被删除!", - "LicenseCategoryFilter": "执照类别", - "Permission:SendWelcomeEmail": "发送欢迎邮件", - "SendWelcomeEmail": "发送欢迎邮件", - "SendWelcomeEmailWarningMessage": "你确定要发送欢迎邮件给组织成员吗?", - "SendWelcomeEmailSuccessMessage": "欢迎邮件发送成功!", + "Expired": "已过期", + "TrialLicenseDeletionWarningMessage": "您确定要删除试用许可证吗?试用版许可证、组织和支持账户将被删除!", + "LicenseCategoryFilter": "许可证类别", + "Permission:SendWelcomeEmail": "发送欢迎电子邮件", + "SendWelcomeEmail": "发送欢迎电子邮件", + "SendWelcomeEmailWarningMessage": "您确定要向组织成员发送欢迎电子邮件吗?", + "SendWelcomeEmailSuccessMessage": "欢迎电子邮件已成功发送!", "Activate": "激活", - "ActivateTrialLicenseWarningMessage": "激活试用版权限后,将发送欢迎邮件给用户。你确定要激活吗?", - "ActivateTrialLicenseSuccessMessage": "激活成功,欢迎邮件已发送给组织成员。", - "PaymentRequestId": "付款请求编号", - "AdditionalDeveloperCount": "额外开发者数量", - "LicensePrice": "版权价格", + "ActivateTrialLicenseWarningMessage": "激活试用许可证时,将向用户发送一封欢迎电子邮件。您要激活吗?", + "ActivateTrialLicenseSuccessMessage": "已成功激活,并向组织成员发送了欢迎电子邮件。", + "PaymentRequestId": "付款申请编号", + "AdditionalDeveloperCount": "额外的开发人员数量", + "LicensePrice": "许可证价格", "PurchaseDate": "购买日期", - "IsAbpBookDownloaded": "ABP书籍已下载", - "IsMasteringAbpBookDownloadEnabled": "ABP书籍下载已启用", + "IsAbpBookDownloaded": "掌握 ABP》一书已下载?", + "IsMasteringAbpBookDownloadEnabled": "已启用 ABP 图书下载", "Permission:Accounting:CustomPaymentLinkGenerator": "自定义付款链接", "CustomPaymentLink": "自定义付款链接", "Menu:CustomPaymentLink": "自定义付款链接", "Amount": "金额", "GenerateCustomPaymentLink": "生成自定义付款链接", - "GeneratedPaymentLink": "生成的付款链接", + "GeneratedPaymentLink": "生成付款链接", "CopyText": "复制文本", "Permission:CommunityEvents": "活动", "Menu:Events": "活动", "Events": "活动", "EventType": "活动类型", "Number": "数量", - "RegistrationURL": "报名网址", + "RegistrationURL": "注册网址", "URL": "网址", - "EventDeletionConfirmationMessage": "你确定要删除这个活动吗?", - "Enum:EventType:0": "社区讲话", - "CreateAnEvent": "创建一个活动", - "Permission:CommunitySpeakers": "演讲者", - "CreateASpeaker": "创建一个演讲者", - "Speakers": "演讲者", + "EventDeletionConfirmationMessage": "您确定要删除此事件吗?", + "Enum:EventType:0": "社区讲座", + "CreateAnEvent": "创建活动", + "Permission:CommunitySpeakers": "发言人", + "CreateASpeaker": "创建扬声器", + "Speakers": "发言人", "Image": "图片", - "GithubURL": "Github网址", - "SpeakerDeletionConfirmationMessage": "你确定要删除这个演讲者吗?", - "Menu:Speakers": "演讲者", - "ChooseSpeakerImage": "选择一个演讲者图片...", - "SpeakerImage": "演讲者图片", - "AddSpeaker": "添加演讲者", + "GithubURL": "Github URL", + "SpeakerDeletionConfirmationMessage": "您确定要删除这个扬声器吗?", + "Menu:Speakers": "发言人", + "ChooseSpeakerImage": "选择扬声器图像...", + "SpeakerImage": "扬声器图像", + "AddSpeaker": "添加扬声器", "ShowPurchaseItemsOfOrganizations": "购买项目", - "Enum:OrganizationPurchaseState:0": "未送达", - "Enum:OrganizationPurchaseState:1": "已送达", + "Enum:OrganizationPurchaseState:0": "未交付", + "Enum:OrganizationPurchaseState:1": "已交付", "PurchaseItems": "购买项目", "SuccessfullyUpdated": "成功更新", "SuccessfullyAdded": "成功添加", "PurchaseState": "购买状态", - "ShowBetweenDayCount": "显示之间的天数", - "PurchaseOrder": "购买订单", + "ShowBetweenDayCount": "日间演出", + "PurchaseOrder": "采购订单", "ShowCreateInvoiceOfOrganization": "创建发票", "ShowCreateQuotationOfOrganization": "创建报价单", - "BookDiscounts": "书籍折扣", - "Permission:BookDiscount": "书籍折扣", - "Menu:BookDiscounts": "书籍折扣", + "BookDiscounts": "图书折扣", + "Permission:BookDiscount": "图书折扣", + "Menu:BookDiscounts": "图书折扣", "BookType": "书籍类型", "PurchasePlatform": "购买平台", "StartTime": "开始时间", "EndTime": "结束时间", - "CreateABookDiscount": "创建一个书籍折扣", - "BookDiscountDeletionConfirmationMessage": "你确定要删除这个书籍折扣吗?", - "CustomPaymentFlexSwitchDescription": "授权", - "AllowFeatureUpgradeOnLicenseExpire": "允许在授权过期时进行功能升级", - "Deleted{0}": "[已删除 {0}]", + "CreateABookDiscount": "创建图书折扣", + "BookDiscountDeletionConfirmationMessage": "您确定要删除此图书折扣吗?", + "CustomPaymentFlexSwitchDescription": "有许可证", + "AllowFeatureUpgradeOnLicenseExpire": "许可证到期时允许功能升级", + "Deleted{0}": "[删除{0}]", "Tags": "标签", - "SetTagsInfo": "标签使用逗号分隔,例如:CSharp, Entity Framework", - "RejectTrialLicenseWarningMessage": "您确定要拒绝这个试用许可证申请吗?", - "ExportToExcel": "导出Excel", + "SetTagsInfo": "标签应以逗号分隔。例如:CSharp、实体框架", + "RejectTrialLicenseWarningMessage": "您确定要拒绝此试用许可申请吗?", + "ExportToExcel": "导出到 Excel", "OverallTotalPrice": "总价", - "OverallDiscountPrice": "折扣价", - "OverallDiscountText": "折扣内容", - "SelectReport": "- 选择报表 -", + "OverallDiscountPrice": "总折扣价", + "OverallDiscountText": "整体折扣文本", + "SelectReport": "- 选择报告", "NoDataAvailable": "无数据", - "StatisticsOfCachedContents": "nuget.abp.io缓存的NuGet包内容统计", + "StatisticsOfCachedContents": "nuget.abp.io 缓存的 NuGet 软件包内容统计", "Compact": "紧凑型", "EditSettings": "编辑设置", - "CurrentEstimatedSize": "当前预计规模", - "CurrentEntryCount": "当前数量", - "TotalHits": "点击量", - "TotalMisses": "未命中总数", - "NoResponseFrom": "没有收到任何答复", - "ContentCacheSlidingExpirationByDay": "内容缓存按天滑动过期", - "MaxDaysForCaching": "缓存的最大天数", - "Enabled": "启用", - "Menu:NugetPackagesContentCache": "NuGet包缓存", - "NugetPackagesContentCache": "NuGet内容缓存", - "SlidingExpritionByDayInfo": "获取或设置一个缓存在多长时间内不活动(例如,不被访问)才会被删除。这不会使期超过绝对到期时间。", - "MaxDaysForCachingInfo": "获取或设置相对于当前时间的绝对过期时间。", - "CurrentEstimatedSizeInfo": "当前在内存缓存中的所有NuGet包的内容大小的估计总和", - "CurrentEntryCountInfo": "当前在内存缓存中的实例数量。", - "TotalHitsInfo": "缓存未命中总数,当从缓存请求文件并且缓存能够满足该请求时,就会发生缓存命中。。", - "TotalMissesInfo": "缓存命中的总数,缓存未命中是指缓存中不包含请求的内容。", + "CurrentEstimatedSize": "目前的预计规模", + "CurrentEntryCount": "当前条目计数", + "TotalHits": "总点击数", + "TotalMisses": "失误总数", + "NoResponseFrom": "没有答复", + "ContentCacheSlidingExpirationByDay": "内容缓存按天滑动到期", + "MaxDaysForCaching": "缓存最长天数", + "Enabled": "已启用", + "Menu:NugetPackagesContentCache": "NuGet 缓存", + "NugetPackagesContentCache": "NuGet 内容缓存", + "SlidingExpritionByDayInfo": "获取或设置缓存条目在多长时间内处于非活动状态(如未被访问)才会被删除。这不会使条目生命周期超出绝对过期时间。", + "MaxDaysForCachingInfo": "获取或设置相对于现在的绝对到期时间。", + "CurrentEstimatedSizeInfo": "表示当前内存缓存中所有 NuGet 软件包内容大小的估计总和", + "CurrentEntryCountInfo": "表示当前内存缓存中的实例数量。", + "TotalHitsInfo": "表示缓存未命中的总数。缓存命中是指从缓存请求文件,而缓存能够满足该请求。", + "TotalMissesInfo": "表示缓存点击总数。缓存未命中是指缓存中没有请求的内容。", "Permission:VersionHistory": "版本历史", "Caches": "缓存", "VersionHistories": "版本历史", "Version": "版本", - "PublishDate": "发布日期", + "PublishDate": "出版日期", "IsStableVersion": "稳定版", - "IsActive": "激活", + "IsActive": "活跃", "NewVersion": "新版本", "VersionHistoryDeletionConfirmationMessage": "您确定要删除此版本吗?", - "CreateAbpConsultantLogoInfo": "最大文件大小:1MB
支持的文件类型:jpg, jpeg, png, SVG, WebP", - "UrlCode": "许可证代码", - "Clear": "清除", - "Permission:AbpConsultant": "ABP顾问", - "Menu:AbpConsultants": "ABP顾问", - "CreateAbpConsultant": "创建ABP顾问", - "UrlCodeIsNotAvailable": "Url代码已被其他ABP顾问使用。", - "AbpConsultants": "ABP顾问", - "AbpConsultant": "ABP顾问", - "AbpConsultantEdit": "编辑ABP顾问", - "AbpConsultantCreate": "创建ABP顾问", - "WhoWeAreItem": "关于我们", - "FieldIsRequired": "{0}是必须的。", - "FieldIsNotValid": "{0}是无效的。", + "CreateAbpConsultantLogoInfo": "最大文件大小:1MB
支持的文件类型:jpg、jpeg、png、SVG、WebP隐私政策 。", - "WouldLikeToReceiveNotification": "我想从 abp.io 网站接收最新消息。", - "CommercialNewsletterConfirmationMessage": "我同意条款 & 条件 和 隐私政策。", + "TermsAndConditions": "条款和条件", + "WouldLikeToReceiveMarketingMaterials": "我希望收到营销资料,如产品优惠和特价。", + "JoinOurMarketingNewsletter": "加入我们的营销通讯", + "CommunityPrivacyPolicyConfirmation": "我同意条款和条件以及 隐私政策。", + "WouldLikeToReceiveNotification": "我希望收到来自 abp.io 网站的最新消息。", + "CommercialNewsletterConfirmationMessage": "我同意条款和条件以及隐私政策。", "FreeDDDEBook": "免费 DDD 电子书", - "AdditionalServices": "额外服务", + "AdditionalServices": "附加服务", "Learn": "学习", - "AccountOverview": "账户信息", + "AccountOverview": "账户概览", "MyOrganizations": "我的组织", "MySupportQuestions": "我的支持问题", "MyProfile": "我的简介", - "Logout": "登出", - "Home": "主页", - "Posts": "帖子", + "Logout": "注销", + "Home": "首页", + "Posts": "职位", "Videos": "视频", "JoinTheABPCommunity": "加入 ABP 社区", "SubmitYourPost": "提交您的帖子", "Modules": "模块", "Tools": "工具", - "Pricing": "价格", + "Pricing": "定价", "ChangeLogs": "更改日志", "SubscribeToNewsletter": "订阅时事通讯", - "SubscribeToNewsletterDescription": "获取有关 ABP 的最新相关信息,例如新版本、免费资源、帖子等。", - "EmailAddress": "邮箱地址", + "SubscribeToNewsletterDescription": "获取有关 ABP 发生的信息,如新版本、免费资源、帖子等。", + "EmailAddress": "电子邮件地址", "Subscribe": "订阅", "WelcomeToABP": "欢迎来到 ABP", - "EULA": "最终用户许可协议", - "ABPCommercialIntroductionMessage": "预建应用程序模块、高级启动模板、快速应用程序开发工具、专业 UI 主题和高级支持。", + "EULA": "EULA", + "ABPCommercialIntroductionMessage": "预置应用模块、高级启动模板、快速应用开发工具、专业用户界面主题和优质支持。", "MasteringAbpFrameworkEBook": "掌握 ABP 框架", - "MasteringTheABPFrameworkExplanation": "本书由 ABP 框架的创建者撰写,将帮助您全面了解框架和现代 Web 应用程序开发技术。", - "Speakers": "发言者", + "MasteringTheABPFrameworkExplanation": "本书由 ABP 框架的创建者撰写,将帮助你全面了解该框架和现代网络应用程序开发技术。", + "Speakers": "发言人", "PreviousEvents": "以往活动", "WatchTheEvent": "观看活动", - "RegisterNow": "现在注册", + "RegisterNow": "立即注册", "ThereIsNoEvent": "没有活动。", "Events": "活动", - "Volo.AbpIo.Domain:080000": "已有一个名为 \"{Name}\" 的购买项目", - "MasteringAbpFrameworkBook": "书籍:掌握 ABP 框架", - "ABPIO-CommonPreferenceDefinition": "获取有关 ABP 平台的最新消息,例如新帖子、活动等。", - "BuiltOn": "建立在", + "Volo.AbpIo.Domain:080000": "已有一个名为\"{名称}\"的采购项目", + "MasteringAbpFrameworkBook": "书籍掌握 ABP 框架", + "ABPIO-CommonPreferenceDefinition": "获取有关 ABP 平台的最新消息,如新职位、活动等。", + "BuiltOn": "内置", "AbpFramework": "ABP 框架", "Volo.AbpIo.Domain:080001": "开始时间不能大于结束时间", "Enum:BookType:0": "掌握 ABP 框架", "Enum:PurchasePlatform:0": "亚马逊", - "Enum:PurchasePlatform:1": "Packt", + "Enum:PurchasePlatform:1": "包装", "Copied": "已复制!", "CouldNotCopy": "无法复制!", "CopyNotSupportByYourBrowser": "此功能在您使用的浏览器中不起作用。", @@ -141,93 +141,93 @@ "Address": "地址", "Homepage": "主页", "Year": "年份", - "Year_Plural": "年份", + "Year_Plural": "年数", "Copyright": "版权所有 © {1}", "DomainDrivenDesign": "领域驱动设计", - "CrossCuttingConcerns": "横切关注点", + "CrossCuttingConcerns": "横向关注问题", "AbpCommunity": "ABP 社区", "Footer_GithubStarCount": "{0} GitHub 上的星星", - "Footer_NugetDownloadCount": "{0} NuGet 下载量", - "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的 Web 应用程序开发。 Don't repeat yourself,专注于自己的业务代码。", - "Layout_AbpFramework_MetaTitle": "ABP 框架 | ASP.NET Core 的开源 Web 应用程序框架", - "CommunityTalks_CountdownDays": "天", + "Footer_NugetDownloadCount": "{0} 在 NuGet 上下载", + "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的网络应用程序开发。不要重复自己,专注于自己的业务代码。", + "Layout_AbpFramework_MetaTitle": "ABP Framework | 面向 ASP.NET Core 的开源网络应用框架", + "CommunityTalks_CountdownDays": "天数", "CommunityTalks_CountdownHours": "小时", - "CommunityTalks_CountdownMinutes": "分钟", - "CommunityTalks_CountdownSeconds": "秒", - "SeePreviousEvents": "查看以前的活动", + "CommunityTalks_CountdownMinutes": "最小", + "CommunityTalks_CountdownSeconds": "Sec", + "SeePreviousEvents": "查看以往活动", "CookieConsent_Accept": "接受", - "CookieConsent_Explanation_1": "我们使用 cookie 为您提供在我们网站上的最佳体验。", - "CookieConsent_Explanation_2": "如果您继续浏览,则表示您同意我们的隐私政策和cookie 政策。。", - "Error_Page_400_Title": "提供请求的页面时出现问题。", + "CookieConsent_Explanation_1": "我们使用 cookie 为您提供最佳的网站体验。", + "CookieConsent_Explanation_2": "如果您继续浏览,则表示您同意我们的隐私政策和 Cookie 政策。", + "Error_Page_400_Title": "请求的页面服务出现问题。", "Error_Page_400_Description_1": "通常这意味着在处理您的请求时发生了意外错误。", - "Error_Page_400_Description_2": "如果问题仍然存在,请通过 info@abp.io 联系我们,我们将帮助您开始。", - "GoToHomepage": "去首页", - "Error_Page_404_Title": "页面未找到!", - "Error_Page_404_Description_1": "这不是您要查找的网页。", - "Error_Page_500_Title": "好像出了什么问题!", - "Error_Page_500_Description_1": "我们会自动跟踪这些错误,但如果问题仍然存在,请随时
联系我们。 与此同时,尝试刷新。", - "Error_Page_500_Description_2": "通过 info@abp.io 与我们联系。", + "Error_Page_400_Description_2": "如果问题仍然存在,请通过info@abp.io联系我们,我们将帮助您解决问题。", + "GoToHomepage": "转到主页", + "Error_Page_404_Title": "未找到页面!", + "Error_Page_404_Description_1": "这不是您要找的网页。", + "Error_Page_500_Title": "看来是出了什么问题!", + "Error_Page_500_Description_1": "我们会自动跟踪这些错误,但如果问题仍然存在,请随时
联系我们。同时,请尝试刷新。", + "Error_Page_500_Description_2": "请通过 info@abp.io 与我们联系。", "Books": "书籍", "ABPDiscordServer": "ABP Discord 服务器", - "ABPCommunityTalks": "ABP社区讲话", - "ABPCommunityPosts": "ABP社区文章", - "BuyAndGetMonths": "购买 12 个月,获得 14 个月!", - "GetYourDeal": "得到你的交易", - "BuyOrRenewLicense": "立即购买或续订许可证并额外获得 2 个月!", - "BuyOrRenewLicenseToGetExtra2Months": "立即购买或续订 ABP 商业许可证(适用于所有版本)并额外获得 2 个月!", - "HurryUp": "赶快下单!", - "LastDay": "活动截止日期: {0}", - "BuyNewLicenseBetweenDatesToGetBenefit": "在 {0} 和 {1} 之间购买一个新的许可证以获得额外 2 个月的收益!", - "CheckAllCommunityTalks": "检查所有社区帖子", - "ReadMore": "阅读更多", + "ABPCommunityTalks": "ABP 社区讲座", + "ABPCommunityPosts": "ABP 社区帖子", + "BuyAndGetMonths": "买 12 个月,送 14 个月!黑色 星期五", - "ValidForExistingCustomers": "也适用于
现有用户!", - "CampaignBetweenDates": "从 {0}
至 {1}", - "SaveUpTo": "最多节省 至${0}K", - "ImplementingDDD": "实现领域驱动设计", - "ExploreTheEBook": "浏览电子书", - "ExploreTheBook": "浏览书籍", - "ConsultantType": "顾问类型", - "Expert": "ABP专家", - "Partner": "ABP合作伙伴", + "GiveAwayForNewPurchases": "新购买的产品将获赠应用开发课堂培训!", + "BlackFriday": "黑色 星期五 现有客户!", + "CampaignBetweenDates": "从 {0}
到 {1}", + "SaveUpTo": "节省高达${0}K春季促销!", - "SpringCampaign2": "限时优惠!
", + "SpringCampaign2": "限时
优惠!个额外月份
", + "More": "更多信息", + "WhyABPIOPlatform": "为什么选择 ABP.IO 平台?", + "AbpStudio": "ABP 工作室", + "ExtraMonths": "{0}额外的一个月一个完整的web开发平台基于 框架", - "AbpCommercialShortDescription": "ABP商业版提供了预构建的应用程序模块, 快速的应用程序开发工具, 专业的UI主题, 高级支持等.", - "LiveDemo": "在线演示", - "LiveDemoLead": "{1} 到你的ABP账户, {3} 到 abp.io.
或者填写下面的表单立即创建在线演示", - "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "已经有一个使用此电子邮件地址的帐户: {0}
你可以使用你的帐户登录继续.", - "GetLicence": "获得许可", - "Application": "应用程序", + "NotOrganizationMember": "您不是任何组织的成员。", + "UnsubscribeLicenseExpirationEmailSuccessTitle": "成功取消订阅", + "UnsubscribeLicenseExpirationEmailSuccessMessage": "您将不再收到许可证到期提醒邮件。", + "IndexPageHeroSection": "完整的网络开发平台内置 框架", + "AbpCommercialShortDescription": "ABP Commercial 提供预建应用程序模块、快速应用程序开发工具、专业用户界面主题、优质支持等。", + "LiveDemo": "现场演示", + "LiveDemoLead": "{1}使用您的 ABP 帐户,{3}访问 abp.io。
或填写下表,立即创建实时演示。", + "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "已存在使用给定电子邮件地址的帐户:{0}
您可以使用您的账户登录,然后继续。", + "GetLicence": "获取许可证", + "Application": "应用", "StartupTemplates": "启动模板", "Startup": "启动", "Templates": "模板", @@ -61,1026 +61,1027 @@ "Premium": "高级", "PremiumSupport": "高级支持", "PremiumForumSupport": "高级论坛支持", - "UI": "UI", + "UI": "用户界面", "Themes": "主题", "JoinOurNewsletter": "加入我们的时事通讯", "Send": "发送", - "WhatIsABPFramework": "什么是ABP框架?", - "OpenSourceBaseFramework": "开源的框架", - "ABPFrameworkExplanation": "

ABP商业版基于ABP框架, 这是一个开源和社区驱动的ASP.NET Core web应用程序开发框架.

ABP框架提供了出色的基础设施, 使用最佳实践编写可维护,可扩展,可测试的代码.

基于你已经知道的流行工具. 低学习曲线,容易适应,舒适的开发体检.

", + "WhatIsABPFramework": "什么是 Abp 框架?", + "OpenSourceBaseFramework": "开源基础框架", + "ABPFrameworkExplanation": "

ABP商业版基于ABP框架,ABP框架是面向ASP.NET Core的开源和社区驱动的网络应用程序框架。

ABP框架提供了出色的基础架构,可帮助您使用最佳实践编写可维护、可扩展和可测试的代码。学习曲线低、适应简单、开发舒适。", "Modular": "模块化", - "MicroserviceCompatible": "微服务兼容", + "MicroserviceCompatible": "兼容微服务", "DomainDrivenDesignInfrastructure": "领域驱动设计基础设施", "MultiTenancy": "多租户", - "DistributedMessaging": "分布式消息", + "DistributedMessaging": "分布式信息传递", "DynamicProxying": "动态代理", - "BackgroundJobs": "后台作业", + "BackgroundJobs": "背景工作", "AuditLogging": "审计日志", - "BLOBStoring": "BLOB存储", - "BundlingMinification": "捆绑 & 压缩", + "BLOBStoring": "BLOB 存储", + "BundlingMinification": "捆绑和最小化", "AdvancedLocalization": "高级本地化", - "ManyMore": "以及更多", - "ExploreTheABPFramework": "探索ABP框架", - "WhyUseTheABPCommercial": "为什么使用ABP商业版?", - "WhyUseTheABPCommercialExplanation": "

构建企业级的web应用程序可能复杂和耗时.

ABP商业版提供所有现代企业级基于ASP.NET Core的解决方案所需要的基础设施. 从设计到部署,整个开发生命周期都由ABP的内置功能和模块提供支持.

", - "StartupTemplatesShortDescription": "启动模板使你在几秒内快速启动项目.", - "UIFrameworksOptions": "UI框架选项;", - "DatabaseProviderOptions": "数据库提供程序选项;", - "PreBuiltApplicationModules": "预构建的应用程序模块", - "PreBuiltApplicationModulesShortDescription": "大多数常见的应用程序需求已经做为可重用的模块为你开发了.", + "ManyMore": "更多", + "ExploreTheABPFramework": "探索 ABP 框架", + "WhyUseTheABPCommercial": "为什么使用 ABP 商业网站?", + "WhyUseTheABPCommercialExplanation": "

构建企业级 Web 应用程序可能既复杂又耗时。

ABP Commercial 为所有基于 ASP.NET Core 的现代企业级解决方案提供了所需的完美基础架构。从设计到部署,整个开发周期都由 ABP 的内置功能和模块提供支持。", + "StartupTemplatesShortDescription": "启动模板可让您在几秒钟内快速启动项目。", + "UIFrameworksOptions": "用户界面框架选项;", + "DatabaseProviderOptions": "数据库提供商选项;", + "PreBuiltApplicationModules": "预建应用模块", + "PreBuiltApplicationModulesShortDescription": "大多数常见的应用需求已作为可重复使用的模块为您开发。", "Account": "账户", "Blogging": "博客", - "Identity": "Identity", - "IdentityServer": "Identity Server", - "Saas": "Saas", + "Identity": "身份", + "IdentityServer": "身份服务器", + "Saas": "萨斯", "LanguageManagement": "语言管理", "TextTemplateManagement": "文本模板管理", - "See All Modules": "查看所有的模块", - "ABPSuite": "ABP Suite", - "AbpSuiteShortDescription": "ABP Suite是ABP商业版的辅助工具.", - "AbpSuiteExplanation": "它让你在几分钟内构建web页面. 它是一个.Net Core全局工具,可以使用命令行安装. 它可以创建一个新的ABP解决方案,从数据库生成前端CURD页面.", - "Details": "详情", - "LeptonTheme": "Lepton主题", - "ProfessionalModernUIThemes": "专业, 现代化的UI主题", - "LeptonThemeExplanation": "Lepton提供了一系列的Bootstrap管理主题,为任何需要管理仪表盘的项目提供了坚实的基础.", + "See All Modules": "查看所有模块", + "ABPSuite": "ABP 套房", + "AbpSuiteShortDescription": "ABP Suite 是 ABP 商业软件的补充工具。", + "AbpSuiteExplanation": "它能让你在几分钟内创建网页。它是一个 .NET Core Global 工具,可通过命令行安装。它可以创建一个新的 ABP 解决方案,并生成从数据库到前端的 CRUD 页面。", + "Details": "详细信息", + "LeptonTheme": "Lepton 主题", + "ProfessionalModernUIThemes": "专业、现代的用户界面主题", + "LeptonThemeExplanation": "Lepton 提供各种 Bootstrap 管理主题,为任何需要管理仪表板的项目奠定了坚实的基础。", "DefaultTheme": "默认主题", - "MaterialTheme": "Material主题", - "Default2Theme": "默认主题2", + "MaterialTheme": "材料主题", + "Default2Theme": "默认 2 主题", "DarkTheme": "深色主题", - "DarkBlueTheme": "深蓝主题", - "LightTheme": "浅色主题", - "ProudToWorkWith": "荣幸与你合作", - "OurConsumers": "全球70多个国家的数百家企业和开发商使用ABP商业版.", - "JoinOurConsumers": "加入他们并快速构建令人惊叹的产品.", - "AdditionalServicesExplanation": "你是否需要额外或自定义的服务? 我们和我们的合作伙伴可以提供;", - "CustomProjectDevelopment": "自定义项目开发", - "CustomProjectDevelopmentExplanation": "专为你的自定义的开发人员.", + "DarkBlueTheme": "深蓝色主题", + "LightTheme": "灯光主题", + "ProudToWorkWith": "为能与我们合作而自豪", + "OurConsumers": "全球 70 多个国家数以千计的企业和开发商信赖 ABP Commercial。", + "JoinOurConsumers": "加入他们,快速打造令人惊叹的产品。", + "AdditionalServicesExplanation": "您需要额外或定制服务吗? 我们和我们的合作伙伴可以提供:登录.", - "ApplicationTemplate": "应用程序模板", - "ApplicationTemplateExplanation": "应用程序启动模板用于创建新的web应用程序.", - "EfCoreProvider": "Entity Framework (支持 SQL Server, MySQL, PostgreSQL, Oracle 和其它)", - "AlreadyIncludedInTemplateModules": "以下模块已经包含并配置在此模板中:", - "ApplicationTemplateArchitecture": "应用程序模板还支持UI,API,身份验证服务器物理分离的分层架构.", - "SeeTheGuideOrGoToTheLiveDemo": "查看开发人员指南或者查看在线演示了解更多关于模板的信息.", + "WeWillReplyYou": "我们收到了您的留言,将尽快与您联系。", + "GoHome": "回家", + "CreateLiveDemo": "创建实时演示", + "CreateLiveDemoDescription": "提交表格后,您将收到一封包含演示链接的电子邮件。", + "RegisterToTheNewsletter": "注册时事通讯,以接收有关 ABP.IO 的信息,包括新发布的信息等。", + "EnterYourEmailOrLogin": "输入您的电子邮件地址以创建演示版,或 使用现有帐户登录。", + "ApplicationTemplate": "申请模板", + "ApplicationTemplateExplanation": "应用程序启动模板用于创建新的网络应用程序。", + "EfCoreProvider": "实体框架(支持 SQL Server、MySQL、PostgreSQL、Oracle 及其他)", + "AlreadyIncludedInTemplateModules": "本模板已包含并配置了以下模块:", + "ApplicationTemplateArchitecture": "该应用程序模板还支持分层架构,其中用户界面层、应用程序接口层和身份验证服务是物理分离的。", + "SeeTheGuideOrGoToTheLiveDemo": "请查看开发人员指南,了解有关此模板的技术信息,或访问实时演示。", "DeveloperGuide": "开发人员指南", "ModuleTemplate": "模块模板", - "ModuleTemplateExplanation1": "你是否想要创建可在不同应用程序之间重用的模块? 这个启动模板准备好了一切来创建可重用的应用程序模块或微服务.", - "ModuleTemplateExplanation2": "

你可以为一个模块支持单个或多个UI框架, 单个或多个数据库提供程序. 除了单元测试和集成测试基础架构外,启动模板被配置为在一个最小的应用程序中运行和测试你的模块.

查看开发人员指南了解有关此模板的技术信息.

", - "WithAllStyleOptions": "使用所有的样式选项", + "ModuleTemplateExplanation1": "您想创建一个模块并在不同的应用程序中重复使用?本启动模板为创建可重用的 应用模块或 微服务准备了一切。", + "ModuleTemplateExplanation2": "

您可以为单个模块支持单个或多个 UI 框架、单个或多个数据库提供商。除了单元和集成测试基础架构外,启动模板还被配置为在最小应用程序中运行和测试您的模块。

有关该模板的技术信息,请查看开发人员指南。", + "WithAllStyleOptions": "所有款式可选", "Demo": "演示", - "SeeAllModules": "查看所有的模块", - "ABPCLIExplanation": "ABP CLI(命令行页面)是一个执行基于ABP解决方案的一些常见操作的命令行工具.", - "ABPSuiteEasilyCURD": "ABP Suite是一个使你轻松创建CURD页面的工具", - "WeAreHereToHelp": "我们在这里为你提供帮助", - "BrowseOrAskQuestion": "你可以浏览我们的帮助主题或搜索常见的问题, 或者你可以使用联系表单向我们提问.", - "SearchQuestionPlaceholder": "搜索常见的问题", - "WhatIsTheABPCommercial": "什么是ABP商业版?", - "WhatAreDifferencesThanAbpFramework": "ABP框架与ABP商业版有什么不同?", - "AbpCommercialMetaTitle": " {0} | ABP 商业版 ", - "AbpCommercialMetaDescription": "ABP 商业版是在开源ABP框架之上构建的一组预构建应用程序模块、快速开发工具、UI主题和服务架构", - "ABPCommercialExplanation": "ABP商业版是一套基于开源ABP框架之上的高级模块,工具,主题和服务. ABP商业版由ABP框架背后的同一团队开发和支持.", - "WhatAreDifferencesThanABPFrameworkExplanation": "

ABP框架是模块化,主题化,微服务兼容的ASP.NET Core应用程序开发框架. 它提供了一个完整的架构和强大的基础设施,让你专注于自己的业务代码而不是重复自己的每一个项目. 它基于软件开发的最佳实践和你已经知道的流行工具

ABP框架是完全免费,开源和由社区驱动的. 它还提供了一个免费的主题和一些预构建的模块 (如 identity管理和租户管理).

", - "VisitTheFrameworkVSCommercialDocument": "访问以下链接,了解更多信息 {1} ", - "ABPCommercialFollowingBenefits": "ABP商业版在ABP框架之上添加了以下好处;", - "Professional": "专业的", - "UIThemes": "UI主题", - "EnterpriseModules": "企业就绪,功能丰富,预构建的应用程序模块 (如 Identity Server管理, SaaS管理, 语言管理)", - "ToolingToSupport": "支持你的生产力的工具(如. ABP Suite)", - "PremiumSupportLink": "高级支持", - "WhatDoIDownloadABPCommercial": "购买ABP商业版后我可以下载什么?", - "CreateUnlimitedSolutions": "一旦你购买了ABP商业许可, 你可以创建入门文档中描述的无限的解决方案.", - "ABPCommercialSolutionExplanation": "创建新应用程序时,将根据你的首选项获得Visual Studio解决方案(启动模板). 下载的解决方案已为你安装并配置了商业模块和主题. 你可以删除预装的模块,也可以根据需要添加其他模块. 默认情况下所有模块和主题都使用NuGet/NPM软件包.", - "StartDevelopWithTutorials": "下载的解决方案经过精心设计和记录, 你可以根据教程来开发自己的业务代码.", - "TryTheCommercialDemo": "你可以尝试示例来查看使用ABP商业模板创建的示例应用程序.", - "HowManyProducts": "使用ABP商业版,我可以构建多少不同的产品/解决方案?", - "HowManyProductsExplanation": "创建ABP项目没有限制. 你可以根据需要创建任意数量的项目,进行开发并将其部署到其他服务器.", - "HowManyDevelopers": "有多少开发者可以参与ABP商业版工作?", - "HowManyDevelopersExplanation": "ABP商业许可是针对每个开发人员的. 不同的许可类型具有不同的开发人员限制. 但是你可以在需要时将更多开发人员添加到任何许可类型. 查看许可类型,开发人员限制和额外的开发人员成本的价格页面.", - "ChangingLicenseType": "将来更改我的许可类型吗?", - "ChangingLicenseTypeExplanation": "你始终可以在同一许可中添加新的开发人员. 参阅 \"有多少开发者可以参与ABP商业版工作?\". 你还可以通过支付计算出的价格差来升级到更高的许可. 当你升级到更高的许可计划时,可以享受新计划的好处,但是许可升级不会更改许可的到期日期.", - "LicenseExtendUpgradeDiff": "许可扩展和升级有什么区别?", - "LicenseExtendUpgradeDiffExplanation": "延长: 你通过延长/续费你的许可证,你将继续获得高级支持和主要或次要更新模块和主题。除此之外,你还将继续创建新的项目。并且你仍然可以使用ABP Suite,这将加快你的开发。当你延长你的许可证时,1年将添加到你的许可证到期日。
升级: 你通过升级你的许可证,你将晋升到更高的许可证方案,这将允许你获得额外的奖励。查看许可证比较表来查看许可证方案之间的差异。但是,当你升级时,你的许可证到期日不会更改!要延长你的许可证结束日期,你需要延长你的许可证。", - "LicenseRenewalCost": "一年后的许可续期费用是多少?", - "LicenseRenewalCostExplanation": "标准 Team 许可证的续订(扩展)价格为 ${0},标准 Business License 为 ${1},标准 Enterprise License 为 ${2}。 如果您已经是客户,请登录您的帐户查看可用的续订价格。", - "HowDoIRenewMyLicense": "如何续费我的许可证?", - "HowDoIRenewMyLicenseExplanation": "你可以登录以进行续费. 为了享受我们的续费折扣, 请确保在许可证到期之前进行续费, 我们会在到期前7天和30天发送2封续费提醒邮件.", - "IsSourceCodeIncluded": "我的许可是否包括商业模块和主题的源代码?", - "IsSourceCodeIncludedExplanation1": "取决于你购买的许可类型:", - "IsSourceCodeIncludedExplanation2": "团队: 你的解决方案将这些模块和主题作为NuGet和NPM包使用. 它不包括其源代码. 这样,只要有新版本可用,你就可以轻松升级这些模块和主题. 但是,你无法获取模块和主题的源代码.", - "IsSourceCodeIncludedExplanation3": "商业/企业: 除了团队许可外,你还可以下载所需的任何模块或主题的源代码. 你甚至可以删除特定模块的NuGet/NPM软件包引用,并将其源代码直接添加到你的解决方案中以完全更改它.", - "IsSourceCodeIncludedExplanation4": "

将模块的源代码包含到解决方案中,可以最大程度地自定义该模块. 但是当新版本发布时,将无法自动升级模块.

这些许可均不包含ABP Suite源代码,该源代码是一个外部工具,可以为你生成代码并帮助你进行开发

有关许可类型之间的其它差异查看定价页面.

", - "ChangingDevelopers": "我将来可以更改我组织的注册开发人员吗?", - "ChangingDevelopersExplanation": "除了将新的开发人员添加到你的许可中之外,你还可以更改现有的开发人员(可以删除一个开发人员并将新的开发人员添加到同一位置),而无需任何额外费用.", - "WhatHappensWhenLicenseEnds": "我的许可证期间结束时,会发生什么?", - "WhatHappensWhenLicenseEndsExplanation1": "你的ABP商业许可证是一个永久许可证。你的许可证到期后,你可以继续开发你的项目。并且你不需要续费你的许可证。你的许可证是一年更新和支持方案默认的。为了继续获得新的功能,性能改进,修复,支持和继续使用ABP Suite,你需要续费你的许可证。你的许可证到期后,你将失去以下功能:", - "WhatHappensWhenLicenseEndsExplanation2": "你不能使用ABP商业创建新的解决方案,但是你可以继续开发你现有的应用程序。", - "WhatHappensWhenLicenseEndsExplanation3": "你将能够获得模块和主题的更新(除了RC或预览版本)。例如,如果你使用模块的v3.2.0版本,你仍然可以获得v3.2.x版本的更新(v3.2.1,v3.2.5...等等)。但是,你不能获得下一个主要或次要版本的更新(例如v3.3.0,v3.3.3,4.x.x...等等)。例如,你的许可证到期后,最新的发行是v4.4.3,之后,它发布了4.4.4版本和4.5.0版本,你将能够访问v4.4.X,但你不能访问v4.5.X。", - "WhatHappensWhenLicenseEndsExplanation4": "你不能在你的许可证到期后安装ABP商业平台上添加的新模块和主题。", - "WhatHappensWhenLicenseEndsExplanation5": "你不能使用ABP Suite。", - "WhatHappensWhenLicenseEndsExplanation6": "你不能再获得高级支持。", - "WhatHappensWhenLicenseEndsExplanation7": "如果您想继续获得这些好处,您可以延长(续订)您的许可证。 如果您在许可证到期后 {3} 天内延长许可证,将应用以下折扣:团队许可证 {0}; 营业执照{1}; 企业许可证 {2}。", - "discountForYears": "{0}% 折扣 {1} 年", - "WhatHappensWhenLicenseEndsExplanation8": "您生成的 ABP 项目未存储在我们的服务器上。 因此,您有责任保留下载的源代码。 当您的许可证到期时,将无法获取您生成的 ABP 项目源代码。", - "WhenShouldIRenewMyLicense": "我什么时候应该续订我的许可?", - "WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后 {3} 天 内续订许可证,将适用以下折扣:团队许可证 {0}; 营业执照{1}; 企业许可证 {2}。 但是,如果您在许可证到期后 {3} 天 后续订许可证,则续订价格将与许可证购买价格相同,并且您的续订不会有任何折扣。", - "TrialPlan": "你们有试用计划吗?", - "TrialPlanExplanation": "不,ABP商业版没有试用版。您可以通过查看社区版了解代码质量和方法。我们还为团队许可证提供30天无条件退款保证!您可以在前30天内申请退款。对于商业和企业许可证,我们在30天内提供60%的退款。这是因为商业和企业许可证包含所有模块和主题的完整源代码。", - "DoYouAcceptBankWireTransfer": "你们接受银行电汇吗?", - "DoYouAcceptBankWireTransferExplanation": "是的,我们接受银行电汇。
在通过银行转账发送许可费后,将您的收据和所需的许可类型通过电子邮件发送至accounting@abp.io。 我们的国际银行账户信息:", - "HowToUpgrade": "可用新版本时如何升级现有应用程序?", - "HowToUpgradeExplanation1": "使用ABP商业版创建新应用程序时,所有模块和主题均用作NuGet和NPM软件包. 因此,当有新版本可用时,你可以轻松升级软件包.", - "HowToUpgradeExplanation2": "除了标准的NuGet/NPM升级之外, ABP CLI 还提供了一条更新命令,该命令可自动查找和升级解决方案中的所有与ABP相关的软件包.", - "DatabaseSupport": "支持哪些数据库系统?", - "DatabaseSupportExplanation": "ABP框架本身与数据库无关,并且就其性质而言,可以与任何数据库提供程序一起使用. 请参阅数据访问文档以获取当前实现的提供程序的列表.", - "UISupport": "支持哪些UI框架?", - "Supported": "支持的", - "UISupportExplanation": "ABP框架本身与UI框架无关,并且可以与任何UI框架一起使用. 但是,并非针对所有UI框架都实现了启动模板,模块UI和主题. 有关UI选项的最新列表,请参见入门文档.", - "MicroserviceSupport": "它是否支持微服务架构?", - "MicroserviceSupportExplanation1": "ABP框架的主要目标之一是为创建微服务解决方案提供便利的基础架构. 请参阅微服务体系结构文档,以了解它如何帮助创建微服务系统.", - "MicroserviceSupportExplanation2": "所有的ABP商业模块通过模块开发最佳实践文档被设计为支持微服务部署场景(使用自己的API和数据库).", - "MicroserviceSupportExplanation3": "我们提供了一个示例微服务演示解决方案,该示例演示了一种微服务架构实现,可帮助你创建自己的解决方案.", - "MicroserviceSupportExplanation4": "所以简短的答案是 \"是的, 它支持微服务体系结构\".", - "MicroserviceSupportExplanation5": "但是,微服务系统是一个解决方案,每个解决方案都有不同的要求,网络拓扑,通信场景,身份验证可能性,数据库分离/共享决策,运行时配置,第三方系统集成等等.", - "MicroserviceSupportExplanation6": "ABP框架和ABP商业版提供了微服务方案,微服务兼容模块,示例和文档的基础结构,以帮助你构建自己的解决方案. 但是不要期望直接下载为你预先构建的梦想解决方案. 你将需要了解它,并根据需要将某些部分组合在一起.", - "WhereCanIDownloadSourceCode": "在哪里可以下载源代码?", - "WhereCanIDownloadSourceCodeExplanation": "你可以通过ABP Suite或ABP CLI下载所有ABP模块,Angular软件包和主题的源代码. 请参见如何下载源代码?", - "ComputerLimitation": "开发人员在开发ABP时可以登录到多少台计算机?", - "ComputerLimitationExplanation": "我们特别允许每个个人/许可的开发人员使用 {0}台计算机. 每当需要开发人员在第三台计算机上开发ABP商业产品时,都应将电子邮件发送到license@abp.io,以说明情况,然后我们将在系统中进行适当分配.", - "RefundPolicy": "你们有退款政策吗?", - "RefundPolicyExplanation": "你可以在购买许可的30天内请求退款.商业和企业许可类型都有源代码下载选项,因此商业和企业(以及任何包含获得源代码的权利的许可)都不能退款.此外,续展和购买第二次许可也不退款.", - "HowCanIRefundVat": "我该如何退还增值税?", - "HowCanIRefundVatExplanation1": "如果你使用2Checkout付款,则可以通过2Checkout帐户退还增值税:", - "HowCanIRefundVatExplanation2": "登录到你的2Checkout账户", - "HowCanIRefundVatExplanation3": "找到适当的订单,然后按\"退还已延期的增值税\"(输入你的增值税ID", - "HowCanIGetMyInvoice": "我如何获得发票?", - "HowCanIGetMyInvoiceExplanation": "有两个用于购买许可的支付网关:Iyzico和2Checkout. 如果你通过2Checkout网关购买许可,则它将PDF发票发送到你的电子邮件地址,请参阅2Checkout发票.如果你是通过Iyzico网关或通过银行电汇购买的,我们将准备并发送你的发票. 你可以从组织管理页面索取发票.", + "SeeAllModules": "查看所有模块", + "ABPCLIExplanation": "ABP CLI(命令行界面)是一种命令行工具,用于执行基于 ABP 的解决方案的一些常用操作。", + "ABPSuiteEasilyCURD": "ABP Suite 是一款可让您轻松创建 CRUD 页面的工具", + "WeAreHereToHelp": "我们在这里帮助联系表单向我们提问。", + "SearchQuestionPlaceholder": "在常见问题中搜索", + "WhatIsTheABPCommercial": "ABP Commercial 是什么?", + "WhatAreDifferencesThanAbpFramework": "开源 ABP 框架与 ABP 商业版之间有哪些区别?", + "AbpCommercialMetaTitle": "{0}| ABP 商业", + "AbpCommercialMetaDescription": "基于 ABP 框架的综合网站开发平台,提供预建模块、启动模板、快速开发工具、专业用户界面主题和高级支持。", + "ABPCommercialExplanation": "ABP 商业版是建立在开源 ABP 框架之上的一套高级模块、工具、主题和服务。ABP 商业版由 ABP 框架背后的同一团队开发和支持。", + "WhatAreDifferencesThanABPFrameworkExplanation": "

ABP 框架是适用于 ASP.NET Core 的模块化、可主题化、微服务兼容的应用程序开发框架。它提供了完整的架构和强大的基础架构,让您可以专注于自己的业务代码,而不必为每个新项目重复自己的工作。它基于软件开发的最佳实践和您已经熟悉的流行工具。

ABP 框架是完全免费、开源和社区驱动的。它还提供免费主题和一些预建模块(如身份管理和租户管理)。", + "VisitTheFrameworkVSCommercialDocument": "请访问以下链接了解更多信息 {1}", + "ABPCommercialFollowingBenefits": "ABP Commercial 在 ABP 框架的基础上增加了以下优势:", + "Professional": "专业人员", + "UIThemes": "用户界面主题", + "EnterpriseModules": "企业就绪、功能丰富的预建 应用模块(例如身份服务器管理、SaaS 管理、语言管理)", + "ToolingToSupport": "支持您提高开发效率的工具(例如 ABP Suite)", + "PremiumSupportLink": "Premium 支持", + "WhatDoIDownloadABPCommercial": "购买 ABP 商业版时,我可以下载什么?", + "CreateUnlimitedSolutions": "一旦您购买了 ABP 商业许可证,您就可以创建无限制的解决方案,如文档中所述。", + "ABPCommercialSolutionExplanation": "创建新应用程序时,系统会根据您的偏好为您提供一个 Visual Studio 解决方案(启动模板)。下载的解决方案已为您安装和配置了商业模块和主题。您可以移除预安装的模块,也可以根据需要添加其他模块。所有模块和主题默认使用 NuGet/NPM 软件包。", + "StartDevelopWithTutorials": "下载的解决方案具有良好的架构和文档。您可以根据教程开始开发自己的业务代码。", + "TryTheCommercialDemo": "您可以尝试 Live Demo 查看使用 ABP 商业启动模板创建的示例应用程序。", + "HowManyProducts": "我可以使用 ABP 商业版构建多少种不同的产品/解决方案?", + "HowManyProductsExplanation": "在许可证有效期内,您可以创建任意数量的项目,没有任何限制!许可证过期后,您将无法创建新项目,但可以继续开发已下载的项目,并将其部署到不限数量的服务器上。", + "HowManyDevelopers": "有多少开发人员可以在 ABP 商业网站上工作?", + "HowManyDevelopersExplanation": "ABP 商业许可证是按开发人员计算的。不同的许可证类型有不同的开发人员限制。但是,您可以根据需要随时向任何许可证类型添加更多开发人员。请查看计划与定价页面,了解许可证类型、开发人员限制和额外的开发人员费用。", + "ChangingLicenseType": "以后可以升级许可证类型吗?", + "ChangingLicenseTypeExplanation": "您可以在有效许可证期限内支付差额,升级到更高的许可证。当您升级到更高的许可证计划时,您将获得新计划的好处,但许可证升级不会改变许可证的到期日。此外,您还可在现有许可证上添加新的开发人员席位,请查看 \"有多少开发人员可在 ABP 商业版上工作?常见问题。", + "LicenseExtendUpgradeDiff": "许可证扩展和升级有什么区别?", + "LicenseExtendUpgradeDiffExplanation": "扩展:通过扩展/续订许可证,您将继续获得高级支持,并获得模块和主题的主要或次要更新。此外,您还可以继续创建新项目。您仍可使用 ABP 套件,从而加快您的开发速度。当您扩展您的许可证时,您的许可证到期日将增加一年。


升级:通过升级您的许可证,您将升级到更高的许可证计划,这将使您获得额外的好处。请查看许可证对照表,了解许可证计划之间的差异。另一方面,当您升级时,您的许可证到期日不会改变!要延长许可证到期日,您需要扩展您的许可证。", + "LicenseRenewalCost": "1 年后的许可证续期费用是多少?", + "LicenseRenewalCostExplanation": "标准团队许可的续订(扩展)价格为{0}美元,标准商业许可的续订(扩展)价格为{1}美元,标准企业许可的续订(扩展)价格为{2}美元。如果您已经是客户,登录您的账户查看当前的续订价格。", + "HowDoIRenewMyLicense": "如何更新许可证?", + "HowDoIRenewMyLicenseExplanation": "您可以通过组织管理页面更新许可证。为了享受我们优惠的 \"提前续费 \"费率,请确保在许可证到期前续费。不必担心不知道提前续订机会何时结束;您将在订阅到期前收到 3 封提醒邮件。我们将分别在到期前 30 天、7 天和 1 天发送。", + "IsSourceCodeIncluded": "我的许可证是否包括商业模块和主题的源代码?", + "IsSourceCodeIncludedExplanation1": "取决于您购买的许可证类型:", + "IsSourceCodeIncludedExplanation2": "团队:您的解决方案将模块和主题作为 NuGet 和 NPM 包使用。它不包括它们的源代码。这样,只要有新版本,您就可以轻松升级这些模块和主题。但是,您无法获得这些模块和主题的源代码。", + "IsSourceCodeIncludedExplanation3": "商业/企业:除了团队许可证外,您还可以下载任何模块或主题的源代码。您甚至可以移除特定模块的 NuGet/NPM 软件包引用,并将其源代码直接添加到您的解决方案中,以对其进行完全更改。", + "IsSourceCodeIncludedExplanation4": "

在您的解决方案中包含一个模块的源代码可使您最大程度地自由定制该模块。

所有许可证均不包含 ABP Suite 源代码,这是一种外部工具,可为您生成代码并协助您进行开发。

请查看 计划与定价页面,了解许可证类型之间的其他区别。", + "ChangingDevelopers": "将来我可以更换组织的注册开发人员吗?", + "ChangingDevelopersExplanation": "除了在许可证中添加新的开发人员外,您还可以更改现有的开发人员(您可以删除一个开发人员,然后在同一席位上添加一个新的开发人员),而无需支付任何额外费用。", + "WhatHappensWhenLicenseEnds": "许可证有效期结束后怎么办?", + "WhatHappensWhenLicenseEndsExplanation1": "ABP 商业许可证是永久许可证。许可证到期后,您可以继续开发您的项目。您没有义务更新许可证。许可证开箱即附带一年的更新和支持计划。为了继续获得新功能、性能增强、错误修复、支持并继续使用ABP套件,您需要更新您的许可证。当您的许可证过期时;", + "WhatHappensWhenLicenseEndsExplanation2": "您不能使用 ABP 商业版创建新的解决方案,但您可以永远继续开发现有的应用程序。", + "WhatHappensWhenLicenseEndsExplanation3": "您将可以获得小版本(RC 或预览版除外)中模块和主题的更新。例如,如果您正在使用某个模块的 v3.2.0,您仍然可以获得该模块 v3.2.x 的更新(v3.2.1、v3.2.5......等)。但您无法获得下一个主要或次要版本(如 v3.3.0、v3.3.3、4.x.x......等)的更新。例如,当您的许可证过期时,最新发布的版本是 v4.4.3,随后发布了 4.4.4 版本和 4.5.0 版本,您可以访问 v4.4.X,但无法访问 v4.5.X。", + "WhatHappensWhenLicenseEndsExplanation4": "许可证到期后,您不能安装添加到 ABP 商业平台的新模块和主题。", + "WhatHappensWhenLicenseEndsExplanation5": "您不能使用 ABP 套件。", + "WhatHappensWhenLicenseEndsExplanation6": "您无法再获得高级支持。", + "WhatHappensWhenLicenseEndsExplanation7": "如果您想继续享受这些优惠,可以延长(续签)许可证。如果您在许可证到期后{3}天内延长许可证,将享受以下折扣:团队许可证{0};商业许可证{1};企业许可证{2}。", + "discountForYears": "{1}年的{0}%折扣", + "WhatHappensWhenLicenseEndsExplanation8": "您生成的 ABP 项目不会存储在我们的服务器上。因此,您有责任保留您下载的源代码。当您的许可证过期时,您将无法获得您生成的 ABP 项目源代码。", + "WhenShouldIRenewMyLicense": "我应该何时更新执照?", + "WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后{3}天内续费,将享受以下折扣:团队许可证 {0};商业许可证 {1};企业许可证 {2}。但是,如果您在许可证到期日{3}天后续订许可证,续订价格将与许可证购买价格相同,续订时将没有折扣。", + "TrialPlan": "您有试用计划吗?", + "TrialPlanExplanation": "是的,要开始免费试用,请联系 marketing@volosoft.com。我们还为团队许可证提供 30 天退款保证,无任何问题!您可以在购买许可证的前 30 天内申请全额退款。对于商业和企业许可证,我们在 30 天内提供 60% 的退款。这是因为商业和企业许可证包含所有模块和主题的完整源代码。", + "DoYouAcceptBankWireTransfer": "你们接受银行电汇吗?", + "DoYouAcceptBankWireTransferExplanation": "是的,我们接受银行电汇。
通过银行汇款支付许可证费用后,请将收据和申请的许可证类型发送至 accounting@volosoft.com。
我们的国际银行账户信息:", + "HowToUpgrade": "新版本推出后,如何升级现有应用程序?", + "HowToUpgradeExplanation1": "使用 ABP Commercial 创建新应用程序时,所有模块和主题都作为 NuGet 和 NPM 包使用。因此,当新版本可用时,您可以轻松升级软件包。", + "HowToUpgradeExplanation2": "除了标准的 NuGet/NPM 升级外,ABP CLI 还提供了一个更新命令,可自动查找并升级解决方案中所有与 ABP 相关的软件包。", + "DatabaseSupport": "支持哪些数据库系统?", + "DatabaseSupportExplanation": "ABP 框架本身与数据库无关,可与任何数据库提供商协同工作。请查看数据访问文档,了解当前实施的提供商列表。", + "UISupport": "支持哪些用户界面框架?", + "Supported": "支持", + "UISupportExplanation": "ABP 框架本身与用户界面框架无关,可与任何用户界面框架配合使用。然而,启动模板、模块用户界面和主题并未针对所有用户界面框架实施。请查看入门文档,了解最新的用户界面选项列表。", + "MicroserviceSupport": "它支持微服务架构吗?", + "MicroserviceSupportExplanation1": "ABP 框架的主要目标之一是为创建微服务解决方案提供便捷的基础架构。请查看微服务架构文档,了解它如何帮助创建微服务系统。", + "MicroserviceSupportExplanation2": "所有 ABP 商业模块都是按照模块开发最佳实践文档设计的,以支持微服务部署方案(具有自己的应用程序接口和数据库)。", + "MicroserviceSupportExplanation3": "我们提供了一个示例 微服务演示解决方案,演示了微服务架构的实现,以帮助您创建自己的解决方案。", + "MicroserviceSupportExplanation4": "因此,简短的回答是:\"是的,它支持微服务架构\"。", + "MicroserviceSupportExplanation5": "然而,微服务系统是一种解决方案,每种解决方案都会有不同的要求、网络拓扑结构、通信场景、验证可能性、数据库分片/分区决策、运行时配置、第三方系统集成等等。", + "MicroserviceSupportExplanation6": "ABP Framework 和 ABP Commercial 为微服务场景提供基础架构、微服务兼容模块、示例和文档,帮助您构建自己的解决方案。但不要指望直接下载为你预先构建的梦想解决方案。您需要了解它,并根据自己的需求将特定部分整合在一起。", + "WhereCanIDownloadSourceCode": "在哪里可以下载源代码?", + "WhereCanIDownloadSourceCodeExplanation": "您可以通过 ABP Suite 或 ABP CLI 下载所有 ABP 模块、Angular 软件包和主题的源代码。查看 如何下载源代码?", + "ComputerLimitation": "开发 ABP 时,开发人员可以登录多少台计算机?", + "ComputerLimitationExplanation": "我们特别允许每位个人/授权开发者使用{0}台计算机。如果开发人员需要在第三台机器上开发 ABP 商业产品,应向 license@abp.io 发送电子邮件说明情况,我们将在系统中进行适当分配。", + "RefundPolicy": "你们有退款政策吗?", + "RefundPolicyExplanation": "您可以在购买许可证后 30 天内申请退款。商业和企业许可证类型有源代码下载选项;因此,我们在 30 天内为商业和企业许可证提供 60% 的退款。此外,续订和第二次购买许可证不退款。", + "HowCanIRefundVat": "如何退还增值税?", + "HowCanIRefundVatExplanation1": "如果您使用 2Checkout 付款,您可以通过您的 2Checkout 账户退还增值税:", + "HowCanIRefundVatExplanation2": "登录您的 2Checkout 账户", + "HowCanIRefundVatExplanation3": "找到相应订单并点击 \"退还延迟退还的增值税\"(输入您的增值税编号)", + "HowCanIGetMyInvoice": "如何获取发票?", + "HowCanIGetMyInvoiceExplanation": "购买许可证有两种付款方式:Iyzico 和 2Checkout。如果您通过 2Checkout 网关购买许可证,它将向您的电子邮箱发送 PDF 发票;请查看 2Checkout 发票。如果您通过 Iyzico 网关、自定义购买链接或银行电汇购买,我们将为您准备并发送发票。您可以从组织管理页面申请或下载发票。在联系我们索取发票之前,请查看您的组织管理页面!", "Forum": "论坛", - "SupportExplanation": "ABP商业版许可包含由ABP框架专家组成的团队提供的高级论坛支持.", - "PrivateTicket": "私有票", - "PrivateTicketExplanation": "企业许可还包含带有电子邮件和票系统的私人支持.", - "AbpSuiteExplanation1": "ABP Suite使你在几分钟内构建web页面. 它是一个.NET Core Global工具,可以使用命令行安装.", - "AbpSuiteExplanation2": "它可以创建一个新的ABP解决方案, 从数据库生成前端CURD页面. 有关技术概述查看文档", - "FastEasy": "快速并且简单", - "AbpSuiteExplanation3": "ABP Suite允许你轻松的创建CURD页面. 你只需要定义你的实体和它的属性, 其它的让ABP Suite帮你完成! ABP Suite会在几秒内为你生成CURD页面和必要的代码. 它支持Angular, MVC和 Blazor用户界面.", + "SupportExplanation": "ABP 商业许可证由 ABP 框架专家组成的团队提供高级论坛支持。", + "PrivateTicket": "私人票务", + "PrivateTicketExplanation": "企业许可证还包括通过电子邮件和票据系统提供的私人支持。", + "AbpSuiteExplanation1": "ABP Suite 可让您在几分钟内创建网页。它是一个 .NET Core 全局工具,可通过命令行安装。", + "AbpSuiteExplanation2": "它可以创建新的 ABP 解决方案,并生成从数据库到前端的 CRUD 页面。有关技术概述,请参阅文档。", + "FastEasy": "快速简便", + "AbpSuiteExplanation3": "ABP Suite 允许您轻松创建 CRUD 页面。你只需定义你的实体及其属性,剩下的就交给 ABP Suite 吧!ABP Suite 可在几秒钟内为您的 CRUD 页面生成所有必要的代码。它支持 Angular、MVC 和 Blazor 用户界面。", "RichOptions": "丰富的选项", - "AbpSuiteExplanation4": "ABP Suite支持多个UI选项,例如 Razor Pages和Angular.它还支持多个数据库, 如 MongoDB 和EntityFramework Core支持的所有数据库(MS SQL Server, Oracle, MySql, PostgreSQL 和 更多).", - "AbpSuiteExplanation5": "好消息是, 你不必担心这些选项. ABP Suite了解你的项目类型并且将生成的代码放到项目中正确的位置.", - "SourceCode": "源码", - "AbpSuiteExplanation6": "ABP Suite为你生成源代码! 它不会生成魔法文件来生成web页面. ABP Suite为实体, 仓储, 应用程序, Code First迁移, JavaScript/TypeScript 和 CSHTML/HTML以及必要的页面生成源代码. ABP Suite根据软件开发的最佳实践来生成代码, 所以你不必担心生成的代码的质量.", - "AbpSuiteExplanation7": "由于你有应用程序层中生成的CURD页面的构建块的源代码, 因此你可以轻松修改源码并将自定义/业务逻辑注入到所生成的代码中.", + "AbpSuiteExplanation4": "ABP Suite 支持多种用户界面选项,如 Razor Pages 和 Angular 。它还支持多种数据库,如 MongoDB 和 EntityFramework Core 支持的所有数据库(MS SQL Server、Oracle、MySql、PostgreSQL 和 其他提供商...)。", + "AbpSuiteExplanation5": "好在你不必担心这些选项。ABP Suite 可以理解您的项目类型,为您的项目生成代码,并将生成的代码放置在项目的正确位置。", + "SourceCode": "源代码", + "AbpSuiteExplanation6": "ABP Suite 为您生成源代码!它不会生成神奇的文件来生成网页。ABP 套件为 实体、资源库、应用程序服务、代码优先迁移、JavaScript/TypeScript 和 CSHTML/HTML 以及必要的接口生成源代码。ABP Suite 还根据软件开发的最佳实践生成代码,因此您不必担心生成代码的质量。", + "AbpSuiteExplanation7": "由于您在正确的应用层中拥有生成的 CRUD 页面构建模块的源代码,因此您可以轻松修改源代码,并将您的自定义/业务逻辑注入到生成的代码中。", "CrossPlatform": "跨平台", - "AbpSuiteExplanation8": "ABP Suite使用.NET Core构建并且它是跨平台的. 它在你的本地电脑中运行为web应用程序. 你可以在Windows, Mac和Linux上运行它", + "AbpSuiteExplanation8": "ABP Suite 采用 .NET Core 构建,具有跨平台性。它在本地计算机上以网络应用程序的形式运行。您可以在Windows、Mac和Linux上运行它。", "OtherFeatures": "其他功能", - "OtherFeatures1": "轻松更新你的解决方案的NuGet和NPM包.", - "OtherFeatures2": "重新生成已经生成的页面.", - "OtherFeatures3": "创建新的解决方案", - "ThanksForCreatingProject": "感谢你创建你的项目!", - "HotToRunSolution": "如何运行你的解决方案?", - "HotToRunSolutionExplanation": "查看入门文档来学习如何配置和运行你的解决方案.", + "OtherFeatures1": "轻松更新解决方案中的 NuGet 和 NPM 软件包。", + "OtherFeatures2": "从头开始重新生成已生成的页面。", + "OtherFeatures3": "创造新的解决方案", + "ThanksForCreatingProject": "您的项目已成功创建!", + "HotToRunSolution": "如何运行您的解决方案?", + "HotToRunSolutionExplanation": "查看入门文档,了解如何配置和运行解决方案。", "GettingStarted": "入门", - "WebAppDevTutorial": "Web应用开发教程", - "WebAppDevTutorialExplanation": "查看web应用程序开发教程文档来一步一步的了解开发示例.", - "Document": "文档", - "UsingABPSuiteToCURD": "使用ABP Suite来生成CURD页面", - "SeeABPSuiteDocument": "查看ABP Suite文档学习如何使用ABP Suite.", - "AskQuestionsOnSupport": "你可以在ABP商业支持提出问题.", - "Documentation": "文档", - "SeeModulesDocument": "查看模块文档获取所有商业(专业)模块列表和它们的文档.", - "Pricing": "价格", - "PricingExplanation": "选择当前业务需要的特性和功能. 随着业务增长轻松升级.", + "WebAppDevTutorial": "网络应用程序开发教程", + "WebAppDevTutorialExplanation": "查看网络应用程序开发教程文档,了解逐步开发示例。", + "Document": "文件", + "UsingABPSuiteToCURD": "使用 ABP 套件生成 CRUD 页面和工具", + "SeeABPSuiteDocument": "查看 ABP 套件文档,了解 ABP 套件的用法。", + "AskQuestionsOnSupport": "您可以在 ABP 商务支持上提问。", + "Documentation": "文件", + "SeeModulesDocument": "有关所有 PRO 模块的列表,请参见模块页面。", + "Pricing": "定价", + "PricingExplanation": "选择当前业务所需的特性和功能。随着业务发展,轻松升级。", "Team": "团队", "Business": "商业", "Enterprise": "企业", - "Custom": "自定义", - "IncludedDeveloperLicenses": "包括开发人员许可", - "CustomLicenceOrAdditionalServices": "需要自定义许可与额外服务?", - "CustomOrVolumeLicense": "自定义或批量许可", + "Custom": "定制", + "IncludedDeveloperLicenses": "包括开发人员许可证", + "CustomLicenceOrAdditionalServices": "需要定制许可证或其他服务?", + "CustomOrVolumeLicense": "自定义或批量许可证", "LiveTrainingSupport": "现场培训和支持", - "AndMore": "和更多", - "AdditionalDeveloperLicense": "额外的开发人员许可", - "ProjectCount": "项目数量", - "AllProModules": "所有模块", - "AllProThemes": "所有主题", + "AndMore": "及更多", + "AdditionalDeveloperLicense": "额外的开发人员许可证", + "ProjectCount": "项目计数", + "AllProModules": "所有专业模块", + "AllProThemes": "所有专业主题", "AllProStartupTemplates": "所有专业启动模板", - "SourceCodeOfAllModules": "所有模块的源码", - "SourceCodeOfAllThemes": "所有主题的源码", - "PerpetualLicense": "永久的许可", - "UnlimitedServerDeployment": "无限制的服务器部署", - "YearUpgrade": "1年升级", - "YearPremiumForumSupport": "1年高级论坛支持", - "ForumSupportIncidentCountYear": "论坛支持事件数量/年", - "PrivateTicketEmailSupport": "私有票和email支持", - "BuyNow": "现在购买", - "PayViaAmexCard": "我如何通过我的AMEX卡付款?", - "PayViaAmexCardDescription": "由于安全措施,默认付款网关'Iyzico'可能会拒绝某些AMEX信用卡. 在这种情况下, 完全可以通过备用付款网关'2Checkout'付款.", + "SourceCodeOfAllModules": "所有模块的源代码", + "SourceCodeOfAllThemes": "所有主题的源代码", + "PerpetualLicense": "永久许可证", + "UnlimitedServerDeployment": "无限制服务器部署", + "YearUpgrade": "1 年升级", + "YearPremiumForumSupport": "1 年高级论坛支持", + "ForumSupportIncidentCountYear": "论坛支持事件计数/年", + "PrivateTicketEmailSupport": "私人票务和电子邮件支持", + "BuyNow": "立即购买", + "PayViaAmexCard": "如何使用 AMEX 卡付款?", + "PayViaAmexCardDescription": "出于安全考虑,默认付款网关 \"Iyzico \"可能会拒绝某些 AMEX 信用卡。在这种情况下,您可以通过替代支付网关 \"2Checkout \"进行支付。", "ThankYou": "谢谢", - "InvalidReCaptchaErrorMessage": "验证reCAPTCHA时出错,请重试.", + "InvalidReCaptchaErrorMessage": "验证 reCAPTCHA 时出现错误。请重试。", "CompanyName": "公司名称", - "YourCompanyName": "你的公司名称", - "FirstName": "名", - "LastName": "姓", - "Optional": "可选的", - "YourFirstName": "你的名字", - "YourLastName": "你的姓氏", + "YourCompanyName": "您的公司名称", + "FirstName": "姓名", + "LastName": "姓氏", + "Optional": "可选", + "YourFirstName": "您的名字", + "YourLastName": "您的姓氏", "SpecialOffer": "特别优惠", - "SpecialOfferMessage": "尽快付款,价格在一定时间内有效.", + "SpecialOfferMessage": "请抓紧时间!价格有效期有限。", "DiscountRequest": "折扣申请", - "DiscountRequestDescribeCustomerQuestion": "以下哪个选项描述了你?", - "DiscountRequestStudentEmailMessage": "Email地址必须包含'edu'.", - "DiscountRequestDeveloperCount": "你有多少开发人员?", - "DiscountRequestDeveloperCountExceedMessage": "对于超过 {0} 开发人员的公司,我们不提供折扣.", + "DiscountRequestDescribeCustomerQuestion": "以下哪项描述了你?", + "DiscountRequestStudentEmailMessage": "电子邮件地址必须包含 \"edu\"。", + "DiscountRequestDeveloperCount": "你们有多少开发人员?", + "DiscountRequestDeveloperCountExceedMessage": "我们不为拥有超过 {0} 名开发人员的公司提供折扣许可。", "DiscountRequestOrganizationName": "公司/组织/学校名称", "Website": "网站", - "GithubUsername": "GitHub用户名", - "PhoneNumber": "手机号", + "GithubUsername": "GitHub 用户名", + "PhoneNumber": "电话号码", "Country": "国家", - "DescribeABPCommercialUsage": "描述你基于ABP商业版进行开发的项目", - "DiscountRequestCertifyInformationMessage": "我证明所有的信息都是真实的.", - "DiscountRequestReceived": "我们收到了你的折扣请求.", - "DiscountRequestStatusMessage": "我们会检查你提供的信息并且给你答复.", + "DescribeABPCommercialUsage": "描述您计划根据《亚太商业评论》开发的项目", + "DiscountRequestCertifyInformationMessage": "本人保证所有信息真实无误。", + "DiscountRequestReceived": "我们已收到您的折扣申请。", + "DiscountRequestStatusMessage": "我们将在核对您提供的信息后给您回复。", "MVCOrRazorPages": "MVC (Razor Pages)", "Angular": "Angular", "Blazor": "Blazor", - "New": "新的", + "New": "新", "MongoDB": "MongoDB", - "EBookDDD": "电子书领域驱动设计", - "PracticalGuideForImplementingDDD": "本书是使用 ABP 框架实现领域驱动设计的实用指南。", + "EBookDDD": "电子书《领域驱动设计", + "PracticalGuideForImplementingDDD": "本书是利用 ABP 框架实施领域驱动设计的实用指南。", "IntroducingDDD": "介绍领域驱动设计", - "DDDLayersAndCleanArchitecture": "DDD 层和干净的架构", - "LayeringOfADotnetSolution": ".NET 解决方案的分层", - "ImplementingDDDBuildingBlocks": "实现 DDD 构建块", + "DDDLayersAndCleanArchitecture": "DDD 层与简洁架构", + "LayeringOfADotnetSolution": ".NET解决方案的分层", + "ImplementingDDDBuildingBlocks": "实施 DDD 构件", "DomainVsApplicationLogic": "领域逻辑与应用逻辑", - "SamplesAndDiscussions": "示例和讨论", + "SamplesAndDiscussions": "样本与讨论", "Free": "免费", "Download": "下载", - "DDDEBook": "DDD电子书", - "ImplementingDDD": "实现领域驱动设计", - "DDDBookExplanation": "使用 ABP 框架实现领域驱动设计的实用指南。", + "DDDEBook": "电子书", + "ImplementingDDD": "实施领域驱动设计", + "DDDBookExplanation": "使用 ABP 框架实施领域驱动设计的实用指南。", "Overview": "概述", - "DDDBookPracticalGuide": "这是实现领域驱动设计 (DDD) 的实用指南。虽然实现细节依赖于 ABP 框架基础设施,但核心概念、原则和模式适用于任何类型的解决方案,即使它不是 .NET 解决方案。", + "DDDBookPracticalGuide": "这是一本实施领域驱动设计(DDD)的实用指南。虽然实施细节依赖于 ABP 框架基础架构,但核心概念、原则和模式适用于任何类型的解决方案,即使它不是 .NET 解决方案。", "TableOfContents": "目录", - "IntroductionToImplementingDDD": "实现领域驱动设计简介", + "IntroductionToImplementingDDD": "领域驱动设计实施简介", "WhatIsDDD": "什么是领域驱动设计?", - "Implementation": "执行", - "TheBigPicture": "大图", - "TheBuildingBlock": "积木", - "ExampleUseCase": "示例用例", - "DomainAndApplicationLogic": "领域逻辑与应用逻辑", + "Implementation": "实施", + "TheBigPicture": "大局观", + "TheBuildingBlock": "建筑模块", + "ExampleUseCase": "用例示例", + "DomainAndApplicationLogic": "领域逻辑和应用逻辑", "Author": "作者", - "PublishedOn": "发表于", - "Page": "页", + "PublishedOn": "出版日期", + "Page": "页次", "FreeEBook": "免费电子书", "EBookSignInForDownload": "要下载电子书,请登录", - "SignIn": "登入", + "SignIn": "登录", "Or": "或者", - "TellUsAboutYourself": "告诉我们一点关于你自己", - "Surname": "姓", - "DoYouAgreePrivacyPolicy": "我同意条款和条件和隐私政策。", - "VolosoftMarketingInformationMessage": "我想要有关企业和组织解决方案以及其他 Volosoft 产品和服务的信息、提示和优惠。", - "VolosoftSharingInformationMessage": "我希望 Volosoft 与选定的合作伙伴共享我的信息,以便我可以收到有关他们的产品和服务的相关信息。", - "WeWillSendYouADownloadLink": "下载电子书的链接已发送至{0}。
检查您的收件箱/垃圾箱/垃圾邮件箱!", + "TellUsAboutYourself": "谈谈你自己吧", + "Surname": "姓氏", + "DoYouAgreePrivacyPolicy": "我同意条款与条件和隐私政策。", + "VolosoftMarketingInformationMessage": "我想了解有关企业和组织解决方案以及其他 Volosoft 产品和服务的信息、提示和优惠。", + "VolosoftSharingInformationMessage": "我希望 Volosoft 与选定的合作伙伴共享我的信息,以便我能收到他们的产品和服务的相关信息。", + "WeWillSendYouADownloadLink": "电子书下载链接已发送至 {0}。请检查您的收件箱、垃圾邮件箱!", "InvalidFormInputs": "请输入表格中指定的有效信息。", - "DDDBookEmailBody": "谢谢你。
要下载您的图书,请点击此处。", - "StartFree": "免费开始", + "DDDBookEmailBody": "谢谢。
要下载您的书籍,请点击此处。", + "StartFree": "免费启动", "FreeTrial": "免费试用", - "AcceptsMarketingCommunications": " 是的,我想接收 ABP 商业营销通讯。", + "AcceptsMarketingCommunications": "是的,我希望收到ABP商务部的营销通讯。", "PurposeOfUsage": "使用目的", - "Choose": "- 选择 -", + "Choose": "- 选择", "CompanyOrganizationName": "公司/组织名称", "CompanySize": "公司规模", - "Next": "下一个", - "StartTrial": "开始我的免费试用", - "ContactUsQuestions": "如果你有任何问题,请联系我们", - "TrialActivatedWarning": "一个用户只能有 1 个免费试用期。您已经使用了试用期。", - "ActivationRequirement": "你已经距离开始你的试用还有最后一步。
检查你的信息后,我们将激活你的许可证。一旦你的许可证激活,我们将向{0}发送电子邮件。请不要担心,这个过程不会太久!", + "Next": "下一页", + "StartTrial": "开始免费试用", + "ContactUsQuestions": "如有任何问题,请联系我们", + "TrialActivatedWarning": "一个用户只能有一次免费试用期。您已经使用了试用期。", + "ActivationRequirement": "
检查您的信息后,我们将激活您的许可证。许可证激活后,我们将向{0}发送一封电子邮件。别担心,这个过程不会花费太长时间!", "SaveAndDownload": "保存和下载", "CompanyNameValidationMessage": "公司名称太长!", "AddressValidationMessage": "地址太长!", - "TaxNoValidationMessage": "TAX/VAT No 太长了!", - "NotesValidationMessage": "备注字段太长!", - "CheckYourBillingInfo": "您只能创建一次发票!在创建发票之前检查您的帐单信息。", - "StartYourFreeTrial": "开始你的免费试用", + "TaxNoValidationMessage": "税号/增值税号太长!", + "NotesValidationMessage": "备注栏太长!", + "CheckYourBillingInfo": "您只能创建一次发票!创建发票前,请检查您的账单信息。", + "StartYourFreeTrial": "开始免费试用", "TrialLicenseModelInvalidErrorMessage": "以下字段之一无效:国家名称、公司规模、行业或使用目的。", - "Trial": "审判", + "Trial": "试用", "Purchased": "已购买", "PurchaseNow": "立即购买", - "PurchaseTrialLicenseMessage": "您的许可证到期日期是 {0}。
如果您想继续使用您在免费试用期内创建的项目,您需要更改 appsettings.secrets.json 文件中的许可证密钥。这是您的许可证密钥:", - "TrialLicenseExpireMessage": "您正在使用试用许可证,您的试用许可证将于 {0}到期。", + "PurchaseTrialLicenseMessage": "您的许可证到期日期为 {0}。
如果您想继续使用在免费试用期间创建的项目,则需要更改 appsettings.secrets.json 文件中的许可证密钥。以下是您的许可证密钥:", + "TrialLicenseExpireMessage": "您正在使用试用许可证,试用许可证将于 {0} 到期。", "TryForFree": "免费试用", - "TrialLicenseExpiredInfo": "您的试用许可期限已过!", - "DowngradeLicensePlan": "我将来可以降级到较低的许可版本吗?", - "DowngradeLicensePlanExplanation": "您不能降级现有的许可版本。 但是您可以购买新的较低许可版本并继续使用新许可证进行开发。 购买较低的许可版本后,您只需通过 ABP CLI 命令登录到新的许可版本:` abp login -o `。", - "LicenseTransfer": "许可证可以从一个开发者转移到另一个开发者吗?", - "LicenseTransferExplanation": "是的! 购买许可证后,您将成为许可证持有者,因此您可以访问组织管理页面。 组织具有所有者和开发者角色。 业主可以管理开发者席位和分配开发者。 每个分配的开发者都将通过 ABP CLI 命令登录系统,并拥有开发和支持权限。", - "UserOwnerDescription": "组织的“所有者”是此帐户的管理员。 他/她通过购买许可证和分配开发者来管理组织。 “所有者”不能在 ABP 商业项目中编写代码,不能下载 ABP 示例项目,也不能在支持的网站上进行提问。 如果你想拥有这些操作权限,你必须也将自己添加为开发人员。", - "UserDeveloperDescription": "“开发人员”可以在 ABP 商业版项目中编写代码,下载 ABP 示例项目,并在支持的网站上进行提问。 然而另一方面,“开发者”无法管理这个组织。", - "RemoveCurrentUserFromOrganizationWarningMessage": "您正在将自己从自己的组织中移除。 您将无法再管理此组织,您确定吗?", - "RenewExistingOrganizationOrCreateNewOneMessage": "您可以通过单击下面的 \"立即延长\"按钮来更新您组织的许可证,因此您可以将许可证到期日期延长 1 年。 如果您继续结帐,您将拥有一个新的组织。 您想继续开始新的组织许可吗?", - "PurchaseTrialOrganizationOrCreateNewOneMessage": "你有试用许可证。如果你想购买试用许可证,请点击“立即购买”按钮。如果你继续支付,你将会有一个新的组织。你想继续使用一个新的组织吗?", - "ExtendNow": "立即延长", - "CreateNewOrganization": "建立新的组织", - "RenewLicenseEarly": "如果我提前更新我的许可证,我会得到一整年吗?", - "RenewLicenseEarylExplanation": "当您在许可证到期日期之前续订许可证时,您的许可证到期日期仍将增加 1 年。 例如,如果您的许可在 {0}-06-06 到期,而您在 {0}-01-01 续订,那么您的新许可到期日期仍将是 {1}-06-06。", - "OpenSourceWebApplication": "开源Web应用程序", - "CompleteWebDevelopment": "一个完整的Web开发", - "ABPFrameworkDescription": "ABP 框架是一个完整的基础架构,可通过遵循软件开发和约定的最佳实践来创建现代 Web 应用程序。", + "TrialLicenseExpiredInfo": "您的试用许可证已过期!", + "DowngradeLicensePlan": "将来可以降级到更低的许可证计划吗?", + "DowngradeLicensePlanExplanation": "您不能降级现有的许可证计划。但您可以购买新的较低许可证计划,并在新许可证上继续您的开发。购买较低许可证后,您只需通过 ABP CLI 命令登录到您的新许可证计划:abp login -o `.", + "LicenseTransfer": "许可证可以从一个开发者转让给另一个开发者吗?", + "LicenseTransferExplanation": "可以!购买许可证后,您将成为许可证持有者,因此可以访问组织管理页面。一个组织有所有者和开发者两个角色。所有者可管理开发人员席位并分配开发人员。每个分配的开发人员将通过 ABP CLI 命令登录系统,并拥有开发和支持权限。", + "UserOwnerDescription": "组织的 \"所有者 \"是该账户的管理员。他/她通过购买许可证和分配开发人员来管理组织。所有者 \"不能在 ABP 商业项目中编写代码,不能下载 ABP 示例项目,也不能在支持网站上提问。如果您想进行所有这些操作,您必须将自己添加为开发人员。", + "UserDeveloperDescription": "开发人员 \"可以在 ABP 商业项目中编写代码,下载 ABP 示例项目,并在支持网站上提问。另一方面,\"开发人员 \"不能管理该组织。", + "RemoveCurrentUserFromOrganizationWarningMessage": "你将从自己的组织中除名。你将不再能够管理这个组织,你确认吗?", + "RenewExistingOrganizationOrCreateNewOneMessage": "您可以通过点击下面的 \"立即延期 \"按钮为您的组织续签许可证,这样您就可以将许可证到期日延长一年。如果您继续结账,您将拥有一个新的组织。您想继续使用新机构吗?", + "PurchaseTrialOrganizationOrCreateNewOneMessage": "您拥有试用许可证。要购买试用许可证,请单击 \"立即购买 \"按钮。如果继续结账,您将拥有一个新的组织。您想继续使用新机构吗?", + "ExtendNow": "立即扩展", + "CreateNewOrganization": "创建新组织", + "RenewLicenseEarly": "如果我提前更新执照,我可以获得全年的执照吗?", + "RenewLicenseEarylExplanation": "如果您在许可证到期日之前更新许可证,许可证到期日将增加 1 年。例如,如果您的许可证到期日为 {0}-06-06,而您在 {0}-01-01 续费,则新的许可证到期日为 {1}-06-06。", + "OpenSourceWebApplication": "开源网络应用程序", + "CompleteWebDevelopment": "完整的网络开发", + "ABPFrameworkDescription": "ABP Framework 是一个完整的基础架构,可通过遵循软件开发的最佳实践和惯例来创建现代网络应用程序。", "CommunityDescription": "分享您使用 ABP 框架的经验!", - "GetStarted": "开始使用", - "Views": "意见", - "LatestPosts": "最新的帖子", - "PreBuiltApplication": "预构建应用程序", - "DatabaseProviders": "数据库提供者", + "GetStarted": "开始", + "Views": "观点", + "LatestPosts": "最新文章", + "PreBuiltApplication": "预建应用程序", + "DatabaseProviders": "数据库提供商", "UIFrameworks": "用户界面框架", - "UsefulLinks": "有用的链接", + "UsefulLinks": "实用链接", "Platform": "平台", - "CoolestCompaniesUseABPCommercial": "最酷的公司都已经在使用 ABP Commercial。", + "CoolestCompaniesUseABPCommercial": "最酷的公司已经在使用 ABP商业软件。", "UserInterface": "用户界面", - "APIGateway": "网关", + "APIGateway": "应用程序接口网关", "Microservice": "微服务", "Database": "数据库", - "Architecture": "结构", - "MicroserviceArchitectureExplanation": "这是一个完整的解决方案架构,由多个应用程序、API 网关、微服务和数据库组成,使用最新技术构建可扩展的微服务解决方案。", + "Architecture": "建筑学", + "MicroserviceArchitectureExplanation": "这是一个完整的解决方案架构,由多个应用程序、API 网关、微服务和数据库组成,利用最新技术构建可扩展的微服务解决方案。", "BusinessLogic": "业务逻辑", "DataAccessLayer": "数据访问层", - "Monolith": "单体", - "ModularArchitectureExplanation": "此启动模板提供了分层、模块化和基于 DDD 的解决方案架构,以构建清晰且可维护的代码库。", - "SeeDetails": "阅读详情", + "Monolith": "巨石", + "ModularArchitectureExplanation": "该初创企业模板提供了一个分层、模块化和基于 DDD 的解决方案架构,以构建一个简洁、可维护的代码库。", + "SeeDetails": "查看详情", "SeeDocumentation": "查看文档", - "Bs5Compatible": "Bootstrap 5 兼容的专业主题,非常适合您的管理网站。", + "Bs5Compatible": "兼容 Bootstrap 5 的专业主题,非常适合您的管理网站。", "LeptonXTheme": "LeptonX 主题", - "LeptonXDark": "LeptonX 深色", - "LeptonXLight": "LeptonX 浅色", + "LeptonXDark": "LeptonX Dark", + "LeptonXLight": "LeptonX Light", "LeptonXSemiDark": "LeptonX 半深色", - "BuiltOnBs5Library": "基于 Bootstrap 5 库构建", + "BuiltOnBs5Library": "基于 Bootstrap 5 库", "FullyCompatibleWithBs5": "100% 兼容 Bootstrap 5 HTML 结构和 CSS 类", - "ResponsiveAndMobileCompatible": "响应式、移动兼容、RTL 支持", + "ResponsiveAndMobileCompatible": "响应式、移动兼容、支持 RTL", "ProvidesStylesForDatatables": "为数据表提供样式", "MultipleLayoutOptions": "多种布局选项", - "EasilyInstallAndUpgrade": "轻松安装和升级", + "EasilyInstallAndUpgrade": "易于安装和升级", "SupportForum": "支持论坛", - "TrustedBy": "授信于", - "OurPricing": "我们的 价格", + "TrustedBy": "值得信赖", + "OurPricing": "我们的定价ABP 商业版!", - "YourAccountDetails": "您的帐户详细信息", + "LeptonXThemeExplanation": "Lepton Theme 可根据系统设置更改主题。", + "PRO": "专业", + "WelcomeToABPCommercial": "欢迎访问 ABP商业网站!community.abp.io 是人们可以分享 ABP 相关文章的地方。 搜索文章、教程、代码示例、案例研究并结识与您同路的人。", + "AddDevelopers": "添加开发人员", + "StartDevelopment": "启动开发", + "CreateAndRunApplicationUsingStartupTemplate": "了解如何使用 ABP 商业启动模板创建和运行新的网络应用程序。", + "CommunityDescription2": "社区.abp.io是人们分享 ABP 相关文章的地方。搜索文章、教程、代码示例、案例研究,并结识与您志同道合的朋友。", "UseABPSuiteExplanation": "使用 ABP Suite 下载模块和主题的源代码。", - "ManageModulesWithSuite": "您还可以使用 Suite 管理您的 ABP 模块。", + "ManageModulesWithSuite": "您还可以使用套件管理 ABP 模块。", "LearnHowToInstallSuite": "了解如何安装和使用 ABP 套件。", "SeeMore": "查看更多", - "SeeLess": "收起全文", + "SeeLess": "查看更少", "LayeredSolutionStructure": "分层解决方案结构", - "LayeredSolutionStructureExplanation": "该解决方案基于领域驱动设计原则和模式进行分层,以将您的业务逻辑与基础架构和集成隔离开来,并最大限度地提高代码的可维护性和可重用性。 ABP 框架已经提供了抽象、基类和指南来真正为您的应用程序实现 DDD。", - "MultipleUIOptions": "多个用户界面选项", - "MultipleUIOptionsExplanation": "我们喜欢不同的方式来创建用户界面。 此启动解决方案为您的业务应用程序提供了三种不同的 UI 框架选项。", - "MultipleDatabaseOptions": "多个数据库选项", - "MultipleDatabaseOptionsExplanation": "您有两个数据库提供程序选项(除了在单个应用程序中使用两者)。 使用 Entity Framework Core 处理任何关系数据库,当您需要编写低级查询以获得更好的性能时,可以选择使用 Dapper。 如果您需要使用基于文档的 NoSQL 数据库,MongoDB 是另一种选择。 虽然这些提供程序是良好集成、抽象和预配置的,但您实际上可以与任何可与 .NET 一起使用的数据库系统进行交互。", - "ModularArchitectureExplanation2": "模块化是 ABP.IO 平台的一等公民。 所有应用程序功能都被拆分为隔离良好的可选模块。 启动解决方案已经预装了基本的 ABP 商业模块。 您还可以创建自己的模块来为自己的应用程序构建模块化系统。", - "MultiTenancyForSaasBusiness": "SaaS 业务的多租户", - "MultiTenancyForSaasBusinessExplanation": "ABP 商业版 提供完整的端到端多租户系统来创建您的 SaaS(软件即服务)系统。 它允许租户通过动态数据库创建和迁移系统共享或拥有自己的数据库。", + "LayeredSolutionStructureExplanation": "该解决方案基于领域驱动设计原则和模式进行分层,将业务逻辑与基础架构和集成隔离开来,最大限度地提高代码的可维护性和可重用性。ABP 框架已经提供了抽象概念、基类和指南,以便为您的应用程序真正实现领域驱动设计。", + "MultipleUIOptions": "多种用户界面选项", + "MultipleUIOptionsExplanation": "我们喜欢以不同的方式创建用户界面。本启动解决方案为您的业务应用程序提供三种不同的用户界面框架选项。", + "MultipleDatabaseOptions": "多种数据库选项", + "MultipleDatabaseOptionsExplanation": "你有两种数据库提供程序可供选择(此外,你还可以在一个应用程序中同时使用两种数据库提供程序)。使用 Entity Framework Core 可以处理任何关系数据库,当需要编写底层查询以提高性能时,还可以选择使用 Dapper。如果需要使用基于文档的 NoSQL 数据库,MongoDB 是另一个选择。虽然这些提供程序都经过了很好的集成、抽象和预配置,但您实际上可以与任何可以使用.NET的数据库系统进行交互。", + "ModularArchitectureExplanation2": "模块化是 ABP.IO 平台的一等公民。所有应用功能都被分割成独立的可选模块。启动解决方案已经预装了基本的ABP商业模块。您还可以创建自己的模块,为自己的应用程序构建模块化系统。", + "MultiTenancyForSaasBusiness": "为您的 SaaS 业务提供多租户服务", + "MultiTenancyForSaasBusinessExplanation": "ABP Commercial 提供完整的端到端多租户系统,以创建您的 SaaS(软件即服务)系统。通过即时数据库创建和迁移系统,租户可共享或拥有自己的数据库。", "MicroserviceStartupSolution": "微服务启动解决方案", - "MicroserviceArchitectureExplanation2": "您可以将它用于您的下一个微服务系统,以利用预先构建的基础解决方案和提炼的经验。", - "PreIntegratedTools": "预集成到流行工具", - "PreIntegratedToolsExplanation": "该解决方案已集成到行业标准工具和技术中,而您可以随时更改它们并集成到您喜欢的工具中。", - "SingleSignOnAuthenticationServer": "单点登录认证服务器", - "SingleSignOnAuthenticationServerExplanation": "该解决方案有一个身份验证服务器应用程序,其他应用程序将其用作具有 API 访问管理功能的单点登录服务器。 它基于 IdentityServer。", - "WebAppsWithGateways": "2 个 Web 应用程序和 2 个 API 网关", - "WebAppsWithGatewaysExplanation": "该解决方案包含两个 Web 应用程序,每个应用程序都有一个专用的 API 网关(BFF - Backend For Frontend 模式)。", + "MicroserviceArchitectureExplanation2": "您可以为您的下一个微服务系统获取它,以利用预构建的基础解决方案和提炼的经验。", + "PreIntegratedTools": "预集成到常用工具", + "PreIntegratedToolsExplanation": "该解决方案已集成到行业标准工具和技术中,同时您还可以随时更改它们并集成到您最喜欢的工具中。", + "SingleSignOnAuthenticationServer": "单点登录验证服务器", + "SingleSignOnAuthenticationServerExplanation": "该解决方案有一个身份验证服务器应用程序,其他应用程序将其用作具有 API 访问管理功能的单点登录服务器。它以 IdentityServer 为基础。", + "WebAppsWithGateways": "2 个网络应用程序和 2 个应用程序接口网关", + "WebAppsWithGatewaysExplanation": "该解决方案包含两个网络应用程序,每个程序都有一个专用的 API 网关(BFF - Backend For Frontend 模式)。", "BackOfficeApplication": "后台应用程序", - "BackOfficeApplicationExplanation": "系统的实际 Web 应用程序,具有多个 UI 框架选项。 您可以创建任何类型的业务应用程序。", + "BackOfficeApplicationExplanation": "系统的实际网络应用程序,具有多种用户界面框架选项。您可以创建任何类型的业务应用程序。", "LandingWebsite": "登陆网站", - "LandingWebsiteExplanation": "可用于多种目的的通用登陆/公共网站,例如介绍您的公司、销售您的产品等。", - "ABPFrameworkEBook": "掌握 ABP 框架电子书", - "MasteringAbpFrameworkEBookDescription": "包含在您的 ABP 商业许可证中", + "LandingWebsiteExplanation": "通用登陆/公共网站,可用于多种用途,如介绍公司、销售产品等。", + "ABPFrameworkEBook": "掌握 ABP 框架》电子书", + "MasteringAbpFrameworkEBookDescription": "包含在 ABP 商业许可证中", "FullName": "全名", - "LicenseTypeNotCorrect": "许可类型不正确!", + "LicenseTypeNotCorrect": "许可证类型不正确!", "Trainings": "培训", "ChooseTrainingPlaceholder": "选择培训...", - "DoYouNeedTrainings": "您需要这些培训之一吗?", - "DoYouNeedTraining": "您需要 {0} 培训吗?", - "GetInTouchUs": "请与我们联系", - "ForMoreInformationClickHere": "如需更多信息,请点击此处。", - "ForMoreInformationClickHereByClass": "欲了解更多信息,请点击此处。", - "IsGetOnboardingTraining": "您想获得入职和 Web 应用程序开发培训吗?", - "OnboardingWebApplicationDevelopmentTrainingMessage": "要安排您的培训日历,请在创建组织后联系 {0}", - "CustomPurchaseMessage": "对于下一步,单击 {0} 与我们联系。", - "Note": "说明", + "DoYouNeedTrainings": "您需要这些培训吗?", + "DoYouNeedTraining": "您需要{0}培训吗?", + "GetInTouchUs": "联系我们", + "ForMoreInformationClickHere": "如需了解更多信息,请点击此处。", + "ForMoreInformationClickHereByClass": "更多信息,请点击 此处。", + "IsGetOnboardingTraining": "您想参加入职和网络应用程序开发培训吗?", + "OnboardingWebApplicationDevelopmentTrainingMessage": "要安排培训日程,请在创建组织后联系 {0}", + "CustomPurchaseMessage": "下一步,请点击 {0} 联系我们。", + "Note": "备注", "AdditionalNote": "附加说明", - "OnboardingTrainingFaqTitle": "你有 ABP 熟练使用培训吗?", - "OnboardingTrainingFaqExplanation": "是的,我们有 ABP 培训服务来帮助您快速启动您的 ABP 项目。 您将从 ABP 核心团队成员那里了解 ABP,并获得开始您的 ABP 项目的技能。 在 ABP 培训中,我们将解释如何设置开发环境、安装所需工具、创建功能齐全的 CRUD 页面。 培训将会以直播的形式并使用 Zoom 应用程序,我们也对使用其他在线会议平台持开放态度。 主要培训语言为英语。 您也可以在会议期间询问有关 ABP 的问题。 我们将安排一个方便双方的时间和日期。 要获取更多信息,请通过 info@abp.io 联系我们。", - "AddBasket": "添加到购物车", - "SendTrainingRequest": "发送培训请求", - "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* 本文件的英文版本为最新版本,如有任何争议,以英文版本为准。", - "Pricing_Page_Title": "价格和计划", - "Pricing_Page_Description": "现在就选择您的业务及需要的特性和功能。 购买 ABP 商业许可证创建无限量项目。", - "Pricing_Page_HurryUp": "赶快行动吧!", - "Pricing_Page_BuyLicense": "在 1 月 16 日前以 2021 年价格 购买许可证!", - "Pricing_Page_ValidForExistingCustomers": "也适用于现有客户和许可证续订。", - "Pricing_Page_Hint1": "许可价格包括一定数量的开发者席位。 如果您有更多的开发人员,您可以随时购买额外的席位。", - "Pricing_Page_Hint2": "您现在或将来都可以购买更多的开发者许可证。 许可证是基于席位的,因此您可以将席位从开发人员转移到另一个开发人员。", - "Pricing_Page_Hint3": "您可以使用您的许可证开发无限数量的不同产品。", - "Pricing_Page_Hint4": "ABP Suite 是帮助您开发以提高生产力的工具。 它支持生成 CRUD 页面和创建新项目。", - "Pricing_Page_Hint5": "您可以在应用程序中使用所有预构建的模块。", - "Pricing_Page_Hint6": "您可以在应用程序中使用所有预构建的主题。", - "Pricing_Page_Hint7": "启动模板是一种 Visual Studio 解决方案,可让您快速启动项目。 所有基本模块都为您添加和预配置。", - "Pricing_Page_Hint8": "掌握 ABP 框架电子书解释了如何使用最佳实践实施 .NET 解决方案。它在 Amazon.com 上出售,您可以在许可证范围内免费下载该书。", - "Pricing_Page_Hint9": "您可以下载任何模块的源代码。 您可能希望将源代码添加到您的解决方案中以进行彻底的更改,或者出于安全原因将其自己保留。", - "Pricing_Page_Hint10": "许可证是终身的。 这意味着您可以永远继续开发您的应用程序。 在许可期限内(1 年,除非您续订)授予访问最新版本并获得支持。", - "Pricing_Page_Hint11": "部署没有限制! 您可以根据需要部署到任意数量的服务器,包括云服务或本地。", - "Pricing_Page_Hint12": "您可以在有效许可期内将模块、主题和工具更新到最新版本。 在您的许可证到期后,您需要对其进行续订,以继续获取错误修复、新功能和增强功能的更新。", - "Pricing_Page_Hint13": "您可以获得一年的高级支持(您可以续订许可证以延长它)。", - "Pricing_Page_Hint14": "团队和营业许可有事件/问题计数限制。 如果您购买额外的开发者许可,您的事件限制会按开发人员增加 {0}(对于团队许可)或 {1}(对于商业许可)每个开发者增加。", - "Pricing_Page_Hint15": "只有企业许可证包括私人支持。 您可以直接向 ABP 团队发送电子邮件或在 support.abp.io 上使用私人门票选项提问。 私人门票对公众不可见。", - "Pricing_Page_Hint16": "您可以下载所有 ABP 主题的源代码。 您可能希望将源代码添加到您的解决方案中以进行彻底的更改,或者出于安全原因将其自己保留。", - "Pricing_Page_Testimonial_1": "ABP Commercial 允许 SC Ventures 在 9 个月内交付银行级多租户silo数据库 SaaS 平台,以支持来自多个集成锚点的大额发票的应收账款/应付账款供应链融资。 ABP 的模块化使团队能够在创纪录的时间内交付,通过所有 VAPT,并通过完整的 CI/CD 和管道将容器化的微服务码部署到生产中。", - "Pricing_Page_Testimonial_2": "我们看到了使用 ABP Commercial 能减少定制开发项目开销的价值。 并且团队能够在不同的项目流中统一代码模式。 我们在框架中看到了能比以前更快地构建新功能的更多潜力。 我们相信我们将会持续地看到使用 ABP Commercial 的价值。", - "Pricing_Page_Testimonial_3": "我们大爱 ABP。 我们不必从头开始编写所有内容。 我们从\"开箱即用\"的功能开始,只需关注我们真正需要编写的内容。 此外,ABP 架构良好,代码质量高,错误少。 如果我们需要自己来编写所需的一切,我们可能需要花费数年时间。 另一点让我们喜欢的是新版本、问题修复或改进每隔一周很快地就会出现。 我们不会等太久。", - "Pricing_Page_Testimonial_4": "ABP 商业版 是一款很值得推荐的出色产品。 是在一个可配置的平台上为我们的客户推向市场的商业产品。 其框架和工具为任何团队提供的快速启动值得每一分钱。 ABP 商业版 最适合我们的需求。", - "Pricing_Page_Testimonial_5": "ABP Framework 不仅是一个框架,它还是项目开发/管理的指南,因为它提供了 DDD、GenericRepository、DI、微服务和模块化培训。 即使你不打算使用框架本身,你也可以通过 docs.abp.io 进行自己的开发,该文档已经做好了专业的准备(OpenIddict、Redis、Quartz 等)。 因为很多东西都是预先构建的,它大大缩短了项目开发时间(例如登录页面、异常处理、数据过滤、种子、审计日志、本地化、自动 API 控制器等)。 作为我们应用程序的一个示例,我使用本地事件总线进行库存控制。 因此我可以通过编写库存处理程序来管理订单移动。 不为 CreationTime,CreatorId 浪费时间真是太好了。 它们正在自动填充。", - "Pricing_Page_Testimonial_6": "ABP Framework 是一个很好的框架,但它需要时间来理解它使用的不同层、类和库(特别是 ABP)。 我花了很多时间阅读代码库,但是 ABP Commercial 为我们节省了创建项目专业实体 (AR) 和链接到每个实体的存储库的时间。 我也喜欢 ABP 中使用的方法非常成熟,我们知道它基于 DDD 和单体。", - "Pricing_Page_Testimonial_7": "作为一家初创公司,我们需要快速迭代并在样板和非核心功能上花费最少的时间。\n我们的工程师从经验丰富的工程师到初级工程师,我们需要一个共同的理解和一种分享技术和领域知识的方式,ABP 允许我们这样做是因为他们提供了很好的指南和文档。\n有些事情我们不必担心,因为它们与 ABP 一起开箱即用。\nABP 帮助我们简化了快速原型设计和开发,从功能开始到生产不到 4 周。凭借许可证中包含的所有高级功能,ABP 在软件工程方面为我们提供了“盒子里的启动”。", - "Pricing_Page_Testimonial_8": "我会向所有想要扩大客户可用产品范围的人推荐 ABP Commercial。当需要使用分布式企业环境(Angular、WPF、Win&Linux)时,它非常棒。除了他们的产品之外,我们还喜欢他们的支持,这使我们的工作更快、更轻松。我们已经知道,我们已经找到了一个面向未来的优秀合作伙伴,他将支持我们拓展业务。", - "Pricing_Page_Testimonial_9": "我们是一家拥有 2 名员工的公司,已有 20 多年的经营历史。 \n根据我们在 ABP Commercial 方面的经验,一位客户联系我们,要求我们在现代环境中开发一个新的人力资源应用程序,以取代他们使用了 25 年的 Access 应用程序。我们决定从桌面解决方案过渡到基于网络的解决方案。 \n \n当时,我们对 Web 应用和 .NET 的了解很少,但我们偶然发现了 ABP Commercial,在 ABP 框架、技术文档和 ABP Suite 的帮助下,我们不仅能够将应用程序开发为一年之内,不仅满足了客户的规范,而且还成功地在 .NET 环境中工作。", - "AbpBookDownloadArea_ClaimYourEBook": "领取您的掌握ABP框架电子书", - "AddMemberModal_Warning_1": "如果您尝试添加的用户名在系统中不存在,请让您的团队成员在 {0} 并与您分享他/她帐户的用户名。", - "MyOrganizations_Detail_WelcomeMessage": "欢迎加入您的组织,{0}", - "MyOrganizations_Detail_OrganizationManagement": "组织管理", + "OnboardingTrainingFaqTitle": "您有 ABP 上岗培训吗?", + "OnboardingTrainingFaqExplanation": "是的,我们有 ABP 培训服务,帮助您快速启动 ABP 项目。您将从 ABP 核心团队成员那里了解 ABP,并获得开始 ABP 项目的技能。在入职培训中,我们将讲解如何设置您的开发环境、安装所需的工具以及创建一个功能齐全的 CRUD 页面。培训将是实时的,将使用 Zoom 应用程序,我们也欢迎使用其他在线会议平台。培训语言为英语。您也可以在培训过程中提出有关 ABP 的问题。我们将为双方安排一个方便的时间和日期。如需了解更多信息,请通过info@abp.io与我们联系。", + "AddBasket": "添加到购物篮", + "SendTrainingRequest": "发送培训申请", + "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* 本文件的英文版本为最新版本,任何争议均以英文版本为准。", + "Pricing_Page_Title": "定价与计划", + "Pricing_Page_Description": "现在就选择您的业务所需的特性和功能。购买 ABP 商业许可证,创建无限项目。", + "Pricing_Page_HurryUp": "快点", + "Pricing_Page_BuyLicense": "在 1 月 16 日前,以 2021 价格购买许可证!", + "Pricing_Page_ValidForExistingCustomers": "同样适用于现有客户和许可证续期。", + "Pricing_Page_Hint1": "许可证价格包含一定数量的开发人员席位。如果您有更多的开发人员,可以随时购买额外的席位。", + "Pricing_Page_Hint2": "您可以现在或将来购买更多的开发人员许可证。许可证以席位为基础,因此您可以将一个席位从一个开发人员转给另一个开发人员。", + "Pricing_Page_Hint3": "您可以使用许可证开发无限量的不同产品。", + "Pricing_Page_Hint4": "ABP Suite 是一款辅助开发工具,可提高您的工作效率。它支持生成 CRUD 页面和创建新项目。", + "Pricing_Page_Hint5": "您可以在应用程序中使用所有预建模块。", + "Pricing_Page_Hint6": "您可以在应用程序中使用所有预置主题。", + "Pricing_Page_Hint7": "启动模板是一种 Visual Studio 解决方案,可帮助您快速启动项目。所有基本模块都已为您添加和预配置。", + "Pricing_Page_Hint8": "Mastering ABP Framework》电子书介绍了如何利用最佳实践实施.NET解决方案。该书在 Amazon.com 上有售,您可凭许可证免费下载。", + "Pricing_Page_Hint9": "您可以下载任何模块的源代码。您可能希望将源代码添加到您的解决方案中,以便进行大刀阔斧的改动,或者出于安全考虑自己保留源代码。", + "Pricing_Page_Hint10": "许可证终身有效。这意味着您可以永远继续开发您的应用程序。在许可证有效期内(1 年,除非您续约),您可以访问最新版本并获得支持。", + "Pricing_Page_Hint11": "部署不受限制!您可以将其部署到任意数量的服务器上,包括云服务或内部部署。", + "Pricing_Page_Hint12": "在许可证有效期内,您可以将模块、主题和工具更新到最新版本。许可证到期后,您需要续费才能继续获得漏洞修复、新功能和增强功能的更新。", + "Pricing_Page_Hint13": "您可以获得为期一年的高级支持(您可以更新许可证以延长支持期限)。", + "Pricing_Page_Hint14": "团队和企业许可证有事件/问题数量限制。如果您购买了额外的开发人员许可证,每个开发人员的事件数限制将增加{0}(团队许可证)或{1}(商业许可证)。", + "Pricing_Page_Hint15": "只有企业许可证包含私人支持。您可以直接向 ABP 团队发送电子邮件,或使用私人票据选项在 support.abp.io 上提问。私人票据对公众不可见。", + "Pricing_Page_Hint16": "您可以下载所有 ABP 主题的源代码。您可能想将源代码添加到您的解决方案中,以便进行彻底的修改,或者出于安全原因将其保留。", + "Pricing_Page_Testimonial_1": "ABP Commercial 使 SC Ventures 能够在 9 个月内交付银行级多租户筒仓数据库 SaaS 平台,以支持应收账款/应付账款供应链融资,处理来自多个集成锚的大额发票。ABP 的模块化使团队能够在创纪录的时间内交付,通过所有 VAPT,并通过完整的 CI/CD 和管道将容器化微服务堆栈部署到生产中。", + "Pricing_Page_Testimonial_2": "我们看到了使用 ABP Commercial 减少定制开发项目开销的价值。团队能够统一不同项目流中的代码模式。我们在该框架中看到了更大的潜力,使我们能够比以前更快地构建新功能。我们相信,我们将不断看到利用 ABP 商业软件的价值。", + "Pricing_Page_Testimonial_3": "我们热爱 ABP。我们不必从头开始编写所有内容。我们从开箱即用的功能开始,只需专注于真正需要编写的内容。此外,ABP 结构合理,代码质量高,错误较少。如果我们必须自己编写所有需要的代码,我们可能需要花费数年时间。我们还喜欢的一点是,新版本、问题修复或改进每隔一周就会很快发布。我们不会等太久。", + "Pricing_Page_Testimonial_4": "ABP Commercial 是一款非常出色的产品,值得推荐。在一个可配置的平台上为我们的客户向市场提供商业产品。该框架和工具为任何团队提供的跳跃式启动都是物有所值的。ABP Commercial 最符合我们的需求。", + "Pricing_Page_Testimonial_5": "ABP 框架不仅是一个框架,还是项目开发/管理的指南,因为它提供了 DDD、GenericRepository、DI、Microservice 和 Modularity 培训。即使你不打算使用框架本身,你也可以使用 docs.abp.io 进行开发,因为它为你提供了完善和专业的准备(OpenIddict、Redis、Quartz 等)。由于很多东西都是预构建的,因此大大缩短了项目开发时间(如登录页面、异常处理、数据过滤、播种、审计日志、本地化、自动 API 控制器等)。以我们的应用程序为例,我将本地事件总线用于库存控制。因此,我可以通过编写库存处理程序来管理订单的变动。这样就不会因为创建时间和创建者 ID 而浪费时间了。它们会被自动填充。", + "Pricing_Page_Testimonial_6": "ABP Framework 是一个很好的框架,但需要时间来理解它所使用的不同层、类和库(尤其是 ABP)。我花了很多时间阅读代码库,但 ABP Commercial 节省了我们创建项目专业实体(AR)和与每个实体链接的资源库的时间。我还喜欢 ABP 中使用的非常成熟的方法;我们知道它是基于 DDD 和 monolith 的。", + "Pricing_Page_Testimonial_7": "作为一家初创公司,我们需要快速迭代,并尽量少花时间在模板和非核心功能上。\n我们的工程师从经验丰富的工程师到初级工程师都有,我们需要一种共识和一种分享技术和领域知识的方式,ABP 凭借其出色的指南和文档让我们做到了这一点。\n由于 ABP 提供了开箱即用的功能,所以有些事情我们无需担心。\nABP帮助我们简化了快速原型设计和开发,从功能开始到投入生产不到4周时间。ABP的所有高级功能都包含在许可证中,在软件工程方面为我们提供了 \"盒式启动\"。", + "Pricing_Page_Testimonial_8": "我会向所有希望扩大客户可用产品范围的人推荐 ABP commercial。当需要使用分布式企业环境(Angular、WPF、Win&Linux)时,ABP 的表现非常出色。除了他们的产品,我们还喜欢他们的支持,这让我们的工作变得更快、更轻松。我们已经知道,我们已经找到了未来的最佳合作伙伴,他们将支持我们拓展业务。", + "Pricing_Page_Testimonial_9": "我们公司只有两名员工,已经经营了 20 多年。\n就我们与 ABP Commercial 合作的经历而言,一位客户找到我们,要求我们在现代环境中开发一个新的人力资源应用程序,以取代他们使用了 25 年的 Access 应用程序。我们决定从桌面解决方案过渡到基于网络的解决方案。\n\n当时,我们对网络应用程序和.NET知之甚少,但我们偶然发现了ABP商业软件,在ABP框架、技术文档和ABP套件的帮助下,我们不仅能够按照客户的要求开发应用程序,还能在一年内成功地在.NET环境中工作。", + "AbpBookDownloadArea_ClaimYourEBook": "申请您的 《掌握 ABP 框架》 电子书", + "AddMemberModal_Warning_1": "如果系统中不存在您要添加的用户名,请让您的团队成员在{0}上注册,并与您共享他/她的用户名。", + "MyOrganizations_Detail_WelcomeMessage": "欢迎贵组织,{0}", + "MyOrganizations_Detail_OrganizationManagement": "组织管理{1} 上的 PRO 包的令牌。 ", - "MyOrganizations_Detail_YourPrivateNugetSource": "您的私有 NuGet 源是 {0}", - "MyOrganizations_Detail_PrivateNugetSourceWarning": "这将自动添加一个源到您的 ABP 解决方案中的 NuGet.Config。 不要与未经授权的用户共享您的私钥!", - "MyOrganizations_Detail_DeveloperSeatInfo": "您正在使用您的 {1} 个开发者席位中的 {0} 个。", - "NeedMoreSeatsForYourTeam": "您的团队需要更多席位吗?", - "MyOrganizations_Detail_PricePerYear": "{0} / 每年", - "MyOrganizations_Detail_PurchaseDeveloperSeats": "购买开发者席位", + "MyOrganizations_Detail_ApiKeyDescription": "API 密钥是 {1}. 上托管的 PRO 软件包的标记。", + "MyOrganizations_Detail_YourPrivateNugetSource": "您的 NuGet 私有源是 {0}", + "MyOrganizations_Detail_PrivateNugetSourceWarning": "此密钥会自动添加到 ABP 解决方案中的 NuGet.Config 中。请勿与未经授权的用户共享您的私人密钥!", + "MyOrganizations_Detail_DeveloperSeatInfo": "您正在使用{1}个开发人员席位中的{0}个。", + "NeedMoreSeatsForYourTeam": "您的团队需要更多座位?", + "MyOrganizations_Detail_PricePerYear": "{0}/每年", + "MyOrganizations_Detail_PurchaseDeveloperSeats": "购买开发人员席位", "Invoices": "发票", "RequestInvoice": "索取发票", "OrderNumber": "订单号", "Date": "日期", "Products": "产品", - "TotalPrice": "总价格", + "TotalPrice": "总价", "ThereIsNoInvoice": "没有发票", - "MyOrganizations_Detail_PaymentProviderInfo": "如果您通过 {0} 网关购买了许可证,它会将 PDF 发票发送到您的电子邮件地址,请参阅 {0} 发票。", - "MyOrganizations_Detail_PayUInfo": "如果您是通过PayU网关购买的,请点击\"索取发票\"按钮并填写账单信息。", + "MyOrganizations_Detail_PaymentProviderInfo": "如果您通过 {0} 网关购买了许可证,系统会向您的电子邮箱发送 PDF 发票,请参见 {0} invoicing. 。", + "MyOrganizations_Detail_PayUInfo": "如果您通过 Iyzico 网关购买,请单击 \"索取发票 \"按钮并填写账单信息。", "MyOrganizations_Detail_ConclusionInfo": "您的发票申请将在 {0} 个工作日内完成。", - "ExtendYourLicense": "延长您的 {0} 许可", + "ExtendYourLicense": "扩展您的 {0} 许可证", "Continue": "继续", "PurchaseLicense": "购买 {0} 许可证", "DownloadInvoiceModal_DownloadInvoice": "下载发票", "DownloadInvoiceModal_SaveInformationOnlyOnce": "您只能保存一次账单信息。", - "InvoiceModal_EnterCompanyName": "请输入您的法定公司名称...", - "InvoiceModal_EnterCompanyAddress": "请输入您的法定公司地址...", - "InvoiceModal_EnterTaxNumber": "请输入您的税号/增值税号(如果有)...", - "RequestInvoiceModal_EnterNotes": "请输入您的有关发票的额外信息...", - "PrePayment_PayWithIyzico": "您将使用 Iyzico 付款", - "ContinueToCheckout": "继续结帐", - "PrePayment_IyzicoRedirectionInfo": "您将被重定向到 Iyzico 支付网关以安全地完成您的购买。", + "InvoiceModal_EnterCompanyName": "输入您的合法公司名称...", + "InvoiceModal_EnterCompanyAddress": "输入您的法定公司地址...", + "InvoiceModal_EnterTaxNumber": "输入您的税号/增值税号(如果有)...", + "RequestInvoiceModal_EnterNotes": "输入您关于发票的额外信息...", + "PrePayment_PayWithIyzico": "您将使用 Iyzico 支付", + "ContinueToCheckout": "继续结账", + "PrePayment_IyzicoRedirectionInfo": "您将被重定向到 Iyzico 支付网关,安全地完成购买。", "PrePayment_IyzicoAcceptVisaAndMasterCard": "Iyzico 接受 Visa 和 MasterCard。", "Purchase": "购买", - "AcceptTermsAndConditions": "我已阅读、理解并接受隐私政策, 条款和条件和 EULA。", - "AcceptTermsAndConditionsWarningMessage": "请接受隐私政策和条款和条件", - "SelectGatewayToContinue": "请选择一个网关以继续!", + "AcceptTermsAndConditions": "我已阅读、理解并接受隐私政策、条款和条件以及 EULA。", + "AcceptTermsAndConditionsWarningMessage": "请接受隐私政策及条款和条件", + "SelectGatewayToContinue": "请选择一个网关继续!", "GatewaySelection_SelectGateway": "选择支付网关", - "GatewaySelection_RedirectionMessage": "接下来,您将被重定向到所选支付网关的交易网站。", - "PaymentSucceed_PaymentSuccessMessage": "支付成功", + "GatewaySelection_RedirectionMessage": "接下来,您将被重定向到所选支付网关的网站进行交易。", + "PaymentSucceed_PaymentSuccessMessage": "付款成功", "PaymentSucceed_ThanksForPurchase": "感谢您的购买!", "PaymentSucceed_CreateYourOrganization": "创建您的组织", - "PaymentSucceed_AddMeAsDeveloper": "我是开发人员,请将我作为开发人员添加到我的组织中。", + "PaymentSucceed_AddMeAsDeveloper": "我也是一名开发人员,请将我作为开发人员加入我的组织。", "PaymentSucceed_CreateOrganization": "创建组织", - "PaymentSucceed_OrganizationDescription": "一个组织由开发人员和所有者组成。 开发人员是在 ABP 项目上编写代码的用户,将受益于 {1} 网站。 所有者是分配开发者席位和管理许可的用户。", - "PaymentSucceed_ViewOrganization": "点击这里查看组织", - "Purchase_TotalAnnualPrice": "总计 (年费)", + "PaymentSucceed_OrganizationDescription": "组织由开发者和所有者组成。开发人员是在 ABP 项目上编写代码的用户,他们将受益于 {1} 网站。所有者是分配开发者席位和管理许可的用户。", + "PaymentSucceed_ViewOrganization": "点击此处查看组织", + "Purchase_TotalAnnualPrice": "总计 (年费){0} {1} 每个开发者", + "Purchase_PricePerDeveloper": "{0} {1} 每名开发人员", "Purchase_IncludedDeveloperInfo": "{0} {1} 包括在内。", - "Purchase_LicenseExtraDeveloperPurchaseMessage": "{0} 许可 包含 {1} 个开发者。 您可以现在或以后添加其他开发人员。", - "StartupTemplates_Page_Title": "ABP启动模板", - "StartupTemplates_Page_Description": "ABP 商业版 允许您构建任何复杂程度的解决方案。 它提供了两种主要的预构建启动解决方案。 您可以选择最接近您要求的解决方案,并在此基础上构建您自己的定制解决方案。", + "Purchase_LicenseExtraDeveloperPurchaseMessage": "{0}许可包括{1}个开发人员。您可以添加其他开发人员。", + "StartupTemplates_Page_Title": "ABP 启动模板", + "StartupTemplates_Page_Description": "ABP Commercial 允许您构建任何复杂程度的解决方案。它提供两种主要的预建启动解决方案。您可以选择最符合您要求的方案,并在此基础上构建自己的定制解决方案。", "MicroserviceStartupSolutionForDotnet": ".NET 微服务启动解决方案", - "MonolithSolutionForDotnet": ".NET 的单体(模块化)解决方案", - "TrainingDetailsHeaderInfo_TrainingHour": "{0} 小时", + "MonolithSolutionForDotnet": ".NET的单体(模块化)解决方案", + "TrainingDetailsHeaderInfo_TrainingHour": "{0}小时", "Trainings_Content": "培训内容", - "Trial_Page_StartYourFreeTrial": "开始您的免费试用", - "TrialLicenseFeatures": "你将能够享受所有 ABP 商业特性", - "TrialPeriodDays": "你将有 {0} 天的团队许可证", - "TrialForumSupportIncident": "你将有 {0} 个论坛支持事件", + "Trial_Page_StartYourFreeTrial": "开始免费试用所有账户", - "ProjectCreatedSuccess_Page_Title": "您的项目已创建", + "Faq_Page_OtherCurrenciesInfo": "有关其他货币,请参见 所有账户。", + "ProjectCreatedSuccess_Page_Title": "您创建的项目", "ProjectCreatedSuccess_Page_Description": "您的 ABP 项目创建成功!", - "Suite_Page_Title": "ABP Suite", - "Suite_Page_Description": "ABP Commercial 提供快速应用程序开发工具以提高开发人员的工作效率。 ABP 套件 允许您轻松创建 CRUD 页面。", - "Themes_Page_Title": "ABP主题", - "Themes_Page_Description": "ABP 商业版 提供多种专业、现代的 UI 主题。 创建免费演示以快速查看 UI 的外观。", - "Tools_Page_Title": "快速应用程序开发工具", - "Tools_Page_Description": "ABP 商业版 提供快速应用程序开发工具以提高开发人员的工作效率。 ABP 套件 允许您轻松创建 CRUD 页面。", - "DeveloperPrice": "开发者价格", - "AdditionalDeveloperPaymentInfoSection_AdditionalDevelopers": "{0} 开发者", - "LicenseRemainingDays": " {0} 天", - "ExtendPaymentInfoSection_Description": "通过延长/续订您的许可,您将继续获得高级支持。 您还将能够获得模块和主题的重大更新。 您将能够继续创建新项目。 您仍然可以使用 ABP 套件 来加速您的开发。", - "LicenseRenewalPrice": "许可证续订价格", + "Suite_Page_Title": "ABP 套房", + "Suite_Page_Description": "ABP 商业版提供快速应用程序开发工具,以提高开发人员的工作效率。ABP Suite 可让您轻松创建 CRUD 页面。", + "Themes_Page_Title": "ABP 主题", + "Themes_Page_Description": "ABP Commercial 提供多种专业、现代的用户界面主题。创建免费演示,快速了解用户界面的外观。", + "Tools_Page_Title": "快速应用开发工具", + "Tools_Page_Description": "ABP 商业版提供快速应用程序开发工具,以提高开发人员的工作效率。ABP Suite 可让您轻松创建 CRUD 页面。", + "DeveloperPrice": "开发商价格", + "AdditionalDeveloperPaymentInfoSection_AdditionalDevelopers": "{0}<小>开发人员 {0} 天", + "ExtendPaymentInfoSection_Description": "延长/续订许可证后,您将继续获得高级支持。您还可以获得模块和主题的主要或次要更新。您还可以继续创建新项目。您还可以使用 ABP Suite 来加快开发速度。", + "LicenseRenewalPrice": "许可证续期价格", "LicensePrice": "许可证价格", - "TrialLicensePaymentInfoSection_Description": "购买许可证:通过购买许可证,您将继续获得高级支持。 您还将能够获得模块和主题的重大更新。 您将能够继续创建新项目。 而且您仍然可以使用 ABP 套件 加速您的开发。
请参阅 许可证比较表来查看许可证类型之间的差异。", + "TrialLicensePaymentInfoSection_Description": "购买许可证:购买许可证后,您将继续获得高级支持。您还可以获得模块和主题的主要或次要更新。您还可以继续创建新项目。ABP套件可加快您的开发速度。
请参阅许可证对照表,查看许可证类型之间的差异。", "SelectTargetLicense": "选择目标许可证", - "UpgradePaymentInfoSection_ExtendMyLicenseForOneYear": "是的,将我的许可证到期日期延长 1 年。", - "UpgradePaymentInfoSection_WantToExtendLicense": "您想将许可证再延长 1 年吗?", - "UpgradePaymentInfoSection_UpgradingWillNotExtendLicense": "升级不会延长您的许可证到期日期!", - "UpgradePaymentInfoSection_LicenseUpgradeDescription": "通过升级您的许可证,您将升级到更高的许可证类型,这将使您获得额外的好处。 请参阅许可证比较表以查看许可证类型之间的差异。", + "UpgradePaymentInfoSection_ExtendMyLicenseForOneYear": "是,将我的许可证有效期延长一年。", + "UpgradePaymentInfoSection_WantToExtendLicense": "您想将许可证延期一年吗?", + "UpgradePaymentInfoSection_UpgradingWillNotExtendLicense": "升级不会延长许可证有效期!", + "UpgradePaymentInfoSection_LicenseUpgradeDescription": "升级许可证后,您将升级到更高的许可证类型,从而获得更多好处。请参阅 许可证对照表,查看许可证类型之间的差异。", "Landing_Page_CustomerStories": "客户故事", - "Landing_Page_OurGreatCustomers": "我们的大客户", - "Landing_Page_WebApplicationFramework": "Web应用框架", - "Landing_Page_WebDevelopmentPlatform": "网页开发平台", - "Landing_Page_CompleteWebDevelopmentPlatform": "完整的网页开发平台", - "Landing_Page_TryFreeDemo": "试用免费演示", - "Landing_Page_StartingPointForWebApplications": "基于 ASP.NET Core 的 Web 应用程序的起点! 它是基于最佳 Web 开发的 ABP 框架。", - "Landing_Page_AbpProvidesSoftwareInfrastructure": "ABP 框架提供了一个软件基础架构来开发基于最佳实践的优秀 Web 应用程序。", + "Landing_Page_OurGreatCustomers": "我们伟大的客户", + "Landing_Page_WebApplicationFramework": "网络应用程序框架", + "Landing_Page_WebDevelopmentPlatform": "网络开发平台", + "Landing_Page_CompleteWebDevelopmentPlatform": "完整的网络开发平台", + "Landing_Page_TryFreeDemo": "免费试用", + "Landing_Page_StartingPointForWebApplications": "基于 ASP.NET Core 的网络应用程序的起点!它基于 ABP 框架,可实现最佳网络开发。", + "Landing_Page_AbpProvidesSoftwareInfrastructure": "ABP Framework 提供软件基础架构,以最佳实践开发优秀的网络应用程序。", "Landing_Page_MicroserviceCompatibleArchitecture": "微服务兼容架构", - "Landing_Page_PreBuiltApplicationModulesAndThemes": "预建的应用程序模块和主题", + "Landing_Page_PreBuiltApplicationModulesAndThemes": "预建应用程序模块和主题", "Landing_Page_MultiTenantArchitecture": "多租户架构", - "Landing_Page_MultiTenancyDescription": "SaaS 应用程序变得简单! 从数据库到 UI 的集成多租户。", - "Landing_Page_DDDIntroduction": "基于 DDD 模式和原则设计和开发。 为您的应用程序提供分层模型。", - "Landing_Page_CrossCuttingConcernsInfo": "用于授权、验证、异常处理、缓存、审计日志记录、事务管理等的完整基础架构。", - "Landing_Page_PreBuiltApplicationModules": "预建应用程序模块,其中包括最常见的 Web 应用程序要求。", + "Landing_Page_MultiTenancyDescription": "SaaS 应用程序变得简单!从数据库到用户界面都集成了多租户功能。", + "Landing_Page_DDDIntroduction": "基于 DDD 模式和原则进行设计和开发。为您的应用程序提供分层模型。", + "Landing_Page_CrossCuttingConcernsInfo": "用于授权、验证、异常处理、缓存、审计日志、事务管理等的完整基础设施。", + "Landing_Page_PreBuiltApplicationModules": "预建应用模块,包括最常见的网络应用需求。", "Landing_Page_ChatModule": "聊天", - "Landing_Page_DocsModule": "文档", + "Landing_Page_DocsModule": "文件", "Landing_Page_FileManagementModule": "文件管理", - "Landing_Page_CustomerStory_1": "ABP 商业版 允许 SC Ventures 在 9 个月内交付银行级多租户silo数据库 SaaS 平台,以支持来自多个集成锚点的大额发票的应收账款/应付账款供应链融资。 ABP 的模块化使团队能够在创纪录的时间内交付,通过所有 VAPT,并通过完整的 CI/CD 和管道将容器化的微服务码部署到生产中。", - "Landing_Page_CustomerStory_2": "我们看到了使用 ABP 商业版 来减少定制开发项目开销的价值。 并且团队能够在不同的项目流中统一代码模式。 我们在框架中看到了比以前更快地构建新功能的更多潜力。 我们相信我们将不断看到使用 ABP 商业版 的价值。", - "Landing_Page_CustomerStory_3": "我们很爱 ABP。 我们不必从头开始编写所有内容。 我们从\"开箱即用\"的功能开始,只关注我们真正需要编写的内容。 此外,ABP 架构良好,代码质量高,错误少。 如果我们必须自己编写所需的一切,我们可能需要花费数年时间。 另一件事是我们喜欢的是新版本、问题修复或改进每隔一周就很快会出现\n。 我们不会等太久。", - "Landing_Page_CustomerStory_4": "ABP 商业版 是一款值得推荐的出色产品。 在一个可配置的平台上为我们的客户推向市场的商业产品。 为任何团队提供的框架和工具的快速启动都值得每一分钱。 ABP 商业版 最适合我们的需求。", - "Landing_Page_AdditionalServices": "定制或批量许可、熟悉使用培训、网上培训和支持、定制项目开发、移植现有项目等等...", - "Landing_Page_IncludedDeveloperLicenses": "包含 {0} 开发者许可", - "Landing_Page_SeeOnDemo": "见演示", - "Landing_Page_LeptonThemes": "Lepton主题", - "Landing_Page_AccountModuleDescription_1": "该模块实现了应用程序的认证系统;", - "Landing_Page_AccountModuleDescription_2": "提供带有用户名和密码的登录页面", - "Landing_Page_AccountModuleDescription_3": "提供一个注册页面来创建一个新账户。", + "Landing_Page_CustomerStory_1": "ABP Commercial 允许 SC Ventures 在 9 个月内交付银行级多租户筒仓数据库 SaaS 平台,以支持应收账款/应付账款供应链融资,处理来自多个集成锚点的大额发票。ABP 的模块化使团队能够在创纪录的时间内交付,通过所有 VAPT,并通过完整的 CI/CD 和管道将容器化微服务堆栈部署到生产中。", + "Landing_Page_CustomerStory_2": "我们看到了使用 ABP Commercial 降低定制开发项目开销的价值。团队可以统一不同项目流中的代码模式。我们在框架中看到了更大的潜力,使我们能够比以前更快地构建新功能。我们相信,我们将不断看到利用 ABP Commercial 的价值。", + "Landing_Page_CustomerStory_3": "我们热爱 ABP。我们不必从头开始编写所有内容。我们从开箱即用的功能开始,只需专注于真正需要编写的内容。此外,ABP 结构合理,代码质量高,错误较少。如果我们必须自己编写所有需要的代码,我们可能需要花费数年时间。我们还喜欢的一点是,新版本、问题修复或改进很快就会推出\n 每隔一周。我们不会等太久。", + "Landing_Page_CustomerStory_4": "ABP Commercial 是一款非常出色的产品,值得推荐。在一个可配置的平台上为我们的客户向市场提供商业产品。该框架和工具为任何团队提供的跳跃式启动都是物有所值的。ABP Commercial 最符合我们的需求。", + "Landing_Page_AdditionalServices": "定制或批量许可证、入职、现场培训和支持、定制项目开发、移植现有项目等...", + "Landing_Page_IncludedDeveloperLicenses": "包括 {0} 开发人员许可证", + "Landing_Page_SeeOnDemo": "观看演示", + "Landing_Page_LeptonThemes": "LeptonThemes", + "Landing_Page_AccountModuleDescription_1": "该模块为应用程序实施身份验证系统;", + "Landing_Page_AccountModuleDescription_2": "提供带有用户名和密码的 登录页面", + "Landing_Page_AccountModuleDescription_3": "提供注册页面以创建新账户。", "Landing_Page_AccountModuleDescription_4": "提供忘记密码页面,以电子邮件形式发送密码重置链接。", - "Landing_Page_AccountModuleDescription_5": "通过 UI 提供电子邮件确认功能。", - "Landing_Page_AccountModuleDescription_6": "实现双重身份验证(短信和电子邮件)。", - "Landing_Page_AccountModuleDescription_7": "实现用户锁定(当在一定时间间隔内由于无效凭据发生一定次数的登录失败时,将账户锁定设定的时间)。", - "Landing_Page_AccountModuleDescription_8": "实现 身份验证 身份验证服务器 UI 和功能。", - "Landing_Page_AccountModuleDescription_9": "允许在多租户环境中在租户之间切换。", - "Landing_Page_AccountModuleDescription_10": "允许更改应用程序的UI 语言。", - "Landing_Page_AuditLoggingModuleDescription_1": "此模块为审计基础设施提供审计日志报告 UI。 允许搜索、过滤和显示审计日志条目和实体更改日志。", - "Landing_Page_AuditLoggingModuleDescription_2": "审核日志条目包含有关每个客户端请求的关键数据:", + "Landing_Page_AccountModuleDescription_5": "通过用户界面提供电子邮件确认功能。", + "Landing_Page_AccountModuleDescription_6": "实施 双因素身份验证(短信和电子邮件)。", + "Landing_Page_AccountModuleDescription_7": "执行 用户锁定(当在一定时间间隔内因无效凭证导致一定次数的登录失败时,在设定时间内锁定账户)。", + "Landing_Page_AccountModuleDescription_8": "实现 Identity Server 身份验证服务器用户界面和功能。", + "Landing_Page_AccountModuleDescription_9": "允许在多租户环境中在租户之间切换。", + "Landing_Page_AccountModuleDescription_10": "允许更改应用程序的 UI 语言。", + "Landing_Page_AuditLoggingModuleDescription_1": "该模块为审计基础设施提供审计日志报告用户界面。允许搜索、过滤和显示审计日志条目和实体变更日志。", + "Landing_Page_AuditLoggingModuleDescription_2": "审计日志条目包括每个客户请求的关键数据:", "Landing_Page_AuditLoggingModuleDescription_3": "URL、浏览器、IP 地址、客户端名称", "Landing_Page_AuditLoggingModuleDescription_4": "用户", - "Landing_Page_AuditLoggingModuleDescription_5": "HTTP方法,HTTP返回状态码", - "Landing_Page_AuditLoggingModuleDescription_6": "成功/失败,异常详细信息(如果有)", - "Landing_Page_AuditLoggingModuleDescription_7": "请求执行时长", - "Landing_Page_AuditLoggingModuleDescription_8": "此请求中已创建、删除或更新实体(具有更改的属性)。", - "Landing_Page_BloggingModuleDescription_1": "该模块将一个简单的博客添加到您的 ABP 应用程序;", - "Landing_Page_BloggingModuleDescription_2": "允许在单个应用程序中创建多个博客。", + "Landing_Page_AuditLoggingModuleDescription_5": "HTTP 方法、HTTP 返回状态代码", + "Landing_Page_AuditLoggingModuleDescription_6": "成功/失败,异常详细信息(如有", + "Landing_Page_AuditLoggingModuleDescription_7": "请求执行期限", + "Landing_Page_AuditLoggingModuleDescription_8": "该请求中的实体已创建、删除或更新(属性已更改)。", + "Landing_Page_BloggingModuleDescription_1": "该模块为 ABP 应用程序添加了一个简单的博客;", + "Landing_Page_BloggingModuleDescription_2": "允许在一个应用程序中创建多个博客。", "Landing_Page_BloggingModuleDescription_3": "支持 Markdown 格式。", "Landing_Page_BloggingModuleDescription_4": "允许为帖子写评论。", - "Landing_Page_BloggingModuleDescription_5": "允许为博客文章分配标签。", - "Landing_Page_BloggingModuleDescription_6": "请参阅 blog.abp.io 网站作为博客模块的实时示例。", - "Landing_Page_ChatModuleDescription_1": "该模块用于应用程序中用户之间的实时消息传递。", + "Landing_Page_BloggingModuleDescription_5": "允许为博文指定标签。", + "Landing_Page_BloggingModuleDescription_6": "请参阅blog.abp.io网站,作为博客模块的实时示例。", + "Landing_Page_ChatModuleDescription_1": "该模块用于应用程序中用户之间的实时信息传递。", "Landing_Page_ChatModuleDescription_2": "聊天页面上的实时消息。", - "Landing_Page_ChatModuleDescription_3": "在应用程序中搜索用户以获取新对话。", + "Landing_Page_ChatModuleDescription_3": "在应用程序中搜索用户,查找新对话。", "Landing_Page_ChatModuleDescription_4": "最近对话的联系人列表。", - "Landing_Page_ChatModuleDescription_5": "当用户正在查看另一个页面时的新消息通知。", - "Landing_Page_ChatModuleDescription_6": "菜单图标上的未读消息总数徽章。", - "Landing_Page_ChatModuleDescription_7": "每个对话的未读消息计数。", - "Landing_Page_ChatModuleDescription_8": "延迟加载的对话。", + "Landing_Page_ChatModuleDescription_5": "当用户正在浏览其他页面时收到新信息通知。", + "Landing_Page_ChatModuleDescription_6": "菜单图标上的未读信息总数徽章。", + "Landing_Page_ChatModuleDescription_7": "每次对话的未读信息计数。", + "Landing_Page_ChatModuleDescription_8": "懒得装对话。", "Landing_Page_DocsModuleDescription_1": "该模块用于创建技术文档网站;", - "Landing_Page_DocsModuleDescription_2": "内置 GitHub 集成:直接在 GitHub 上编写和管理文档。", - "Landing_Page_DocsModuleDescription_3": "版本控制支持直接集成到 GitHub 版本。", - "Landing_Page_DocsModuleDescription_4": "支持多语言(回退支持默认语言)。", + "Landing_Page_DocsModuleDescription_2": "内置GitHub 集成:直接在 GitHub 上编写和管理文档。", + "Landing_Page_DocsModuleDescription_3": "版本支持直接集成到 GitHub 发布的版本中。", + "Landing_Page_DocsModuleDescription_4": "支持 多语言(支持默认语言回退)。", "Landing_Page_DocsModuleDescription_5": "支持 Markdown 和 HTML 格式。", - "Landing_Page_DocsModuleDescription_6": "提供导航和大纲部分。", + "Landing_Page_DocsModuleDescription_6": "提供导航和概述部分。", "Landing_Page_DocsModuleDescription_7": "允许在单个应用程序中托管多个项目文档。", - "Landing_Page_DocsModuleDescription_8": "GitHub 上文件的链接,因此任何人都可以通过单击编辑链接轻松贡献。", - "Landing_Page_DocsModuleDescription_9": "除了 GitHub 源之外,还允许简单地使用文件夹作为文档源。", - "Landing_Page_FileManagementModuleDescription_1": "在分层文件夹结构中上传、下载和组织文件。", - "Landing_Page_FileManagementModuleDescription_2": "该模块用于上传、下载和组织分层文件夹结构中的文件。 它还兼容多租户,您可以确定租户的总大小限制。", - "Landing_Page_FileManagementModuleDescription_3": "本模块基于BLOB Storing系统,因此可以使用不同的存储供应商存储文件内容。", + "Landing_Page_DocsModuleDescription_8": "指向 GitHub 上文件的链接,因此任何人都可以通过点击 编辑链接轻松作出贡献。", + "Landing_Page_DocsModuleDescription_9": "除了 GitHub 源代码外,还允许使用文件夹作为文档源代码。", + "Landing_Page_FileManagementModuleDescription_1": "以分层文件夹结构上传、下载和整理文件。", + "Landing_Page_FileManagementModuleDescription_2": "该模块用于上传、下载和以分层文件夹结构组织文件。它还与多租户兼容,你可以确定租户的总大小限制。", + "Landing_Page_FileManagementModuleDescription_3": "该模块基于 BLOB 存储系统,因此可以使用不同的存储提供商来存储文件内容。", "Landing_Page_IdentityModuleDescription_1": "该模块实现了应用程序的用户和角色系统;", "Landing_Page_IdentityModuleDescription_2": "基于 Microsoft 的 ASP.NET Core Identity 库构建。", - "Landing_Page_IdentityModuleDescription_3": "管理系统中的角色和用户。 一个用户可以拥有多个角色。", - "Landing_Page_IdentityModuleDescription_4": "在角色和用户级别设置权限。", - "Landing_Page_IdentityModuleDescription_5": "为每个用户启用/禁用双重身份验证和用户锁定。", - "Landing_Page_IdentityModuleDescription_6": "管理基本的用户个人资料和密码。", - "Landing_Page_IdentityModuleDescription_7": "管理系统中的声明类型,为角色和用户设置声明。,", - "Landing_Page_IdentityModuleDescription_8": "设置页面以管理密码复杂性、用户登录、账户和锁定。", + "Landing_Page_IdentityModuleDescription_3": "管理系统中的角色和用户。允许一个用户拥有多个角色。", + "Landing_Page_IdentityModuleDescription_4": "在角色和用户级别设置 权限。", + "Landing_Page_IdentityModuleDescription_5": "为每个用户启用/禁用 双因素身份验证和用户 锁定。", + "Landing_Page_IdentityModuleDescription_6": "管理基本的用户配置文件和密码。", + "Landing_Page_IdentityModuleDescription_7": "在系统中管理 申请类型,为角色和用户设置申请。", + "Landing_Page_IdentityModuleDescription_8": "设置页面用于管理 密码复杂性、用户登录、账户和锁定。", "Landing_Page_IdentityModuleDescription_9": "支持 LDAP 身份验证。", "Landing_Page_IdentityModuleDescription_10": "提供电子邮件和电话号码验证。", "Landing_Page_IdentityModuleDescription_11": "支持社交登录集成(Twitter、Facebook、GitHub 等)。", - "Landing_Page_IdentityModuleDescription_12": "管理系统中的组织单位。", - "Landing_Page_PaymentModuleDescription_1": "为不同的支付网关提供集成。", - "Landing_Page_PaymentModuleDescription_2": "该模块提供支付网关的集成,因此您可以轻松地从客户那里获得付款。", + "Landing_Page_IdentityModuleDescription_12": "在系统中管理组织单位。", + "Landing_Page_PaymentModuleDescription_1": "提供不同支付网关的集成。", + "Landing_Page_PaymentModuleDescription_2": "该模块集成了支付网关,因此您可以轻松从客户处获得付款。", "Landing_Page_PaymentModuleDescription_3": "该模块支持以下支付网关", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "commercial.abp.io 和 support.abp.io使用相同的凭据。", - "WatchCrudPagesVideo": "观看“创建 CRUD 页面的 ABP Suite”视频!", - "WatchGeneratingFromDatabaseVideo": "观看”ABP Suite:从现有数据库表生成 CRUD 页面”视频!", - "WatchTakeCloserLookVideo": "观看“详细了解ABP Suite 的代码生成”视频!", - "ConfirmedEmailAddressRequiredToStartTrial": "你应该有一个确认的电子邮件地址,以便开始试用许可证。", - "EmailVerificationMailNotSent": "电子邮件验证邮件不能发送。", - "GetConfirmationEmail": "点击这里获取确认邮件 如果你还没有收到。", - "WhichLicenseTypeYouAreInterestedIn": "你感兴趣的许可证类型是什么?", - "DontTakeOurWordForIt": "不要相信我们的话......", - "ReadAbpCommercialUsersWantYouToKnow": "阅读 ABP Commercial 用户希望您了解到的内容", - "Testimonial_ShortDescription_1": "ABP 的模块化使得团队能够及时交付项目。", - "Testimonial_ShortDescription_2": "比以前更快地构建新功能。", - "Testimonial_ShortDescription_3": "我们从开箱即用的功能开始,只专注于我们真正需要编写的内容。", - "Testimonial_ShortDescription_4": "ABP Commercial 最适合我们的需求。", - "OnlineReviewersOnAbpCommercial": "ABP Commercial 在线评论", - "SeeWhatToldAboutAbpCommercial": "查看关于 ABP Comemrcial 的报道,并根据需要写下您的想法。", - "BlazoriseLicense": "我们是否需要购买Blazorise许可证?", - "BlazoriseLicenseExplanation": "我公司Volosoft和公司Megabit之间有合作协议,根据此协议,购买将同时包含了Blazorise许可证与ABP商业产品,因此我们的客户不需要再额外购买Blazorise许可证。", - "ExtendPaymentInfoSection_DeveloperPrice": "{0}x 额外的 开发者价格", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "在 commercial.abp.io 和 support.abp.io 中使用相同的凭据。", + "WatchCrudPagesVideo": "观看 \"使用 ABP Suite 创建 CRUD 页面 \"视频!", + "WatchGeneratingFromDatabaseVideo": "观看 \"ABP 套件:从现有数据库表生成 CRUD 页面 \"视频!", + "WatchTakeCloserLookVideo": "观看 \"近距离了解代码生成:ABP 套件 \"视频!", + "ConfirmedEmailAddressRequiredToStartTrial": "您必须有一个确认的电子邮件地址,才能开始试用许可证。", + "EmailVerificationMailNotSent": "电子邮件验证邮件无法发送。", + "GetConfirmationEmail": "如果您还没有收到验证电子邮件,请单击此处。", + "WhichLicenseTypeYouAreInterestedIn": "您对哪种许可证类型感兴趣?", + "DontTakeOurWordForIt": "不要相信我们的话...", + "ReadAbpCommercialUsersWantYouToKnow": "阅读 ABP 商业用户希望您了解的内容", + "Testimonial_ShortDescription_1": "ABP 的模块化使团队能够及时交付。", + "Testimonial_ShortDescription_2": "比以往更快地构建新功能", + "Testimonial_ShortDescription_3": "我们从开箱即用的功能入手,只关注我们真正需要编写的内容。", + "Testimonial_ShortDescription_4": "ABP Commercial 最符合我们的需求。", + "OnlineReviewersOnAbpCommercial": "关于 ABP 商业公司的在线评论", + "SeeWhatToldAboutAbpCommercial": "查看有关 ABP Commercial 的报道,并写下您的想法。", + "BlazoriseLicense": "我们需要购买 Blazorise 许可证吗?", + "BlazoriseLicenseExplanation": "我们与 Volosoft 和 Megabit 签订了协议,根据该协议,Blazorise 许可证与 ABP 商业产品捆绑在一起,因此我们的客户无需额外购买 Blazorise 许可证。", + "ExtendPaymentInfoSection_DeveloperPrice": "{0}x新增开发人员", "ExtendPaymentInfoSection_DiscountRate": "折扣 {0}%", "TotalNetPrice": "总净价", "EFCore": "实体框架核心", "All": "全部", "Mvc": "MVC", "DataBaseProvider": "数据提供者", - "UIFramework": "UI 框架", - "LeptonXThemeForDashboard": "管理仪表板的 LeptonX 主题", + "UIFramework": "用户界面框架", + "LeptonXThemeForDashboard": "用于管理控制面板的 LeptonX 主题,由", "AbpPlatform": "ABP 平台", - "YouDeserveGoodUXUI": "您值得拥有良好的用户界面和更好的用户体验。 ABP 的 LeptonX Theme 就是为它服务的。", - "ViewLiveDemo": "查看在线主题演示", + "YouDeserveGoodUXUI": "您值得拥有良好的用户界面和更好的用户体验。ABP 的 LeptonX 主题就是为您服务的。", + "ViewLiveDemo": "查看实时主题演示", "GetLeptonX": "立即获取 LeptonX", - "SeeLeptonXDocumentation": "请参阅 LeptonX 文档", - "SeeLeptonDocumentation": "请参阅轻子文档", + "SeeLeptonXDocumentation": "参见 LeptonX 文档", + "SeeLeptonDocumentation": "参见 Lepton 文档", "SimplifiedMenu": "简化菜单", - "SimplifiedMenuDescription": "您可以通过过滤菜单轻松找到您要查找的页面", - "YourFavoritePages": "您最喜欢的页面触手可及", - "YourFavoritePagesDescription": "通过单击页面右上角的星形图标,可以轻松地将页面添加到收藏夹或从中删除。", - "BreadCrumbs": "用于无缝切换的页面路径导航", - "BreadCrumbsDescription": "使用页面路径导航,您可以一键切换到同一级别的页面,即使是左侧菜单关闭,它适用于平板电脑和移动设备响应!", + "SimplifiedMenuDescription": "通过过滤菜单,您可以轻松找到所需的页面", + "YourFavoritePages": "您最喜爱的网页触手可及", + "YourFavoritePagesDescription": "点击页面右上角的星形图标,即可轻松添加或删除收藏夹中的页面。", + "BreadCrumbs": "无缝切换的面包屑", + "BreadCrumbsDescription": "使用面包屑功能,即使左侧菜单关闭,您也可以一键切换到同级页面,而且它还能在平板电脑和移动设备上响应!", "YourMenu": "随心所欲的菜单", - "YourMenuDescription": "根据需要自定义用户菜单上可直接单击的图标和下拉框。 用户菜单可完全根据您的需要定制", - "RtlSupport": "对您的语言的 RTL 支持", - "RtlSupportDescription": "LeptonX 主题支持您的语言的 RTL。 语言选项位于设置菜单中,供您更改语言。", - "YourColors": "您在管理仪表板 UI 上的颜色", - "YourColorsDescription": "LeptonX 主题根据您的系统偏好工作,并具有仪表板浅色主题、仪表板深色主题和仪表板半深色主题选项。", - "ArrangeContentWidth": "轻松安排您的内容宽度", + "YourMenuDescription": "根据需要自定义用户菜单上可直接点击的图标和下拉框。用户菜单可完全根据需要定制", + "RtlSupport": "为您的语言提供 RTL 支持", + "RtlSupportDescription": "LeptonX 主题支持 RTL 语言。语言选项在设置菜单中,您可以更改语言。", + "YourColors": "管理仪表板用户界面上的颜色", + "YourColorsDescription": "LeptonX 主题可根据系统偏好进行设置,并提供仪表盘浅色主题、仪表盘深色主题和仪表盘半深色主题选项。", + "ArrangeContentWidth": "轻松安排内容宽度", "ArrangeContentWidthDescription": "轻松更改内容区域的宽度。", - "LeptonXCompatibleWith": "与LeptonX主题兼容", - "MobileResponsiveTemplate": "移动设备响应模板", - "MobileResponsiveTemplateDescription1": "从您喜欢的任何设备访问您的LeptonX管理仪表板。", - "MobileResponsiveTemplateDescription2": "它是为您设计的,在您的每一个设备上都可以轻松使用。它可以在移动设备和平板电脑上响应。", - "TopMenuLayoutOption": "菜单顶部布局选项", - "TopMenuLayoutOptionDescription1": "如果你想设置你的网站与相同的管理仪表板,通过使用LeptonX主题是可以做到的!", - "TopMenuLayoutOptionDescription2": "只需尝试LeptonX顶部菜单布局,就可以实现!", - "EasilyCustomizable": "易于定制您的品牌颜色", - "EasilyCustomizableDescription1": "您可以仅使用几个SCSS变量自定义LeptonX主题。没有重写,没有额外的CSS加载!", - "EasilyCustomizableDescription2": "使用LeptonX,您可以随意安排您的管理仪表板。", + "LeptonXCompatibleWith": "LeptonX 主题兼容", + "MobileResponsiveTemplate": "移动响应式模板", + "MobileResponsiveTemplateDescription1": "通过任何设备访问您的 LeptonX 管理面板。", + "MobileResponsiveTemplateDescription2": "它专为您设计,方便您在各种设备上使用。在移动设备和平板电脑上都能响应。", + "TopMenuLayoutOption": "顶部菜单布局选项", + "TopMenuLayoutOptionDescription1": "如果您想使用相同的管理仪表板设置网站,也可以使用 LeptonX 主题!", + "TopMenuLayoutOptionDescription2": "只需尝试一下 LeptonX 顶部菜单布局即可实现!", + "EasilyCustomizable": "可轻松定制品牌颜色", + "EasilyCustomizableDescription1": "您只需使用几个 SCSS 变量,就能定制 LeptonX 主题。无需覆盖,也无需加载额外的 CSS!", + "EasilyCustomizableDescription2": "有了 LeptonX,您可以随心所欲地安排管理仪表板。", "IndependentLayout": "独立的布局和内容区域", - "IndependentLayoutDescription1": "LeptonX 的布局基础设施的设计与内容完全分开。", - "IndependentLayoutDescription2": "这意味着您可以根据需要使用 Bootstrap 以外的内容结构自由设计您的项目。", - "MostUsedLibraries": "与 LeptonX 集成的最常用的库", - "MostUsedLibrariesDescription1": "LeptonX包含您最常用的库。它允许您使用库,如 ApexCharts, DataTables, DropZone, FullCalender, JSTree, Select2, Toastr 并毫不费力。", - "MostUsedLibrariesDescription2": "LeptonX还支持MVC Angular和Blazor特定的库。", - "CreateAndCustomize": "使用LeptonX自定义页面在几秒钟内创建和自定义所需的页面", - "CreateAndCustomizeDescription": "通过使用LeptonX Theme,您还可以访问许多预先制作的html页面。这些包括许多页面,如登录页面,博客,常见问题解答,订阅列表,发票,定价,文件管理。", - "LeptonThemeForAdmin": "为您的管理仪表板的Lepton主题", - "LeptonThemeForAdminDescription": "Lepton主题仍然可用,并将保持。如果您想以Lepton Theme用户的身份切换到LeptonX Theme,您可以查看文档了解如何操作。", - "LeptonCompatibleWith": "Lepton主题兼容", + "IndependentLayoutDescription1": "LeptonX 的布局基础结构设计与内容完全分离。", + "IndependentLayoutDescription2": "这意味着,如果您愿意,可以自由地使用 Bootstrap 以外的内容结构设计您的项目。", + "MostUsedLibraries": "与 LeptonX 集成的最常用库", + "MostUsedLibrariesDescription1": "LeptonX 包含您最常用的库。通过它,您可以毫不费力地使用 ApexCharts、DataTables、DropZone、FullCalender、JSTree、Select2 和 Toastr 等库。", + "MostUsedLibrariesDescription2": "LeptonX 还支持 MVC Angular 和 Blazor 专用库。", + "CreateAndCustomize": "使用 LeptonX 自定义页面在几秒钟内创建和自定义您需要的页面", + "CreateAndCustomizeDescription": "使用 LeptonX 主题,您还可以访问许多预制 HTML 页面。这些页面包括登录页面、博客、常见问题、订阅列表、发票、定价和文件管理等。", + "LeptonThemeForAdmin": "用于管理仪表板的 Lepton 主题,由", + "LeptonThemeForAdminDescription": "Lepton 主题仍然可用,并将得到维护。如果你想以 Lepton 主题用户的身份切换到 LeptonX 主题,可以查看文档了解如何切换。", + "LeptonCompatibleWith": "Lepton 主题兼容", "BlackFridayDiscount": "黑色星期五折扣", - "UpgradePaymentInfoSection_DeveloperPrice": "{0} 对于 {1} 额外的开发人员", + "UpgradePaymentInfoSection_DeveloperPrice": "{0}为{1}个额外的开发人员", "Upgrade": "升级", "Renewal": "续订", - "UpgradePaymentInfoSection_LicensePrice": "{0} 许可证", - "UpgradePaymentInfoSection_LicenseRenewalPrice": "许可证续订", + "UpgradePaymentInfoSection_LicensePrice": "{0}许可证", + "UpgradePaymentInfoSection_LicenseRenewalPrice": "许可证续期", "Total": "总计", - "SupportPolicyFaqTitle": "您的支持政策是什么?", - "SupportPolicyFaqExplanation": "我们只支持有效的和以前的主要版本。 我们不保证为第 3 个和更早的主要版本发布补丁。 例如,如果有效版本是 7.0.0,我们将发布 6.x.x 和 7.x.x 的补丁版本。 此外,我们仅对 ABP Framework 和 ABP Commercial 相关问题提供支持。 这意味着不支持 ABP 产品使用的第 3 方应用程序、云服务和其他外围库。 我们将尽商业上合理的努力在“Volosoft Bilisim A.S”的正式营业时间内为我们的客户提供技术支持。 另一方面,我们不承诺服务级别协议 (SLA) 响应时间,但我们会尽量在我们的官方工作时间内尽快响应技术问题。 除非与客户达成特殊协议,否则我们仅在 https://support.abp.io 上提供支持。 我们还提供私人电子邮件支持,仅适用于企业许可证持有者。", - "TotalDevelopers": "{0}位开发者", - "CustomPurchaseExplanation": "定制您的特定需求", - "WhereDidYouHearAboutUs": "您是从哪里了解到我们的?", - "Twitter": "Twitter", - "Facebook": "Facebook", + "SupportPolicyFaqTitle": "你们的支持政策是什么?", + "SupportPolicyFaqExplanation": "我们只支持当前和之前的主要版本。我们不保证为第 3 个和更早的主要版本发布补丁。此外,我们仅支持 ABP 框架和 ABP 商业相关问题。这意味着不支持第三方应用程序、云服务和 ABP 产品使用的其他外围库。我们将尽商业上的合理努力,在 \"Volosoft Bilisim A.S \"的正式营业时间内为客户提供技术支持。另一方面,我们不承诺服务水平协议(SLA)的响应时间,但我们会尽量在正式工作时间内尽快对技术问题做出响应。除非与客户达成特别协议,否则我们只在 https://support.abp.io 上提供支持。我们还提供私人电子邮件支持,只有企业许可证持有者才能使用。", + "TotalDevelopers": "共计 {0} 名开发人员", + "CustomPurchaseExplanation": "根据您的具体需求量身定制", + "WhereDidYouHearAboutUs": "你从哪里听说我们的?", + "Twitter": "推特", + "Facebook": "在 Facebook 上", "Youtube": "YouTube", - "Google": "Google", + "Google": "谷歌", "Github": "GitHub", - "Friend": "朋友介绍", + "Friend": "朋友赠言", "Other": "其他", - "WhereDidYouHearAboutUs_explain": "请说明...", - "DeletingMemberWarningMessage": "\"{0}\"将从开发者列表中删除。如果您愿意,您可以将此空位分配给另一个开发者。", - "AdditionalInfo": "如果开发人员席位超出您的要求,您可以减少它们。 您可以发送电子邮件至 info@abp.io 以删除您的一些开发人员席位。 清除未使用的开发人员席位将降低许可证续订成本。 如果需要,您可以在有效许可期限内重新购买额外的开发人员席位。 请注意,由于此许可证中有 {0} 个开发人员,因此您无法减少此数量。", - "LinkExpiredErrorMessage": "您正在尝试访问的链接已过期。", - "ExpirationDate": "过期时间", - "SpringCampaignDiscount": "春季促销折扣", - "WhyUseAbpIoPlatform": "为什么我应该使用 ABP.IO 平台而不是从头开始创建新的解决方案?\n", - "WhyUseAbpIoPlatformFaqExplanation": "请参阅该文件以详细解释为什么使用ABP.IO平台比自己做所有事情有显著的优势。", + "WhereDidYouHearAboutUs_explain": "指定 ...", + "DeletingMemberWarningMessage": "\"{0}\"将从开发者列表中删除。如果您愿意,可以稍后将此空位分配给其他开发人员。", + "AdditionalInfo": "如果开发人员席位超出了您的要求,您可以减少这些席位。您可以发送电子邮件至 info@abp.io 删除部分开发人员席位。清除未使用的开发人员席位将减少许可证续订费用。如果需要,您可以在有效许可证期限内重新购买额外的开发人员席位。请注意,由于此许可证包中有 {0} 个开发人员席位,因此无法减少这一数量。", + "LinkExpiredErrorMessage": "您试图访问的链接已过期。", + "ExpirationDate": "有效期", + "SpringCampaignDiscount": "春季活动折扣", + "WhyUseAbpIoPlatform": "为什么要使用 ABP.IO 平台而不是从头开始创建新的解决方案?", + "WhyUseAbpIoPlatformFaqExplanation": "请参阅该页面,详细了解为什么使用 ABP.IO 平台比自己做所有事情都有显著优势。", "EulaPageTitle": "最终用户许可协议(EULA)", - "PrivacyPolicyPageTitle": "隐私政策 - Cookies政策", + "PrivacyPolicyPageTitle": "隐私政策 - Cookie 政策", "TermsConditionsPageTitle": "条款和条件", - "TrainingsPageTitle": "ABP培训套餐", - "ModulesPageTitle": "ABP内置的应用模块", + "TrainingsPageTitle": "ABP 培训套餐", + "ModulesPageTitle": "ABP 预建应用模块", "Volo.AbpIo.Commercial:040001": "API 访问密钥不正确。", - "GetLepton": "立即获取轻子", + "GetLepton": "立即获取 Lepton", "MyOrganizations_Detail_LicenseStartDate": "许可证开始日期", - "MyOrganizations_Detail_LicenseExpiryDate": "到期日", - "BlazoriseSupport": "如何获取Blazorise许可密钥并获得Blazorise团队的支持?", - "BlazoriseSupportExplanation": "请按照以下步骤获取Blazorise团队的支持并获得您的Blazorise许可密钥:", - "BlazoriseSupportExplanation1": "使用与您的abp.io账户相同的电子邮件地址在blazorise.com/support/register上注册一个新账户。请将“许可密钥”一栏留空,并确保该电子邮件地址与您在abp.io上的电子邮件账户相同。", - "BlazoriseSupportExplanation2": "通过查看您的电子邮件信箱来验证您的电子邮件地址。如果在收件箱中没有看到电子邮件,请检查您的垃圾邮件箱!", - "BlazoriseSupportExplanation3": "在blazorise.com/support/login上登录Blazorise支持网站。", - "BlazoriseSupportExplanation4": "如果您有有效的ABP商业版许可证,您还将拥有Blazorise PRO许可证。您可以在blazorise.com/support/user/manage/license获取您的Blazorise许可密钥。", - "BlazoriseSupportExplanation5": "您可以在support网站上发布您的问题,并为您的应用程序生成一个产品令牌。", - "AbpLiveTrainingPackages": "ABP 现场培训包", + "MyOrganizations_Detail_LicenseExpiryDate": "有效期", + "BlazoriseSupport": "如何从 Blazorise 团队获得 Blazorise 许可证密钥和支持?", + "BlazoriseSupportExplanation": "请按照以下步骤获得 Blazorise 团队的支持并获取 Blazorise 许可证密钥:", + "BlazoriseSupportExplanation1": "在blazorise.com/support/register上注册一个新账户,电子邮件地址应与您的 abp.io 账户相同。将 \"许可证密钥 \"项留空。该电子邮件地址必须与您在 abp.io 上的电子邮件帐户相同。", + "BlazoriseSupportExplanation2": "检查您的电子邮箱,验证您的电子邮件地址。如果收件箱中没有邮件,请检查垃圾邮件箱!", + "BlazoriseSupportExplanation3": "登录 Blazorise 支持网站blazorise.com/support/login。", + "BlazoriseSupportExplanation4": "如果您拥有有效的 ABP 商业许可证,您也将拥有 Blazorise PRO 许可证。您可在 blazorise.com/support/user/manage/license 获取 Blazorise 许可证密钥。", + "BlazoriseSupportExplanation5": "您可以在支持网站上发布您的问题,并为您的应用程序生成产品令牌。", + "AbpLiveTrainingPackages": "ABP 实时培训套餐", "Releases": "发布", - "ReleasesDescription": "ABP商业发布日志。", + "ReleasesDescription": "ABP Commercial 的发布日志。", "ReleaseDate": "发布日期", "Labels": "标签", "PreRelease": "预发布", "AllTypes": "所有类型", - "Enhancement": "强化", - "Bug": "漏洞", - "Feature": "特征", + "Enhancement": "增强", + "Bug": "错误", + "Feature": "特点", "AllUIs": "所有用户界面", - "MVC": "多维控制", - "BlazorServer": "Blazor服务器", + "MVC": "MVC", + "BlazorServer": "Blazor 服务器", "MAUI": "毛伊岛", - "HowItWorks_Page_Title": "怎么运行的?", - "HowItWorks_Page_Description": "ABP 框架扩展了.NET 平台。因此,使用普通 .NET 解决方案可以做的任何事情都可以通过 ABP 框架实现。这使得以较低的学习曲线轻松上手。", - "HowItWorks_Description1": "ABP 框架扩展了.NET 平台。因此,使用普通 .NET 解决方案可以做的任何事情都可以通过 ABP 框架实现。这使得以较低的学习曲线轻松上手。", - "HowItWorks_Description2": "一旦您开始学习和使用 ABP 框架功能,开发您的软件将比以往更加愉快。", - "HowItWorks_Description3": "本页主要解释了作为 .NET 开发人员如何使用 ABP.IO 平台。", + "HowItWorks_Page_Title": "它是如何工作的?", + "HowItWorks_Page_Description": "ABP Framework 扩展了 .NET 平台。因此,你能用普通 .NET 解决方案做的任何事情,ABP 框架都能实现。因此,学习曲线较低,很容易上手。", + "HowItWorks_Description1": "ABP Framework 扩展了 .NET 平台。因此,你能用普通 .NET 解决方案做的任何事情,ABP 框架都能实现。因此,学习曲线较低,很容易上手。", + "HowItWorks_Description2": "一旦你开始学习和使用 ABP 框架的功能,开发软件将比以往更加轻松愉快。", + "HowItWorks_Description3": "本页基本上介绍了作为 .NET 开发人员如何使用 ABP.IO 平台。", "CreateANewSolution": "创建新的 .NET 解决方案", - "CreateANewSolution_Description1": "一切都从创建新的 ABP 集成 .NET 解决方案开始。", - "StartWithStartupTemplates": "启动预构建的启动解决方案模板之一", - "SimpleMonolithApplicationTemplate": "简单的整体式应用程序模板", - "LayeredApplicationTemplate": "分层应用模板", + "CreateANewSolution_Description1": "一切从创建新的 ABP 集成 .NET 解决方案开始。", + "StartWithStartupTemplates": "启动一个预建的启动解决方案模板。", + "SimpleMonolithApplicationTemplate": "简单的单体应用程序模板", + "LayeredApplicationTemplate": "分层应用程序模板", "MicroserviceSolutionTemplate": "微服务解决方案模板", - "CreateEmptySolutionAndUseAbp": "或者创建一个新的空 .NET 解决方案并自行安装 ABP NuGet 和 NPM包。", - "CreatingSolutionWithMultipleOptions": "创建新解决方案时有多个用户界面和数据库选项。", - "UIFrameworkOptions": "UI 框架选项", - "DotnetSolutionWithoutDependency": "现在,您的本地计算机中有一个常规的 .NET 解决方案,不依赖于云平台或外部服务。", - "CheckTheDocumentForDetails": "您可以查看{1}文档了解详细信息。", - "UIAndDatabaseIndependent": "ABP 可以与 .NET 支持的任何 UI 和任何数据库提供程序一起使用。 \n然而,这些 UI 和数据库提供程序是预先集成的并且有详细记录。", + "CreateEmptySolutionAndUseAbp": "或者创建一个新的空 .NET 解决方案,并自行安装 ABP NuGet 和 NPM 软件包。", + "CreatingSolutionWithMultipleOptions": "在创建新解决方案时,有多个用户界面和数据库选项。", + "UIFrameworkOptions": "用户界面框架选项", + "DotnetSolutionWithoutDependency": "现在,您的本地计算机中就有了一个普通的 .NET 解决方案,它不依赖于云平台或外部服务。", + "CheckTheDocumentForDetails": "详情请查看 {1} 文档。", + "UIAndDatabaseIndependent": "ABP 可与.NET 支持的任何用户界面和任何数据库提供程序协同工作。\n 不过,这些用户界面和数据库提供商都是预先集成的,并有完善的文档记录。", "InstallAbpModules": "安装 ABP 模块", - "DevelopYourSolution": "开发您的解决方案", - "DeployAnywhere": "随处部署", - "InstallAbpModule_Description1": "ABP是一个模块化的应用程序开发框架。启动解决方案模板已安装了必要的模块。 \n但是您可能希望在解决方案中使用更多应用程序模块。", - "InstallAbpModule_Description2": "每个模块都由一些NuGet和NPM包组成,并有一个安装文档。 ABP Suite自动完成大部分工作,然后您根据其文档手动配置或微调模块。", - "DevelopYourSolution_Description1": "ABP 的基础设施通过自动化重复性工作并提供预构建的基础设施和应用程序功能,使您能够专注于自己的业务代码。", - "DevelopYourSolution_Description2": "在下面的代码块中,您可以看到 ABP 框架如何无缝集成到您的代码中并自动为您执行重复性任务。", - "DevelopYourSolution_Description3": "即使在这个短代码块中,ABP 也为您做了很多事情。", - "DevelopYourSolution_Description4": "它提供了应用约定的基类,例如\n依赖注入。通用\n存储库服务提供了一种方便的\n方式与数据库交互。声明式\n授权与微调的权限系统一起使用。", - "DevelopYourSolution_Description5": "ABP 完全自动化了\n工作单元(用于数据库连接和事务管理)、 \n异常处理、 \n验证\n和审计日志记录。它提供了更多构建块来简化您的日常开发任务并专注于您自己的代码,同时创建生产就绪的\n应用程序。", - "DevelopYourSolution_Description6": "您可以想象,如果您全部手动完成,该代码块会变得多么长和复杂。", - "SuiteCrudGenerationInFewSeconds": "除了手动编码解决方案之外,您还可以使用 ABP Suite 工具在几分钟内创建完全可用的高级 CRUD 页面。它将代码生成到您的解决方案中,以便您可以根据您的自定义要求对其进行微调。", - "DeployAnywhere_Description1": "最终,您将拥有一个纯 .NET 解决方案。您可以将解决方案部署到您自己的服务器、云平台、Kubernetes 或您想要的任何地方。您可以根据需要部署到任意数量的服务器。 ABP 是一个与部署环境无关的工具。", - "ExpertiseAbpFramework": "ABP 框架专业知识", - "ExpertiseAbpFramework_Description1": "想要超越基础知识并获得 ABP.IO 平台的专业知识吗?", + "DevelopYourSolution": "开发解决方案", + "DeployAnywhere": "随时随地部署", + "InstallAbpModule_Description1": "ABP 是一个模块化应用程序开发框架。启动解决方案模板已经安装了基本模块。\n 但您可能希望在解决方案中使用更多应用模块。", + "InstallAbpModule_Description2": "每个模块都由几个 NuGet 和 NPM 包组成,并有一个安装文档。ABP套件会自动完成大部分工作,然后你可以根据文档手动配置或微调模块。", + "DevelopYourSolution_Description1": "ABP 的基础架构可自动执行重复性工作,并提供预构建的基础架构和应用程序 功能,从而使您专注于自己的业务代码。", + "DevelopYourSolution_Description2": "在下面的代码块中,您可以看到 ABP 框架是如何无缝集成到您的代码中并自动执行重复性任务的。", + "DevelopYourSolution_Description3": "即使在这个简码块中,ABP 也能为您做很多事情。", + "DevelopYourSolution_Description4": "它提供了应用约定的基类,如\n 依赖注入。通用类\n 资源库服务提供了一种方便的\n 与数据库交互的便捷方法。声明式\n 授权与经过微调的权限系统配合使用。", + "DevelopYourSolution_Description5": "ABP 完全自动化\n 工作单元(用于数据库连接和事务管理)、\n 异常处理、\n 验证。\n 以及 审计日志。它提供了更多的构建模块,可简化您的日常开发任务,并在创建生产就绪应用程序的同时专注于您自己的代码。\n 应用程序。", + "DevelopYourSolution_Description6": "可以想象,如果全部由人工完成,代码块会有多么冗长和复杂。", + "SuiteCrudGenerationInFewSeconds": "除了手工编码解决方案外,您还可以使用 ABP Suite 工具在几分钟内创建可全面运行的高级 CRUD 页面。它可将代码生成到您的解决方案中,因此您可以根据您的自定义需求对其进行微调。", + "DeployAnywhere_Description1": "最后,您将拥有一个纯粹的 .NET 解决方案。您可以将解决方案部署到自己的服务器、云平台、Kubernetes 或任何您想部署的地方。您可以部署到任意多的服务器上。ABP 是一种与部署环境无关的工具。", + "ExpertiseAbpFramework": "ABP 框架的专业知识", + "ExpertiseAbpFramework_Description1": "想要超越基础知识,掌握 ABP.IO 平台的专业知识?", "FreeDownload": "免费下载", - "Read": "读", - "HavingTrouble": "遇到麻烦?", - "HavingTrouble_Description1": "您在开发解决方案时遇到问题吗?我们在这儿!使用 ABP 支持平台\n或发送电子邮件直接从核心 ABP 框架团队成员那里获取帮助。", - "WeAreHereToHelp_Description1": "您可以浏览我们的帮助主题或在常见问题、 \n中搜索,也可以使用联系表向我们提问。", + "Read": "阅读", + "HavingTrouble": "有问题?", + "HavingTrouble_Description1": "您在开发解决方案时遇到问题了吗?我们在这里!使用 ABP 支持平台\n 或发送电子邮件,直接向 ABP 核心框架团队成员寻求帮助。", + "WeAreHereToHelp_Description1": "您可以浏览我们的帮助主题或搜索常见问题、\n 或使用联系表向我们提问。", "OtherModules": "其他模块", - "OtherModules_Description1": "帐户、审计日志、聊天、CMS 套件、文件管理、表单、GDPR、身份、语言管理、付款、SaaS 等等...", + "OtherModules_Description1": "账户、审计日志、聊天、CMS 工具包、文件管理、表单、GDPR、身份、语言管理、支付、Saas 等...", "HowItWorks_DatabaseProviderOptions": "数据库提供商选项", - "SeeFAQ": "查看常见问题解答", + "SeeFAQ": "查看常见问题", "ReleaseLogs": "发布日志", - "ReleaseLogs_Tag": "{0} 发布日志", + "ReleaseLogs_Tag": "{0}发布日志", "ReleaseLogs_Pr": "拉取请求 #{0} - {1}", "NoLabels": "无标签", - "DoesTheSubscriptionRenewAutomatically": "许可会自动续费吗?", - "DoesTheSubscriptionRenewAutomaticallyExplanation": "ABP 商业版没有自动续费的计费模式。因此,在您的许可期结束时,您的订阅将不会自动续订。如果您希望继续享受ABP商业版的服务,请在组织管理页面手动进行续费操作。如果您拥有多个组织,您可以点击即将到期的组织上的\"管理\"按钮,然后点击\"立即续费\"按钮来续订您的许可。您还可以查看许可到期后会发生什么?部分了解更多信息。", - "ExtraQuestionCreditsFaqTitle": "我可以购买额外的问题支持次数吗?", - "ExtraQuestionCreditsFaqExplanation": "是的,您可以购买额外的问题支持次数,请发送电子邮件至info@abp.io,并提供您的组织名称。以下是额外问题支持次数的价格列表:

  • 50次问题 $999
  • 25次问题 $625
  • 15次问题 $450
", - "AlreadyBetaTester": "您已经加入了 Beta 测试员计划。", - "AbpStudio": "总部基地工作室", + "DoesTheSubscriptionRenewAutomatically": "订阅会自动续订吗?", + "DoesTheSubscriptionRenewAutomaticallyExplanation": "ABP 商业版没有自动续订计费模式。因此,您的訂閱將不會在許可期限結束時自動續期。如果您想继续享受 ABP 商业版的好处,您需要在组织管理页面手动续订。如果您有多个组织,请单击即将到期组织的 \"管理 \"按钮,然后单击 \"立即延长 \"按钮以续订许可证。您可能还需要查看 What Happens When My License Ends? 部分。", + "ExtraQuestionCreditsFaqTitle": "我可以购买额外的支持问题点数吗?", + "ExtraQuestionCreditsFaqExplanation": "可以。要购买额外的问题点数,请发送电子邮件至 info@abp.io 并注明贵组织的名称。以下是额外问题点数的价格表:
  • 50个问题包 999 美元
  • 25个问题包 625 美元
  • 15个问题包 450 美元
。", + "AlreadyBetaTester": "您已经加入了测试版程序。", + "AbpStudio": "ABP 工作室", "AbpStudio_Description": "ABP Studio 仍在开发中。您可以填写下面的表格,成为首批用户之一。", - "AbpStudio_Description1": "ABP Studio 是一款面向 ABP 开发人员的跨平台桌面应用程序。", - "AbpStudio_Description2": "它与 ABP 框架很好地集成,旨在通过自动化为您提供一个舒适的开发环境,提供有关您的解决方案的见解,使开发、运行和部署您的解决方案变得更加容易。", - "AbpStudio_ComingSoon": "即将推出计划测试版发布日期:2023 年第四季度。", + "AbpStudio_Description1": "ABP Studio 是专为 ABP 开发人员设计的跨平台桌面应用程序。", + "AbpStudio_Description2": "它与 ABP 框架集成得很好,旨在通过自动化、提供有关解决方案的见解,为您提供舒适的开发环境,使开发、运行和部署解决方案变得更加容易。", + "AbpStudio_ComingSoon": "即将发布 计划测试版发布日期:计划测试版发布日期:2023年第四季度。", "AbpStudio_PlannedPreviewDate": "计划预览版发布日期:2023 年第四季度。", "BetaRequest": "测试版请求", "CreateNewSolutions": "创建新的解决方案", - "CreateNewSolutions_Description1": "您可以通过多种选项轻松创建从简单应用程序到模块化整体或微服务解决方案。您将获得适合您企业的完整生产就绪基础软件解决方案。", - "ArchitectYourSolutions": "设计您的解决方案", - "ArchitectYourSolutions_Description1": "通过创建模块或服务并在它们之间建立关系,可以更轻松地构建整体模块化和微服务解决方案结构。您还可以安装或卸载预构建的应用程序模块。", - "ExploreYourSolution": "探索您的解决方案", - "ExploreYourSolution_Description1": "ABP Studio 显示了解决方案中的组件以及解决方案所依赖的模块的高级视图。您可以探索实体、服务、HTTP API 等,而无需打开代码库。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze": "轻松运行多应用程序或微服务解决方案", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description1": "只需单击一下即可运行一项、多项或所有服务。这样,就可以很容易地停止一个服务,在 Visual Studio 中运行它来测试或调试。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description2": "查看服务列表,查看每个服务的实时 HTTP 请求和异常计数。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description3": "查看传入任何服务的所有HTTP 请求的所有详细信息。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description4": "在任何服务中实时探索异常详细信息,轻松过滤和搜索。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description5": "显示应用程序日志,按日志级别过滤或按文本搜索。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description6": "无需离开解决方案运行器即可浏览应用程序的 UI。", - "IntegrateToYourKubernetesCluster": "集成到您的 Kubernetes 集群", - "IntegrateToYourKubernetesCluster_Description1": "将本地开发环境连接到本地或远程 Kubernetes 集群,该集群已在其中运行您的微服务解决方案。", - "IntegrateToYourKubernetesCluster_Description2": "访问 Kubernetes 中的任何服务,其服务名称为 DNS,就像它们在本地计算机中运行一样。", - "IntegrateToYourKubernetesCluster_Description3": "拦截该集群中的任何服务,因此被拦截服务的所有流量都会自动重定向到本地计算机中运行的服务。当您的服务需要使用 Kubernetes 中的任何服务时,流量会被重定向回集群,就像您的本地服务在 Kubernetes 内部运行一样。", + "CreateNewSolutions_Description1": "您可以使用大量选项轻松创建从简单应用程序到模块化单体或微服务解决方案。您可以为您的业务获得完整的生产就绪基础软件解决方案。", + "ArchitectYourSolutions": "设计解决方案", + "ArchitectYourSolutions_Description1": "通过创建模块或服务并建立它们之间的关系,可以更轻松地构建单体模块化和微服务解决方案结构。您还可以安装或卸载预置的应用模块。", + "ExploreYourSolution": "探索解决方案", + "ExploreYourSolution_Description1": "ABP Studio 可显示解决方案中组件的高级视图以及解决方案所依赖的模块。你可以探索实体、服务、HTTP API 等,而无需打开你的代码库。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze": "轻松运行多应用或微服务解决方案", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description1": "只需单击即可运行一个、多个或所有服务。通过这种方式,可以非常轻松地停止服务,并在 Visual Studio 中运行它来测试或调试。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description2": "查看服务列表,查看每个服务的 实时 HTTP 请求和 异常计数。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description3": "查看来自任何服务的所有HTTP 请求的所有详细信息。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description4": "在任何服务中实时查看异常详细信息,轻松进行筛选和搜索。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description5": "显示 应用程序日志,按日志级别过滤或按文本搜索。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description6": "浏览应用程序的用户界面,而无需离开解决方案运行程序。", + "IntegrateToYourKubernetesCluster": "集成到 Kubernetes 集群", + "IntegrateToYourKubernetesCluster_Description1": "将本地开发环境连接到本地或远程 Kubernetes 集群,该集群已运行您的微服务解决方案。", + "IntegrateToYourKubernetesCluster_Description2": "使用 Kubernetes 中任何服务的服务名作为 DNS 访问这些服务,就像它们在本地计算机上运行一样。", + "IntegrateToYourKubernetesCluster_Description3": "拦截该集群中的任何服务,因此所有被拦截服务的流量都会自动重定向到你本地机器上运行的服务。当您的服务需要使用 Kubernetes 中的任何服务时,流量会被重定向回群集,就像您的本地服务在 Kubernetes 中运行一样。", "GetInformed": "获取信息", - "Studio_GetInformed_Description1": "留下您的联系信息,以便在 ABP Studio 上线后第一时间获得通知并试用。", + "Studio_GetInformed_Description1": "请留下您的联系信息,以便获得通知,并在 ABP Studio 推出后抢先体验。", "Studio_GetInformed_Description2": "计划预览版发布日期:2023 年第三季度。", - "ThankYou!": "谢谢你!", - "SendBetaRequest": "发送测试版请求", - "YouJoinedTheBetaTesterProgram": "您加入了 ABP Studio beta 测试员计划。", - "PricingExplanation2": "30 天退款保证 —了解更多", - "MoneyBackGuaranteeText": "* 所有许可证均提供 30 天退款保证!团队许可证 100% 退款,商业和企业许可证 30 天内退款 60%。", + "ThankYou!": "谢谢!", + "SendBetaRequest": "发送测试版申请", + "YouJoinedTheBetaTesterProgram": "您加入了 ABP Studio 测试程序。", + "PricingExplanation2": "30 天退款保证 - 了解更多React Native
和.NET MAUI 实现的移动应用程序启动模板。当您创建新的基于 ABP 的解决方案时,您还将拥有连接到后端 API 的基本启动应用程序。", - "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates_Description2": "该应用程序具有预构建的身份验证令牌周期、多语言支持、多租户支持、登录、忘记密码、配置文件管理和用户管理页面。您可以添加自己的业务逻辑并根据您的需求进行自定义。", - "TwoFrameworkOptions": "两种框架选项", - "TwoFrameworkOptions_Description": "ABP 提供了React Native和.NET MAUI移动启动模板。这样,您就可以选择最适合您需求的一种。这两个应用程序的代码重用率在 iOS 和 Android 平台之间最高。", - "PreIntegratedToYourBackend": "预先集成到您的后端", - "PreIntegratedToYourBackend_Description": "ABP Mobile 应用程序已预先集成到您的后端 API。它从服务器获取有效的身份验证令牌并发出经过身份验证的请求。", + "MobileApplicationStartupTemplates_Description1": "为您的 ABP 商业解决方案集成移动应用程序启动模板。", + "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates": "使用 ABP 移动启动模板创建功能强大的业务线应用程序", + "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates_Description1": "ABP Commercial 提供了两个移动应用程序启动模板,分别使用 React Native 和 .NET MAUI 实现。当您创建基于 ABP 的新解决方案时,您还将拥有连接到后端 API 的基本启动应用程序。", + "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates_Description2": "该应用程序有一个预建的身份验证令牌循环、多语言支持、多租户支持、登录、忘记密码、配置文件管理和用户管理页面。您可以添加自己的业务逻辑,并根据自己的要求进行定制。", + "TwoFrameworkOptions": "两个框架选项", + "TwoFrameworkOptions_Description": "ABP 提供 React Native 和 .NET MAUI 移动启动模板。这样,您就可以选择最适合您需求的模板。这两种应用程序在 iOS 和 Android 平台之间的代码重用率最高。", + "PreIntegratedToYourBackend": "预集成到您的后台", + "PreIntegratedToYourBackend_Description": "ABP 移动应用程序已预集成到您的后端应用程序接口。它可从服务器获取有效的身份验证令牌,并发出身份验证请求。", "MultiLanguage": "多语言", - "MultiLanguage_Description": "它已经支持 10 多种开箱即用的语言。您还可以添加下一种语言。", - "Arabic": "阿拉伯", + "MultiLanguage_Description": "它开箱即支持 10 多种语言。您还可以添加其他语言。", + "Arabic": "阿拉伯语", "Czech": "捷克语", "English": "英语", - "Hungarian": "匈牙利", - "Finnish": "芬兰", + "Hungarian": "匈牙利语", + "Finnish": "芬兰语", "French": "法语", - "Hindi": "印地语", + "Hindi": "北印度语", "Portuguese": "葡萄牙语", "Italian": "意大利语", - "Russian": "俄语", - "Slovak": "斯洛伐克语", - "Turkish": "土耳其", - "EngageAndRetainYourCustomersWithABPMobileApps": "使用 ABP 移动应用程序吸引并留住客户", - "EngageAndRetainYourCustomersWithABPMobileApps_Description1": "您的客户希望随时随地管理他们的产品和订阅。这需要组织创建移动应用程序,使客户能够快速、无缝地满足他们的请求。", - "EngageAndRetainYourCustomersWithABPMobileApps_Description2": "借助 ABP Mobile 应用程序,您可以使用单一代码库为 Android 和 iOS 创建高质量的本机移动应用程序,并且不会影响安全性、质量或可扩展性。", - "OneCodeBaseMultipleDevices": "一种代码库支持多种设备", - "OneCodeBaseMultipleDevices_Description": "ABP Mobile 应用程序是跨平台的。它们可以在 iOS 和 Android 设备上安装和运行,并且使用单一代码库适应不同的外形尺寸。开发人员只需创建一次 UI 和前端代码,无需针对要支持的每个设备调整代码。", + "Russian": "俄罗斯", + "Slovak": "斯", + "Turkish": "土耳其语", + "EngageAndRetainYourCustomersWithABPMobileApps": "使用 ABP 移动应用程序吸引并留住您的客户", + "EngageAndRetainYourCustomersWithABPMobileApps_Description1": "您的客户希望随时随地管理他们的产品和订阅。这就要求企业创建移动应用程序,让客户能够快速、无缝地满足他们的要求。", + "EngageAndRetainYourCustomersWithABPMobileApps_Description2": "使用 ABP 移动应用程序,您可以创建适用于 Android 和 iOS 的高质量原生移动应用程序......使用单一代码库,且不会降低安全性、质量或可扩展性。", + "OneCodeBaseMultipleDevices": "一个代码库多种设备", + "OneCodeBaseMultipleDevices_Description": "ABP 移动应用程序是跨平台的。它们可在 iOS 和 Android 设备上安装和运行,并使用单一代码库适应不同的外形因素。开发人员只需创建一次用户界面和前端代码,无需为您要支持的每种设备调整代码。", "ComesWithTheSourceCode": "附带源代码", - "ComesWithTheSourceCode_Description": "移动应用程序随源代码一起提供。轻松自定义应用程序的 UX/UI,以满足品牌指南。", + "ComesWithTheSourceCode_Description": "移动应用程序提供源代码。您可以轻松定制应用程序的用户体验/用户界面,以符合品牌准则。", "Purchase_OneYearPrice": "1 年价格", - "Purchase_DeveloperSeatCount": "开发者席位数", - "Purchase_DevelopersAlreadyIncluded": "已包含 {0} 个开发者", - "1Year": "1年", - "{0}Years": "{0} 年", + "Purchase_DeveloperSeatCount": "开发商席位数", + "Purchase_DevelopersAlreadyIncluded": "{0}已包括开发人员", + "1Year": "1 年", + "{0}Years": "{0}年", "1YearLicense": "1 年许可证", - "{0}YearsLicense": "{0} 年许可", - "1AdditionalDeveloper": "1 名额外开发人员", - "{0}AdditionalDevelopers": "{0} 其他开发者", + "{0}YearsLicense": "{0}年许可证", + "1AdditionalDeveloper": "1 名新增开发人员", + "{0}AdditionalDevelopers": "{0} 其他开发人员", "Discount": "折扣 ({0}%)", - "Summary": "概括", - "TrainingPack": "训练包", + "Summary": "摘要", + "TrainingPack": "培训包", "TrainingPackDiscount": "培训包折扣", - "Purchase_OnboardingTraining_Description": "此现场培训套餐适用于 8 名学生的班级,并且此折扣仅在使用新许可证购买时有效。了解更多", - "Purchase_Save": "节省 {0}% {1} {2}", - "RemoveBasket": "从购物篮中取出", - "WhyABPIOPlatform?": "为什么选择ABP.IO平台?", - "DocumentAim": "本文档旨在回答一个大问题:", - "DocumentAim_Description": "“为什么应该使用 ABP.IO 平台而不是从头开始创建新的解决方案?”", - "DocumentAim_Description2": "该文档介绍了构建现代软件解决方案的挑战,并解释了 ABP 如何应对这些挑战。", + "Purchase_OnboardingTraining_Description": "此实时培训包适用于 8 人班,此折扣仅在购买新许可证时有效。了解更多 ", + "Purchase_Save": "{0}% 保存 {1}{2}", + "RemoveBasket": "从篮子中取出", + "WhyABPIOPlatform?": "为什么选择ABP.IO 平台?", + "DocumentAim": "本文件旨在回答这个重大问题:", + "DocumentAim_Description": "\"为什么要使用 ABP.IO 平台,而不是从头开始创建新的解决方案?", + "DocumentAim_Description2": "该文件介绍了构建现代软件解决方案所面临的挑战,并解释了 ABP 如何应对这些挑战。", "CreatingANewSolution": "创建新的解决方案", - "CreatingANewSolution_Description": "当您需要开始一个新的解决方案时,您需要问自己很多问题,并且在开始编写第一个业务代码之前您应该花费大量时间。", - "CreatingAnEmptySolution": "创建一个空的解决方案", + "CreatingANewSolution_Description": "当你需要开始一个新的解决方案时,你需要问自己很多问题,在开始编写你的第一个业务代码之前,你应该花很多时间。", + "CreatingAnEmptySolution": "创建空解决方案", "THEPROBLEM": "问题", - "CreatingAnEmptySolution_THEPROBLEM_Description": "即使创建一个几乎空的解决方案也是具有挑战性的;", - "CreatingAnEmptySolution_THEPROBLEM_Description2": "您如何跨项目组织代码库?", - "CreatingAnEmptySolution_THEPROBLEM_Description3": "有哪些层以及它们如何相互作用?", - "CreatingAnEmptySolution_THEPROBLEM_Description4": "如何集成到第三方库和系统?", - "CreatingAnEmptySolution_THEPROBLEM_Description5": "如何设置自动化测试?", - "ABPSOLUTION": "动态血压解决方案", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基于领域驱动设计原则提供了一个架构良好、分层且可用于生产的启动解决方案。该解决方案还包括每个层的预配置单元和集成测试项目。", - "CommonLibraries": "通用库", - "CommonLibraries_THEPROBLEM_Description": "您应该使用哪些库来实现常见需求?软件开发生态系统是高度动态的,这使得跟上最新的工具、库、趋势和方法变得具有挑战性。", - "CommonLibraries_ABPSOLUTION_Description": "ABP 将流行的、成熟的和最新的库预先集成到解决方案中。您不需要花时间集成它们或使它们相互通信。它们开箱即用,可以正常工作。", + "CreatingAnEmptySolution_THEPROBLEM_Description": "即使是创建一个几乎为空的解决方案也具有挑战性;", + "CreatingAnEmptySolution_THEPROBLEM_Description2": "您是如何组织跨项目的代码库的?", + "CreatingAnEmptySolution_THEPROBLEM_Description3": "有哪些层次,它们如何相互作用?", + "CreatingAnEmptySolution_THEPROBLEM_Description4": "如何与第三方资料库和系统集成?", + "CreatingAnEmptySolution_THEPROBLEM_Description5": "如何设置自动测试?", + "ABPSOLUTION": "ABP 解决方案", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基于领域驱动设计原则,提供了一个架构完善、分层且可投入生产的启动解决方案。该解决方案还包括每个层的预配置单元和集成测试项目。", + "CommonLibraries": "普通图书馆", + "CommonLibraries_THEPROBLEM_Description": "您应该使用哪些库来实现常见需求?软件开发生态系统是高度动态的,要跟上最新的工具、库、趋势和方法具有挑战性。", + "CommonLibraries_ABPSOLUTION_Description": "ABP 将流行、成熟和最新的库预先集成到解决方案中。你不需要花时间集成它们或让它们相互通信。它们开箱即可正常工作。", "UITheme&Layout": "用户界面主题和布局", - "UITheme&Layout_THEPROBLEM_Description": "在解决 UI 问题时,会出现一系列挑战。其中包括为响应式、现代且适应性强的 UI 套件奠定基础,该套件具有一致的外观和导航菜单、页眉、工具栏、页脚、小部件等一系列功能。", - "UITheme&Layout_THEPROBLEM_Description2": "即使您选择预先设计的主题,将其无缝集成到您的项目中也可能需要数天的开发时间。另一个障碍在于升级此类主题。通常,主题的 HTML/CSS 结构会与您的 UI 代码交织在一起,从而呈现未来的主题更改或升级复杂的任务。代码和设计的这种交织使后续调整的灵活性变得复杂。", - "UITheme&Layout_ABPSOLUTION_Description": "ABP 框架提供了独特的主题系统,可以将您的 UI 代码从主题约束中解放出来。主题独立存在,打包为 NuGet 或 NPM 包,使主题安装或升级只需几分钟。虽然您保留开发自定义主题或集成现有主题的选项,但 ABP Commercial 提供了一系列精致且现代的主题。", - "UITheme&Layout_ABPSOLUTION_Description2": "此外,还有 Telerik 和 DevExpress 等 UI 组件提供商。然而,这些提供商主要提供单独的组件,让您有责任建立自己的布局系统。在基于 ABP 的项目中工作时,您可以无缝合并这些库,就像在任何其他项目中一样。", + "UITheme&Layout_THEPROBLEM_Description": "在解决用户界面问题时,会遇到一系列挑战。这些挑战包括为建立一个具有一致外观和导航菜单、页眉、工具栏、页脚、小工具等一系列功能的响应性、现代性和适应性强的用户界面套件奠定基础。", + "UITheme&Layout_THEPROBLEM_Description2": "即使您选择了预先设计的主题,将其无缝集成到您的项目中也可能需要数天的开发时间。升级此类主题还会遇到额外的障碍。通常情况下,主题的 HTML/CSS 结构会与您的用户界面代码交织在一起,从而使未来的主题更改或升级任务变得错综复杂。这种代码和设计的交织使后续调整的灵活性变得更加复杂。", + "UITheme&Layout_ABPSOLUTION_Description": "ABP Framework 提供了一个独特的主题系统,可将用户界面代码从主题限制中解放出来。主题独立存在,打包为 NuGet 或 NPM 包,使主题的安装或升级成为分分钟的事。您可以选择开发自定义主题或集成现有主题,ABP 商业版提供了一系列精良的现代主题。", + "UITheme&Layout_ABPSOLUTION_Description2": "此外,还有一些用户界面组件提供商,如 Telerik 和 DevExpress。不过,这些提供商主要提供单个组件,因此您有责任建立自己的布局系统。在基于 ABP 的项目中工作时,您可以无缝整合这些库,就像在任何其他项目中一样。", "TestInfrastructure": "测试基础设施", - "TestInfrastructure_THEPROBLEM_Description": "建立强大的测试环境是一项耗时的工作。它涉及在解决方案中设置专用测试项目,仔细选择必要的工具,创建服务和数据库模拟,制作必要的基类和实用服务以最大限度地减少测试中的冗余代码,以及解决各种相关任务。", - "TestInfrastructure_ABPSOLUTION_Description": "ABP 启动模板预先配备了已配置的测试项目,可为您简化流程。这意味着从第一天开始,您就可以立即开始编写初始单元或集成测试代码。", - "CodingStandards&Training": "编码标准和培训", - "CodingStandards&Training_THEPROBLEM_Description": "设置开发解决方案后,您通常必须教开发人员系统如何工作以及如何使用相同的商定方法来构建它。即使您为他们提供培训,保持文档最新也可能很困难。随着时间的推移,每个开发人员可能会以自己的方式编写代码,导致编写代码的规则变得彼此不同。", - "CodingStandards&Training_ABPSOLUTION_Description": "ABP 解决方案已经组织得很整齐,并且有明确的解释。分步教程和指南向您准确展示如何处理 ABP 项目。", - "KeepingYourSolutionUpToDate": "让您的解决方案保持最新", - "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "开始开发后,您必须跟踪用于升级和补丁的库的新版本。", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "我们定期将所有软件包更新到最新版本,并在稳定版本发布之前对其进行测试。当您更新 ABP 框架时,其所有依赖项都会升级为边缘技术。", - "DRY": "不要重复自己!", - "DRY_Description": "创建基础解决方案需要大量时间并且需要良好的架构经验。然而,这仅仅是开始!当您开始开发时,您可能需要编写大量重复的代码;如果所有这些都能自动处理,那就太好了。", - "DRY_Description2": "ABP 通过遵循约定优于配置的原则,尽可能地自动化和简化重复代码。但是,当您需要切换到手动档时,它并不限制您。控制权始终掌握在您手中。", - "Authentication": "验证", - "Authentication_THEPROBLEM_Description": "单点登录、Active Directory / LDAP 集成、OpenIddict 集成、社交登录、双因素身份验证、忘记/重置密码、电子邮件激活、新用户注册、密码复杂性控制、尝试失败时锁定帐户、显示失败的登录尝试...等等。我们知道您对所有这些通用要求都很熟悉。你并不孤单!", - "Authentication_ABPSOLUTION_Description": "ABP 框架和商业版本提供了所有这些预先实现的标准内容作为可重用的帐户模块。您只需启用并配置您需要的内容即可。", - "CrossCuttingConcerns": "跨领域的关注点", - "CrossCuttingConcerns_THEPROBLEM_Description": "横切关注点是应该为每个用例实现的基本重复逻辑。一些例子;", - "CrossCuttingConcerns_THEPROBLEM_Description2": "启动事务,成功时提交,错误时回滚。", - "CrossCuttingConcerns_THEPROBLEM_Description3": "处理和报告异常,向客户端返回正确的错误响应并在客户端处理错误情况。", - "CrossCuttingConcerns_THEPROBLEM_Description4": "实现授权和验证,返回正确的响应并在客户端处理这些响应。", - "CrossCuttingConcerns_ABPSOLUTION_Description": "ABP 框架自动化或简化了所有常见的横切关注点。您只需编写对您的业务重要的代码,ABP 将按照惯例处理其余部分。", + "TestInfrastructure_THEPROBLEM_Description": "建立强大的测试环境是一项耗时的工作。它涉及在解决方案中设置专用测试项目、仔细选择必要的工具、创建服务和数据库模拟、制作基本基类和实用服务以尽量减少测试中的冗余代码,以及处理各种相关任务。", + "TestInfrastructure_ABPSOLUTION_Description": "ABP 启动模板预装了已配置的测试项目,为您简化了流程。这意味着从第一天起,您就可以立即开始编写初始单元或集成测试代码。", + "CodingStandards&Training": "编码标准与培训", + "CodingStandards&Training_THEPROBLEM_Description": "在为开发设置好解决方案后,您通常还需要向开发人员传授系统的工作原理,以及如何使用商定的方法构建系统。即使你对他们进行了培训,保持文档的及时更新也是很困难的。随着时间的推移,每个开发人员都可能以自己的方式编写代码,导致编写代码的规则彼此不同。", + "CodingStandards&Training_ABPSOLUTION_Description": "ABP 解决方案已经整理得井井有条,并有清晰的解释。循序渐进的教程和指南向你展示了 ABP 项目的具体操作方法。", + "KeepingYourSolutionUpToDate": "保持解决方案最新", + "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "开始开发后,您必须跟踪所使用库的新版本,以便进行升级和打补丁。", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "我们会定期将所有软件包更新至最新版本,并在稳定版本发布前对其进行测试。当你更新 ABP 框架时,它的所有依赖项都会升级到边缘技术。", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update
CLI 命令可自动发现并升级解决方案中所有依赖 ABP 的 NuGet 和 NPM 软件包。有了 ABP,使用最新版本变得更加容易。", + "DRY": "不要重复自己", + "DRY_Description": "创建基础解决方案需要大量时间,并需要良好的建筑经验。然而,这仅仅是个开始!在开始开发时,您可能需要编写大量重复的代码;如果所有这些代码都能自动处理,那就再好不过了。", + "DRY_Description2": "ABP 遵循 \"惯例重于配置 \"的原则,尽可能自动化和简化重复代码。不过,当您需要切换到手动档时,它也不会限制您。控制权始终掌握在您的手中。", + "Authentication": "认证", + "Authentication_THEPROBLEM_Description": "单点登录、Active Directory / LDAP 集成、OpenIddict 集成、社交登录、双因素验证、忘记/重置密码、电子邮件激活、新用户注册、密码复杂性控制、尝试失败时锁定账户、显示失败的登录尝试......等等。我们知道,您对所有这些通用要求都不陌生。您并不孤单!", + "Authentication_ABPSOLUTION_Description": "ABP Framework 和商业版本提供了所有这些标准内容,并作为可重复使用的账户模块预先为您实现。你只需启用和配置你所需要的即可。", + "CrossCuttingConcerns": "横向关注", + "CrossCuttingConcerns_THEPROBLEM_Description": "交叉关注点是每个用例都应实施的基本重复逻辑。举例如下", + "CrossCuttingConcerns_THEPROBLEM_Description2": "启动事务,成功时提交,出错时回滚。", + "CrossCuttingConcerns_THEPROBLEM_Description3": "处理和报告异常,向客户端返回正确的错误响应,并在客户端处理错误案例。", + "CrossCuttingConcerns_THEPROBLEM_Description4": "实施授权和验证,返回适当的响应,并在客户端进行处理。", + "CrossCuttingConcerns_ABPSOLUTION_Description": "ABP 框架可自动或简化所有常见的交叉问题。您只需编写与业务相关的代码,ABP 会按照惯例处理其余代码。", "ArchitecturalInfrastructure": "建筑基础设施", - "ArchitecturalInfrastructure_THEPROBLEM_Description": "您通常需要构建基础设施才能正确实施您的架构。例如,您通常实现存储库模式。您定义一些基类来简化和标准化创建实体、服务、控制器和其他对象。", - "ArchitecturalInfrastructure_ABPSOLUTION_Description": "ABP 框架提供了所有这些以及更多开箱即用的功能。它是成熟的并且有充分的记录。", + "ArchitecturalInfrastructure_THEPROBLEM_Description": "您通常需要构建基础架构来正确实施您的架构。例如,您一般会实施存储库模式。您需要定义一些基类,以简化和标准化创建实体、服务、控制器和其他对象。", + "ArchitecturalInfrastructure_ABPSOLUTION_Description": "ABP 框架开箱即可提供所有这些功能,甚至更多。它非常成熟,而且文档齐全。", "EnterpriseApplicationRequirements": "企业应用需求", - "EnterpriseApplicationRequirements_THEPROBLEM_Description": "在每个业务应用中都有很多需求需要重复实现;", - "EnterpriseApplicationRequirements_THEPROBLEM_Description2": "详细的权限体系,根据角色和用户对UI进行权限管理。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description3": "写入审核日志和实体历史记录以跟踪用户何时修改数据库记录。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description4": "对您的实体进行软删除,以便将它们标记为已删除,而不是从数据库中物理删除并在查询中自动过滤已删除的实体。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description5": "创建抽象和包装器以从前端代码使用后端 API。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description6": "排队并执行后台作业。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description7": "处理全球系统中的多个时区。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description8": "在服务器和客户端之间共享验证、本地化、授权逻辑。", - "EnterpriseApplicationRequirements_ABPSOLUTION_Description": "ABP 提供了一个基础设施来轻松实现此类需求。同样,您不必花费宝贵的时间一次又一次地重新实现所有这些。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description": "在每个业务应用程序中,您都要反复执行许多要求;", + "EnterpriseApplicationRequirements_THEPROBLEM_Description2": "详细的权限系统,并根据角色和用户管理用户界面上的权限。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description3": "编写审计日志和实体历史记录,以跟踪用户何时修改了数据库记录。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description4": "使实体软删除,这样它们就会被标记为已删除,而不是从数据库中物理删除,并在查询时自动过滤已删除的实体。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description5": "创建抽象和包装器,以便从前端代码中使用后端应用程序接口。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description6": "排队和执行后台作业", + "EnterpriseApplicationRequirements_THEPROBLEM_Description7": "在全球系统中处理多个时区。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description8": "在服务器和客户端之间共享验证、本地化和授权逻辑。", + "EnterpriseApplicationRequirements_ABPSOLUTION_Description": "ABP 提供了轻松实现这些要求的基础架构。同样,您无需花费宝贵的时间反复重新实现所有这些要求。", "GeneratingInitialCode&Tooling": "生成初始代码和工具", - "GeneratingInitialCode&Tooling_THEPROBLEM_Description": "您将在典型的 Web 应用程序中构建许多类似的页面。他们中的大多数都会执行类似的 CRUD 操作。重复创建这样的页面非常繁琐,而且容易出错。", - "GeneratingInitialCode&Tooling_ABPSOLUTION_Description": "ABP Suite可以在几秒钟内为您的实体生成全栈 CRUD 页面。生成的代码是分层且干净的。所有标准验证和授权要求均已实施。另外,还会生成单元测试类。一旦获得完全运行的页面,您可以根据您的业务需求对其进行修改。", - "IntegratingTo3rdPartyLibrariesAndSystems": "集成到第三方库和系统", - "IntegratingTo3rdPartyLibrariesAndSystems_THEPROBLEM_Description": "大多数库都被设计为低级别,您通常会做一些工作来正确集成它们,而无需在解决方案中的各处重复相同的集成和配置代码。例如,假设您必须使用 RabbitMQ 来实现分布式事件总线。你想做的就是;将消息发送到队列并处理传入的消息。但您需要了解消息传递模式、队列和交换细节。要编写高效的代码,您必须创建一个池来管理连接、客户端和通道。您还必须处理异常、ACK 消息、失败时重新连接到 RabbitMQ 等。", - "IntegratingTo3rdPartyLibrariesAndSystems_ABPSOLUTION_Description": "例如,ABP 的 RabbitMQ 分布式事件总线集成抽象了所有这些细节。您可以轻松地发送和接收消息。您需要编写低级代码吗?没问题,您随时都可以这样做。当您需要使用正在使用的库的低级功能时,ABP 不会限制您。", - "WhyNotBuildYourOwnFramework?": "为什么不构建自己的框架?", - "WhyNotBuildYourOwnFramework_THEPROBLEM_Description": "所有基础设施,即使是最简单的方式,也需要花费大量时间来构建、维护和记录。随着时间的推移,它会变得越来越大,并且很难在解决方案中维护它。将它们分离成可重用的项目是构建您自己的内部框架的起点。", - "WhyNotBuildYourOwnFramework_THEPROBLEM_Description2": "构建、记录、培训和维护内部框架确实很困难。如果您没有经验丰富的专门框架团队,您的内部框架很快就会变成无人能够理解和维护的未记录的遗留代码。另一方面,这些框架一般是由团队中的一两个开发人员开发的。这些人正在成为知识孤岛。这对他们有利,但对公司不利,因为他们是项目的单点故障-SPOF- 。一旦他们离开公司,项目就会急剧下降。", - "WhyNotBuildYourOwnFramework_ABPSOLUTION_Description": "ABP框架是一个社区驱动的、文档齐全、成熟且通用的应用程序框架。由经验丰富的开发人员组成的团队正在努力使其保持最新、易于理解和舒适使用。使用这样一个稳定的框架可以让您专注于自己的业务代码,并在需要时获得专家的框架帮助。", - "ArchitecturalInfrastructure_Description": "SaaS 应用程序、模块化或微服务系统是最常用的企业软件模型。构建这样的系统不仅需要良好的理解和经验,还需要强大的软件基础设施。否则,您会发现自己花费了大量精力来支持代码库中的这些架构细节。", + "GeneratingInitialCode&Tooling_THEPROBLEM_Description": "在一个典型的网络应用程序中,您会创建许多类似的页面。它们中的大多数都会执行类似的 CRUD 操作。重复创建此类页面非常乏味,而且容易出错。", + "GeneratingInitialCode&Tooling_ABPSOLUTION_Description": "ABP Suite 可在数秒内为您的实体生成一个全栈 CRUD 页面。生成的代码分层且简洁。所有标准验证和授权要求均已实现。此外,还生成了单元测试类。一旦您获得了一个完全运行的页面,您就可以根据您的业务需求对其进行修改。", + "IntegratingTo3rdPartyLibrariesAndSystems": "与第三方图书馆和系统集成", + "IntegratingTo3rdPartyLibrariesAndSystems_THEPROBLEM_Description": "大多数库的设计都比较低级,您通常需要做一些工作来正确集成它们,而不会在解决方案中到处重复相同的集成和配置代码。例如,假设您必须使用 RabbitMQ 来实现分布式事件总线。您要做的就是向队列发送消息并处理传入消息。但您需要了解消息传递模式、队列和交换细节。要编写高效的代码,必须创建一个池来管理连接、客户端和通道。您还必须处理异常、ACK 消息、失败时重新连接 RabbitMQ 等问题。", + "IntegratingTo3rdPartyLibrariesAndSystems_ABPSOLUTION_Description": "例如,ABP 的 RabbitMQ 分布式事件总线集成抽象了所有这些细节。您可以发送和接收消息,而无需进行繁琐的操作。您需要编写底层代码吗?没问题,您可以随时这样做。当您需要使用您正在使用的库的底层功能时,ABP 不会限制您。", + "WhyNotBuildYourOwnFramework?": "为什么不建立自己的框架?", + "WhyNotBuildYourOwnFramework_THEPROBLEM_Description": "所有基础设施,即使是最简单的,也需要大量时间来构建、维护和记录。随着时间的推移,这些基础架构会变得越来越庞大,很难在解决方案中对其进行维护。将这些分离成一个可重复使用的项目,是建立自己内部框架的起点。", + "WhyNotBuildYourOwnFramework_THEPROBLEM_Description2": "构建、记录、培训和维护一个内部框架非常困难。如果你没有一个经验丰富的专门框架团队,你的内部框架很快就会变成没有文档的遗留代码,再也没有人能理解和维护。另一方面,这些框架通常由团队中的一两个开发人员开发。这些人正在成为知识孤岛。这对他们有利,但对公司不利,因为他们是项目的单点故障-SPOF-。一旦他们离开公司,项目就会急剧下滑。", + "WhyNotBuildYourOwnFramework_ABPSOLUTION_Description": "ABP 框架是一个社区驱动、文档齐全、成熟且通用的应用程序框架。由经验丰富的开发人员组成的团队正在努力使其保持最新、易懂和易于使用。使用这样一个稳定的框架,您可以专注于自己的业务代码,并随时从专家那里获得框架方面的帮助。", + "ArchitecturalInfrastructure_Description": "SaaS 应用程序、模块化或微服务系统是最常用的企业软件模型。构建此类系统不仅需要良好的理解和经验,还需要强大的软件基础设施。否则,你会发现自己要花费很大精力才能在代码库中支持这些架构细节。", "Modularity": "模块化", - "Modularity_THEPROBLEM_Description": "构建真正的模块化系统并不容易!系统的所有方面(数据库、实体、API、UI 页面/组件)都可以拆分为模块,并且每个模块都可以重复使用,无需其他模块。普通的 ASP.NET Core 不提供这样的模块化架构。如果你需要的话,你应该从头开始考虑。", - "Modularity_ABPSOLUTION_Description": "ABP框架天生就是一个模块化的应用程序开发结构。框架中的每个功能都是为了与模块化兼容而开发的。文档和指南解释了如何以标准方式开发可重用模块。", - "SaaSMultiTenancy": "SaaS/多租户", - "SaaSMultiTenancy_THEPROBLEM_Description": "多租户是实施 SaaS 系统的常用方法。然而,实施一致的多租户基础设施可能会变得复杂。", - "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP 框架提供了完整的多租户基础设施,并从业务代码中抽象出复杂性。您的应用程序代码主要是多租户感知的,而 ABP 框架会自动将数据库、缓存和租户的其他详细信息相互隔离。它支持单一数据库、每个租户数据库和混合方法。它正确配置了 Microsoft Identity 和 OpenIddict 等库,这些库通常不兼容多租户。", + "Modularity_THEPROBLEM_Description": "建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、应用程序接口、用户界面页面/组件)都可以分割成模块,而且每个模块都可以重复使用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。", + "Modularity_ABPSOLUTION_Description": "ABP 框架是一种模块化应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南解释了如何以标准方式开发可重复使用的模块。", + "SaaSMultiTenancy": "SaaS / 多租户", + "SaaSMultiTenancy_THEPROBLEM_Description": " 多租户是实施 SaaS 系统的一种常见方式。但是,实施一致的多用户基础设施可能会变得复杂。", + "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP 框架提供完整的多租户基础架构,并从您的业务代码中抽象出复杂性。您的应用程序代码大部分将具有多租户意识,而 ABP 框架会自动隔离租户之间的数据库、缓存和其他细节。它支持单个数据库、每个租户数据库和混合方法。它能正确配置 Microsoft Identity 和 OpenIddict 等库,这些库通常与多租户不兼容。", "Microservices": "微服务", - "Microservices_THEPROBLEM_Description": "构建微服务系统需要许多基础设施细节:对应用程序和微服务进行身份验证和授权以及在微服务之间实现异步消息传递和同步(Rest/GRPC)通信模式是最基本的问题。", + "Microservices_THEPROBLEM_Description": "构建微服务系统需要许多基础设施细节:对应用程序和微服务进行身份验证和授权,以及在微服务之间实施异步消息传递和同步(Rest/GRPC)通信模式是最基本的问题。", "Microservices_ABPSOLUTION_Description": "ABP 框架提供服务、指南和示例,帮助您使用行业标准工具实施微服务解决方案。", - "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更进一步,提供了一个完整的启动模板来启动您的微服务解决方案。", - "PreBuiltModules": "预建模块", - "PreBuiltModules_THEPROBLEM_Description": "我们所有人都有相似但略有不同的业务需求。然而,我们都应该重新发明轮子,因为没有人的代码可以直接在我们的解决方案中工作。它们都是更大解决方案的嵌入部分。", - "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial模块提供了大量可重用的应用模块,如支付、聊天、文件管理、审计日志报告等。所有这些模块都可以轻松安装到您的解决方案中并直接运行。我们不断添加更多模块。", - "PreBuiltModules_ABPSOLUTION_Description2": "所有模块均设计为可根据您的业务需求进行定制。如果您需要完全控制,您可以下载任何模块的完整源代码,并根据您的特定业务需求进行完全定制。", - "ABPCommunity": "总部社区", - "ABPCommunity_Description": "最后,在一个每个人都遵循相似的编码风格和原则并共享通用基础设施的大社区中,当您遇到麻烦或需要设计决策帮助时,这会带来力量。由于我们编写的代码相似,因此我们可以更好地互相帮助。 ABP 是一个社区支持的项目,在 GitHub 上拥有超过 10K star。", - "ABPCommunity_Description2": "在 ABP 开发人员之间共享代码甚至可重用的库很容易。适合您的代码片段也适用于其他人。有很多示例和教程,您可以直接为您的应用程序实现。", - "ABPCommunity_Description3": "当您聘请一位曾经使用过 ABP 架构的开发人员时,他会立即了解您的解决方案并在很短的时间内开始开发。", - "WhyAbpIo_Page_Title": "为什么选择ABP.IO平台?", - "AbpStudio_Page_Title": "总部基地工作室", - "CampaignInfo": "购买新许可证或续订现有许可证即可获得额外 2 个月的有效期,无需额外费用!此优惠对所有许可计划均有效。确保您利用此限时促销来扩大对高级功能和升级的访问范围。", - "HurryUpLastDay": "赶快!最后一天:{0}", - "CreatingCRUDPagesWithABPSuite": "使用 ABP Suite 创建 CRUD 页面", - "Testimonials": "感言", + "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更进一步,提供了完整的 启动模板,以启动您的微服务解决方案。", + "PreBuiltModules": "预制模块", + "PreBuiltModules_THEPROBLEM_Description": "我们每个人都有相似但略有不同的业务需求。但是,我们都应该重新发明轮子,因为没有人的代码可以直接用于我们的解决方案。它们都是更大解决方案的嵌入部分。", + "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial 模块提供了大量可重复使用的应用模块,如支付、聊天、文件管理、审计日志报告......等。所有这些模块都可以轻松安装到您的解决方案中并直接运行。我们将不断添加更多模块。", + "PreBuiltModules_ABPSOLUTION_Description2": "所有模块均可根据您的业务需求进行定制。如果您需要完全控制,可以下载任何模块的完整源代码,并根据您的具体业务要求进行完全定制。", + "ABPCommunity": "ABP 社区", + "ABPCommunity_Description": "最后,在一个大社区中,每个人都遵循相似的编码风格和原则,并共享一个共同的基础架构,当你遇到困难或在设计决策上需要帮助时,这将为你带来力量。因为我们的代码编写方式相似,所以我们可以更好地互相帮助。ABP 是一个由社区支持的项目,在 GitHub 上拥有 10K 多颗星。", + "ABPCommunity_Description2": "ABP 开发人员之间可以轻松共享代码,甚至是可重复使用的库。对你有用的代码片段也会对其他人有用。有很多示例和教程可以直接用于您的应用程序。", + "ABPCommunity_Description3": "如果您聘请的开发人员曾使用过 ABP 架构,那么他将立即了解您的解决方案,并在很短的时间内开始开发。", + "WhyAbpIo_Page_Title": "为什么选择 ABP.IO 平台?", + "AbpStudio_Page_Title": "ABP 工作室", + "CampaignInfo": "购买新许可证或更新现有许可证,即可免费获得额外 2 个月的使用期!此优惠适用于所有许可证计划。请确保您利用了这一限时促销活动,以扩大您对高级功能和升级的访问权限。", + "HurryUpLastDay": "抓紧时间最后一天{0}", + "CreatingCRUDPagesWithABPSuite": "使用 ABP 套件创建 CRUD 页面", + "Testimonials": "客户感言", "MultipleYearDiscount": "多年折扣", "CampaignDiscountText": "黑色星期五折扣", "CampaignDiscountName": "黑色星期五", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json index 42fe514b09..3759ef0741 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json @@ -1,260 +1,260 @@ { "culture": "zh-Hans", "texts": { - "Permission:CommunityPost": "社区文章", - "Permission:Edit": "修改", - "Waiting": "等待中", - "Approved": "已批准", - "Rejected": "已拒绝", + "Permission:CommunityPost": "社区岗位", + "Permission:Edit": "编辑", + "Waiting": "等待", + "Approved": "批准", + "Rejected": "拒绝", "Wait": "等待", "Approve": "批准", "Reject": "拒绝", "ReadPost": "阅读文章", - "Status": "状态", + "Status": "现状", "ContentSource": "内容来源", - "Details": "详情", + "Details": "详细信息", "Title": "标题", "CreationTime": "创建时间", - "Save": "保存", - "SameUrlAlreadyExist": "url已存在,如果你想要添加这篇文章,你需要更改url!", - "UrlIsNotValid": "Url无效.", - "UrlNotFound": "Url未找到.", - "UrlContentNotFound": "Url内容未找到.", + "Save": "节省", + "SameUrlAlreadyExist": "相同的网址已经存在,如果您想添加这个帖子,应该更改网址!", + "UrlIsNotValid": "Url 无效。", + "UrlNotFound": "未找到 Url。", + "UrlContentNotFound": "未找到 Url 内容。", "Summary": "摘要", - "MostRead": "阅读最多", + "MostRead": "最多阅读", "Latest": "最新", - "ContributeAbpCommunity": "为ABP社区做贡献", - "SubmitYourPost": "提交你的文章", - "ContributionGuide": "贡献指南", - "BugReport": "Bug报告", - "SeeAllPosts": "查看所有的文章", - "WelcomeToABP": "欢迎来到ABP", - "EmailNotValid": "请输入有效的电子邮箱地址.", + "ContributeAbpCommunity": "为 ABP 社区做贡献", + "SubmitYourPost": "提交您的帖子", + "ContributionGuide": "捐款指南", + "BugReport": "错误报告", + "SeeAllPosts": "查看所有帖子", + "WelcomeToABP": "欢迎来到 ABP", + "EmailNotValid": "请输入有效的电子邮件地址。", "FeatureRequest": "功能请求", - "CreatePostTitleInfo": "文章标题显示在文章列表中.", - "CreatePostSummaryInfo": "文章的简短摘要将显示在文章列表中.", - "CreatePostCoverInfo": "要创建一个有效的帖子,需要添加封面图片. 上传16:9的图片获取最佳视觉效果. 文件最大支持: 1MB", - "ThisExtensionIsNotAllowed": "不允许此扩展名.", - "TheFileIsTooLarge": "文件过大.", - "GoToThePost": "转到文章", - "GoToTheVideo": "前往视频", - "Contribute": "贡献", - "OverallProgress": "总体流程", - "Done": "完成", - "Open": "打开", + "CreatePostTitleInfo": "帖子列表中要显示的帖子标题。", + "CreatePostSummaryInfo": "帖子的简短摘要,将显示在帖子列表中。最大长度:{0}1MB。", + "ThisExtensionIsNotAllowed": "不允许延期。", + "TheFileIsTooLarge": "文件太大。", + "GoToThePost": "前往邮局", + "GoToTheVideo": "观看视频", + "Contribute": "投稿", + "OverallProgress": "总体进展", + "Done": "已完成", + "Open": "开放", "Closed": "关闭", - "RecentQuestionFrom": "最近的问题来自 {0}", - "Stackoverflow": "Stackoverflow", - "Votes": "票数", + "RecentQuestionFrom": "{0}最近提出的问题", + "Stackoverflow": "Stackflow", + "Votes": "投票", "Answer": "回答", - "Views": "观看次数", + "Views": "观点", "Answered": "已回答", - "WaitingForYourAnswer": "等待你的回答", - "Asked": "提问", - "AllQuestions": "所有的问题", - "NextVersion": "下一个版本", - "MilestoneErrorMessage": "无法从Github获取当前的里程碑详细信息.", - "QuestionItemErrorMessage": "无法从Stackoverflow获取最新的问题详细信息.", - "Oops": "哎呀!", - "CreatePostSuccessMessage": "文章提交成功. 网站管理员审核通过后将被发布.", + "WaitingForYourAnswer": "等待您的答复", + "Asked": "要求", + "AllQuestions": "所有问题", + "NextVersion": "下一版", + "MilestoneErrorMessage": "无法从 Github 获取当前里程碑的详细信息。", + "QuestionItemErrorMessage": "无法从 Stackoverflow 获取最新问题的详细信息。", + "Oops": "哎呀!", + "CreatePostSuccessMessage": "帖子已成功提交。网站管理员审核后将予以发布。", "Browse": "浏览", "CoverImage": "封面图片", - "ShareYourExperiencesWithTheABPFramework": "分享你的ABP Framework经验!", - "Optional": "可选的", - "UpdateUserWebSiteInfo": "示例: https://johndoe.com", - "UpdateUserTwitterInfo": "示例: johndoe", - "UpdateUserGithubInfo": "示例: johndoe", - "UpdateUserLinkedinInfo": "示例: https://www.linkedin.com/...", - "UpdateUserCompanyInfo": "示例v: Volosoft", - "UpdateUserJobTitleInfo": "示例: Software Developer", + "ShareYourExperiencesWithTheABPFramework": "分享您使用 ABP 框架的经验!", + "Optional": "可选", + "UpdateUserWebSiteInfo": "例如:https://johndoe.com", + "UpdateUserTwitterInfo": "示例:johndoe", + "UpdateUserGithubInfo": "示例:johndoe", + "UpdateUserLinkedinInfo": "例如: https://www.linkedin.com/...", + "UpdateUserCompanyInfo": "示例:沃乐软件", + "UpdateUserJobTitleInfo": "例如:软件开发人员软件开发人员", "UserName": "用户名", - "Company": "公司", + "Company": "公司名称", "PersonalWebsite": "个人网站", - "RegistrationDate": "注册时间", - "Social": "社交", - "Biography": "传记", + "RegistrationDate": "注册日期", + "Social": "社会", + "Biography": "简历", "HasNoPublishedPostsYet": "尚未发表文章", "Author": "作者", - "LatestGithubAnnouncements": "最新的Github公告", + "LatestGithubAnnouncements": "最新 Github 公告", "SeeAllAnnouncements": "查看所有公告", "LatestBlogPost": "最新博客文章", - "Edit": "修改", - "ProfileImageChange": "更改资料图片", - "BlogItemErrorMessage": "无法从ABP获取最新的博客文章详细信息.", + "Edit": "编辑", + "ProfileImageChange": "更改个人形象", + "BlogItemErrorMessage": "无法从 ABP 获取最新博文的详细信息。", "PlannedReleaseDate": "计划发布日期", - "CommunityPostRequestErrorMessage": "无法从Github获取最新的文章请求.", - "PostRequestFromGithubIssue": "现在没有任何文章请求.", - "LatestPosts": "最新的帖子", - "ArticleRequests": "文章请求", - "ArticleRequestsDescription": "想在这里查看具体内容吗? 您可以要求社区创建它!", - "LatestContentRequests": "最新内容请求", - "AllPostRequests": "查看所有文章请求", - "SubscribeToTheNewsletter": "订阅简讯", - "NewsletterEmailDefinition": "获取有关ABP发生的信息,例如新版本,免费资源,文章等.", - "NoThanks": "不用了,谢谢", - "MaybeLater": "以后再说", - "JoinOurPostNewsletter": "加入我们的文章简讯", + "CommunityPostRequestErrorMessage": "无法从 Github 获取最新的发布请求。", + "PostRequestFromGithubIssue": "现在没有任何职位请求。", + "LatestPosts": "最新文章", + "ArticleRequests": "申请内容", + "ArticleRequestsDescription": "想在这里看到特定内容?您可以要求社区创建!", + "LatestContentRequests": "最新内容申请", + "AllPostRequests": "查看所有职位申请", + "SubscribeToTheNewsletter": "订阅时事通讯", + "NewsletterEmailDefinition": "获取有关 ABP 发生的信息,如新版本、免费资源、帖子等。", + "NoThanks": "不,谢谢", + "MaybeLater": "也许以后", + "JoinOurPostNewsletter": "加入我们的邮政通讯", "Community": "社区", - "Marketing": "营销", - "CommunityPrivacyPolicyConfirmation": "我同意条款和条件以及隐私政策.", - "PostRequestMessageTitle": "在GitHub上创建一个Issue,以请求你要在此网站上查看的文章/教程.", - "PostRequestMessageBody": "在这里,是社区请求的文章列表. 您要写一篇要求的文章吗? 请单击该请求并加入讨论.", + "Marketing": "市场营销", + "CommunityPrivacyPolicyConfirmation": "我同意条款和条件以及 隐私政策。", + "PostRequestMessageTitle": "在 GitHub 上打开一个问题,申请您希望在本网站上看到的帖子/教程。", + "PostRequestMessageBody": "以下是社区要求撰写的文章列表。您想撰写要求发表的文章吗?请点击请求并加入讨论。", "Language": "语言", - "CreatePostLanguageInfo": "本文所用的语言", + "CreatePostLanguageInfo": "帖子内容的语言。", "VideoPost": "视频", - "Post": "文章", + "Post": "职位", "Read": "阅读", - "CreateGithubPostUrlInfo": "文章的原始GitHub链接.", - "CreateVideoContentUrlInfo": "文章的原始Youtube链接.", - "CreateExternalPostUrlInfo": "本文的原始外部网址", - "VideoContentForm": "视频内容来源", - "GithubPostForm": "Github文章来源", - "ExternalPostForm": "外部文章来源", - "HowToPost": "如何发布", - "Posts": "文章", - "VideoUrl": "视频Url", - "GithubPostUrl": "Github文章Url", - "ExternalPostUrl": "外部文章Url", - "ThankYouForContribution": "感谢你对ABP社区的贡献", - "GithubPost": "Github文章", - "GithubPostSubmitStepOne": "1. 用Markdown格式在GitHub的任何公共存储库上写一篇文章. 示例", - "GithubPostSubmitStepTwo": "2. 使用表单提交你的文章URL.", - "GithubPostSubmitStepThree": "3. 你的文章将在这个网站中呈现.", - "YoutubeVideo": "Youtube视频", - "YoutubeVideoSubmitStepOne": "1. 在YouTube上发布你的视频.", - "YoutubeVideoSubmitStepTwo": "2. 使用表单提交视频URL.", - "YoutubeVideoSubmitStepThree": "3. 访客将能够在这个网站上直接观看你的视频内容.", + "CreateGithubPostUrlInfo": "GitHub 上 Markdown 文件的完整 URL(示例)。", + "CreateVideoContentUrlInfo": "帖子的原始 Youtube URL。", + "CreateExternalPostUrlInfo": "帖子的原始外部网址。", + "VideoContentForm": "在 YouTube 上提交视频", + "GithubPostForm": "在 GitHub 上提交帖子", + "ExternalPostForm": "提交外部内容", + "HowToPost": "如何发布?", + "Posts": "职位", + "VideoUrl": "视频网址", + "GithubPostUrl": "GitHub 发布网址", + "ExternalPostUrl": "外部链接", + "ThankYouForContribution": "感谢您为 ABP 社区做出贡献。", + "GithubPost": "GitHub 发布", + "GithubPostSubmitStepOne": "1.使用 Markdown 格式在任何公共 GitHub 仓库上撰写文章。示例", + "GithubPostSubmitStepTwo": "2.使用表单提交您的帖子 URL。", + "GithubPostSubmitStepThree": "3.您的帖子将在本网站显示。", + "YoutubeVideo": "Youtube 视频", + "YoutubeVideoSubmitStepOne": "1.在 YouTube 上发布视频。", + "YoutubeVideoSubmitStepTwo": "2.使用表单提交视频 URL。", + "YoutubeVideoSubmitStepThree": "3.访问者可以直接在本网站上观看您的视频内容。", "ExternalContent": "外部内容", - "ExternalContentSubmitStepOne": "1. 在任何公开的平台创建内容(medium, 你自己的博客或者任何你喜欢的).", - "ExternalContentSubmitStepTwo": "2. 使用表单提交内容URL.", - "ExternalContentSubmitStepThree": "3. 访客被重定向到原网站的内容.", - "ChooseYourContentType": "请选择你想要添加内容的方式", - "PostContentViaGithub": "我想要使用 GitHub提交markdown格式的文章", - "PostContentViaYoutube": "我想要分享我在 Youtube的可用视频", - "PostContentViaExternalSource": "我想要添加我在其他平台发布的内容", - "GitHubUserNameValidationMessage": "您的Github用户名不能包含空格, 请确认你的Github用户名是正确的.", - "PersonalSiteUrlValidationMessage": "你的个人网站URL不能包含空格, 请确定你的个人网站URL是正确的.", - "TwitterUserNameValidationMessage": "你的Twitter用户名不能包含空格, 请确认你的Twitter用户名是正确的.", - "LinkedinUrlValidationMessage": "你的领英URL不能包含空格, 请确认你的领英URL是正确的", - "NoPostsFound": "没有发现帖子", - "SearchInPosts": "搜索帖子…", + "ExternalContentSubmitStepOne": "1.在任何公共平台(Medium、你自己的博客或任何你喜欢的地方)上创建内容。", + "ExternalContentSubmitStepTwo": "2.使用表单提交您的内容 URL。", + "ExternalContentSubmitStepThree": "3.访问者会被重定向到原始网站的内容。", + "ChooseYourContentType": "请选择添加内容的方式。", + "PostContentViaGithub": "我想根据标记符规则,用 GitHub 添加我的帖子。", + "PostContentViaYoutube": "我想在这里分享我在 Youtube 上提供的视频。", + "PostContentViaExternalSource": "我想在这里添加我在另一个平台上发布的内容。", + "GitHubUserNameValidationMessage": "您的 Github 用户名不能包含空格,请确保您的 Github 用户名正确无误。", + "PersonalSiteUrlValidationMessage": "您的个人网站 URL 不能包含空格,请确保您的个人网站 URL 正确无误。", + "TwitterUserNameValidationMessage": "您的 Twitter 用户名不能包含空格,请确保您的 Twitter 用户名正确无误。", + "LinkedinUrlValidationMessage": "您的 Linkedin URL 不能包含空格,请确保您的 Linkedin URL 正确无误。", + "NoPostsFound": "未找到帖子!", + "SearchInPosts": "在帖子中搜索...", "MinimumSearchContent": "您必须输入至少 3 个字符!", "Volo.AbpIo.Domain:060001": "源 URL(\"{PostUrl}\") 不是 Github URL", - "Volo.AbpIo.Domain:060002": "文章内容无法从 Github(\"{PostUrl}\") 资源中获得。", - "Volo.AbpIo.Domain:060003": "没有找到文章内容!", + "Volo.AbpIo.Domain:060002": "Github(\"{PostUrl}\") 资源中没有帖子内容。", + "Volo.AbpIo.Domain:060003": "未找到帖子内容!", "SeeMore": "查看更多", "JoinTheABPCommunity": "加入 ABP 社区", - "ABPCommunityTalks": "ABP 社区会谈", + "ABPCommunityTalks": "ABP 社区讲座", "LiveDemo": "现场演示", - "GetLicense": "获得许可证", - "GetStarted": "开始使用", + "GetLicense": "获取许可证", + "GetStarted": "开始", "SourceCode": "源代码", "LeaveComment": "发表评论", - "ShowMore": "展示更多", - "NoPublishedPostsYet": "还没有发布的帖子。", - "Name": "名字", + "ShowMore": "显示更多", + "NoPublishedPostsYet": "尚未发表文章。", + "Name": "名称", "Surname": "姓氏", "WebSite": "网站", "FullURL": "完整网址", - "JobTitle": "职称", + "JobTitle": "职位名称", "Prev": "上一页", - "Previous": "前面的", + "Previous": "上一页", "Next": "下一页", "Share": "分享", "SortBy": "排序方式", "NoPublishedEventsYet": "尚未发布活动。", "SubscribeYoutubeChannel": "订阅 Youtube 频道", "Enum:EventType:0": "会谈", - "MemberNotPublishedPostYet": "该成员尚未发布任何帖子。", - "TimeAgo": "{0} 前", + "MemberNotPublishedPostYet": "该会员尚未发表任何帖子。", + "TimeAgo": "{0}前", "Discord_Page_JoinCommunityMessage": "加入 ABP Discord 社区", "Discord_Page_Announce": "我们很高兴地宣布 ABP 社区 Discord 服务器!", - "Discord_Page_Description_1": "ABP 社区从第一天起就一直在壮大。 我们希望通过创建一个官方的 ABP Discord 服务器将其带入下一步,这样 ABP 社区就可以使用即时消息的功能彼此进行互动。", - "Discord_Page_Description_2": "ABP Community Discord Server 是您可以使用 ABP 框架来展示您的创作、分享对您有用的技巧、了解有关 ABP 框架的最新消息和公告、与社区成员聊天交流想法并玩得开心的地方!", - "Discord_Page_Description_3": "此 ABP 社区 Discord 服务器是 ABP 核心团队的官方服务器,存在于服务器上进行监控。", + "Discord_Page_Description_1": "ABP 社区从第一天起就一直在成长。我们希望通过创建一个官方 ABP Discord 服务器,让 ABP 社区可以利用即时信息的奇妙功能进行互动,从而更上一层楼。", + "Discord_Page_Description_2": "ABP 社区 Discord 服务器是您展示使用 ABP 框架创作的作品、分享对您有用的技巧、了解有关 ABP 框架的最新新闻和公告、与社区成员聊天以交流想法并享受乐趣的地方!", + "Discord_Page_Description_3": "这个 ABP 社区 Discord 服务器是官方服务器,ABP 核心团队会在服务器上进行监控。", "Discord_Page_JoinToServer": "加入 ABP Discord 服务器", "Events_Page_MetaTitle": "ABP 社区活动", - "Events_Page_MetaDescription": "现场活动由 ABP 团队主持,是充满社区内容、演示、问答和围绕 ABP 正在发生的事情的讨论的休闲会议。", - "Events_Page_Title": "ABP社区会谈", - "Members_Page_WritingFromUser": "阅读来自 ABP 社区的 {0} 的文章。", - "Post_Create_Page_MetaTitle": "最新帖子", - "Post_Create_Page_MetaDescription": "创建您的帖子以分享您对 ABP 框架的经验并为 ABP 社区做出贡献。", - "Post_Create_Page_CreateNewPost": "创建新帖子", - "Post_Index_Page_MetaDescription": "ABP 社区的目的是为使用 ABP 框架的开发人员创建一个贡献环境。", - "Layout_Title": "{0} | ABP 社区", - "Layout_MetaDescription": "ABP 社区是一个人们可以分享有关 ABP 框架的帖子并关注项目的环境。", - "Index_Page_CommunityIntroduction": "这是 ABP 框架、.NET 和软件开发的中心。 您可以阅读文章,观看视频教程,了解 ABP 的开发进度和 ABP 相关事件,帮助其他开发人员并与 ABP 社区分享您的专业知识。", + "Events_Page_MetaDescription": "现场表演由 ABP 团队主持,是充满社区内容、演示、问答和围绕 ABP 发生的事情进行讨论的休闲会议。", + "Events_Page_Title": "ABP 社区讲座", + "Members_Page_WritingFromUser": "从 ABP Community 上的 {0} 读写。", + "Post_Create_Page_MetaTitle": "新职位", + "Post_Create_Page_MetaDescription": "创建您的帖子,分享您关于 ABP 框架的经验并为 ABP 社区做出贡献。", + "Post_Create_Page_CreateNewPost": "创建新职位", + "Post_Index_Page_MetaDescription": "ABP 社区的宗旨是为使用 ABP 框架的开发人员创建一个贡献环境。", + "Layout_Title": "{0}| ABP 社区", + "Layout_MetaDescription": "ABP Framework、.NET 和软件开发的中心。访问文章、教程、新闻,并为 ABP 社区做出贡献。", + "Index_Page_CommunityIntroduction": "这里是 ABP 框架、.NET 和软件开发的中心。您可以阅读文章、观看视频教程、了解 ABP 的开发进度和 ABP 相关活动、帮助其他开发人员并与 ABP 社区分享您的专业知识。", "TagsInArticle": "文章中的标签", - "IConsentToMedium": "我同意在 https://medium.com/volosoft 上发布这篇文章。", - "SearchResultsFor": " span class=\"fw-bold\">\"{0}\"
的搜索结果", + "IConsentToMedium": "我同意在 https://medium.com/volosoft 上发表此文。", + "SearchResultsFor": "\"{0}\"的搜索结果", "SeeMoreVideos": "查看更多视频", - "DiscordPageTitle": "ABP Discord社区", + "DiscordPageTitle": "ABP Discord 社区", "ViewVideo": "观看视频", - "AbpCommunityTitleContent": "ABP 社区 - 开源 ABP 框架", - "CommunitySlogan": "一个独特的ABP 爱好者社区平台", + "AbpCommunityTitleContent": "ABP 社区 - 开放源码 ABP 框架", + "CommunitySlogan": "ABP 爱好者的独特社区平台莱佛士", - "UpcomingRaffles": "即将开业的莱佛士酒店", - "CompletedRaffles": "莱佛士竣工", - "NoActiveRaffleTitle": "目前没有有效的抽奖活动。", - "NoActiveRaffleDescription": "目前没有有效的抽奖活动。", - "RaffleSubscriptionCodeInputMessage": "本次抽奖需要注册码。请输入以下注册码:", - "RaffleSubscriptionCodeInputErrorMessage": "注册码不正确。请再试一次。", - "GoodJob!": "好工作!", - "RaffleJoinSuccessMessage": "您已成功注册参加抽奖。如果您获奖,我们将通过电子邮件通知您!", - "RaffleLoginAndRegisterMessage": "您应该登录才能参加抽奖。如果您尚未注册,可以免费创建一个帐户。", + "To{0}LuckyWinners": "赠送给 {0} 名幸运获奖者", + "ActiveRaffles": "活跃的 来福牌来福士莱佛士往届活动", + "GoToConferencePage": "转至会议页面", + "BuyTicket": "购票", + "SeeEvent": "观看活动", + "PreviousEvents": "以前的活动", "OtherLiveEvents": "其他现场活动", "SponsoredConferences": "赞助会议", - "SponsoredConferencesDescription": "我们很荣幸为软件开发人员支持 .NET 社区和活动。", + "SponsoredConferencesDescription": "我们很荣幸能为软件开发人员的 .NET 社区和活动提供支持。", "UpcomingEvents": "即将举行的活动", - "UpcomingCommunityTalkEventDescription": "现场表演由 ABP 团队主持,是休闲会议,充满社区内容、演示、问答以及围绕 ABP 发生的事情的讨论。", - "UpcomingConferenceEventDescription": "ABP .NET 会议是 .NET 开发人员社区聚集在一起聆听有关 .NET 世界、常见软件开发实践和开源 ABP 框架的讨论的虚拟活动。", - "LastOneYear": "过去 1 年", - "AllTimes": "一直", - "TopContributors": "杰出贡献者", - "{0}Posts": "{0} 条帖子", - "LATESTPOSTS": "最新帖子", - "NoContributorsFound": "未找到贡献者!", - "LatestPost": "最新的帖子", - "MEMBERSINCE{0}": "自 {0} 起成为会员", + "UpcomingCommunityTalkEventDescription": "现场表演由 ABP 团队主持,是充满社区内容、演示、问答和围绕 ABP 发生的事情进行讨论的休闲会议。", + "UpcomingConferenceEventDescription": "ABP .NET 会议是.NET 开发人员社区的一次虚拟活动,他们可以齐聚一堂,聆听有关 .NET 世界、常用软件开发实践和开源 ABP 框架的讲座。", + "LastOneYear": "最近 1 年", + "AllTimes": "所有时间", + "TopContributors": "顶级贡献者", + "{0}Posts": "{0}职位", + "LATESTPOSTS": "最新文章", + "NoContributorsFound": "未找到撰稿人!", + "LatestPost": "最新职位", + "MEMBERSINCE{0}": "成员,因为{0}", "CopyLink": "复制链接", - "ShareOnTwitter": "分享到Twitter", - "ShareOnLinkedIn": "在领英上分享", - "MoreFrom{0}": "来自{0}的更多内容", - "SeeAllFrom{0}": "查看来自{0}的全部内容", + "ShareOnTwitter": "在 Twitter 上分享", + "ShareOnLinkedIn": "在 LinkedIn 上分享", + "MoreFrom{0}": "来自 {0} 的更多信息", + "SeeAllFrom{0}": "查看来自 {0} 的所有内容", "MostWatched": "最受关注", "Articles({0})": "文章 ({0})", "Videos({0})": "视频 ({0})", - "LatestArticles": "最新的文章", - "RaffleHeader": "ABP 社区成员您好!", - "RafflesInfo": "
这是抽奖页面,旨在表达我们对您作为活跃社区成员的感谢。我们举办ABP 社区讲座、ABP .NET 会议、参加或赞助 .NET 相关活动,并在活动中赠送一些礼物。

您可以关注此页面查看即将举行的抽奖活动、参加抽奖活动或查看我们之前抽奖的抽奖活动(包括获奖者)。

感谢您成为活跃会员!在即将到来的抽奖活动中再见。", - "RafflesInfoTitle": "ABP 社区莱佛士" + "LatestArticles": "最新文章", + "RaffleHeader": "你好,ABP 社区成员!", + "RafflesInfo": "
这是一个抽奖页面,旨在感谢您成为活跃的社区成员。我们举办 ABP 社区讲座 、ABP .NET 会议,参加或赞助与 .NET 相关的活动,并在活动中赠送一些礼品。

您可以关注此页面,查看即将举行的抽奖活动、参加这些活动或查看我们以前举行的抽奖活动(包括获奖者)。

感谢您成为我们的活跃会员!在即将举行的抽奖活动中再见。", + "RafflesInfoTitle": "ABP 社区来福牌Hangfire & RabbitMQ集成已经可用.", - "DDDInfrastructure": "DDD基础设施", - "DomainDrivenDesignInfrastructure": "Domain Driven Design基础设施", - "AutoRESTAPIs": "自动REST APIs", + "DynamicForms": "动态表格", + "BundlingMinification": "捆绑和最小化", + "BackgroundJobs": "背景工作", + "BackgroundJobsExplanation": "定义简单的类,在后台执行排队作业。使用内置作业管理器或集成自己的作业管理器。Hangfire 和 RabbitMQ 集成已经可用。", + "DDDInfrastructure": "DDD 基础设施", + "DomainDrivenDesignInfrastructure": "领域驱动设计基础设施", + "AutoRESTAPIs": "自动 REST API", "DynamicClientProxies": "动态客户端代理", "DistributedEventBus": "分布式事件总线", - "DistributedEventBusWithRabbitMQIntegration": "具有RabbitMQ集成的分布式事件总线", + "DistributedEventBusWithRabbitMQIntegration": "集成 RabbitMQ 的分布式事件总线", "TestInfrastructure": "测试基础设施", "AuditLoggingEntityHistories": "审计日志和实体历史", - "ObjectToObjectMapping": "对象映射", - "ObjectToObjectMappingExplanation": "对象到对象映射 抽象AutoMapper集成.", - "EmailSMSAbstractions": "电子邮件和短信抽象", - "EmailSMSAbstractionsWithTemplatingSupport": "具有模板支持的电子邮件和短信抽象", - "Localization": "本土化", + "ObjectToObjectMapping": "对象到对象映射", + "ObjectToObjectMappingExplanation": "对象到对象映射抽象与 AutoMapper 集成。", + "EmailSMSAbstractions": "电子邮件和短信摘要", + "EmailSMSAbstractionsWithTemplatingSupport": "电子邮件和短信抽象,支持模板化", + "Localization": "本地化", "SettingManagement": "设置管理", "ExtensionMethods": "扩展方法", "ExtensionMethodsHelpers": "扩展方法和助手", - "AspectOrientedProgramming": "面向切面的编程", + "AspectOrientedProgramming": "面向方面编程", "DependencyInjection": "依赖注入", - "DependencyInjectionByConventions": "依据约定的依赖注入", - "ABPCLIExplanation": "ABP CLI(命令行界面)是用于对ABP解决方案执行常见操作的命令行工具.", - "ModularityExplanation": "ABP提供了一个完整的基础设施来构建你自己的应用程序模块,这些模块可能具有实体,服务,数据库集成,API,UI组件等.", - "MultiTenancyExplanation": "ABP框架不仅支持开发多租户应用程序,而且使你的代码几乎无需知道多租户.", - "MultiTenancyExplanation2": "可以自动确定当前租户,将不同租户的数据相互隔离.", - "MultiTenancyExplanation3": "支持单一数据库,或每个租户单独数据库或者混合方式.", - "MultiTenancyExplanation4": "你专注于业务代码,并让该框架为你处理多租户.", - "BootstrapTagHelpersExplanation": "与其手动编写重复细节的bootstrap组件,不如使用ABP的tag helper来简化它并利用智能感知.你当然也可以在需要时直接使用Bootstrap.", - "DynamicFormsExplanation": "动态表单和tag helpers可从作为模型的C#类创建完整的表单.", - "AuthenticationAuthorizationExplanation": "集成到ASP.NET Core Identity和IdentityServer4的丰富身份验证和授权选项.提供可扩展且详细的权限系统.", - "CrossCuttingConcernsExplanation": "不要重复自己一次又一次地实现所有这些常见的东西.专注于你的业务代码,并让ABP按照约定自动执行.", + "DependencyInjectionByConventions": "按约定进行依赖注入", + "ABPCLIExplanation": "ABP CLI(命令行界面)是一种命令行工具,用于自动执行基于 ABP 解决方案的一些常见操作。", + "ModularityExplanation": "ABP 提供了一个完整的基础架构,用于构建您自己的应用程序模块,这些模块可能包含实体、服务、数据库集成、应用程序接口、用户界面组件等。", + "MultiTenancyExplanation": "ABP 框架不仅支持开发多租户应用程序,还能让你的代码在很大程度上不知道多租户的存在。", + "MultiTenancyExplanation2": "可自动判断当前租户,将不同租户的数据相互隔离。", + "MultiTenancyExplanation3": "支持单一数据库、每个租户数据库和混合方法。", + "MultiTenancyExplanation4": "您只需专注于业务代码,让框架代您处理多租户问题。", + "BootstrapTagHelpersExplanation": "与其手动编写 Bootstrap 组件的重复细节,不如使用 ABP 的标签助手来简化它,并利用 IntelliSense 的优势。只要你需要,就一定能使用 Bootstrap。", + "DynamicFormsExplanation": "动态表单和输入标签助手可以从作为模型的 C# 类中创建完整的表单。", + "AuthenticationAuthorizationExplanation": "与 ASP.NET Core Identity 和 IdentityServer4 集成的丰富的身份验证和授权选项。提供可扩展的详细权限系统。", + "CrossCuttingConcernsExplanation": "不要重复实现所有这些常见的东西。专注于您的业务代码,让 ABP 按惯例自动执行它们。", "DatabaseConnectionTransactionManagement": "数据库连接和事务管理", - "CorrelationIdTracking": "关联ID跟踪", - "BundlingMinificationExplanation": "ABP提供了一个简单,动态,功能强大,模块化的内置Bundling & Minification系统.", - "VirtualFileSystemnExplanation": "虚拟文件系统使管理文件系统(磁盘)上不存在的文件成为可能.它主要用于将(js,css,image,cshtml...)文件嵌入到程序集中,并在运行时像物理文件一样使用它们.", - "ThemingExplanation": "主题系统允许通过基于最新的Bootstrap框架定义一组通用基础库和布局来独立开发应用程序和模块主题.", - "DomainDrivenDesignInfrastructureExplanation": "基于域驱动设计模式和准则构建分层应用程序的完整基础设施;", - "Specification": "规范", - "Repository": "仓储", - "DomainService": "领域服务", - "ValueObject": "值对象", - "ApplicationService": "应用程序服务", + "CorrelationIdTracking": "相关标识跟踪", + "BundlingMinificationExplanation": "ABP 提供了一个简单、动态、强大、模块化和内置的捆绑与精简系统。", + "VirtualFileSystemnExplanation": "虚拟文件系统可以管理不存在于文件系统(磁盘)上的文件。它主要用于将(js、css、图像、cshtml......)文件嵌入程序集,并在运行时像使用物理文件一样使用它们。", + "ThemingExplanation": "通过基于最新 Bootstrap 框架定义的一套通用基础库和布局,编辑系统允许开发独立于主题的应用程序和模块。", + "DomainDrivenDesignInfrastructureExplanation": "根据领域驱动设计模式和原则构建分层应用程序的完整基础架构;", + "Specification": "规格", + "Repository": "存储库", + "DomainService": "域名服务", + "ValueObject": "价值对象", + "ApplicationService": "应用服务", "DataTransferObject": "数据传输对象", - "AggregateRootEntity": "聚合根, 实体", - "AutoRESTAPIsExplanation": "ABP可以按照约定自动将你的应用程序服务配置为API控制器.", - "DynamicClientProxiesExplanation": "从JavaScript和C#客户端轻松使用你的API.", - "DistributedEventBusWithRabbitMQIntegrationExplanation": "使用带有RabbitMQ集成的内置分布式事件总线,可以轻松发布和使用分布式事件.", - "TestInfrastructureExplanation": "框架已经考虑了单元和集成测试.为你提供基类,使其更容易.启动模板已预先配置用于测试.", - "AuditLoggingEntityHistoriesExplanation": "针对关键业务应用程序的内置审计日志记录.请求,服务,方法级别的审计日志记录以及具有属性级别详细信息的实体历史记录.", - "EmailSMSAbstractionsWithTemplatingSupportExplanation": "IEmailSender和ISmsSender抽象使你的应用程序逻辑与基础设施解耦.先进的电子邮件模板系统允许创建和本地化电子邮件模板,并在需要时轻松使用.", - "LocalizationExplanation": "本地化系统允许在纯JSON文件中创建资源,并使用它们来本地化UI.它支持继承,扩展和JavaScript集成等高级方案,同时与AspNet Core的本地化系统完全兼容.", - "SettingManagementExplanation": "定义应用程序的设置,并根据当前配置,租户和用户在运行时获取值.", - "ExtensionMethodsHelpersExplanation": "即使是琐碎的代码部分,也不要重复.标准类型的扩展方法和助手使你的代码更加清晰和易于编写.", - "AspectOrientedProgrammingExplanation": "提供合适的基础设施来创建动态代理并实现面向切面的编程.拦截任何类,并在每次方法执行之前和之后执行代码.", - "DependencyInjectionByConventionsExplanation": "无需手动注册类以进行依赖项注入.按照约定自动注册常用服务类型.对于其他类型的服务,你可以使用接口和属性来使其变得更轻松和就位.", - "DataFilteringExplanation": "定义和使用数据过滤器,这些过滤器在你从数据库中查询实体时会自动应用.当你实现简单的接口时,可立即使用软删除功能和多租户过滤器.", - "PublishEvents": "发布事件", + "AggregateRootEntity": "聚合根、实体", + "AutoRESTAPIsExplanation": "ABP 可按惯例自动将您的应用程序服务配置为 API 控制器。", + "DynamicClientProxiesExplanation": "从 JavaScript 和 C# 客户端轻松使用您的 API。", + "DistributedEventBusWithRabbitMQIntegrationExplanation": "使用内置的分布式事件总线(可与 RabbitMQ 集成)轻松发布和消费分布式事件。", + "TestInfrastructureExplanation": "该框架在开发过程中考虑了单元测试和集成测试。为您提供基类,让您更轻松地进行测试。启动模板已为测试预配置。", + "AuditLoggingEntityHistoriesExplanation": "针对关键业务应用程序的内置审计日志。请求、服务、方法级审计日志和包含属性级详细信息的实体历史记录。", + "EmailSMSAbstractionsWithTemplatingSupportExplanation": "IEmailSender 和 ISmsSender 抽象将应用程序逻辑与基础架构分离开来。先进的电子邮件模板系统允许创建和本地化电子邮件模板,并在需要时轻松使用。", + "LocalizationExplanation": "本地化系统允许在纯 JSON 文件中创建资源,并使用它们来本地化用户界面。它支持继承、扩展和 JavaScript 集成等高级方案,同时与 AspNet Core 的本地化系统完全兼容。", + "SettingManagementExplanation": "为应用程序定义设置,并在运行时根据当前配置、租户和用户获取值。", + "ExtensionMethodsHelpersExplanation": "即使是琐碎的代码部分也无需重复。标准类型的扩展和助手能让你的代码更加简洁易写。", + "AspectOrientedProgrammingExplanation": "为创建动态代理和实现面向方面编程(Aspect Oriented Programming)提供舒适的基础架构。拦截任何类,并在每个方法执行前后执行代码。", + "DependencyInjectionByConventionsExplanation": "无需手动注册依赖注入类。按惯例自动注册常见的服务类型。对于其他类型的服务,您可以使用接口和属性来简化注册过程并就地注册。", + "DataFilteringExplanation": "定义和使用数据过滤器,这些过滤器会在你从数据库中查询实体时自动应用。软删除和多租户过滤器是在您实现简单接口时提供的开箱即用的过滤器。", + "PublishEvents": "发布活动", "HandleEvents": "处理事件", - "AndMore": "更多...", - "Code": "编码", + "AndMore": "以及更多...", + "Code": "代码", "Result": "结果", - "SeeTheDocumentForMoreInformation": "查看{0} 文档获得更多信息", - "IndexPageHeroSection": "asp.net core的开源Web应用程序
框架
", - "UiFramework": "UI框架", + "SeeTheDocumentForMoreInformation": "查看 {0} 文档,了解更多信息", + "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core", + "UiFramework": "用户界面框架", "EmailAddress": "电子邮件地址", - "Mobile": "移动", + "Mobile": "移动电话", "ReactNative": "React Native", - "Strong": "强大的", - "Complete": "完整的", + "Strong": "强大", + "Complete": "完整", "BasedLayeringModel": "基于分层模型", "Microservice": "微服务", "Compatible": "兼容", - "MeeTTheABPCommunityInfo": "我们的使命是创建一个环境使开发人员可以在文章,教程,案例研究等方面互相帮助并结识志趣相投的人.", - "JoinTheABPCommunityInfo": "参与充满活力的社区并成为ABP框架的贡献者", - "AllPosts": "所有的文章", - "SubmitYourPost": "提交你的文章", - "DynamicClientProxyDocument": "参阅JavaScript & C#的动态客户端代理文档.", - "EmailSMSAbstractionsDocument": "参阅emailing 和 SMS sending 文档获得更多信息.", - "CreateProjectWizard": "此向导让你从启动模板创建一个新项目,该启动模板已正确配置为可以快速启动你的项目.", - "TieredOption": "创建一个分层解决方案,其中Web和Http API层在物理上是分离的. 如果没有选中则创建一个不那么复杂且适合大多数场景的分层解决方案.", - "SeparateIdentityServerOption": "将服务器端分离为两个应用程序:第一个应用程序用于身份服务器,第二个应用程序用于服务器端HTTP API.", - "SeparateAuthenticationServerOption": "将服务器端分为两个应用程序:第一个用于身份验证服务器,第二个用于服务器端 HTTP API。", - "ProgressiveWebApplicationOption": "将项目指定为渐进式 Web 应用程序", + "MeeTTheABPCommunityInfo": "我们的使命是创造一个环境,让开发人员可以通过帖子、教程、案例研究等方式互相帮助,并结识志同道合的朋友。", + "JoinTheABPCommunityInfo": "加入充满活力的社区,成为 ABP 框架的贡献者!", + "AllPosts": "所有帖子", + "SubmitYourPost": "提交您的帖子", + "DynamicClientProxyDocument": "查看JavaScript和C#的动态客户端代理文档。", + "EmailSMSAbstractionsDocument": "请查看 电子邮件 和 短信发送 文档,了解更多信息。", + "CreateProjectWizard": "该向导从启动模板中创建一个新项目,并对其进行适当配置以启动项目。", + "TieredOption": "创建分层解决方案,Web 层和 Http API 层物理上分开。如果不选中,则会创建一个分层解决方案,其复杂性较低,适合大多数情况。", + "SeparateIdentityServerOption": "将服务器端分为两个应用程序:第一个是身份服务器,第二个是服务器端 HTTP API。", + "SeparateAuthenticationServerOption": "将服务器端分为两个应用程序:第一个是身份验证服务器,第二个是服务器端 HTTP API。", + "ProgressiveWebApplicationOption": "指定项目为渐进式网络应用程序", "UseslatestPreVersion": "使用最新的预发布版本", - "ReadTheDocumentation": "阅读文档", - "Documentation": "文档", + "ReadTheDocumentation": "阅读文件", + "Documentation": "文件", "GettingStartedTutorial": "入门教程", "ApplicationDevelopmentTutorial": "应用程序开发教程", - "TheStartupTemplate": "启动模板", - "InstallABPCLIInfo": "ABP CLI是使用ABP框架启动新解决方案的最快方式. 使用命令行窗口安装ABP CLI:", - "DifferentLevelOfNamespaces": "你可以使用不同级别的名称空间. 例如 BookStore, Acme.BookStore 或 Acme.Retail.BookStore", - "ABPCLIExamplesInfo": "new命令创建一个 分层的MVC应用程序 使用 Entity Framework Core 做为数据库提供程序. 它还有其他选项. 示例:", - "SeeCliDocumentForMoreInformation": "参阅 ABP CLI 文档 获得更多选项或选择上方的 \"直接下载\" 标签.", - "Optional": "可选的", - "LocalFrameworkRef": "保留框架包的本地项目引用.", - "BlobStoring": "BLOB存储", - "BlobStoringExplanation": "BLOB存储系统提供了BLOB的抽象. ABP提供了一些预构建的存储提供程序集成(Azure,AWS,文件系统,数据库等),你可以轻松的在你的应用程序中使用它们.", + "TheStartupTemplate": "创业模板", + "InstallABPCLIInfo": "ABP CLI 是使用 ABP 框架启动新解决方案的最快方法。使用命令行窗口安装 ABP CLI:", + "DifferentLevelOfNamespaces": "您可以使用不同级别的命名空间;例如,BookStore、Acme.BookStore 或 Acme.Retail.BookStore。", + "ABPCLIExamplesInfo": "new 命令创建了一个 分层 MVC 应用程序,并将 Entity Framework Core 作为数据库提供程序。不过,它还有其他选项。", + "SeeCliDocumentForMoreInformation": "查看 ABP CLI 文档,了解更多选项,或选择上面的 \"直接下载 \"选项卡。", + "Optional": "可选", + "LocalFrameworkRef": "为框架软件包保留本地项目引用。", + "BlobStoring": "BLOB 存储", + "BlobStoringExplanation": "BLOB 存储系统提供了一种处理 BLOB 的抽象方法。ABP 提供了一些预建的存储提供商集成(Azure、AWS、文件系统、数据库等),您可以在应用程序中轻松使用。", "TextTemplating": "文本模板", - "TextTemplatingExplanation": "文本模板是基于模板和模型(数据对象)使用动态渲染内容. 例如你可以使用预构建的模板来创建动态的电子邮件内容.", - "MultipleUIOptions": "多个UI选项", - "MultipleDBOptions": "多个数据库提供程序", - "MultipleUIOptionsExplanation": "核心框架设计为独立与UI,可以和任何类型的UI系统一起使用. 同时提供了多个开箱即用的预构建集成选项.", - "MultipleDBOptionsExplanation": "该框架可以使用任何数据源,并且以下提供程序已得到正式开发和支持;", + "TextTemplatingExplanation": "文本模板用于根据模板和模型(数据对象)动态呈现内容。例如,你可以用它来创建带有预置模板的动态电子邮件内容。", + "MultipleUIOptions": "多种用户界面选项", + "MultipleDBOptions": "多个数据库提供商", + "MultipleUIOptionsExplanation": "核心框架的设计与用户界面无关,可与任何类型的用户界面系统配合使用,同时还提供多种预建和集成选项。", + "MultipleDBOptionsExplanation": "该框架可与任何数据源协同工作,同时官方开发并支持以下提供商:", "SelectLanguage": "选择语言", - "LatestPostOnCommunity": "关于ABP社区的最新文章", + "LatestPostOnCommunity": "关于 ABP 社区的最新文章", "Register": "注册", "IsDownloadable": "可下载", "DatabaseOptions": "数据库选项", - "BackToPackagesPage": "回到包页面", + "BackToPackagesPage": "返回套餐页面", "HowToInstall": "如何安装", - "SeeOnNpm": "在NPM查看", - "SeeOnNuget": "在Nuget查看", - "MVCGulpCommandExplanation": "如果你使用MVC (Razor Pages) UI,在包安装完成后运行 \"gulp\" 命令.", + "SeeOnNpm": "在故宫博物院查看", + "SeeOnNuget": "在 Nuget 上查看", + "MVCGulpCommandExplanation": "如果使用的是 MVC(Razor Pages)用户界面,则在安装软件包后运行 \"gulp \"命令。", "UsingABPCLI": "使用 Abp CLI", - "WithoutABPCLI": "不使用 ABP CLI", - "ABPCLIModuleDependency": "ABP CLI会自动添加模块依赖.", - "AddModuleDependency": "然后添加模块依赖", - "Packages": "包", - "NugetPackages": "Nuget包", - "NPMPackages": "NPM包", - "SeeDocs": "查看文档", - "None": "空", - "Application": "应用程序", - "ApplicationExplanation": "基于领域驱动设计实践创建一个完全分层的解决方案。 推荐用于需要可维护和可扩展代码库的长期项目。", - "ApplicationNoLayer": "应用程序(单层)", - "ApplicationNoLayerExplanation": "创建单层 Web 应用程序。 推荐用于构建具有更简单且易于理解的架构的应用程序。", + "WithoutABPCLI": "无 ABP CLI", + "ABPCLIModuleDependency": "Abp Cli 自动添加模块依赖性。", + "AddModuleDependency": "然后添加模块依赖关系", + "Packages": "套餐", + "NugetPackages": "Nuget 软件包", + "NPMPackages": "NPM 软件包", + "SeeDocs": "查看文件", + "None": "无", + "Application": "应用", + "ApplicationExplanation": "基于领域驱动设计实践,创建完全分层的解决方案。推荐用于需要可维护和可扩展代码库的长期项目。", + "ApplicationNoLayer": "应用(单层)", + "ApplicationNoLayerExplanation": "创建单层网络应用程序。建议用于构建架构简单易懂的应用程序。", "Module": "模块", - "ModuleExplanation": "创建可重用、完全分层的应用程序模块解决方案。 您可以使用此选项为您的模块化应用程序创建模块。", - "PackageName": "包名称", - "LicenseURL": "许可URL", - "License": "许可", - "ProjectCreationSuccessMessage": "你的项目创建成功", - "HowToRunSolution": "如何运行你的解决方案?", - "GettingStartedMessage": "查看入门文档了解如何配置和运行你的解决方案.", - "WebAppDevTutorial": "Web App 开发教程", - "WebAppDevTutorialMessage": "查看web应用程序开发教程文档,一步一步的开发示例.", - "CommunityPosts": "社区文档", - "CommunityPostMessage": "查看ABP社区平台来阅读关于ABP框架的文档.", - "InvestigateSolutionDetails": "调查解决方案细节", - "StartupTemplateDocumentationMessage": "查看应用程序启动模板文档来学习你的解决方案架构和结构.", - "ClientSideDevelopment": "客户端部分开发", - "ClientSideDevelopmentDocumentationMessage": "查看{0}文档来学习用户页面(客户端部分)开发.", - "DatabaseProviderDocumentationMessage": "查看{0}文档来学习用数据库层开发.", - "ABPCommercialExplanationMessage": "ABP商业版为ABP框架提供了高级模块,主题,工具和支持.", - "ImplementingDDD": "实现领域驱动设计", - "DDDBookExplanation": "使用 ABP 框架实现领域驱动设计的实用指南。", + "ModuleExplanation": "创建可重复使用、完全分层的应用程序模块解决方案。您可以使用该选项为模块化应用程序创建模块。", + "PackageName": "软件包名称", + "LicenseURL": "许可证 URL", + "License": "许可证", + "ProjectCreationSuccessMessage": "您的项目已成功创建", + "HowToRunSolution": "如何运行解决方案?", + "GettingStartedMessage": "查看入门文档,了解如何配置和运行解决方案。", + "WebAppDevTutorial": "网络应用程序开发教程", + "WebAppDevTutorialMessage": "请查看网络应用程序开发教程文档,逐步了解开发示例。", + "CommunityPosts": "社区帖子", + "CommunityPostMessage": "查看 ABP 社区平台,阅读有关 ABP 框架的有用文章。", + "InvestigateSolutionDetails": "查看解决方案详情", + "StartupTemplateDocumentationMessage": "查看应用程序启动模板文档,了解解决方案的架构和结构。", + "ClientSideDevelopment": "客户端开发", + "ClientSideDevelopmentDocumentationMessage": "查看 {0} 文档,了解用户界面(客户端)开发的要点。", + "DatabaseProviderDocumentationMessage": "查看 {0} 文档,了解数据库层开发的要点。", + "ABPCommercialExplanationMessage": "ABP 商业版为 ABP 框架提供高级模块、主题、工具和支持。", + "ImplementingDDD": "实施领域驱动设计", + "DDDBookExplanation": "使用 ABP 框架实施领域驱动设计的实用指南。", "Overview": "概述", - "DDDBookPracticalGuide": "这是实现领域驱动设计 (DDD) 的实用指南。虽然实现细节基于 ABP 框架基础设施,但基本概念、原则和模型可以应用于任何解决方案,即使它不是 .NET 解决方案。", + "DDDBookPracticalGuide": "这是一本实施领域驱动设计(DDD)的实用指南。虽然实施细节基于 ABP 框架基础架构,但基本概念、原则和模型可应用于任何解决方案,即使不是 .NET 解决方案。", "TableOfContents": "目录", - "IntroductionToImplementingDDD": "实现领域驱动设计简介", + "IntroductionToImplementingDDD": "领域驱动设计实施简介", "WhatIsDDD": "什么是领域驱动设计?", - "Implementation": "执行", - "TheBigPicture": "大图", - "TheBuildingBlock": "积木", - "ExampleUseCase": "示例用例", - "DomainAndApplicationLogic": "领域逻辑与应用逻辑", + "Implementation": "实施", + "TheBigPicture": "大局观", + "TheBuildingBlock": "建筑模块", + "ExampleUseCase": "用例示例", + "DomainAndApplicationLogic": "领域逻辑和应用逻辑", "Author": "作者", "Pages": "页面", - "PublishedOn": "发表于", + "PublishedOn": "出版日期", "FreeEBook": "免费电子书", "Download": "下载", "EBookSignInForDownload": "要下载电子书,请登录", - "SignIn": "登入", + "SignIn": "登录", "Or": "或者", - "TellUsAboutYourself": "告诉我们一点关于你自己", - "Name": "姓名", - "Surname": "姓", - "CompanyName": "公司名", - "DoYouAgreePrivacyPolicy": "我同意条款和条件和隐私政策。", + "TellUsAboutYourself": "谈谈你自己吧", + "Name": "名称", + "Surname": "姓氏", + "CompanyName": "公司名称", + "DoYouAgreePrivacyPolicy": "我同意条款和条件以及隐私政策。", "Free": "免费", - "DDDEBook": "DDD电子书", - "PracticalGuideForImplementingDDD": "本书是使用 ABP 框架实现领域驱动设计的实用指南。", - "IntroducingDDD": "介绍领域驱动设计", - "DDDLayersAndCleanArchitecture": "DDD 层和干净的架构", - "LayeringOfADotnetSolution": ".NET 解决方案的分层", - "ImplementingDDDBuildingBlocks": "实现 DDD 构建块", + "DDDEBook": "DDD 电子书", + "PracticalGuideForImplementingDDD": "本书是利用 ABP 框架实施领域驱动设计的实用指南。", + "IntroducingDDD": "领域驱动设计介绍", + "DDDLayersAndCleanArchitecture": "DDD 层与简洁架构", + "LayeringOfADotnetSolution": ".NET解决方案的分层", + "ImplementingDDDBuildingBlocks": "实施 DDD 构件", "DomainVsApplicationLogic": "领域逻辑与应用逻辑", - "SamplesAndDiscussions": "示例和讨论", + "SamplesAndDiscussions": "样本与讨论", "EmailNotValid": "请输入有效的电子邮件地址。", - "WeWillSendYouADownloadLink": "下载电子书的链接已发送至 {0}。检查您的收件箱、垃圾箱或垃圾邮件箱!", + "WeWillSendYouADownloadLink": "电子书下载链接已发送至 {0}。请检查您的收件箱、垃圾邮件箱!", "GoHome": "回家", "InvalidFormInputs": "请输入表格中指定的有效信息。", - "DDDBookEmailBody": "谢谢你。
要下载您的图书,请点击此处。", - "SubscribeToNewsletter": "订阅时事通讯以获取有关 ABP.IO 平台中发生的事件的信息,例如新版本、文章、优惠等。", + "DDDBookEmailBody": "谢谢。
要下载您的书籍,请点击此处。", + "SubscribeToNewsletter": "订阅时事通讯,了解 ABP.IO 平台的最新动态,如新版本、文章、优惠等。", "FirstEdition": "第一版", "ThankYou": "谢谢!", - "CheckboxMandatory": "你需要检查这个才能继续!", + "CheckboxMandatory": "您需要检查这一点才能继续!", "UserInterface": "用户界面", - "APIGateway": "API 网关", + "APIGateway": "应用程序接口网关", "Database": "数据库", - "Saas": "Saas", - "OpenSourceWebApp": "开源
Web 应用程序", + "Saas": "萨斯", + "OpenSourceWebApp": "打开源
网络应用程序", "Framework": "框架", - "AuditLoggingExplanation": "自动跟踪系统中的所有操作和数据更改。", + "AuditLoggingExplanation": "自动跟踪系统中的所有操作和数据变化。", "AbpNewCommandExplanation": "使用 ABP 启动模板创建新的解决方案。", - "AbpAddModuleCommandExplanation": "将预构建的应用程序模块安装到您的解决方案中", - "AbpUpdateCommandExplanation": "自动更新解决方案中所有与 ABP 相关的 NuGet 和 NPM 包。", + "AbpAddModuleCommandExplanation": "在解决方案中安装预置应用模块", + "AbpUpdateCommandExplanation": "自动更新解决方案中所有与 ABP 相关的 NuGet 和 NPM 软件包。", "ExploreAllCLICommands": "探索所有 CLI 命令", "ExploreDocumentationAndGuides": "探索全面的文档和指南。", - "Documentations": "文档", + "Documentations": "文件", "Views": "意见", - "EnterYouEmailToGetNews": "输入您的电子邮件以获取有关 ABP 框架的最新消息", + "EnterYouEmailToGetNews": "输入您的电子邮件,以获取有关 ABP 框架的最新消息", "Tiered": "分层", - "SeparateIdentityServer": "独立的身份服务器", - "SeparateAuthenticationServer": "单独的身份验证服务器", - "ProgressiveWebApplication": "渐进式 Web 应用程序", + "SeparateIdentityServer": "独立身份服务器", + "SeparateAuthenticationServer": "独立的身份验证服务器", + "ProgressiveWebApplication": "渐进式网络应用程序", "Preview": "预览", - "CreateANewSolution": "创建一个新的解决方案", - "ABPFrameworkFeatures": "ABP 框架 功能", - "Commercial": "商业版", + "CreateANewSolution": "创建新解决方案", + "ABPFrameworkFeatures": "ABP 框架 特点条款和条件 和 隐私政策。", - "GetYourFreeEBook": "获取您的 免费 DDD 电子书", - "EverythingYouNeedToKnow": "您需要了解的一切。", - "PreOrderNow": "立即预订", - "UITheming": "用户界面主题", - "UIThemingExplanation": "创建可重用的 UI 主题和布局,或使用预构建的 UI 主题之一。", - "DataFilteringExplanation2": "自动过滤来自数据库的查询,以轻松实现软删除和多租户等模式。", - "NeedHelp": "您需要帮助吗?", - "GiveYourProjectAName": "给您的项目命名", + "JoinOurMarketingNewsletter": "加入我们的营销通讯", + "FrameworkNewsletterConfirmationMessage": "我同意条款和条件以及隐私政策。", + "GetYourFreeEBook": "获取免费的 DDD 电子书。", + "EverythingYouNeedToKnow": "你需要知道的一切", + "PreOrderNow": "立即预购", + "UITheming": "用户界面设计", + "UIThemingExplanation": "创建可重复使用的用户界面主题和布局,或使用预置的用户界面主题。", + "DataFilteringExplanation2": "自动过滤数据库查询,轻松实现软删除和多租户等模式。", + "NeedHelp": "需要帮助吗?", + "GiveYourProjectAName": "为项目命名", "SelectProjectType": "选择项目类型", - "SelectUIFramework": "选择 UI 框架", - "SelectDatabaseProvider": "选择数据库提供者", + "SelectUIFramework": "选择用户界面框架", + "SelectDatabaseProvider": "选择数据库提供商", "SelectDatabaseManagementSystem": "选择数据库管理系统", "InstallingTheABPCLI": "安装 ABP CLI", "CreateYourProjectNow": "立即创建您的项目", - "OrderOn": "在 {0} 订购", - "DownloadFreeDDDBook": "下载免费的 DDD 书", + "OrderOn": "在{0}上下单", + "DownloadFreeDDDBook": "下载免费的 DDD 书籍", "WhatIsABPFramework": "什么是 ABP 框架?", "TenantDatabase": "租户 {0} 数据库", "SharedDatabase": "共享数据库", "ConnectionResolver": "连接解析器", "TenantBasedDataFilter": "基于租户的数据过滤器", - "ApplicationCode": "申请代码", - "TenantResolution": "租户决议", + "ApplicationCode": "应用代码", + "TenantResolution": "解决租户问题", "TenantUser": "租户 {0} 用户", "CardTitle": "卡片标题", "View": "查看", "Model": "模型", - "Email": "电子邮箱", + "Email": "电子邮件", "Password": "密码", "Address": "地址", "Gender": "性别", "Male": "男", - "Female": "女", + "Female": "女性", "Submit": "提交", - "Unspecified": "未指定", + "Unspecified": "未说明", "StaticFileMiddleware": "静态文件中间件", - "RazorViewEngine": "Razor 视图引擎", - "PhysicalFiles": "物理文件 (wwwroot)", - "EmbeddedFiles": "嵌入式文件(DDL) ", + "RazorViewEngine": "剃刀视图引擎", + "PhysicalFiles": "物理文件(wwwroot)", + "EmbeddedFiles": "嵌入式文件 (DLL)", "DynamicFiles": "动态文件(内存)", - "BuildSolutionsWithAbp": "遵循使用 ABP 的软件开发最佳实践,构建可维护的 .NET 解决方案。", + "BuildSolutionsWithAbp": "使用 ABP,遵循软件开发最佳实践,构建可维护的 .NET 解决方案。", "BuyOnAmazon": "在亚马逊上购买", - "BuyOnPackt": "在 Packt 上购买", - "Discounted": "打折", - "MasteringAbpFramework_Book_KeyFeatures": "主要特性", - "MasteringAbpFramework_Book_Key_Features_Description_1": "使用 ABP 框架构建强大、可维护、模块化和可扩展的软件解决方案。", - "MasteringAbpFramework_Book_Key_Features_Description_2": "了解如何在您的 Web 应用程序中实施 SOLID 原则和领域驱动设计。", - "MasteringAbpFramework_Book_Key_Features_Description_3": "了解 ABP 框架如何通过自动执行重复性任务来加快您的开发周期。", - "MasteringAbpFramework_Book_Description": "书籍说明", - "MasteringAbpFramework_Book_Description_Details_1": "ABP 框架是一个完整的基础架构,用于通过遵循软件 \n 开发最佳实践和约定来创建现代 Web 应用程序。 借助 ABP 的高级框架和生态系统,您可以 \n 实现 Don't Repeat Yourself (DRY) 原则并专注于您的业务代码。", - "MasteringAbpFramework_Book_Description_Details_2": "本书由 ABP 框架的创建者撰写,将帮助您全面了解该框架和现代 Web 应用程序开发技术。 通过对基本概念和实际示例的逐步解释,您将了解现代 Web 解决方案的要求以及 ABP\n 框架如何使开发您自己的解决方案变得轻松愉快。 您将发现\n 企业 Web 应用程序开发的常见需求,并探索 ABP 提供的基础架构。 在整本书中,您将掌握构建可维护和模块化 Web 解决方案的软件开发最佳实践。", - "MasteringAbpFramework_Book_Description_Details_3": "在本书结束时,您将能够创建一个易于开发、\n 维护和测试的完整 Web 解决方案。", - "MasteringAbpFramework_Book_WhatYouWillLearn": "你将会学到什么", + "BuyOnPackt": "在 Packt 购买", + "Discounted": "折扣", + "MasteringAbpFramework_Book_KeyFeatures": "主要功能", + "MasteringAbpFramework_Book_Key_Features_Description_1": "使用 ABP 框架构建稳健、可维护、模块化和可扩展的软件解决方案。", + "MasteringAbpFramework_Book_Key_Features_Description_2": "了解如何在网络应用程序中实施 SOLID 原则和领域驱动设计。", + "MasteringAbpFramework_Book_Key_Features_Description_3": "了解 ABP Framework 如何通过自动化重复性任务加快开发周期。", + "MasteringAbpFramework_Book_Description": "图书简介", + "MasteringAbpFramework_Book_Description_Details_1": "ABP 框架是一个完整的基础架构,用于按照软件开发最佳实践和惯例创建现代网络应用程序。\n 的最佳实践和惯例,创建现代网络应用程序的完整基础架构。借助 ABP 的高级框架和生态系统,您可以\n 执行 \"不要重复\"(DRY)原则,专注于业务代码。", + "MasteringAbpFramework_Book_Description_Details_2": "本书由 ABP 框架的创建者撰写,将帮助你全面了解该框架和现代网络应用程序开发技术。\n 框架和现代网络应用程序开发技术。通过逐步解释基本\n 概念和实际示例,你将了解现代网络解决方案的要求,以及 ABP\n 框架如何让您愉快地开发自己的解决方案。您将发现\n 企业网络应用程序开发的常见要求,并探索 ABP 提供的基础架构。在整本书中\n 在本书中,你将掌握软件开发的最佳实践,以构建可维护的模块化\n 网络解决方案。", + "MasteringAbpFramework_Book_Description_Details_3": "在本书结束时,你将能够创建一个易于开发、维护和测试的完整网络解决方案、\n 维护和测试。", + "MasteringAbpFramework_Book_WhatYouWillLearn": "你将学到什么", "MasteringAbpFramework_Book_What_You_Will_Learn_1": "设置开发环境并开始使用 ABP 框架。", - "MasteringAbpFramework_Book_What_You_Will_Learn_2": "使用 Entity Framework Core 和 MongoDB 开发您的数据访问层。", - "MasteringAbpFramework_Book_What_You_Will_Learn_3": "了解横切关注点以及 ABP 如何自动执行重复性任务。", - "MasteringAbpFramework_Book_What_You_Will_Learn_4": "掌握使用 ABP 框架实施领域驱动设计。", - "MasteringAbpFramework_Book_What_You_Will_Learn_5": "使用 ASP.NET Core MVC (Razor Pages) 和 Blazor 构建 UI 页面和组件。", - "MasteringAbpFramework_Book_What_You_Will_Learn_6": "使用多租户创建模块化 Web 应用程序。", - "MasteringAbpFramework_Book_What_You_Will_Learn_7": "了解模块化并创建可重用的应用程序模块。", - "MasteringAbpFramework_Book_What_You_Will_Learn_8": "使用 ABP 框架编写单元、集成和 UI 测试。", - "MasteringAbpFramework_Book_WhoIsThisBookFor": "这本书是给谁看的", - "MasteringAbpFramework_Book_WhoIsThisBookFor_Description": "本书适用于希望学习软件架构和最佳实践的 Web 开发人员,以使用 Microsoft 技术和 ABP 框架构建\n 可维护的基于 Web 的解决方案。 C#\n 和 ASP.NET Core 的基本知识是开始阅读本书所必需的。", + "MasteringAbpFramework_Book_What_You_Will_Learn_2": "使用 Entity Framework Core 和 MongoDB 开发数据访问层。", + "MasteringAbpFramework_Book_What_You_Will_Learn_3": "了解贯穿各领域的问题以及 ABP 如何自动执行重复性任务。", + "MasteringAbpFramework_Book_What_You_Will_Learn_4": "使用 ABP 框架掌握领域驱动设计的实施方法。", + "MasteringAbpFramework_Book_What_You_Will_Learn_5": "使用 ASP.NET Core MVC(Razor Pages)和 Blazor 构建用户界面页面和组件。", + "MasteringAbpFramework_Book_What_You_Will_Learn_6": "使用多租户创建模块化网络应用程序。", + "MasteringAbpFramework_Book_What_You_Will_Learn_7": "了解模块化,创建可重复使用的应用模块。", + "MasteringAbpFramework_Book_What_You_Will_Learn_8": "使用 ABP 框架编写单元测试、集成测试和用户界面测试。", + "MasteringAbpFramework_Book_WhoIsThisBookFor": "这本书为谁而写", + "MasteringAbpFramework_Book_WhoIsThisBookFor_Description": "本书适用于希望学习软件架构和最佳实践的网络开发人员。\n 的最佳实践。要开始学习本书\n 和 ASP.NET Core 的基础知识。", "ComputersAndTechnology": "计算机与技术", "BuildingMicroserviceSolutions": "构建微服务解决方案", - "MicroserviceBookPracticalGuide": "本书是使用 ABP 框架开发和管理基于微服务的应用程序的参考指南。 它引用了 .NET 微服务示例参考应用程序:eShopOnContainers,并讨论了使用 ABP 框架的架构设计和实现方法。 读完本书,您将了解 ABP 如何处理常见的微服务复杂性,例如授权、分布式事务、微服务间通信、部署等。", + "MicroserviceBookPracticalGuide": "本书是使用 ABP 框架开发和管理基于微服务的应用程序的参考指南。它参考了.NET 微服务示例参考应用程序:eShopOnContainers,并讨论了使用 ABP 框架的架构设计和实现方法。在本书结束时,您将了解 ABP 如何处理常见的微服务复杂性,如授权、分布式事务、微服务间通信、部署等。", "IntroducingTheSolution": "介绍 eShopOnAbp 解决方案", "RunningTheSolution": "运行解决方案", "UnderstandingTheAuthenticationSystem": "了解身份验证系统", "ExploringTheApplications": "探索应用", - "UnderstandingTheAPIGateways": "了解 API 网关", + "UnderstandingTheAPIGateways": "了解应用程序接口网关", "DevelopingTheMicroservices": "开发微服务", "UnderstandingTheInfrastructure": "了解基础设施", - "DiggingInTheUseCases": "挖掘用例", + "DiggingInTheUseCases": "挖掘使用案例", "DeployingTheSolution": "部署解决方案", - "ThisBookIsInDraftStageAndIsNotCompletedYet": "这本书正在草案阶段,还没有完成。", + "ThisBookIsInDraftStageAndIsNotCompletedYet": "本书目前处于草稿阶段,尚未完成。", "Authors": "作者", "MicroserviceEBook": "微服务电子书", - "SelectUITheme": "选择 UI 主题", + "SelectUITheme": "选择用户界面主题", "LeptonXLiteTheme": "LeptonX Lite 主题", "BasicTheme": "基本主题", - "LeptonXLiteThemeInfo": " 现代时尚的 Bootstrap UI 主题。 如果你想要一个生产就绪的 UI 主题,这是理想的选择。 这是最新的主题,也是默认主题。", - "BasicThemeInfo": "具有简单 Bootstrap 颜色和样式的极简 UI 主题。 如果您要构建自己的 UI 主题,则非常适合。", - "SeeDocumentation": "请参阅 文档.", - "SeeFullScreen": "🖼️ 如截图所示", + "LeptonXLiteThemeInfo": "一款现代时尚的 Bootstrap UI 主题。如果你想拥有一个可随时制作的用户界面主题,它将是你的理想之选。这是最新的主题,也是默认主题。", + "BasicThemeInfo": "极简用户界面主题,采用纯粹的 Bootstrap 颜色和样式。如果你想创建自己的用户界面主题,它将是你的理想之选。", + "SeeDocumentation": "请参阅文档。", + "SeeFullScreen": "🖼️ 查看截图", "BuildingMicroserviceSolutionsShortDescription": "本书是使用 ABP 框架开发和管理基于微服务的应用程序的参考指南。", - "InstallAbpCliMessage": "如果之前没有安装,请在命令行终端中安装 ABP CLI:", + "InstallAbpCliMessage": "如果之前未安装 ABP CLI,请在命令行终端中安装:", "Terminal": "终端", "Copy": "复制", - "RunTheFollowingCommand": "在命令行终端中运行以下命令:", + "RunTheFollowingCommand": "在命令行终端运行以下命令", "ChangeSolutionOptionsBelow": "您可以更改下面的解决方案选项。", "MultiLayerApplication": "多层
应用", - "MultiLayerApplicationExplanation1": "基于领域驱动设计实践创建完全分层的解决方案。", - "MultiLayerApplicationExplanation2": "推荐用于需要可维护和可扩展代码库的长期项目。", - "SingleLayerApplication": "单层
应用", - "SingleLayerApplicationExplanation1": "创建单层 Web 应用程序。 ", - "SingleLayerApplicationExplanation2": "推荐用于构建具有更简单且易于理解的体系结构的应用程序。", - "ApplicationModule": "应用程序模块", - "SeeTheScreenshot": "如截图所示", - "ApplicationModuleExplanation1": "创建可重用的、完全分层的应用程序模块解决方案。", - "ApplicationModuleExplanation2": "您可以使用此选项为您的模块化应用程序创建模块。", + "MultiLayerApplicationExplanation1": "根据领域驱动设计实践,创建完全分层的解决方案。", + "MultiLayerApplicationExplanation2": "建议用于需要可维护和可扩展代码库的长期项目。", + "SingleLayerApplication": "单层
应用", + "SingleLayerApplicationExplanation1": "创建单层网络应用程序。 ", + "SingleLayerApplicationExplanation2": "建议用于构建架构简单易懂的应用程序。", + "ApplicationModule": "应用程序
模块", + "SeeTheScreenshot": "请看截图", + "ApplicationModuleExplanation1": "创建一个可重复使用、完全分层的应用模块解决方案。", + "ApplicationModuleExplanation2": "您可以使用该选项为模块化应用程序创建模块。", "Expert_": "专家", "Partner_": "合作伙伴", "WebSite": "网站", - "Expert_Year": "专业年限", + "Expert_Year": "专业年份", "CompanyInfo": "公司信息", "Date": "日期", - "WhoWeAre_Partner": "关于我们", + "WhoWeAre_Partner": "我们是谁", "WhoWeAre_Expert": "关于我", "CreateSolutionFolder": "创建解决方案文件夹", - "CreateSolutionFolderOption": "指定项目是位于输出文件夹中的新文件夹中,还是直接位于输出文件夹中。", - "BooksPageTitle": "ABP书籍", - "PackageDetailPage_NuGetPackageInstallationOptions": "可通过三种方式将{0} NuGet 包安装到您的项目中", - "PackageDetailPage_InstallingWithABPCLI": "1:使用ABP CLI安装", - "PackageDetailPage_InstallingWithABPCLIDescription1": "如果您尚未安装ABP CLI ,请首先通过在命令行终端中执行以下命令进行安装", - "PackageDetailPage_InstallingWithABPCLIDescription2": "安装 ABP CLI 后,在要安装的项目( .csproj文件)位置打开命令行终端并执行以下命令", - "PackageDetailPage_InstallingWithABPCLIDescription3": "它会将{0}包引用添加到您的项目,并将{1}依赖项添加到您的模块类。", - "PackageDetailPage_ManualInstallation": "2:使用Dotnet CLI安装", - "PackageDetailPage_ManualInstallationDescription1": "使用 IDE 或执行以下命令将{0} NuGet 包引用添加到您的项目", - "PackageDetailPage_ManualInstallationDescription2": "然后将{0}依赖项添加到您的模块类,如以下示例所示", - "PackageDetailPage_SeeDocumentation": "请参阅文档以了解如何在应用程序中使用此包。", - "PackageDetailPage_InstallingUsingPMC": "3:使用包管理器控制台安装", - "PackageDetailPage_InstallingUsingPMCDescription1": "在 Visual Studio 中打开包管理器控制台(工具 -> Nuget 包管理器 -> 包管理器控制台)并执行以下命令", + "CreateSolutionFolderOption": "指定项目是放在输出文件夹中的新文件夹中,还是直接放在输出文件夹中。", + "BooksPageTitle": "ABP 图书", + "PackageDetailPage_NuGetPackageInstallationOptions": "在项目中安装 {0} NuGet 软件包有三种方法", + "PackageDetailPage_InstallingWithABPCLI": "1: 使用 ABP CLI 安装", + "PackageDetailPage_InstallingWithABPCLIDescription1": "如果尚未安装 ABP CLI,请首先在命令行终端执行以下命令进行安装", + "PackageDetailPage_InstallingWithABPCLIDescription2": "安装 ABP CLI 后,在要安装它的项目(.csproj 文件)位置打开命令行终端并执行以下命令", + "PackageDetailPage_InstallingWithABPCLIDescription3": "它将在项目中添加 {0} 包引用,并在模块类中添加 {1} 依赖关系。", + "PackageDetailPage_ManualInstallation": "2: 使用 Dotnet CLI 安装", + "PackageDetailPage_ManualInstallationDescription1": "使用集成开发环境或执行以下命令在项目中添加 {0} NuGet 软件包引用", + "PackageDetailPage_ManualInstallationDescription2": "然后在 模块类中添加 {0} 依赖关系,如以下示例所示", + "PackageDetailPage_SeeDocumentation": "请参阅文档,了解如何在应用程序中使用此软件包。", + "PackageDetailPage_InstallingUsingPMC": "3: 使用软件包管理器控制台安装", + "PackageDetailPage_InstallingUsingPMCDescription1": "在 Visual Studio 中打开 软件包管理器控制台(工具 -> Nuget 软件包管理器 -> 软件包管理器控制台)并执行以下命令", "UIOptions": "用户界面选项", - "Testimonials": "感言", - "CoolestCompaniesUseABPFramework": "最酷的公司使用ABP 框架", - "Index_Page_Testimonial_1": "ABP 框架不仅仅是一个工具,更是加速我作为开发人员成长的催化剂。它使我能够比以往更快地构建新功能,让人想起其他用户的体验。统一的编码模式简化了我的项目,让我有更多的时间专注于创建而不是故障排除。 \n我想说 ABP 框架是我早期职业生涯的基石。它帮助我从一个有抱负的开发人员转变为一个自信的专业人士,准备在软件世界中留下自己的印记。我期待着等待着我的激动人心的项目,因为我知道 ABP 会在那里指导我。它不仅仅是一个产品;它更是一个产品。它是成功的伙伴。", - "Index_Page_Testimonial_2": "ABP Framework不仅仅是一个框架,它还是项目开发/管理的指南,因为它提供了DDD、GenericRepository、DI、Microservice、Modularity培训。即使您不打算使用框架本身,您也可以使用经过充分专业准备的 docs.abp.io 进行开发。 (OpenIddict、Redis、Quartz 等) \n由于许多东西是预先构建的,因此它大大缩短了项目开发时间。 (例如登录页面、异常处理、数据过滤播种、审核日志记录、本地化、自动 api 控制器等) \n作为我们应用程序的示例,我使用本地事件总线进行库存控制。因此,我可以通过编写库存处理程序来管理订单变动。 \n不为CreationTime、CreatorId浪费时间真是太好了。它们会自动填充。", - "VideosLoginAndRegisterMessage": "您必须登录才能观看视频。如果您还没有,您可以创建一个手表帐户。", - "Filter": "筛选", + "Testimonials": "客户感言", + "CoolestCompaniesUseABPFramework": "最酷公司使用ABP框架{0}
.": "你好 {0}.", + "Hello {0}.": "你好,{0}。", "Car": "汽车", "CarPlural": "汽车", - "MaxLenghtErrorMessage": "此字段的长度最多为'{0}'个字符", + "MaxLenghtErrorMessage": "该字段长度最多为\"{0}\"字符", "Universe": "宇宙", "FortyTwo": "四十二", - "Enum:BookType.Undefined": "Undefined", + "Enum:BookType.Undefined": "未定义", "Enum:BookType.0": "未定义,值为 0", - "BookType.Adventure": "冒险", - "BookType.1": "冒险价值1", - "Biography": "传" + "BookType.Adventure": "探险", + "BookType.1": "值为 1 的冒险", + "Biography": "简历" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json index e142d8c2c4..9389c1c704 100644 --- a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json +++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json @@ -2,6 +2,6 @@ "culture": "zh-Hans", "texts": { "HelloText": "你好 {0}", - "HowAreYou": "你好吗?" + "HowAreYou": "你好" } } \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json index 635971e7db..cb034d0fcd 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json @@ -2,72 +2,72 @@ "culture": "zh-Hans", "texts": { "Menu:Account": "账户", - "UserName": "用户名称", - "EmailAddress": "邮箱地址", - "UserNameOrEmailAddress": "用户名称或邮箱地址", + "UserName": "用户名", + "EmailAddress": "电子邮件地址", + "UserNameOrEmailAddress": "用户名或电子邮件地址", "Password": "密码", "RememberMe": "记住我", - "UseAnotherServiceToLogin": "使用另一个服务登录", - "UserLockedOutMessage": "登录失败,用户账户已被锁定.请稍后再试.", - "InvalidUserNameOrPassword": "用户名或密码错误!", - "LoginIsNotAllowed": "无法登录!你的账号未激活或者需要验证邮箱地址/手机号.", - "SelfRegistrationDisabledMessage": "应用程序未开放注册,请联系管理员添加新用户.", - "LocalLoginDisabledMessage": "应用程序未开放本地账户登录.", + "UseAnotherServiceToLogin": "使用其他服务登录", + "UserLockedOutMessage": "由于尝试登录无效,用户账户已被锁定。请稍候再试。", + "InvalidUserNameOrPassword": "用户名或密码无效!", + "LoginIsNotAllowed": "您不能登录!您的帐户未激活或需要确认您的电子邮件/电话号码。", + "SelfRegistrationDisabledMessage": "此应用程序已禁用自助注册。请联系应用程序管理员注册新用户。", + "LocalLoginDisabledMessage": "此应用程序禁用本地登录。", "Login": "登录", "Cancel": "取消", "Register": "注册", - "AreYouANewUser": "你是新用户吗?", - "AlreadyRegistered": "已经注册过了?", + "AreYouANewUser": "您是新用户吗?", + "AlreadyRegistered": "已经注册?", "InvalidLoginRequest": "登录请求无效", - "ThereAreNoLoginSchemesConfiguredForThisClient": "没有为此客户端配置登录方案.", - "LogInUsingYourProviderAccount": "使用你的{0}帐户登录", + "ThereAreNoLoginSchemesConfiguredForThisClient": "该客户端未配置登录方案。", + "LogInUsingYourProviderAccount": "使用您的 {0} 账户登录", "DisplayName:CurrentPassword": "当前密码", "DisplayName:NewPassword": "新密码", "DisplayName:NewPasswordConfirm": "确认新密码", - "PasswordChangedMessage": "你的密码已修改成功.", + "PasswordChangedMessage": "您的密码已成功更改。", "DisplayName:UserName": "用户名", "DisplayName:Email": "电子邮件", - "DisplayName:Name": "名字", - "DisplayName:Surname": "姓", + "DisplayName:Name": "名称", + "DisplayName:Surname": "姓氏", "DisplayName:Password": "密码", "DisplayName:EmailAddress": "电子邮件地址", - "DisplayName:PhoneNumber": "手机号码", + "DisplayName:PhoneNumber": "电话号码", "PersonalSettings": "个人设置", - "PersonalSettingsSaved": "个人设置已保存", + "PersonalSettingsSaved": "保存个人设置", "PersonalSettingsChangedConfirmationModalTitle": "个人信息已更改", - "PersonalSettingsChangedConfirmationModalDescription": "重新登录以应用这些更改,您要退出登录吗?", - "PasswordChanged": "修改密码", - "NewPasswordConfirmFailed": "请确认新密码", - "NewPasswordSameAsOld": "新密码不能与旧密码相同", + "PersonalSettingsChangedConfirmationModalDescription": "如果要应用这些更改,您必须先登录。要退出吗?", + "PasswordChanged": "密码已更改", + "NewPasswordConfirmFailed": "请确认新密码。", + "NewPasswordSameAsOld": "新密码必须与旧密码不同。", "Manage": "管理", "MyAccount": "我的账户", - "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "启用自行注册", - "Description:Abp.Account.IsSelfRegistrationEnabled": "是否允许用户自行注册帐户.", - "DisplayName:Abp.Account.EnableLocalLogin": "使用本地帐户进行身份验证", - "Description:Abp.Account.EnableLocalLogin": "服务器是否将允许用户使用本地帐户进行身份验证。", - "LoggedOutTitle": "注销", - "LoggedOutText": "你已成功注销并将马上返回.", - "ReturnToText": "单击此处返回到应用程序", - "OrLoginWith": "或登录:", - "ForgotPassword": "忘记密码?", - "SendPasswordResetLink_Information": "密码重置链接将发送到您的电子邮件以重置密码. 如果您在几分钟内没有收到电子邮件,请重试.", - "PasswordResetMailSentMessage": "帐户恢复电子邮件已发送到您的电子邮件地址. 如果您在15分钟内未在收件箱中看到此电子邮件,请检查垃圾邮件,并标记为非垃圾邮件.", - "ResetPassword": "重设密码", + "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "是否启用了自助注册", + "Description:Abp.Account.IsSelfRegistrationEnabled": "用户是否可以自己注册账户。", + "DisplayName:Abp.Account.EnableLocalLogin": "使用本地账户进行身份验证", + "Description:Abp.Account.EnableLocalLogin": "表示服务器是否允许用户使用本地账户进行身份验证。", + "LoggedOutTitle": "签出", + "LoggedOutText": "您已退出,很快将重新定向。", + "ReturnToText": "单击此处返回申请表", + "OrLoginWith": "或使用以下方式登录", + "ForgotPassword": "忘记密码?", + "SendPasswordResetLink_Information": "您的电子邮件中将收到重置密码的链接。如果您在几分钟内没有收到电子邮件,请重试。", + "PasswordResetMailSentMessage": "帐户恢复电子邮件已发送到您的电子邮箱。如果您在 15 分钟内未在收件箱中看到此电子邮件,请在垃圾邮件文件夹中查找。如果在那里找到,请将其标记为 \"非垃圾邮件\"。", + "ResetPassword": "重置密码", "ConfirmPassword": "确认密码", - "ResetPassword_Information": "请输入您的新密码.", - "YourPasswordIsSuccessfullyReset": "您的密码已经被重置成功.", + "ResetPassword_Information": "请输入您的新密码。", + "YourPasswordIsSuccessfullyReset": "您的密码重置成功。", "GoToTheApplication": "转到应用程序", "BackToLogin": "返回登录", "ProfileTab:Password": "更改密码", "ProfileTab:PersonalInfo": "个人信息", - "ReturnToApplication": "返回到应用程序", - "Volo.Account:InvalidEmailAddress": "找不到给定的电子邮件地址:{0}", - "PasswordReset": "重设密码", - "PasswordResetInfoInEmail": "我们收到了帐户恢复请求!如果你发起了此请求,请单击以下链接以重置密码.", - "ResetMyPassword": "重置我的密码", - "AccessDenied": "拒绝访问!", - "AccessDeniedMessage": "你无权访问此资源.", - "OrRegisterWith": "或注册:", - "RegisterUsingYourProviderAccount": "使用你的{0}帐户注册" + "ReturnToApplication": "返回申请表", + "Volo.Account:InvalidEmailAddress": "无法找到给定的电子邮件地址:{0}", + "PasswordReset": "密码重置", + "PasswordResetInfoInEmail": "我们收到了账户恢复请求!如果您发起了该请求,请单击以下链接重置密码。", + "ResetMyPassword": "重置密码", + "AccessDenied": "拒绝访问!", + "AccessDeniedMessage": "您无法访问此资源。", + "OrRegisterWith": "或注册", + "RegisterUsingYourProviderAccount": "使用您的 {0} 账户注册" } } \ No newline at end of file diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json index 1c782932a4..6fbcac0a00 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json @@ -5,79 +5,79 @@ "Permission:AuditLogs": "审计日志", "Menu:AuditLogging": "审计日志", "AuditLogs": "审计日志", - "HttpStatus": "Http状态", - "HttpMethod": "Http方法", - "HttpMethodFilter": "Http方法过滤", - "HttpRequest": "Http请求", + "HttpStatus": "HTTP 状态", + "HttpMethod": "HTTP 方法", + "HttpMethodFilter": "HTTP 方法过滤器", + "HttpRequest": "HTTP 请求", "User": "用户", - "UserNameFilter": "用户过滤", - "HasException": "存在异常", - "IpAddress": "IP地址", + "UserNameFilter": "用户过滤器", + "HasException": "有例外情况", + "IpAddress": "IP 地址", "Time": "时间", "Date": "日期", "Duration": "持续时间", - "Detail": "详情", - "Overall": "总体", - "Actions": "操作", - "ClientIpAddress": "客户端IP地址", - "ClientName": "客户端名称", + "Detail": "详细信息", + "Overall": "总体情况", + "Actions": "行动", + "ClientIpAddress": "客户端 IP 地址", + "ClientName": "客户名称", "BrowserInfo": "浏览器信息", - "Url": "Url", + "Url": "网址", "UserName": "用户名", - "TenantImpersonator": "租户模拟", - "UserImpersonator": "用户模拟", - "UrlFilter": "Url过滤", - "Exceptions": "异常", + "TenantImpersonator": "租户冒名顶替者", + "UserImpersonator": "用户冒名顶替者", + "UrlFilter": "URL 过滤器", + "Exceptions": "例外情况", "Comments": "评论", - "HttpStatusCode": "Http状态码", - "HttpStatusCodeFilter": "Http状态码过滤", - "ServiceName": "服务名称", - "MethodName": "方法名称", - "CorrelationId": "关联Id", + "HttpStatusCode": "HTTP 状态代码", + "HttpStatusCodeFilter": "HTTP 状态代码过滤器", + "ServiceName": "服务", + "MethodName": "方法", + "CorrelationId": "相关标识", "ApplicationName": "应用名称", "ExecutionDuration": "持续时间", "ExtraProperties": "额外属性", "MaxDuration": "最大持续时间", - "MinDuration": "最小持续时间", - "MinMaxDuration": "持续时间(最小-最大)", - "{0}Milliseconds": "{0} 毫秒", + "MinDuration": "分钟持续时间", + "MinMaxDuration": "持续时间(最短 - 最长)", + "{0}Milliseconds": "{0}毫秒", "ExecutionTime": "时间", "Parameters": "参数", - "EntityTypeFullName": "实体类型全名", + "EntityTypeFullName": "实体类型 全名", "Entity": "实体", "ChangeType": "更改类型", "ChangeTime": "时间", - "NewValue": "新值", - "OriginalValue": "原始值", - "PropertyName": "属性名称", - "PropertyTypeFullName": "属性类型全名", - "Yes": "Yes", - "No": "No", + "NewValue": "新价值", + "OriginalValue": "原始价值", + "PropertyName": "物业名称", + "PropertyTypeFullName": "物业类型 全名", + "Yes": "是", + "No": "没有", "Changes": "变化", - "AverageExecutionDurationInLogsPerDay": "平均处理时间(每天日志)", - "AverageExecutionDurationInMilliseconds": "平均处理时间(毫秒)", + "AverageExecutionDurationInLogsPerDay": "平均执行时间", + "AverageExecutionDurationInMilliseconds": "平均执行时间(毫秒", "ErrorRateInLogs": "日志中的错误率", "Success": "成功", "Fault": "故障", - "NoChanges": "没有变化", - "EntityChanges": "实体变更", - "EntityId": "实体Id", + "NoChanges": "无变化", + "EntityChanges": "实体变化", + "EntityId": "实体 ID", "EntityChangeStartTime": "最小更改日期", "EntityChangeEndTime": "最大更改日期", "EntityHistory": "实体历史", "DaysAgoTitle": "{0} {1}.", - "DaysAgoWithUserTitle": "{0} {1} 通过 {2}.", + "DaysAgoWithUserTitle": "{0} {1} by {2}。", "Created": "创建", - "Updated": "更新", + "Updated": "已更新", "Deleted": "已删除", - "ChangeHistory": "变更记录", - "FullChangeHistory": "完整的变更记录", - "ChangeDetails": "变更详情", - "DurationMs": "持续时间(毫秒)", - "StartDate": "开始时间", - "EndDate": "结束时间", + "ChangeHistory": "更改历史", + "FullChangeHistory": "全部更改历史", + "ChangeDetails": "更改详细信息", + "DurationMs": "持续时间(毫秒)", + "StartDate": "开始日期", + "EndDate": "结束日期", "Feature:AuditLoggingGroup": "审计日志", - "Feature:AuditLoggingEnable": "启用审计日志页面", - "Feature:AuditLoggingEnableDescription": "在应用程序中启用审计日志页面." + "Feature:AuditLoggingEnable": "已启用审计记录页面", + "Feature:AuditLoggingEnableDescription": "在应用程序中启用审计日志页面。" } } \ No newline at end of file diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hans.json b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hans.json index 6c680d0b66..295eeb2f05 100644 --- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hans.json +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/Localization/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - "MyAccount": "我的账户" + "MyAccount": "我的账户" } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json index e472f6509b..64a485300f 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json @@ -2,87 +2,87 @@ "culture": "zh-Hans", "texts": { "Menu:Blogs": "博客", - "Menu:BlogManagement": "博客管理", - "Permission:Management": "管理", + "Menu:BlogManagement": "博客", + "Permission:Management": "管理层", "Permission:Edit": "编辑", "Permission:Create": "创建", "Permission:Delete": "删除", "Permission:Blogging": "博客", "Permission:Blogs": "博客", - "Permission:Posts": "帖子", + "Permission:Posts": "职位", "Permission:Tags": "标签", "Permission:Comments": "评论", "Permission:ClearCache": "清除缓存", "Title": "标题", "Delete": "删除", - "Reply": "回复", - "ReplyTo": "回复 {0}", + "Reply": "答复", + "ReplyTo": "答复 {0}", "ContinueReading": "继续阅读", "DaysAgo": "{0}天前", - "DayAgo": "{0} 天前", + "DayAgo": "{0}天前", "YearsAgo": "{0}年前", "YearAgo": "{0}年前", - "MonthsAgo": "{0}月前", - "MonthAgo": "{0} 个月前", + "MonthsAgo": "{0} 个月前", + "MonthAgo": "{0}月前", "WeeksAgo": "{0}周前", - "WeekAgo": "{0} 周前", - "MinutesAgo": "{0}分前", - "MinuteAgo": "{0} 分钟前", + "WeekAgo": "{0}周前", + "MinutesAgo": "{0}分钟前", + "MinuteAgo": "{0}分钟前", "SecondsAgo": "{0}秒前", - "SecondAgo": "{0} 秒前", + "SecondAgo": "{0}秒前", "HoursAgo": "{0}小时前", - "HourAgo": "{0} 小时前", - "Now": "刚刚", + "HourAgo": "{0}小时前", + "Now": "现在", "Content": "内容", - "SeeAll": "查看所有", + "SeeAll": "查看全部", "PopularTags": "热门标签", - "WiewsWithCount": "{0}人查看", - "LastPosts": "最后的帖子", - "LeaveComment": "发布评论", - "TagsInThisArticle": "文章中的标签", - "Posts": "帖子", + "WiewsWithCount": "{0}条意见", + "LastPosts": "最新职位", + "LeaveComment": "发表评论", + "TagsInThisArticle": "本文中的标签", + "Posts": "职位", "Edit": "编辑", "BLOG": "博客", - "CommentDeletionWarningMessage": "评论将被删除.", - "PostDeletionWarningMessage": "帖子将被删除", - "BlogDeletionWarningMessage": "博客将被删除.", - "AreYouSure": "你确定吗?", - "CommentWithCount": "{0}个评论", + "CommentDeletionWarningMessage": "评论将被删除。", + "PostDeletionWarningMessage": "帖子将被删除。", + "BlogDeletionWarningMessage": "博客将被删除。", + "AreYouSure": "你确定吗?", + "CommentWithCount": "{0}评论", "Comment": "评论", - "ShareOnTwitter": "分享到Twitter", - "CoverImage": "封面图", - "CreateANewPost": "创建一个新帖子", - "CreateANewBlog": "创建一个新博客", - "WhatIsNew": "最新消息", + "ShareOnTwitter": "在 Twitter 上分享", + "CoverImage": "封面图片", + "CreateANewPost": "创建新职位", + "CreateANewBlog": "创建新博客", + "WhatIsNew": "有什么新鲜事?", "Name": "名称", "ShortName": "简称", "CreationTime": "创建时间", - "Description": "描述", + "Description": "说明", "Blogs": "博客", "Tags": "标签", - "ShareOn": "分享", - "TitleLengthWarning": "保持标题大小不超过60个字符,实现SEO友好!", + "ShareOn": "分享到", + "TitleLengthWarning": "将标题长度控制在 60 个字符以内,以便于搜索引擎优化!", "ClearCache": "清除缓存", "ClearCacheConfirmationMessage": "您确定要清除缓存吗?", "MarkdownSupported": "支持 Markdown", - "FileUploadInfo": "拖放,拖放,或粘贴一个复制的图像。", - "PostDescriptionHint": "*将在文章链接预览中呈现,支持HTML", + "FileUploadInfo": "拖放或粘贴复制的图片。", + "PostDescriptionHint": "* 将在文章链接预览中呈现,支持 HTML", "ReadMore": "继续阅读", "MemberNotPublishedPostYet": "还没有帖子!", - "UpdateUserWebSiteInfo": "示例:https://johndoe.com", - "UpdateUserTwitterInfo": "示例:约翰多", - "UpdateUserGithubInfo": "示例:约翰多", - "UpdateUserLinkedinInfo": "示例:https://www.linkedin.com/...", - "UpdateUserCompanyInfo": "示例:沃洛软件", - "UpdateUserJobTitleInfo": "示例:软件开发人员", + "UpdateUserWebSiteInfo": "例如:https://johndoe.com", + "UpdateUserTwitterInfo": "示例:johndoe", + "UpdateUserGithubInfo": "示例:johndoe", + "UpdateUserLinkedinInfo": "例如: https://www.linkedin.com/...", + "UpdateUserCompanyInfo": "示例:沃乐软件", + "UpdateUserJobTitleInfo": "例如:软件开发人员软件开发人员", "WebSite": "网站", "UserName": "用户名", "FullURL": "完整网址", - "JobTitle": "职称", + "JobTitle": "职位名称", "PersonalWebsite": "个人网站", - "EditProfile": "编辑个人资料", - "MoreFromBlog": "更多来自博客", - "MoreFromUser": "更多来自{0}", - "BlogPosts": "帖子" + "EditProfile": "编辑简介", + "MoreFromBlog": "博客中的更多内容", + "MoreFromUser": "更多来自 {0}", + "BlogPosts": "职位" } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json index bc3aa227f2..bd21043e92 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json @@ -3,91 +3,91 @@ "texts": { "AddSubMenuItem": "添加子菜单项", "AreYouSure": "你确定吗?", - "BlogDeletionConfirmationMessage": "博客 '{0}' 将被删除. 你确定吗?", - "BlogFeatureNotAvailable": "这个功能目前不可用. 使用 `GlobalFeatureManager` 来启用它.", + "BlogDeletionConfirmationMessage": "博客'{0}'将被删除。你确定吗?", + "BlogFeatureNotAvailable": "此功能现在不可用。请使用 \"GlobalFeatureManager \"启用以使用该功能。", "BlogId": "博客", - "BlogPostDeletionConfirmationMessage": "博客帖子 '{0}' 将被删除. 你确定吗?", - "BlogPosts": "博客帖子", + "BlogPostDeletionConfirmationMessage": "博文\"{0}\"将被删除。你确定吗?", + "BlogPosts": "博客文章", "Blogs": "博客", - "ChoosePreference": "选择首选项...", + "ChoosePreference": "选择偏好...", "Cms": "CMS", "CmsKit.Comments": "评论", - "CmsKit.Ratings": "评分", + "CmsKit.Ratings": "评级", "CmsKit.Reactions": "反应", "CmsKit.Tags": "标签", - "CmsKit:0002": "内容已经存在!", - "CmsKit:0003": "实体 {0} 不可标记.", - "CmsKit:Blog:0001": "给定的slug ({Slug}) 已经存在!", - "CmsKit:BlogPost:0001": "给定的slug已经存在!", - "CmsKit:Comments:0001": "实体不可 {0} 不可评论.", - "CmsKit:Media:0001": "'{Name}' 不是有效的媒体名称.", - "CmsKit:Media:0002": "实体不可以含有媒体", - "CmsKit:Page:0001": "给定的url ({0}) 已经存在.", + "CmsKit:0002": "内容已经存在!", + "CmsKit:0003": "实体 {0} 不可标记。", + "CmsKit:Blog:0001": "给定的标头 ({Slug}) 已经存在!", + "CmsKit:BlogPost:0001": "给定的标签已经存在!", + "CmsKit:Comments:0001": "实体 {EntityType} 不可注释。", + "CmsKit:Media:0001": "{Name}'不是有效的媒体名称。", + "CmsKit:Media:0002": "实体不能拥有媒体。", + "CmsKit:Page:0001": "给定的网址 ({Slug}) 已经存在。请尝试使用其他网址。", "CmsKit:Rating:0001": "无法对实体 {EntityType} 进行评级。", "CmsKit:Reaction:0001": "实体 {EntityType} 不能有反应。", - "CmsKit:Tag:0002": "实体不可标记!", - "CommentAuthorizationExceptionMessage": "这些评论不允许公开显示", - "CommentDeletionConfirmationMessage": "此评论和所有回复将被删除!", + "CmsKit:Tag:0002": "实体不可标记!", + "CommentAuthorizationExceptionMessage": "这些评论不允许公开展示。", + "CommentDeletionConfirmationMessage": "此评论和所有回复将被删除!", "Comments": "评论", "Content": "内容", - "ContentDeletionConfirmationMessage": "你确定要删除这个内容吗?", - "Contents": "内容", + "ContentDeletionConfirmationMessage": "您确定要删除这些内容吗?", + "Contents": "目录", "CoverImage": "封面图片", - "CreateBlogPostPage": "新博客帖子", + "CreateBlogPostPage": "新博客文章", "CreationTime": "创建时间", "Delete": "删除", - "Detail": "详情", - "Details": "详情", + "Detail": "详细信息", + "Details": "详细信息", "DisplayName": "显示名称", - "DoYouPreferAdditionalEmails": "你是否更喜欢额外的邮件?", - "Edit": "修改", - "EndDate": "结束时间", - "EntityId": "实体Id", + "DoYouPreferAdditionalEmails": "您希望收到更多电子邮件吗?", + "Edit": "编辑", + "EndDate": "结束日期", + "EntityId": "实体 ID", "EntityType": "实体类型", - "ExportCSV": "导出CSV", - "Features": "功能", - "GenericDeletionConfirmationMessage": "你确定删除 '{0}' 吗?", - "IsActive": "积极的", + "ExportCSV": "导出 CSV", + "Features": "特点", + "GenericDeletionConfirmationMessage": "您确定要删除\"{0}\"吗?", + "IsActive": "活跃", "LastModification": "最后一次修改", "LastModificationTime": "最后修改时间", - "LoginToAddComment": "登录添加评论", - "LoginToRate": "登录进行评分", - "LoginToReact": "登录以作出反应", - "LoginToReply": "登录进行回复", + "LoginToAddComment": "登录后添加评论", + "LoginToRate": "登录后评分", + "LoginToReact": "登录后作出反应", + "LoginToReply": "登录后回复", "MainMenu": "主菜单", "MakeMainMenu": "制作主菜单", "Menu:CMS": "CMS", "Menus": "菜单", - "MenuDeletionConfirmationMessage": "菜单“{0}”将被删除。你确定吗?", + "MenuDeletionConfirmationMessage": "菜单\"{0}\"将被删除。你确定吗?", "MenuItemDeletionConfirmationMessage": "确定要删除此菜单项吗?", - "MenuItemMoveConfirmMessage": "确定要将“{0}”移到“{1}”下吗?", - "MenuItems": "菜单项", - "Message": "消息", - "MessageDeletionConfirmationMessage": "这条评论将被完全删除", + "MenuItemMoveConfirmMessage": "您确定要将\"{0}\"移到\"{1}\"下面吗?", + "MenuItems": "菜单项目", + "Message": "留言", + "MessageDeletionConfirmationMessage": "此评论将被彻底删除。", "NewBlog": "新博客", - "NewBlogPost": "新博文", + "NewBlogPost": "新博客文章", "NewMenu": "新菜单", "NewMenuItem": "新的根菜单项", - "NewPage": "新的一页", + "NewPage": "新页面", "NewTag": "新标签", - "NoMenuItems": "还没有菜单项!", - "OK": "OK", - "PageDeletionConfirmationMessage": "你确定删除这个页面吗?", - "PageId": "页", + "NoMenuItems": "目前还没有菜单项!", + "OK": "好的", + "PageDeletionConfirmationMessage": "您确定要删除此页面吗?", + "PageId": "页次", "Pages": "页面", - "PageSlugInformation": "Slug用于url. 你的url将是 '/{{slug}}'.", - "BlogSlugInformation": "Slug用于url. 你的url将是 '/{0}/{{slug}}'.", + "PageSlugInformation": "Slug 用于 URL。您的网址将是\"/{{slug}}\"。", + "BlogSlugInformation": "Slug 用于 URL。您的网址将是\"/{0}/{{slug}}\"。", "Permission:BlogManagement": "博客管理", "Permission:BlogManagement.Create": "创建", "Permission:BlogManagement.Delete": "删除", - "Permission:BlogManagement.Features": "删除", + "Permission:BlogManagement.Features": "特点", "Permission:BlogManagement.Update": "更新", - "Permission:BlogPostManagement": "博客帖子管理", + "Permission:BlogPostManagement": "博文管理", "Permission:BlogPostManagement.Create": "创建", "Permission:BlogPostManagement.Delete": "删除", "Permission:BlogPostManagement.Update": "更新", - "Permission:BlogPostManagement.Publish": "发布", - "Permission:CmsKit": "Cms工具包", + "Permission:BlogPostManagement.Publish": "出版", + "Permission:CmsKit": "CmsKit 管理员", "Permission:Comments": "评论管理", "Permission:Comments.Delete": "删除", "Permission:Contents": "内容管理", @@ -97,7 +97,7 @@ "Permission:MediaDescriptorManagement": "媒体管理", "Permission:MediaDescriptorManagement:Create": "创建", "Permission:MediaDescriptorManagement:Delete": "删除", - "Permission:MenuItemManagement": "菜单项管理", + "Permission:MenuItemManagement": "菜单项目管理", "Permission:MenuItemManagement.Create": "创建", "Permission:MenuItemManagement.Delete": "删除", "Permission:MenuItemManagement.Update": "更新", @@ -105,10 +105,10 @@ "Permission:MenuManagement.Create": "创建", "Permission:MenuManagement.Delete": "删除", "Permission:MenuManagement.Update": "更新", - "Permission:Menus": "Menu Management", - "Permission:Menus.Create": "Create", - "Permission:Menus.Delete": "Delete", - "Permission:Menus.Update": "Update", + "Permission:Menus": "菜单管理", + "Permission:Menus.Create": "创建", + "Permission:Menus.Delete": "删除", + "Permission:Menus.Update": "更新", "Permission:PageManagement": "页面管理", "Permission:PageManagement:Create": "创建", "Permission:PageManagement:Delete": "删除", @@ -118,115 +118,115 @@ "Permission:TagManagement.Create": "创建", "Permission:TagManagement.Delete": "删除", "Permission:TagManagement.Update": "更新", - "Permission:GlobalResources": "全局资源", - "Permission:CmsKitPublic": "CmsKit公共", - "Permission:Comments.DeleteAll": "删除全部", - "PickYourReaction": "选择你的回应", - "Rating": "评分", - "RatingUndoMessage": "您的评分将被撤消", + "Permission:GlobalResources": "全球资源", + "Permission:CmsKitPublic": "CmsKit 公共", + "Permission:Comments.DeleteAll": "全部删除", + "PickYourReaction": "选择你的反应", + "Rating": "评级", + "RatingUndoMessage": "您的评级将被撤销。", "Reactions": "反应", "Read": "阅读", - "RepliesToThisComment": "回复此评论", - "Reply": "回复", - "ReplyTo": "回复", - "SamplePageMessage": "Pro模块的示例页面", + "RepliesToThisComment": "对此评论的回复", + "Reply": "答复", + "ReplyTo": "答复", + "SamplePageMessage": "专业模块的示例页面", "SaveChanges": "保存更改", "Script": "脚本", - "SelectAll": "选择所有", + "SelectAll": "全部选择", "Send": "发送", - "SendMessage": "发送消息", + "SendMessage": "发送信息", "SelectedAuthor": "作者", - "ShortDescription": "简介", - "Slug": "Slug", - "Source": "源", - "SourceUrl": "源URL", - "Star": "星", - "StartDate": "开始时间", + "ShortDescription": "简要说明", + "Slug": "蛞蝓", + "Source": "资料来源", + "SourceUrl": "来源网址", + "Star": "明星", + "StartDate": "开始日期", "Style": "风格", "Subject": "主题", "SubjectPlaceholder": "请输入主题", "Submit": "提交", "Subscribe": "订阅", - "SuccessfullySaved": "保存成功!", - "TagDeletionConfirmationMessage": "你确定删除 '{0}' 标签吗?", + "SuccessfullySaved": "成功保存!", + "TagDeletionConfirmationMessage": "您确定要删除\"{0}\"标记吗?", "Tags": "标签", "Text": "文本", - "ThankYou": "谢谢你", + "ThankYou": "谢谢", "Title": "标题", "Undo": "撤消", "Update": "更新", - "UpdatePreferenceSuccessMessage": "您的首选项已经保存", - "UpdateYourEmailPreferences": "更新你的邮件首选项", - "UnMakeMainMenu": "取消主菜单", - "UploadFailedMessage": "上传失败", - "UserId": "用户Id", - "Username": "用户名称", - "YourComment": "你的评论", - "YourEmailAddress": "你的邮件地址", - "YourFullName": "你的全称", - "YourMessage": "你的消息", - "YourReply": "你的回复", + "UpdatePreferenceSuccessMessage": "您的首选项已保存。", + "UpdateYourEmailPreferences": "更新您的电子邮件首选项", + "UnMakeMainMenu": "取消制作主菜单", + "UploadFailedMessage": "上传失败。", + "UserId": "用户名", + "Username": "用户名", + "YourComment": "您的意见", + "YourEmailAddress": "您的电子邮件地址", + "YourFullName": "您的全名", + "YourMessage": "您的信息", + "YourReply": "您的回复", "MarkdownSupported": "Markdown 支持。", - "GlobalResources": "全局资源", + "GlobalResources": "全球资源", "SavedSuccessfully": "保存成功", - "CmsKit.BlogPost.Status.0": "草稿", - "CmsKit.BlogPost.Status.1": "已发布", - "CmsKit.BlogPost.Status.2": "等待审核", - "BlogPostPublishConfirmationMessage": "你确定要发布博客文章“{0}”吗?", + "CmsKit.BlogPost.Status.0": "草案", + "CmsKit.BlogPost.Status.1": "已出版", + "CmsKit.BlogPost.Status.2": "等待审查", + "BlogPostPublishConfirmationMessage": "您确定要发布博文\"{0}\"吗?", "SuccessfullyPublished": "成功发布!", - "Draft": "草稿", - "Publish": "发布", - "BlogPostDraftConfirmationMessage": "你确定要将博客文章“{0}”设置为草稿吗?", - "BlogPostSendToReviewConfirmationMessage": "你确定要将博客文章“{0}”发送给管理员审核发布吗?", + "Draft": "草案", + "Publish": "出版", + "BlogPostDraftConfirmationMessage": "您确定将博文\"{0}\"设置为草稿吗?", + "BlogPostSendToReviewConfirmationMessage": "您确定要将博文\"{0}\"发送给管理员审核发布吗?", "SaveAsDraft": "保存为草稿", - "SendToReview": "发送到审核", - "SendToReviewToPublish": "发送到审核并发布", - "BlogPostSendToReviewSuccessMessage": "博客文章“{0}”已发送给管理员审核发布。", - "HasBlogPostWaitingForReviewMessage": "你有一篇博客文章等待审核。点击查看。", - "SelectAStatus": "选择一个状态", - "Status": "状态", - "CmsKit.BlogPost.ScrollIndex": "博客文章快速导航栏", - "CmsKit.BlogPost.PreventXssFeature": "防止XSS攻击", + "SendToReview": "发送审查", + "SendToReviewToPublish": "送审出版", + "BlogPostSendToReviewSuccessMessage": "博文\"{0}\"已送交管理员审核发布。", + "HasBlogPostWaitingForReviewMessage": "您有一篇博文等待审核。点击列表。", + "SelectAStatus": "选择状态", + "Status": "现状", + "CmsKit.BlogPost.ScrollIndex": "博客文章中的快速导航栏", + "CmsKit.BlogPost.PreventXssFeature": "防止 XSS", "Add": "添加", - "AddWidget": "添加组件", - "PleaseConfigureWidgets": "请配置组件", - "SelectAnAuthor": "选择一个作者", - "InThisDocument": "在此文档", - "GoToTop": "跳至顶部", - "SetAsHomePage": "更改首页状态", - "CompletedSettingAsHomePage": "设为首页", - "IsHomePage": "是否为首页", - "RemovedSettingAsHomePage": "删除首页设置", - "Feature:CmsKitGroup": "Cms Kit", + "AddWidget": "添加小工具", + "PleaseConfigureWidgets": "请配置部件", + "SelectAnAuthor": "选择作者", + "InThisDocument": "在本文件中", + "GoToTop": "返回页首", + "SetAsHomePage": "更改主页状态", + "CompletedSettingAsHomePage": "设置为主页", + "IsHomePage": "是主页", + "RemovedSettingAsHomePage": "删除了主页设置", + "Feature:CmsKitGroup": "内容管理系统套件", "Feature:BlogEnable": "博客文章", - "Feature:BlogEnableDescription": "CMS Kit的博客文章系统,允许在应用程序中动态创建博客和文章。", + "Feature:BlogEnableDescription": "CMS Kit 的博客帖子系统可在应用程序中动态创建博客和帖子。", "Feature:CommentEnable": "评论", - "Feature:CommentEnableDescription": "CMS Kit的评论系统允许对博客文章等实体进行评论。", - "Feature:GlobalResourceEnable": "全局资源", - "Feature:GlobalResourceEnableDescription": "CMS Kit的全局资源功能,允许管理全局样式和脚本。", + "Feature:CommentEnableDescription": "CMS Kit 的评论系统允许对 BlogPost 等实体发表评论。", + "Feature:GlobalResourceEnable": "全球资源配置", + "Feature:GlobalResourceEnableDescription": "CMS Kit 的全局资源功能允许管理全局样式和脚本。", "Feature:MenuEnable": "菜单", - "Feature:MenuEnableDescription": "CMS Kit的动态菜单系统,允许动态添加/删除应用程序菜单。", + "Feature:MenuEnableDescription": "CMS Kit 的动态菜单系统可动态添加/删除应用程序菜单。", "Feature:PageEnable": "分页", - "Feature:PageEnableDescription": "CMS Kit的页面系统,允许使用特定URL创建静态页面。", - "Feature:RatingEnable": "评分", - "Feature:RatingEnableDescription": "CMS Kit的评分系统允许用户对博客文章等实体进行评分。", + "Feature:PageEnableDescription": "CMS Kit 的页面系统可创建具有特定 URL 的静态页面。", + "Feature:RatingEnable": "评级", + "Feature:RatingEnableDescription": "CMS Kit 的评级系统允许用户对 BlogPost 等实体进行评级。", "Feature:ReactionEnable": "反应", - "Feature:ReactionEnableDescription": "CMS Kit的反应系统允许用户对博客文章、评论等实体发送反应。", - "Feature:TagEnable": "标签", - "Feature:TagEnableDescription": "CMS Kit的标签系统允许对博客文章等实体进行标记。", - "DeleteBlogPostMessage": "是否确认删除博客?", + "Feature:ReactionEnableDescription": "CMS Kit 的反应系统允许用户向 BlogPost、Comments 等实体发送反应。", + "Feature:TagEnable": "Taging", + "Feature:TagEnableDescription": "CMS Kit 的标签系统允许标记 BlogPost 等实体。", + "DeleteBlogPostMessage": "博客将被删除。你确定吗?", "CaptchaCode": "验证码", - "CommentTextRequired": "请输入评论", - "CaptchaCodeErrorMessage": "验证码错误,请重试", - "CaptchaCodeMissingMessage": "请输入验证码!", - "UnAllowedExternalUrlMessage": "您包含了不允许的外部 URL。请在没有外部 URL 的情况下重试。", + "CommentTextRequired": "需要评论", + "CaptchaCodeErrorMessage": "您输入的验证码答案不正确。请重试", + "CaptchaCodeMissingMessage": "验证码丢失!", + "UnAllowedExternalUrlMessage": "您包含了一个不允许的外部 URL。请在不包含外部 URL 的情况下重试。", "URL": "网址", "PopularTags": "热门标签", - "RemoveCoverImageConfirmationMessage": "您确定要删除封面图片吗?", - "RemoveCoverImage": "删除封面图片", - "CssClass": "CSS类", - "TagsHelpText": "标签应以逗号分隔(例如:tag1、tag2、tag3)", - "ThisPartOfContentCouldntBeLoaded": "无法加载此部分内容", - "DuplicateCommentAttemptMessage": "检测到重复的评论帖子尝试。您的评论已经提交。" + "RemoveCoverImageConfirmationMessage": "您确定要移除封面图像吗?", + "RemoveCoverImage": "移除封面图像", + "CssClass": "CSS 类", + "TagsHelpText": "标签应以逗号分隔(例如:标签 1、标签 2、标签 3)", + "ThisPartOfContentCouldntBeLoaded": "这部分内容无法加载。", + "DuplicateCommentAttemptMessage": "检测到重复发表评论。您的评论已经提交。" } } \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json index 9925b1a507..eaaafb576c 100644 --- a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json +++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/zh-Hans.json @@ -2,9 +2,9 @@ "culture": "zh-Hans", "texts": { "DocsTitle": "VoloDocs", - "WelcomeVoloDocs": "欢迎使用VoloDocs!", - "NoProjectWarning": "当前没有定义的项目!", - "CreateYourFirstProject": "点击这里开始你的第一个项目", - "NoProject": "没有项目!" + "WelcomeVoloDocs": "欢迎来到 VoloDocs!", + "NoProjectWarning": "目前还没有确定的项目!", + "CreateYourFirstProject": "单击此处开始您的第一个项目", + "NoProject": "没有项目!" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json index e5bb9f15b6..f62b765395 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json @@ -1,62 +1,62 @@ { "culture": "zh-Hans", "texts": { - "Permission:DocumentManagement": "文档管理", + "Permission:DocumentManagement": "文件管理", "Permission:Projects": "项目", "Permission:Edit": "编辑", "Permission:Delete": "删除", "Permission:Create": "创建", - "Permission:Documents": "文档", - "Menu:Documents": "文档", - "Menu:DocumentManagement": "文档", + "Permission:Documents": "文件", + "Menu:Documents": "文件", + "Menu:DocumentManagement": "文件", "Menu:ProjectManagement": "项目", "CreateANewProject": "创建新项目", "Edit": "编辑", "Create": "创建", - "Pull": "拉取", + "Pull": "拉", "Projects": "项目", "Name": "名称", "ShortName": "简称", - "DocumentStoreType": "文件存储类型", + "DocumentStoreType": "文档存储类型", "Format": "格式", - "ShortNameInfoText": "将用于唯一的URL.", + "ShortNameInfoText": "将用于唯一 URL。", "DisplayName:Name": "名称", "DisplayName:ShortName": "简称", "DisplayName:Format": "格式", - "DisplayName:DefaultDocumentName": "默认文档名称", - "DisplayName:NavigationDocumentName": "导航文档名称", + "DisplayName:DefaultDocumentName": "默认文件名", + "DisplayName:NavigationDocumentName": "导航文件名称", "DisplayName:MinimumVersion": "最低版本", "DisplayName:MainWebsiteUrl": "主网站网址", - "DisplayName:LatestVersionBranchName": "最新版本的分支名称", - "DisplayName:GitHubRootUrl": "GitHub根网址", - "DisplayName:GitHubAccessToken": "GitHub访问令牌", - "DisplayName:GitHubUserAgent": "GitHub用户代理", - "DisplayName:GithubVersionProviderSource": "GitHub版本提供源", + "DisplayName:LatestVersionBranchName": "最新版本分支名称", + "DisplayName:GitHubRootUrl": "GitHub 根 URL", + "DisplayName:GitHubAccessToken": "GitHub 访问令牌", + "DisplayName:GitHubUserAgent": "GitHub 用户代理", + "DisplayName:GithubVersionProviderSource": "GitHub 版本提供源代码", "DisplayName:VersionBranchPrefix": "版本分支前缀", - "DisplayName:All": "拉取所有", + "DisplayName:All": "全部拉出", "DisplayName:LanguageCode": "语言代码", "DisplayName:Version": "版本", - "Documents": "文档", - "RemoveFromCache": "从缓存中清除并重新索引", + "Documents": "文件", + "RemoveFromCache": "从缓存中删除并重新索引", "Reindex": "重新索引", - "ReindexCompleted": "重新索引完成", + "ReindexCompleted": "重新索引已完成", "RemovedFromCache": "从缓存中删除并重新索引", - "RemoveFromCacheConfirmation": "你确定要从缓存中删除该项吗?", - "ReIndexDocumentConfirmation": "您确定要重新索引“{0}”吗?", + "RemoveFromCacheConfirmation": "您确定要从缓存中删除此项目吗?", + "ReIndexDocumentConfirmation": "您确定要重新索引\"{0}\"吗?", "DeleteFromDatabase": "从数据库中删除", - "Deleted": "删除", + "Deleted": "已删除", "Search": "搜索", - "StartDate": "开始时间", - "EndDate": "结束时间", + "StartDate": "开始日期", + "EndDate": "结束日期", "CreationTime": "创建时间", - "LastUpdateTime": "最后修改", - "LastSignificantUpdateTime": "上次重大更新", + "LastUpdateTime": "最后更新", + "LastSignificantUpdateTime": "最后一次重要更新", "Version": "版本", "LanguageCode": "语言代码", - "FileName": "文件名称", - "LastCachedTime": "缓存项", + "FileName": "文件名", + "LastCachedTime": "缓存时间", "Project": "项目", "AdvancedFilters": "高级过滤器", - "RemoveCacheAndReIndexConfirmation": "文档“{0}”将从缓存中删除并重新编制索引。 你确认吗?" + "RemoveCacheAndReIndexConfirmation": "文件\"{0}\"将从缓存中删除并重新索引。您确认了吗?" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json index 8ddbe55ae7..f5c4d68e58 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json @@ -1,42 +1,42 @@ { "culture": "zh-Hans", "texts": { - "Documents": "文档", - "BackToWebsite": "返回主网站", + "Documents": "文件", + "BackToWebsite": "返回网站", "Contributors": "贡献者", "ShareOn": "分享到", "Version": "版本", "Edit": "编辑", - "LastEditTime": "上次编辑", + "LastEditTime": "最后编辑", "Delete": "删除", "ClearCache": "清除缓存", - "ClearCacheConfirmationMessage": "你确定清除 \"{0}\" 项目所有的缓存吗", - "ReIndexAllProjects": "重新索引所有的项目", + "ClearCacheConfirmationMessage": "您确定要清除项目\"{0}\"的所有缓存吗?", + "ReIndexAllProjects": "重新索引所有项目", "ReIndexProject": "重新索引项目", - "ReIndexProjectConfirmationMessage": "你确定重新索引 \"{0}\" 项目", - "SuccessfullyReIndexProject": "成功重新索引 \"{0}\" 项目", - "ReIndexAllProjectConfirmationMessage": "你确定重新索引所有的项目", - "SuccessfullyReIndexAllProject": "成功重新索引所有的项目", - "InThisDocument": "在本文中", - "GoToTop": "到顶部", + "ReIndexProjectConfirmationMessage": "您确定要为项目\"{0}\"重新索引吗?", + "SuccessfullyReIndexProject": "成功重新索引:\"{0}\"", + "ReIndexAllProjectConfirmationMessage": "您确定要重新索引所有项目吗?", + "SuccessfullyReIndexAllProject": "成功重新索引了所有项目", + "InThisDocument": "在本文件中", + "GoToTop": "返回页首", "Projects": "项目", - "NoProjectWarning": "还没有项目!", - "DocumentNotFound": "找不到请求的文档!", - "ProjectNotFound": "找不到请求的项目!", - "NavigationDocumentNotFound": "这个版本没有导航文件!", - "DocumentNotFoundInSelectedLanguage": "本文档不适用于所选语言, 将以默认语言显示文档.", - "FilterTopics": "过滤主题", - "FullSearch": "搜索文档", - "Volo.Docs.Domain:010001": "Elastic search未启用.", - "MultipleVersionDocumentInfo": "本文档有多个版本. 选择最适合你的选项", - "New": "新文档", + "NoProjectWarning": "目前还没有任何项目!", + "DocumentNotFound": "哎呀,没有找到所需的文件!", + "ProjectNotFound": "哎呀,没有找到请求的项目!", + "NavigationDocumentNotFound": "该版本没有导航文件!", + "DocumentNotFoundInSelectedLanguage": "未找到所需语言的文件。显示默认语言的文件。", + "FilterTopics": "筛选主题", + "FullSearch": "在文件中搜索", + "Volo.Docs.Domain:010001": "未启用弹性搜索。", + "MultipleVersionDocumentInfo": "本文件有多个版本。请选择最适合您的选项。", + "New": "新", "Upd": "更新", - "NewExplanation": "在最近两周内创建.", - "UpdatedExplanation": "在最近两周内更新.", - "Volo.Docs.Domain:010002": "简称 {ShortName} 已经存在.", - "Preview": "预览", + "NewExplanation": "最近两周创建。", + "UpdatedExplanation": "最近两周更新。", + "Volo.Docs.Domain:010002": "短名 {ShortName} 已经存在。", + "Preview": "预展", "Search": "搜索", "SearchResults": "搜索结果", - "SearchInTheAllDocuments": "搜索所有文档" + "SearchInTheAllDocuments": "在所有文件中搜索" } } \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json index dc63ddf34a..26212298a2 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json @@ -1,17 +1,17 @@ { "culture": "zh-Hans", "texts": { - "Features": "功能", - "NoFeatureFoundMessage": "没有可用的功能.", - "ManageHostFeatures": "管理Host功能", - "ManageHostFeaturesText": "您可以通过单击以下按钮来管理宿主功能。", + "Features": "特点", + "NoFeatureFoundMessage": "没有任何可用的功能。", + "ManageHostFeatures": "管理主机功能", + "ManageHostFeaturesText": "点击以下按钮即可管理主机端功能。", "Permission:FeatureManagement": "功能管理", - "Permission:FeatureManagement.ManageHostFeatures": "管理Host功能", - "Volo.Abp.FeatureManagement:InvalidFeatureValue": "{0}功能的值无效!", + "Permission:FeatureManagement.ManageHostFeatures": "管理主机功能", + "Volo.Abp.FeatureManagement:InvalidFeatureValue": "{0}特征值无效!", "Menu:FeatureManagement": "功能管理", "ResetToDefault": "重置为默认值", - "ResetedToDefault": "已重置为默认值", - "AreYouSure": "是否确认?", - "AreYouSureToResetToDefault": "你确定要重置为默认值吗?" + "ResetedToDefault": "重置为默认值", + "AreYouSure": "你确定吗?", + "AreYouSureToResetToDefault": "您确定要重置为默认设置吗?" } } \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index 05c0ab490b..98731e5cf7 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -1,33 +1,33 @@ { "culture": "zh-Hans", "texts": { - "Menu:IdentityManagement": "身份认证管理", + "Menu:IdentityManagement": "身份管理", "Users": "用户", "NewUser": "新用户", - "UserName": "用户名称", - "Surname": "姓", - "EmailAddress": "邮箱地址", - "PhoneNumber": "手机号", + "UserName": "用户名", + "Surname": "姓氏", + "EmailAddress": "电子邮件地址", + "PhoneNumber": "电话号码", "UserInformations": "用户信息", - "DisplayName:IsDefault": "默认", + "DisplayName:IsDefault": "默认值", "DisplayName:IsStatic": "静态", - "DisplayName:IsPublic": "公开", + "DisplayName:IsPublic": "公众", "Roles": "角色", "Password": "密码", - "PersonalInfo": " 个人信息", + "PersonalInfo": "我的简介", "PersonalSettings": "个人设置", - "UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?", - "RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?", + "UserDeletionConfirmationMessage": "用户'{0}'将被删除。你确认吗?", + "RoleDeletionConfirmationMessage": "角色\"{0}\"将被删除。你确认吗?", "DisplayName:RoleName": "角色名称", - "DisplayName:UserName": "用户名称", - "DisplayName:Name": "名", - "DisplayName:Surname": "姓", + "DisplayName:UserName": "用户名", + "DisplayName:Name": "名称", + "DisplayName:Surname": "姓氏", "DisplayName:Password": "密码", - "DisplayName:Email": "邮箱地址", - "DisplayName:PhoneNumber": "手机号码", - "DisplayName:TwoFactorEnabled": "二次认证", - "DisplayName:IsActive": "启用", - "DisplayName:LockoutEnabled": "登录失败,账户被锁定", + "DisplayName:Email": "电子邮件地址", + "DisplayName:PhoneNumber": "电话号码", + "DisplayName:TwoFactorEnabled": "双因素验证", + "DisplayName:IsActive": "活跃", + "DisplayName:LockoutEnabled": "登录失败后锁定账户", "NewRole": "新角色", "RoleName": "角色名称", "CreationTime": "创建时间", @@ -35,50 +35,50 @@ "DisplayName:CurrentPassword": "当前密码", "DisplayName:NewPassword": "新密码", "DisplayName:NewPasswordConfirm": "确认新密码", - "PasswordChangedMessage": "你已成功更改密码.", - "PersonalSettingsSavedMessage": "你的个人设置保存成功.", - "Volo.Abp.Identity:DefaultError": "发生了一个未知错误.", - "Volo.Abp.Identity:ConcurrencyFailure": "乐观并发检查失败. 你正在处理的对象已被其他用户修改. 请放弃你的更改, 然后重试.", - "Volo.Abp.Identity:DuplicateEmail": "邮箱 '{0}' 已存在.", - "Volo.Abp.Identity:DuplicateRoleName": "角色名 '{0}' 已存在.", - "Volo.Abp.Identity:DuplicateUserName": "用户名 '{0}' 已存在.", - "Volo.Abp.Identity:InvalidEmail": "邮箱 '{0}' 无效.", - "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", - "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", - "Volo.Abp.Identity:InvalidRoleName": "角色名 '{0}' 无效.", - "Volo.Abp.Identity:InvalidToken": "token无效.", - "Volo.Abp.Identity:InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", - "InvalidUserName": "用户名 '{0}' 无效.", - "Volo.Abp.Identity:LoginAlreadyAssociated": "此登录名的用户已存在.", - "Volo.Abp.Identity:PasswordMismatch": "密码错误.", - "Volo.Abp.Identity:PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", - "Volo.Abp.Identity:PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", - "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", - "Volo.Abp.Identity:PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", - "Volo.Abp.Identity:PasswordTooShort": "密码至少为{0}个字符.", - "Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码至少包含{0}个唯一字符.", - "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在.", - "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码.", - "Volo.Abp.Identity:UserAlreadyInRole": "用户已具有角色 '{0}'.", - "Volo.Abp.Identity:UserLockedOut": "用户被锁定.", - "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定.", - "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在.", - "Volo.Abp.Identity:UserNotInRole": "用户不具有 '{0}' 角色.", - "Volo.Abp.Identity:PasswordConfirmationFailed": "密码或确认密码不一致.", - "Volo.Abp.Identity:NullSecurityStamp": "用户安全标识不能为空.", - "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "恢复代码兑换失败.", - "Volo.Abp.Identity:010001": "你无法删除自己的帐户!", - "Volo.Abp.Identity:010002": "不能为用户设置超过{MaxUserMembershipCount}个组织单位!", - "Volo.Abp.Identity:010003": "无法更改外部登录用户的密码!", - "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", - "Volo.Abp.Identity:010005": "无法重命名静态角色.", - "Volo.Abp.Identity:010006": "无法删除静态角色.", - "Volo.Abp.Identity:010007": "你不能修改你的双因素身份验证设置", - "Volo.Abp.Identity:010008": "不允许修改双因素身份验证设置.", - "Volo.Abp.Identity:010009": "你不能委托给自己.", - "Identity.OrganizationUnit.MaxUserMembershipCount": "组织单位最大允许的成员资格计数", - "ThisUserIsNotActiveMessage": "该用户不可用.", - "Permission:IdentityManagement": "身份标识管理", + "PasswordChangedMessage": "您的密码已成功更改。", + "PersonalSettingsSavedMessage": "您的个人设置已成功保存。", + "Volo.Abp.Identity:DefaultError": "发生未知故障。", + "Volo.Abp.Identity:ConcurrencyFailure": "乐观并发性检查失败。您正在处理的实体已被其他用户修改。请放弃更改并重试。", + "Volo.Abp.Identity:DuplicateEmail": "电子邮件'{0}'已被占用。", + "Volo.Abp.Identity:DuplicateRoleName": "角色名称\"{0}\"已被占用。", + "Volo.Abp.Identity:DuplicateUserName": "用户名'{0}'已被注册。", + "Volo.Abp.Identity:InvalidEmail": "电子邮件'{0}'无效。", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效。", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代次数必须是正整数。", + "Volo.Abp.Identity:InvalidRoleName": "角色名称\"{0}\"无效。", + "Volo.Abp.Identity:InvalidToken": "无效令牌。", + "Volo.Abp.Identity:InvalidUserName": "用户名\"{0}\"无效,只能包含字母或数字。", + "InvalidUserName": "用户名'{0}'无效。", + "Volo.Abp.Identity:LoginAlreadyAssociated": "已存在使用此登录名的用户。", + "Volo.Abp.Identity:PasswordMismatch": "密码不正确。", + "Volo.Abp.Identity:PasswordRequiresDigit": "密码必须至少有一位数('0'-'9')。", + "Volo.Abp.Identity:PasswordRequiresLower": "密码必须至少有一个小写字母('a'-'z')。", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码必须至少有一个非字母数字字符。", + "Volo.Abp.Identity:PasswordRequiresUpper": "密码必须至少有一个大写字母('A'-'Z')。", + "Volo.Abp.Identity:PasswordTooShort": "密码必须至少包含 {0} 个字符。", + "Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码必须至少使用 {0} 个不同字符。", + "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在。", + "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码。", + "Volo.Abp.Identity:UserAlreadyInRole": "用户已是角色\"{0}\"。", + "Volo.Abp.Identity:UserLockedOut": "用户被锁定。", + "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定。", + "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在。", + "Volo.Abp.Identity:UserNotInRole": "用户不在\"{0}\"角色中。", + "Volo.Abp.Identity:PasswordConfirmationFailed": "密码与确认密码不匹配。", + "Volo.Abp.Identity:NullSecurityStamp": "用户安全印章不能为空。", + "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "恢复密码兑换失败。", + "Volo.Abp.Identity:010001": "您不能删除自己的账户!", + "Volo.Abp.Identity:010002": "不能为一个用户设置超过 {MaxUserMembershipCount} 的组织单位!", + "Volo.Abp.Identity:010003": "无法更改外部登录用户的密码!", + "Volo.Abp.Identity:010004": "已有一个名称为 {0} 的组织单位。同一层级不能创建两个同名单位。", + "Volo.Abp.Identity:010005": "静态角色不能重命名。", + "Volo.Abp.Identity:010006": "静态角色不可删除。", + "Volo.Abp.Identity:010007": "您无法更改双因素设置。", + "Volo.Abp.Identity:010008": "不允许更改双因素设置。", + "Volo.Abp.Identity:010009": "你不能委派自己。", + "Identity.OrganizationUnit.MaxUserMembershipCount": "用户允许的组织单位成员数量上限", + "ThisUserIsNotActiveMessage": "该用户未激活。", + "Permission:IdentityManagement": "身份管理", "Permission:RoleManagement": "角色管理", "Permission:Create": "创建", "Permission:Edit": "编辑", @@ -86,44 +86,44 @@ "Permission:ChangePermissions": "更改权限", "Permission:UserManagement": "用户管理", "Permission:UserLookup": "用户查询", - "DisplayName:Abp.Identity.Password.RequiredLength": "要求长度", - "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "要求唯一字符数量", - "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "要求非字母数字", - "DisplayName:Abp.Identity.Password.RequireLowercase": "要求小写字母", - "DisplayName:Abp.Identity.Password.RequireUppercase": "要求大写字母", - "DisplayName:Abp.Identity.Password.RequireDigit": "要求数字", + "DisplayName:Abp.Identity.Password.RequiredLength": "所需长度", + "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "所需的唯一字符编号", + "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "必须填写的非字母数字字符", + "DisplayName:Abp.Identity.Password.RequireLowercase": "所需小写字符", + "DisplayName:Abp.Identity.Password.RequireUppercase": "必填大写字符", + "DisplayName:Abp.Identity.Password.RequireDigit": "所需数字", "DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "强制用户定期更改密码", - "DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密码更改周期(天)", - "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户", - "DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定时间(秒)", - "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问尝试次数", - "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "要求验证的电子邮箱", - "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "允许用户确认他们的电话号码", - "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "要求验证的手机号码", - "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "启用用户名更新", - "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "启用电子邮箱更新", - "Description:Abp.Identity.Password.RequiredLength": "密码的最小长度.", - "Description:Abp.Identity.Password.RequiredUniqueChars": "密码必须包含唯一字符的数量.", - "Description:Abp.Identity.Password.RequireNonAlphanumeric": "密码是否必须包含非字母数字.", - "Description:Abp.Identity.Password.RequireLowercase": "密码是否必须包含小写字母.", - "Description:Abp.Identity.Password.RequireUppercase": "密码是否必须包含大写字母.", - "Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字.", - "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码.", - "Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户必须更改密码的周期(天).", - "Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定.", - "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒).", - "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数.", - "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登录时是否需要验证的电子邮箱.", - "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "用户是否可以确认电话号码", - "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "登录时是否需要验证的手机号码.", - "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "是否允许用户更新用户名.", - "Description:Abp.Identity.User.IsEmailUpdateEnabled": "是否允许用户更新电子邮箱.", - "Details": "详情", + "DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密码更改周期(天)", + "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "新用户已启用", + "DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定持续时间(秒)", + "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问次数", + "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "要求确认电子邮件", + "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "允许用户确认电话号码", + "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "要求确认电话号码", + "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "允许用户更改用户名", + "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "允许用户更改电子邮件地址", + "Description:Abp.Identity.Password.RequiredLength": "密码的最小长度。", + "Description:Abp.Identity.Password.RequiredUniqueChars": "密码必须包含的最少唯一字符数。", + "Description:Abp.Identity.Password.RequireNonAlphanumeric": "如果密码必须包含一个非字母数字字符。", + "Description:Abp.Identity.Password.RequireLowercase": "如果密码必须包含小写 ASCII 字符。", + "Description:Abp.Identity.Password.RequireUppercase": "如果密码必须包含大写 ASCII 字符。", + "Description:Abp.Identity.Password.RequireDigit": "如果密码必须包含一位数字。", + "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码。", + "Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户密码的有效天数。", + "Description:Abp.Identity.Lockout.AllowedForNewUsers": "是否可以锁定新用户。", + "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时,用户被锁定的持续时间。", + "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "假定锁定已启用,用户被锁定前允许的失败访问次数。", + "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登录是否需要确认的电子邮件地址。", + "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "用户是否可以确认电话号码。", + "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "是否需要确认电话号码才能登录。", + "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "用户是否可以更新用户名。", + "Description:Abp.Identity.User.IsEmailUpdateEnabled": "用户是否可以更新电子邮件。", + "Details": "详细信息", "CreatedBy": "创建者", - "ModifiedBy": "修改者", + "ModifiedBy": "修改", "ModificationTime": "修改时间", "PasswordUpdateTime": "密码更新时间", "LockoutEndTime": "锁定结束时间", "FailedAccessCount": "访问失败次数" } -} +} \ No newline at end of file diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/LocalizationExtensions/zh-Hans.json b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/LocalizationExtensions/zh-Hans.json index f835afb592..abf03808f9 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/LocalizationExtensions/zh-Hans.json +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/LocalizationExtensions/zh-Hans.json @@ -1,7 +1,7 @@ { "culture": "zh-Hans", "texts": { - "Volo.Abp.Identity:PasswordTooShort": "密码长度必须大于{0}字符. ", - "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码必须至少包含一个非字母数字字符." + "Volo.Abp.Identity:PasswordTooShort": "密码长度必须大于 {0} 字符。", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码必须至少包含一个非字母数字字符。" } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json index a2d828bab2..eb0a7f20b9 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json @@ -1,16 +1,16 @@ { "culture": "zh-Hans", "texts": { - "Volo.IdentityServer:DuplicateIdentityResourceName": "Identity资源名称已存在: {Name}", - "Volo.IdentityServer:DuplicateApiResourceName": "Api资源名称已存在: {Name}", - "Volo.IdentityServer:DuplicateApiScopeName": "Api Scope已存在: {Name}", - "Volo.IdentityServer:DuplicateClientId": "ClientId已经存在: {ClientId}", - "UserLockedOut": "登录失败,用户账户已被锁定.请稍后再试.", - "InvalidUserNameOrPassword": "用户名或密码错误!", - "LoginIsNotAllowed": "无法登录!你的账号未激活或者需要验证邮箱地址/手机号.", - "InvalidUsername": "用户名或密码错误!", - "InvalidAuthenticatorCode": "验证码无效!", - "InvalidRecoveryCode": "恢复代码无效!", - "TheTargetUserIsNotLinkedToYou": "目标用户未和你有关联!" + "Volo.IdentityServer:DuplicateIdentityResourceName": "身份资源名称已存在:名称", + "Volo.IdentityServer:DuplicateApiResourceName": "Api 资源名称已存在:名称", + "Volo.IdentityServer:DuplicateApiScopeName": "Api 范围名称已存在:名称", + "Volo.IdentityServer:DuplicateClientId": "客户 ID 已存在:{客户 ID}", + "UserLockedOut": "由于尝试登录无效,用户账户已被锁定。请稍候再试。", + "InvalidUserNameOrPassword": "用户名或密码无效!", + "LoginIsNotAllowed": "您不能登录!您的帐户未激活或需要确认您的电子邮件/电话号码。", + "InvalidUsername": "用户名或密码无效!", + "InvalidAuthenticatorCode": "验证码无效!", + "InvalidRecoveryCode": "恢复代码无效!", + "TheTargetUserIsNotLinkedToYou": "目标用户与您没有关联!" } -} +} \ No newline at end of file diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json index dc3f86a812..c213ac6063 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json @@ -1,15 +1,15 @@ { "culture": "zh-Hans", "texts": { - "TheOpenIDConnectRequestCannotBeRetrieved": "无法检索 OpenID Connect 请求.", - "TheUserDetailsCannotBbeRetrieved" : "无法检索用户详细信息.", - "TheApplicationDetailsCannotBeFound": "找不到应用详情.", - "DetailsConcerningTheCallingClientApplicationCannotBeFound": "找不到有关调用客户端应用程序的详细信息.", - "TheSpecifiedGrantTypeIsNotImplemented": "未实施指定的授权类型 {0}.", + "TheOpenIDConnectRequestCannotBeRetrieved": "无法检索 OpenID Connect 请求。", + "TheUserDetailsCannotBbeRetrieved": "无法检索用户详细信息。", + "TheApplicationDetailsCannotBeFound": "无法找到申请详情。", + "DetailsConcerningTheCallingClientApplicationCannotBeFound": "无法找到有关调用客户端应用程序的详细信息。", + "TheSpecifiedGrantTypeIsNotImplemented": "未执行指定的授权类型 {0}。", "Authorization": "授权", - "DoYouWantToGrantAccessToYourData": "是否要授予 {0} 访问你的数据的权限?", - "ScopesRequested": "要求的Scope", - "Accept": "同意", + "DoYouWantToGrantAccessToYourData": "您希望允许 {0} 访问您的数据吗?", + "ScopesRequested": "申请范围", + "Accept": "接受", "Deny": "拒绝" } -} +} \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json index 9cd430ef99..d458f5f395 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json @@ -2,10 +2,10 @@ "culture": "zh-Hans", "texts": { "Permissions": "权限", - "OnlyProviderPermissons": "只有这个提供商", - "All": "所有", + "OnlyProviderPermissons": "只有该供应商", + "All": "全部", "SelectAllInAllTabs": "授予所有权限", - "SelectAllInThisTab": "全选", - "SaveWithoutAnyPermissionsWarningMessage": "你确定要保存没有任何权限吗?" + "SelectAllInThisTab": "选择所有", + "SaveWithoutAnyPermissionsWarningMessage": "您确定要在没有任何权限的情况下保存吗?" } } \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index 5c8539f440..524c1b58e9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -2,37 +2,37 @@ "culture": "zh-Hans", "texts": { "Settings": "设置", - "SuccessfullySaved": "保存成功", + "SuccessfullySaved": "成功保存", "Permission:SettingManagement": "设置管理", - "Permission:Emailing": "邮件", - "Permission:EmailingTest": "邮件测试", + "Permission:Emailing": "发送电子邮件", + "Permission:EmailingTest": "电子邮件测试", "Permission:TimeZone": "时区", - "SendTestEmail": "发送测试邮件", - "SenderEmailAddress": "发件人邮箱地址", - "TargetEmailAddress": "收件人邮箱地址", + "SendTestEmail": "发送测试电子邮件", + "SenderEmailAddress": "发件人电子邮件地址", + "TargetEmailAddress": "目标电子邮件地址", "Subject": "主题", - "Body": "正文", - "TestEmailSubject": "测试邮件 {0}", - "TestEmailBody": "测试邮件内容", - "SuccessfullySent": "发送成功", + "Body": "身体", + "TestEmailSubject": "测试电子邮件 {0}", + "TestEmailBody": "在此测试电子邮件正文信息", + "SuccessfullySent": "成功发送", "Send": "发送", - "Menu:Emailing": "邮件", + "Menu:Emailing": "发送电子邮件", "Menu:TimeZone": "时区", "DisplayName:Timezone": "时区", - "TimezoneHelpText": "此设置用于应用程序范围或基于租户.", - "SmtpHost": "主机", - "SmtpPort": "端口", + "TimezoneHelpText": "此设置用于全应用程序或基于租户的设置。", + "SmtpHost": "主持人", + "SmtpPort": "港口", "SmtpUserName": "用户名", "SmtpPassword": "密码", - "SmtpDomain": "域", - "SmtpEnableSsl": "启用ssl", + "SmtpDomain": "域名", + "SmtpEnableSsl": "启用 ssl", "SmtpUseDefaultCredentials": "使用默认凭据", - "DefaultFromAddress": "默认发件人", - "DefaultFromDisplayName": "默认显示名称", + "DefaultFromAddress": "默认地址", + "DefaultFromDisplayName": "显示名称的默认值", "Feature:SettingManagementGroup": "设置管理", "Feature:SettingManagementEnable": "启用设置管理", - "Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统.", - "Feature:AllowChangingEmailSettings": "允许更改邮件设置.", - "Feature:AllowChangingEmailSettingsDescription": "允许更改邮件设置." + "Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统。", + "Feature:AllowChangingEmailSettings": "允许更改电子邮件设置。", + "Feature:AllowChangingEmailSettingsDescription": "允许更改电子邮件设置。" } -} +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json index 0367489a5a..80a729645b 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json @@ -1,13 +1,13 @@ { "culture": "zh-Hans", "texts": { - "Volo.Abp.TenantManagement:DuplicateTenantName": "租户名称已存在: {Name}", + "Volo.Abp.TenantManagement:DuplicateTenantName": "租户名称已存在:名称", "Menu:TenantManagement": "租户管理", "Tenants": "租户", "NewTenant": "新租户", - "TenantName": "租户名称", + "TenantName": "租户姓名", "DisplayName:TenantName": "租户名称", - "TenantDeletionConfirmationMessage": "租户 '{0}' 将被删除. 你确定吗?", + "TenantDeletionConfirmationMessage": "租户'{0}'将被删除。您确认吗?", "ConnectionStrings": "连接字符串", "DisplayName:DefaultConnectionString": "默认连接字符串", "DisplayName:UseSharedDatabase": "使用共享数据库", diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json index f45b24c0ee..17bb233185 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json @@ -1,14 +1,14 @@ { "culture": "zh-Hans", "texts": { - "VirtualFileExplorer" : "虚拟文件浏览器", - "VirtualFileType" : "虚拟文件类型", - "Menu:VirtualFileExplorer" : "虚拟文件浏览器", - "LastUpdateTime" : "最后更新时间", - "VirtualFileName" : "虚拟文件名称", - "FileContent" : "文件内容", - "Size" : "文件大小", - "BackToRoot" : "回到根目录", - "EmptyFileInfoList" : "这里没有任何虚拟文件" + "VirtualFileExplorer": "虚拟文件资源管理器", + "VirtualFileType": "虚拟文件类型", + "Menu:VirtualFileExplorer": "虚拟文件资源管理器", + "LastUpdateTime": "最后更新时间", + "VirtualFileName": "虚拟文件名", + "FileContent": "文件内容", + "Size": "尺寸", + "BackToRoot": "返回根目录", + "EmptyFileInfoList": "没有虚拟文件" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..a442261ae0 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json @@ -1,8 +1,8 @@ { "culture": "zh-Hans", "texts": { - "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Title": "欢迎光临", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..8e05aaf1e7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..8e05aaf1e7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..a442261ae0 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json @@ -1,8 +1,8 @@ { "culture": "zh-Hans", "texts": { - "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Title": "欢迎光临", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..8e05aaf1e7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..8e05aaf1e7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json index 6a66abeb9c..8e05aaf1e7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是ABP框架的极简单层应用程序启动模板.", + "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", "Menu:Home": "首页" } -} +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json index 23790bde50..65828f39b2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json @@ -1,8 +1,8 @@ { - "culture": "zh-Hans", - "texts": { - "Menu:Home": "首页", - "Welcome": "欢迎", - "LongWelcomeMessage": "欢迎来到该应用程序. 这是一个基于ABP框架的启动项目. 有关更多信息, 请访问 abp.io." - } - } \ No newline at end of file + "culture": "zh-Hans", + "texts": { + "Menu:Home": "首页", + "Welcome": "欢迎", + "LongWelcomeMessage": "欢迎使用本应用程序。这是一个基于 ABP 框架的启动项目。更多信息,请访问 abp.io。" + } +} \ No newline at end of file diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json index 12390e11fe..b3ba618dcd 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/zh-Hans.json @@ -2,6 +2,6 @@ "culture": "zh-Hans", "texts": { "MyAccount": "我的账户", - "SamplePageMessage": "MyProjectName模块的示例页面" + "SamplePageMessage": "MyProjectName 模块的示例页面" } } \ No newline at end of file From 3a2326984ef8febd91ede6a627bd5675e84e369f Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 1 Jan 2024 11:29:00 +0800 Subject: [PATCH 16/88] Only check if there are more than or equal to 4 numbers. --- .../Volo/Abp/Identity/IdentityUserManager.cs | 44 +++++++++++++++---- .../Abp/Identity/IdentityUserManager_Tests.cs | 6 +++ 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index 33c3c7baaf..a8e6a08ead 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Numerics; using System.Threading; using System.Threading.Tasks; using JetBrains.Annotations; @@ -444,12 +445,19 @@ public class IdentityUserManager : UserManager, IDomainService var userName = email.Split('@')[0]; - if (!Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() && !userName.All(Options.User.AllowedUserNameCharacters.Contains)) + if (await ValidateUserNameAsync(userName)) { - // The username contains not allowed characters. So, we are generating a random username. + // The username is valid. + return userName; + } + + if (Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace()) + { + // The AllowedUserNameCharacters is not set. So, we are generating a random username. + tryCount = 0; do { - var randomUserName = await GetRandomUserNameAsync(userName.Length); + var randomUserName = userName + RandomHelper.GetRandom(1000, 9999); if ( await ValidateUserNameAsync(randomUserName)) { return randomUserName; @@ -457,18 +465,36 @@ public class IdentityUserManager : UserManager, IDomainService tryCount++; } while (tryCount < maxTryCount); } - else if (await ValidateUserNameAsync(userName)) + else if (!userName.All(Options.User.AllowedUserNameCharacters.Contains)) { - // The username is valid. - return userName; + // The username contains not allowed characters. So, we are generating a random username. + do + { + var randomUserName = await GetRandomUserNameAsync(userName.Length); + if ( await ValidateUserNameAsync(randomUserName)) + { + return randomUserName; + } + tryCount++; + } while (tryCount < maxTryCount); } - else if (Options.User.AllowedUserNameCharacters.IsNullOrWhiteSpace() || "0123456789".All(Options.User.AllowedUserNameCharacters.Contains)) + else if (Options.User.AllowedUserNameCharacters.Where(char.IsDigit).Distinct().Count() >= 4) { - // The AllowedUserNameCharacters includes numbers. So, we are generating 4 random numbers and appending to the username. + // The AllowedUserNameCharacters includes 4 numbers. So, we are generating 4 random numbers and appending to the username. + var numbers = Options.User.AllowedUserNameCharacters.Where(char.IsDigit).OrderBy(x => Guid.NewGuid()).Take(4).ToArray(); + var minArray = numbers.OrderBy(x => x).ToArray(); + if (minArray[0] == '0') + { + var secondItem = minArray[1]; + minArray[0] = secondItem; + minArray[1] = '0'; + } + var min = int.Parse(new string(minArray)); + var max = int.Parse(new string(numbers.OrderByDescending(x => x).ToArray())); tryCount = 0; do { - var randomUserName = userName + RandomHelper.GetRandom(1000, 9999); + var randomUserName = userName + RandomHelper.GetRandom(min, max); if ( await ValidateUserNameAsync(randomUserName)) { return randomUserName; diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs index 52f50fba1d..da26de3e3d 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs @@ -437,6 +437,12 @@ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase username.ShouldContain("admin"); Regex.IsMatch(username, @"\d{4}$").ShouldBeTrue(); + _identityUserManager.Options.User.AllowedUserNameCharacters = "admin01234"; + username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); + username.Length.ShouldBe(9); //admin and random 4 numbers + username.ShouldContain("admin"); + Regex.IsMatch(username, @"[0-4]{3}$").ShouldBeTrue(); + _identityUserManager.Options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyz"; username = await _identityUserManager.GetUserNameFromEmailAsync("admin@abp.io"); username.Length.ShouldBe(9); //admin and random 4 characters From 3acc20df7fb9f6ba33397bf1327b9ed05ba382bc Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 1 Jan 2024 17:48:27 +0800 Subject: [PATCH 17/88] Improve --- .../Localization/Resources/zh-Hans.json | 2 +- .../Admin/Localization/Resources/zh-Hans.json | 118 +++++------ .../Admin/Localization/Resources/zh-Hant.json | 2 +- .../Base/Localization/Resources/zh-Hans.json | 72 +++---- .../Blog/Localization/Resources/zh-Hans.json | 2 +- .../Localization/Resources/zh-Hans.json | 190 ++++++++--------- .../Localization/Resources/zh-Hant.json | 6 +- .../Docs/Localization/Resources/zh-Hans.json | 2 +- .../Www/Localization/Resources/zh-Hans.json | 156 +++++++------- .../Www/Localization/Resources/zh-Hant.json | 2 +- .../UI/MultiTenancy/Localization/zh-Hans.json | 2 +- .../Authorization/Localization/zh-Hans.json | 6 +- .../Abp/Emailing/Localization/zh-Hans.json | 34 +-- .../Abp/Features/Localization/zh-Hans.json | 6 +- .../Volo/Abp/Ldap/Localization/zh-Hans.json | 12 +- .../MultiTenancy/Localization/zh-Hans.json | 2 +- .../Localization/Resource/zh-Hans.json | 2 +- .../Localization/Resources/AbpUi/zh-Hans.json | 66 +++--- .../Abp/Validation/Localization/zh-Hans.json | 64 +++--- .../Mvc/Localization/Resource/zh-Hans.json | 4 +- .../Abp/Emailing/Localization/zh-Hans.json | 2 +- .../Volo/Abp/Http/Localization/zh-Hans.json | 2 +- .../Base/CountryNames/zh-Hans.json | 2 +- .../Base/Validation/zh-Hans.json | 14 +- .../TestResources/Source/zh-Hans.json | 12 +- .../TextTemplating/Localization/zh-Hans.json | 2 +- .../Localization/Resources/zh-Hans.json | 10 +- .../AuditLogging/Localization/zh-Hans.json | 28 +-- .../Localization/Resources/zh-Hans.json | 92 ++++----- .../Localization/Resources/zh-Hans.json | 66 +++--- .../Docs/ApplicationContracts/zh-Hans.json | 56 ++--- .../Docs/Localization/Domain/zh-Hans.json | 24 +-- .../Localization/Domain/zh-Hans.json | 6 +- .../Abp/Identity/Localization/zh-Hans.json | 194 +++++++++--------- .../Localization/Resources/zh-Hans.json | 16 +- .../Localization/OpenIddict/zh-Hans.json | 4 +- .../Localization/Domain/zh-Hans.json | 6 +- .../AbpSettingManagement/zh-Hans.json | 40 ++-- .../Localization/Resources/zh-Hans.json | 4 +- .../Localization/Resources/zh-Hans.json | 2 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 2 +- .../Localization/MyProjectName/zh-Hans.json | 2 +- .../Localization/MyProjectName/zh-Hans.json | 4 +- .../Localization/MyProjectName/zh-Hans.json | 2 +- .../Localization/MyProjectName/zh-Hans.json | 2 +- .../Localization/MyProjectName/zh-Hans.json | 2 +- 47 files changed, 675 insertions(+), 675 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json index 6639472368..4c3532a253 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json @@ -12,6 +12,6 @@ "CommunityWebSite": "ABP 社区网站", "ManageAccount": "我的账户 | ABP.IO", "ManageYourProfile": "管理您的个人资料", - "ReturnToApplication": "返回申请表" + "ReturnToApplication": "返回应用" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json index b30ba8a355..610f502118 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json @@ -9,73 +9,73 @@ "Permission:Enable": "启用", "Permission:EnableSendEmail": "启用发送电子邮件", "Permission:SendEmail": "发送电子邮件", - "Permission:NpmPackages": "NPM 软件包", - "Permission:NugetPackages": "Nuget 软件包", + "Permission:NpmPackages": "NPM 包", + "Permission:NugetPackages": "Nuget 包", "Permission:Maintenance": "维护", "Permission:Maintain": "维护", "Permission:ClearCaches": "清除缓存", "Permission:Modules": "模块", - "Permission:Packages": "套餐", + "Permission:Packages": "包", "Permission:Edit": "编辑", "Permission:Delete": "删除", "Permission:Create": "创建", - "Permission:Accounting": "会计", + "Permission:Accounting": "账单", "Permission:Accounting:Quotation": "报价", "Permission:Accounting:Invoice": "发票", "Menu:Organizations": "组织机构", - "Menu:Accounting": "会计", - "Menu:Packages": "套餐", + "Menu:Accounting": "账单", + "Menu:Packages": "包", "Menu:DiscountRequests": "折扣申请", - "NpmPackageDeletionWarningMessage": "此 NPM 软件包将被删除。你确认吗?", - "NugetPackageDeletionWarningMessage": "此 Nuget 软件包将被删除。你确认吗?", + "NpmPackageDeletionWarningMessage": "此 NPM 包将被删除。你确认吗?", + "NugetPackageDeletionWarningMessage": "此 Nuget 包将被删除。你确认吗?", "ModuleDeletionWarningMessage": "本模块将被删除。您确认吗?", "Name": "名称", "DisplayName": "显示名称", "ShortDescription": "简要说明", "NameFilter": "名称", "CreationTime": "创建时间", - "IsPro": "亲", + "IsPro": "是否为专业版", "IsFreeToActiveLicenseOwners": "免费提供给许可证所有者", "ShowOnModuleList": "显示在模块列表中", "EfCoreConfigureMethodName": "配置方法名称", - "IsProFilter": "亲", + "IsProFilter": "是否为专业版", "ApplicationType": "应用类型", "Target": "目标", "TargetFilter": "目标", "ModuleClass": "模块类", - "NugetPackageTarget.DomainShared": "共享域名", - "NugetPackageTarget.Domain": "域名", - "NugetPackageTarget.Application": "应用", - "NugetPackageTarget.ApplicationContracts": "应用合同", + "NugetPackageTarget.DomainShared": "Domain Shared", + "NugetPackageTarget.Domain": "Domain", + "NugetPackageTarget.Application": "Application", + "NugetPackageTarget.ApplicationContracts": "Application Contracts", "NugetPackageTarget.HttpApi": "Http Api", - "NugetPackageTarget.HttpApiClient": "Http Api 客户端", - "NugetPackageTarget.Web": "网络", - "NugetPackageTarget.EntityFrameworkCore": "DeleteAllEntityFramework Core", + "NugetPackageTarget.HttpApiClient": "Http Api Client", + "NugetPackageTarget.Web": "Web", + "NugetPackageTarget.EntityFrameworkCore": "EntityFramework Core", "NugetPackageTarget.MongoDB": "MongoDB", "Edit": "编辑", "Delete": "删除", "Refresh": "刷新", - "NpmPackages": "NPM 软件包", - "NugetPackages": "Nuget 软件包", - "NpmPackageCount": "故宫博物院软件包数量", - "NugetPackageCount": "Nuget 软件包计数", + "NpmPackages": "NPM 包", + "NugetPackages": "Nuget 包", + "NpmPackageCount": "NPM 包数量", + "NugetPackageCount": "Nuget 包数量", "Module": "模块", "ModuleInfo": "模块信息", - "CreateANpmPackage": "创建 NPM 软件包", + "CreateANpmPackage": "创建 NPM 包", "CreateAModule": "创建模块", - "CreateANugetPackage": "创建 Nuget 软件包", + "CreateANugetPackage": "创建 Nuget 包", "AddNew": "添加新内容", - "PackageAlreadyExist{0}": "已添加\"{0}\"软件包。", + "PackageAlreadyExist{0}": "已添加\"{0}\"包。", "ModuleAlreadyExist{0}": "已添加\"{0}\"模块。", "ClearCache": "清除缓存", "SuccessfullyCleared": "成功清除", - "Menu:NpmPackages": "NPM 软件包", + "Menu:NpmPackages": "NPM 包", "Menu:Modules": "模块", "Menu:Maintenance": "维护", - "Menu:NugetPackages": "Nuget 软件包", + "Menu:NugetPackages": "Nuget 包", "CreateAnOrganization": "创建组织", "Organizations": "组织机构", - "LongName": "长名", + "LongName": "完整名称", "LicenseType": "许可证类型", "MissingLicenseTypeField": "许可证类型字段为必填字段!", "LicenseStartTime": "许可证开始时间", @@ -95,7 +95,7 @@ "Computers": "计算机", "UniqueComputerId": "唯一的计算机 ID", "LastSeenDate": "最后出现日期", - "{0}Computer{1}WillBeRemovedFromRecords": "将从记录中删除 {0} ({1}) 的计算机", + "{0}Computer{1}WillBeRemovedFromRecords": "计算机 {0} ({1}) 将从记录中删除", "OrganizationDeletionWarningMessage": "组织将被删除", "DeletingLastOwnerWarningMessage": "一个组织必须至少有一个所有者!因此,您不能删除该所有者", "This{0}AlreadyExistInThisOrganization": "该{0}已经存在于该组织中", @@ -141,7 +141,7 @@ "Generate": "生成", "MissingQuantityField": "数量字段为必填字段!", "MissingPriceField": "价格字段为必填字段!", - "CodeUsageStatus": "现状", + "CodeUsageStatus": "状态", "Country": "国家", "DeveloperCount": "开发人员数量", "RequestCode": "申请代码", @@ -170,7 +170,7 @@ "UnlimitedQuestionCount": "问题数量不限", "Notes": "说明", "Menu:Community": "社区", - "Menu:Posts": "职位", + "Menu:Posts": "文章", "Wait": "等待", "Approve": "批准", "Reject": "拒绝", @@ -178,13 +178,13 @@ "Url": "网址", "Title": "标题", "ContentSource": "内容来源", - "Status": "现状", + "Status": "状态", "ReadPost": "阅读文章", - "PostHasBeenWaiting": "职位一直在等待", - "PostHasBeenApproved": "职位已获批准", + "PostHasBeenWaiting": "文章一直在等待", + "PostHasBeenApproved": "文章已获批准", "PostHasBeenRejected": "帖子已被拒绝", "Permission:Community": "社区", - "Permission:CommunityPost": "职位", + "Permission:CommunityPost": "文章", "Link": "链接", "Enum:ContentSource:0": "Github", "Enum:ContentSource:1": "外部", @@ -194,7 +194,7 @@ "Summary": "摘要", "AuthorName": "作者姓名", "CoverImage": "封面图片", - "RemoveCacheConfirmationMessage": "您确定删除了\"{0}\"职位的缓存吗?", + "RemoveCacheConfirmationMessage": "您确定删除了\"{0}\"文章的缓存吗?", "SuccessfullyRemoved": "成功清除", "RemoveCache": "删除缓存", "Language": "语言", @@ -213,7 +213,7 @@ "TotalAmount": "总金额", "Currency": "货币", "Gateway": "网关", - "State": "国家", + "State": "状态", "FailReason": "失败原因", "ReIndexAllPosts": "重新索引所有帖子", "ReIndexAllPostsConfirmationMessage": "您确定要重新索引所有帖子吗?", @@ -228,8 +228,8 @@ "ProjectName": "项目名称", "Username": "用户名", "Tool": "工具", - "Command": "指挥", - "UiFramework": "用户界面框架", + "Command": "命令", + "UiFramework": "UI框架", "Options": "选项", "CliAnalytics": "Cli 分析", "Reports": "报告", @@ -316,7 +316,7 @@ "Menu:TrialLicenses": "试用许可证", "TrialLicenses": "试用许可证", "UserNameFilter": "用户名", - "TrialLicenseStatusFilter": "现状", + "TrialLicenseStatusFilter": "状态", "TrialLicenseStartDateFilter": "开始日期", "TrialLicenseEndDateFilter": "结束日期", "FirstName": "姓名", @@ -349,7 +349,7 @@ "AdditionalDeveloperCount": "额外的开发人员数量", "LicensePrice": "许可证价格", "PurchaseDate": "购买日期", - "IsAbpBookDownloaded": "掌握 ABP》一书已下载?", + "IsAbpBookDownloaded": "掌握ABP图书已下载?", "IsMasteringAbpBookDownloadEnabled": "已启用 ABP 图书下载", "Permission:Accounting:CustomPaymentLinkGenerator": "自定义付款链接", "CustomPaymentLink": "自定义付款链接", @@ -368,16 +368,16 @@ "EventDeletionConfirmationMessage": "您确定要删除此事件吗?", "Enum:EventType:0": "社区讲座", "CreateAnEvent": "创建活动", - "Permission:CommunitySpeakers": "发言人", - "CreateASpeaker": "创建扬声器", - "Speakers": "发言人", + "Permission:CommunitySpeakers": "讲师", + "CreateASpeaker": "创建讲师", + "Speakers": "讲师", "Image": "图片", "GithubURL": "Github URL", - "SpeakerDeletionConfirmationMessage": "您确定要删除这个扬声器吗?", - "Menu:Speakers": "发言人", - "ChooseSpeakerImage": "选择扬声器图像...", - "SpeakerImage": "扬声器图像", - "AddSpeaker": "添加扬声器", + "SpeakerDeletionConfirmationMessage": "您确定要删除这个讲师吗?", + "Menu:Speakers": "讲师", + "ChooseSpeakerImage": "选择讲师图像...", + "SpeakerImage": "讲师图像", + "AddSpeaker": "添加讲师", "ShowPurchaseItemsOfOrganizations": "购买项目", "Enum:OrganizationPurchaseState:0": "未交付", "Enum:OrganizationPurchaseState:1": "已交付", @@ -410,13 +410,13 @@ "OverallDiscountText": "整体折扣文本", "SelectReport": "- 选择报告", "NoDataAvailable": "无数据", - "StatisticsOfCachedContents": "nuget.abp.io 缓存的 NuGet 软件包内容统计", + "StatisticsOfCachedContents": "nuget.abp.io 缓存的 NuGet 包内容统计", "Compact": "紧凑型", "EditSettings": "编辑设置", "CurrentEstimatedSize": "目前的预计规模", "CurrentEntryCount": "当前条目计数", - "TotalHits": "总点击数", - "TotalMisses": "失误总数", + "TotalHits": "命中量", + "TotalMisses": "未命中量", "NoResponseFrom": "没有答复", "ContentCacheSlidingExpirationByDay": "内容缓存按天滑动到期", "MaxDaysForCaching": "缓存最长天数", @@ -425,7 +425,7 @@ "NugetPackagesContentCache": "NuGet 内容缓存", "SlidingExpritionByDayInfo": "获取或设置缓存条目在多长时间内处于非活动状态(如未被访问)才会被删除。这不会使条目生命周期超出绝对过期时间。", "MaxDaysForCachingInfo": "获取或设置相对于现在的绝对到期时间。", - "CurrentEstimatedSizeInfo": "表示当前内存缓存中所有 NuGet 软件包内容大小的估计总和", + "CurrentEstimatedSizeInfo": "表示当前内存缓存中所有 NuGet 包内容大小的估计总和", "CurrentEntryCountInfo": "表示当前内存缓存中的实例数量。", "TotalHitsInfo": "表示缓存未命中的总数。缓存命中是指从缓存请求文件,而缓存能够满足该请求。", "TotalMissesInfo": "表示缓存点击总数。缓存未命中是指缓存中没有请求的内容。", @@ -433,14 +433,14 @@ "Caches": "缓存", "VersionHistories": "版本历史", "Version": "版本", - "PublishDate": "出版日期", + "PublishDate": "发布 日期", "IsStableVersion": "稳定版", "IsActive": "活跃", "NewVersion": "新版本", "VersionHistoryDeletionConfirmationMessage": "您确定要删除此版本吗?", "CreateAbpConsultantLogoInfo": "最大文件大小:1MB
支持的文件类型:jpg、jpeg、png、SVG、WebP{1}", "DomainDrivenDesign": "领域驱动设计", - "CrossCuttingConcerns": "横向关注问题", + "CrossCuttingConcerns": "横切关注点", "AbpCommunity": "ABP 社区", - "Footer_GithubStarCount": "{0} GitHub 上的星星", + "Footer_GithubStarCount": "{0} GitHub 上的 Star", "Footer_NugetDownloadCount": "{0} 在 NuGet 上下载", - "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的网络应用程序开发。不要重复自己,专注于自己的业务代码。", - "Layout_AbpFramework_MetaTitle": "ABP Framework | 面向 ASP.NET Core 的开源网络应用框架", + "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的Web应用程序开发。不要重复自己,专注于自己的业务代码。", + "Layout_AbpFramework_MetaTitle": "ABP Framework | 面向 ASP.NET Core 的开源Web应用框架", "CommunityTalks_CountdownDays": "天数", "CommunityTalks_CountdownHours": "小时", - "CommunityTalks_CountdownMinutes": "最小", - "CommunityTalks_CountdownSeconds": "Sec", + "CommunityTalks_CountdownMinutes": "分钟", + "CommunityTalks_CountdownSeconds": "秒", "SeePreviousEvents": "查看以往活动", "CookieConsent_Accept": "接受", "CookieConsent_Explanation_1": "我们使用 cookie 为您提供最佳的网站体验。", @@ -175,20 +175,20 @@ "GetYourDeal": "获得优惠", "BuyOrRenewLicense": "立即购买或更新许可证,可额外获得 2 个月的使用权!", "BuyOrRenewLicenseToGetExtra2Months": "立即购买或更新许可证,即可获得 2 个月的额外优惠!抓紧时间!⏰ 最后一天:{0}", - "HurryUp": "快点", + "HurryUp": "赶快下单!", "LastDay": "最后一天{0}", "BuyNewLicenseBetweenDatesToGetBenefit": "在{0}和{1}之间购买新许可证,可享受额外 2 个月的优惠!", "CheckAllCommunityTalks": "查看所有社区帖子", "ReadMore": "更多信息", "ContinueReading": "继续阅读", - "Post": "职位", + "Post": "帖子", "ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "探索 ABP 核心团队和 ABP 社区创建的内容。", "WelcomeFallCampaign": "欢迎秋季活动!", "GiveAwayForNewPurchases": "新购买的产品将获赠应用开发课堂培训!", "BlackFriday": "黑色 星期五 现有客户!", "CampaignBetweenDates": "从 {0}
到 {1}", - "SaveUpTo": "节省高达${0}K节省
高达${0}K", "ImplementingDDD": "实施领域驱动设计", "ExploreTheEBook": "探索电子书", "ExploreTheBook": "探索图书", @@ -204,8 +204,8 @@ "SocialMedia": "社交媒体", "Activity": "活动", "Type": "类型", - "Contribution": "捐款", - "WhoWeAre": "我们是谁", + "Contribution": "贡献", + "WhoWeAre": "关于我们", "Icons": "图标", "Url": "网址", "Icon": "图标", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/zh-Hans.json index 5bae9d4afc..0a7ba7b955 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "AbpTitle": "阅读所有博客文章", - "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的网络应用程序开发。不要重复自己,专注于自己的业务代码。", + "AbpDescription": "ABP 是一个开源应用程序框架,专注于基于 AspNet Core 的Web应用程序开发。不要重复自己,专注于自己的业务代码。", "AbpDefinition": "提供.NET开发、跨平台、ASP.NET应用程序模板、ABP相关新闻等内容的ABP博客..." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index a55b59862e..1ec0554fea 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -8,10 +8,10 @@ "DeveloperCount": "分配/开发商总数", "QuestionCount": "剩余/全部问题", "Unlimited": "无限制", - "Owners": "业主", - "Owner": "业主", + "Owners": "所有者", + "Owner": "所有者", "AddMember": "添加会员", - "AddNewOwner": "添加新业主", + "AddNewOwner": "添加新所有者", "AddNewDeveloper": "添加新开发人员", "UserName": "用户名", "Name": "名称", @@ -46,8 +46,8 @@ "NotOrganizationMember": "您不是任何组织的成员。", "UnsubscribeLicenseExpirationEmailSuccessTitle": "成功取消订阅", "UnsubscribeLicenseExpirationEmailSuccessMessage": "您将不再收到许可证到期提醒邮件。", - "IndexPageHeroSection": "完整的网络开发平台内置 框架", - "AbpCommercialShortDescription": "ABP Commercial 提供预建应用程序模块、快速应用程序开发工具、专业用户界面主题、优质支持等。", + "IndexPageHeroSection": "一个完整的web开发平台基于 框架", + "AbpCommercialShortDescription": "ABP Commercial 提供预建应用程序模块、快速应用程序开发工具、专业UI主题、优质支持等。", "LiveDemo": "现场演示", "LiveDemoLead": "{1}使用您的 ABP 帐户,{3}访问 abp.io。
或填写下表,立即创建实时演示。", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "已存在使用给定电子邮件地址的帐户:{0}
您可以使用您的账户登录,然后继续。", @@ -61,58 +61,58 @@ "Premium": "高级", "PremiumSupport": "高级支持", "PremiumForumSupport": "高级论坛支持", - "UI": "用户界面", + "UI": "UI", "Themes": "主题", "JoinOurNewsletter": "加入我们的时事通讯", "Send": "发送", "WhatIsABPFramework": "什么是 Abp 框架?", "OpenSourceBaseFramework": "开源基础框架", - "ABPFrameworkExplanation": "

ABP商业版基于ABP框架,ABP框架是面向ASP.NET Core的开源和社区驱动的网络应用程序框架。

ABP框架提供了出色的基础架构,可帮助您使用最佳实践编写可维护、可扩展和可测试的代码。学习曲线低、适应简单、开发舒适。", + "ABPFrameworkExplanation": "

ABP商业版基于ABP框架,ABP框架是面向ASP.NET Core的开源和社区驱动的Web程序框架。

ABP框架提供了出色的基础架构,可帮助您使用最佳实践编写可维护、可扩展和可测试的代码。学习曲线低、适应简单、开发舒适。", "Modular": "模块化", "MicroserviceCompatible": "兼容微服务", "DomainDrivenDesignInfrastructure": "领域驱动设计基础设施", "MultiTenancy": "多租户", "DistributedMessaging": "分布式信息传递", "DynamicProxying": "动态代理", - "BackgroundJobs": "背景工作", + "BackgroundJobs": "后台作业", "AuditLogging": "审计日志", "BLOBStoring": "BLOB 存储", - "BundlingMinification": "捆绑和最小化", + "BundlingMinification": "捆绑 & 压缩", "AdvancedLocalization": "高级本地化", "ManyMore": "更多", "ExploreTheABPFramework": "探索 ABP 框架", - "WhyUseTheABPCommercial": "为什么使用 ABP 商业网站?", - "WhyUseTheABPCommercialExplanation": "

构建企业级 Web 应用程序可能既复杂又耗时。

ABP Commercial 为所有基于 ASP.NET Core 的现代企业级解决方案提供了所需的完美基础架构。从设计到部署,整个开发周期都由 ABP 的内置功能和模块提供支持。", + "WhyUseTheABPCommercial": "为什么使用 ABP 商业版?", + "WhyUseTheABPCommercialExplanation": "

构建企业级的web应用程序可能复杂和耗时.

ABP商业版提供所有现代企业级基于ASP.NET Core的解决方案所需要的基础设施. 从设计到部署,整个开发生命周期都由ABP的内置功能和模块提供支持.

", "StartupTemplatesShortDescription": "启动模板可让您在几秒钟内快速启动项目。", - "UIFrameworksOptions": "用户界面框架选项;", + "UIFrameworksOptions": "UI框架选项;", "DatabaseProviderOptions": "数据库提供商选项;", "PreBuiltApplicationModules": "预建应用模块", "PreBuiltApplicationModulesShortDescription": "大多数常见的应用需求已作为可重复使用的模块为您开发。", "Account": "账户", "Blogging": "博客", - "Identity": "身份", - "IdentityServer": "身份服务器", - "Saas": "萨斯", + "Identity": "Identity", + "IdentityServer": "Identity Server", + "Saas": "Saas", "LanguageManagement": "语言管理", "TextTemplateManagement": "文本模板管理", "See All Modules": "查看所有模块", - "ABPSuite": "ABP 套房", - "AbpSuiteShortDescription": "ABP Suite 是 ABP 商业软件的补充工具。", - "AbpSuiteExplanation": "它能让你在几分钟内创建网页。它是一个 .NET Core Global 工具,可通过命令行安装。它可以创建一个新的 ABP 解决方案,并生成从数据库到前端的 CRUD 页面。", + "ABPSuite": "ABP Suite", + "AbpSuiteShortDescription": "ABP Suite 是 ABP 商业软件的辅助工具。", + "AbpSuiteExplanation": "它能让你在几分钟内创建web页面。它是一个 .NET Core Global 工具,可通过命令行安装。它可以创建一个新的 ABP 解决方案,并生成从数据库到前端的 CRUD 页面。", "Details": "详细信息", "LeptonTheme": "Lepton 主题", - "ProfessionalModernUIThemes": "专业、现代的用户界面主题", + "ProfessionalModernUIThemes": "专业、现代的UI主题", "LeptonThemeExplanation": "Lepton 提供各种 Bootstrap 管理主题,为任何需要管理仪表板的项目奠定了坚实的基础。", "DefaultTheme": "默认主题", - "MaterialTheme": "材料主题", - "Default2Theme": "默认 2 主题", + "MaterialTheme": "Material主题", + "Default2Theme": "默认主题2", "DarkTheme": "深色主题", "DarkBlueTheme": "深蓝色主题", - "LightTheme": "灯光主题", + "LightTheme": "浅色主题", "ProudToWorkWith": "为能与我们合作而自豪", "OurConsumers": "全球 70 多个国家数以千计的企业和开发商信赖 ABP Commercial。", "JoinOurConsumers": "加入他们,快速打造令人惊叹的产品。", - "AdditionalServicesExplanation": "您需要额外或定制服务吗? 我们和我们的合作伙伴可以提供:我们和我们的合作伙伴可以提供:", "CustomProjectDevelopment": "定制项目开发", "CustomProjectDevelopmentExplanation": "为您的定制项目提供专门的开发人员。", "PortingExistingProjects": "移植现有项目", @@ -141,14 +141,14 @@ "WeWillReplyYou": "我们收到了您的留言,将尽快与您联系。", "GoHome": "回家", "CreateLiveDemo": "创建实时演示", - "CreateLiveDemoDescription": "提交表格后,您将收到一封包含演示链接的电子邮件。", + "CreateLiveDemoDescription": "提交表单后,您将收到一封包含演示链接的电子邮件。", "RegisterToTheNewsletter": "注册时事通讯,以接收有关 ABP.IO 的信息,包括新发布的信息等。", "EnterYourEmailOrLogin": "输入您的电子邮件地址以创建演示版,或 使用现有帐户登录。", "ApplicationTemplate": "申请模板", - "ApplicationTemplateExplanation": "应用程序启动模板用于创建新的网络应用程序。", + "ApplicationTemplateExplanation": "应用程序启动模板用于创建新的Web应用程序。", "EfCoreProvider": "实体框架(支持 SQL Server、MySQL、PostgreSQL、Oracle 及其他)", "AlreadyIncludedInTemplateModules": "本模板已包含并配置了以下模块:", - "ApplicationTemplateArchitecture": "该应用程序模板还支持分层架构,其中用户界面层、应用程序接口层和身份验证服务是物理分离的。", + "ApplicationTemplateArchitecture": "该应用程序模板还支持分层架构,其中UI层、应用程序接口层和身份验证服务是物理分离的。", "SeeTheGuideOrGoToTheLiveDemo": "请查看开发人员指南,了解有关此模板的技术信息,或访问实时演示。", "DeveloperGuide": "开发人员指南", "ModuleTemplate": "模块模板", @@ -165,19 +165,19 @@ "WhatIsTheABPCommercial": "ABP Commercial 是什么?", "WhatAreDifferencesThanAbpFramework": "开源 ABP 框架与 ABP 商业版之间有哪些区别?", "AbpCommercialMetaTitle": "{0}| ABP 商业", - "AbpCommercialMetaDescription": "基于 ABP 框架的综合网站开发平台,提供预建模块、启动模板、快速开发工具、专业用户界面主题和高级支持。", + "AbpCommercialMetaDescription": "基于 ABP 框架的综合网站开发平台,提供预建模块、启动模板、快速开发工具、专业UI主题和高级支持。", "ABPCommercialExplanation": "ABP 商业版是建立在开源 ABP 框架之上的一套高级模块、工具、主题和服务。ABP 商业版由 ABP 框架背后的同一团队开发和支持。", "WhatAreDifferencesThanABPFrameworkExplanation": "

ABP 框架是适用于 ASP.NET Core 的模块化、可主题化、微服务兼容的应用程序开发框架。它提供了完整的架构和强大的基础架构,让您可以专注于自己的业务代码,而不必为每个新项目重复自己的工作。它基于软件开发的最佳实践和您已经熟悉的流行工具。

ABP 框架是完全免费、开源和社区驱动的。它还提供免费主题和一些预建模块(如身份管理和租户管理)。", "VisitTheFrameworkVSCommercialDocument": "请访问以下链接了解更多信息 {1}", "ABPCommercialFollowingBenefits": "ABP Commercial 在 ABP 框架的基础上增加了以下优势:", "Professional": "专业人员", - "UIThemes": "用户界面主题", + "UIThemes": "UI主题", "EnterpriseModules": "企业就绪、功能丰富的预建 应用模块(例如身份服务器管理、SaaS 管理、语言管理)", "ToolingToSupport": "支持您提高开发效率的工具(例如 ABP Suite)", "PremiumSupportLink": "Premium 支持", "WhatDoIDownloadABPCommercial": "购买 ABP 商业版时,我可以下载什么?", "CreateUnlimitedSolutions": "一旦您购买了 ABP 商业许可证,您就可以创建无限制的解决方案,如文档中所述。", - "ABPCommercialSolutionExplanation": "创建新应用程序时,系统会根据您的偏好为您提供一个 Visual Studio 解决方案(启动模板)。下载的解决方案已为您安装和配置了商业模块和主题。您可以移除预安装的模块,也可以根据需要添加其他模块。所有模块和主题默认使用 NuGet/NPM 软件包。", + "ABPCommercialSolutionExplanation": "创建新应用程序时,系统会根据您的偏好为您提供一个 Visual Studio 解决方案(启动模板)。下载的解决方案已为您安装和配置了商业模块和主题。您可以移除预安装的模块,也可以根据需要添加其他模块。所有模块和主题默认使用 NuGet/NPM 包。", "StartDevelopWithTutorials": "下载的解决方案具有良好的架构和文档。您可以根据教程开始开发自己的业务代码。", "TryTheCommercialDemo": "您可以尝试 Live Demo 查看使用 ABP 商业启动模板创建的示例应用程序。", "HowManyProducts": "我可以使用 ABP 商业版构建多少种不同的产品/解决方案?", @@ -195,7 +195,7 @@ "IsSourceCodeIncluded": "我的许可证是否包括商业模块和主题的源代码?", "IsSourceCodeIncludedExplanation1": "取决于您购买的许可证类型:", "IsSourceCodeIncludedExplanation2": "团队:您的解决方案将模块和主题作为 NuGet 和 NPM 包使用。它不包括它们的源代码。这样,只要有新版本,您就可以轻松升级这些模块和主题。但是,您无法获得这些模块和主题的源代码。", - "IsSourceCodeIncludedExplanation3": "商业/企业:除了团队许可证外,您还可以下载任何模块或主题的源代码。您甚至可以移除特定模块的 NuGet/NPM 软件包引用,并将其源代码直接添加到您的解决方案中,以对其进行完全更改。", + "IsSourceCodeIncludedExplanation3": "商业/企业:除了团队许可证外,您还可以下载任何模块或主题的源代码。您甚至可以移除特定模块的 NuGet/NPM 包引用,并将其源代码直接添加到您的解决方案中,以对其进行完全更改。", "IsSourceCodeIncludedExplanation4": "

在您的解决方案中包含一个模块的源代码可使您最大程度地自由定制该模块。

所有许可证均不包含 ABP Suite 源代码,这是一种外部工具,可为您生成代码并协助您进行开发。

请查看 计划与定价页面,了解许可证类型之间的其他区别。", "ChangingDevelopers": "将来我可以更换组织的注册开发人员吗?", "ChangingDevelopersExplanation": "除了在许可证中添加新的开发人员外,您还可以更改现有的开发人员(您可以删除一个开发人员,然后在同一席位上添加一个新的开发人员),而无需支付任何额外费用。", @@ -216,13 +216,13 @@ "DoYouAcceptBankWireTransfer": "你们接受银行电汇吗?", "DoYouAcceptBankWireTransferExplanation": "是的,我们接受银行电汇。
通过银行汇款支付许可证费用后,请将收据和申请的许可证类型发送至 accounting@volosoft.com。
我们的国际银行账户信息:", "HowToUpgrade": "新版本推出后,如何升级现有应用程序?", - "HowToUpgradeExplanation1": "使用 ABP Commercial 创建新应用程序时,所有模块和主题都作为 NuGet 和 NPM 包使用。因此,当新版本可用时,您可以轻松升级软件包。", - "HowToUpgradeExplanation2": "除了标准的 NuGet/NPM 升级外,ABP CLI 还提供了一个更新命令,可自动查找并升级解决方案中所有与 ABP 相关的软件包。", + "HowToUpgradeExplanation1": "使用 ABP Commercial 创建新应用程序时,所有模块和主题都作为 NuGet 和 NPM 包使用。因此,当新版本可用时,您可以轻松升级包。", + "HowToUpgradeExplanation2": "除了标准的 NuGet/NPM 升级外,ABP CLI 还提供了一个更新命令,可自动查找并升级解决方案中所有与 ABP 相关的包。", "DatabaseSupport": "支持哪些数据库系统?", "DatabaseSupportExplanation": "ABP 框架本身与数据库无关,可与任何数据库提供商协同工作。请查看数据访问文档,了解当前实施的提供商列表。", - "UISupport": "支持哪些用户界面框架?", + "UISupport": "支持哪些UI框架?", "Supported": "支持", - "UISupportExplanation": "ABP 框架本身与用户界面框架无关,可与任何用户界面框架配合使用。然而,启动模板、模块用户界面和主题并未针对所有用户界面框架实施。请查看入门文档,了解最新的用户界面选项列表。", + "UISupportExplanation": "ABP 框架本身与UI框架无关,可与任何UI框架配合使用。然而,启动模板、模块UI和主题并未针对所有UI框架实施。请查看入门文档,了解最新的UI选项列表。", "MicroserviceSupport": "它支持微服务架构吗?", "MicroserviceSupportExplanation1": "ABP 框架的主要目标之一是为创建微服务解决方案提供便捷的基础架构。请查看微服务架构文档,了解它如何帮助创建微服务系统。", "MicroserviceSupportExplanation2": "所有 ABP 商业模块都是按照模块开发最佳实践文档设计的,以支持微服务部署方案(具有自己的应用程序接口和数据库)。", @@ -231,7 +231,7 @@ "MicroserviceSupportExplanation5": "然而,微服务系统是一种解决方案,每种解决方案都会有不同的要求、网络拓扑结构、通信场景、验证可能性、数据库分片/分区决策、运行时配置、第三方系统集成等等。", "MicroserviceSupportExplanation6": "ABP Framework 和 ABP Commercial 为微服务场景提供基础架构、微服务兼容模块、示例和文档,帮助您构建自己的解决方案。但不要指望直接下载为你预先构建的梦想解决方案。您需要了解它,并根据自己的需求将特定部分整合在一起。", "WhereCanIDownloadSourceCode": "在哪里可以下载源代码?", - "WhereCanIDownloadSourceCodeExplanation": "您可以通过 ABP Suite 或 ABP CLI 下载所有 ABP 模块、Angular 软件包和主题的源代码。查看 如何下载源代码?", + "WhereCanIDownloadSourceCodeExplanation": "您可以通过 ABP Suite 或 ABP CLI 下载所有 ABP 模块、Angular 包和主题的源代码。查看 如何下载源代码?", "ComputerLimitation": "开发 ABP 时,开发人员可以登录多少台计算机?", "ComputerLimitationExplanation": "我们特别允许每位个人/授权开发者使用{0}台计算机。如果开发人员需要在第三台机器上开发 ABP 商业产品,应向 license@abp.io 发送电子邮件说明情况,我们将在系统中进行适当分配。", "RefundPolicy": "你们有退款政策吗?", @@ -246,28 +246,28 @@ "SupportExplanation": "ABP 商业许可证由 ABP 框架专家组成的团队提供高级论坛支持。", "PrivateTicket": "私人票务", "PrivateTicketExplanation": "企业许可证还包括通过电子邮件和票据系统提供的私人支持。", - "AbpSuiteExplanation1": "ABP Suite 可让您在几分钟内创建网页。它是一个 .NET Core 全局工具,可通过命令行安装。", + "AbpSuiteExplanation1": "ABP Suite 可让您在几分钟内创建web页面。它是一个 .NET Core 全局工具,可通过命令行安装。", "AbpSuiteExplanation2": "它可以创建新的 ABP 解决方案,并生成从数据库到前端的 CRUD 页面。有关技术概述,请参阅文档。", "FastEasy": "快速简便", - "AbpSuiteExplanation3": "ABP Suite 允许您轻松创建 CRUD 页面。你只需定义你的实体及其属性,剩下的就交给 ABP Suite 吧!ABP Suite 可在几秒钟内为您的 CRUD 页面生成所有必要的代码。它支持 Angular、MVC 和 Blazor 用户界面。", + "AbpSuiteExplanation3": "ABP Suite 允许您轻松创建 CRUD 页面。你只需定义你的实体及其属性,剩下的就交给 ABP Suite 吧!ABP Suite 可在几秒钟内为您的 CRUD 页面生成所有必要的代码。它支持 Angular、MVC 和 Blazor UI。", "RichOptions": "丰富的选项", - "AbpSuiteExplanation4": "ABP Suite 支持多种用户界面选项,如 Razor Pages 和 Angular 。它还支持多种数据库,如 MongoDB 和 EntityFramework Core 支持的所有数据库(MS SQL Server、Oracle、MySql、PostgreSQL 和 其他提供商...)。", + "AbpSuiteExplanation4": "ABP Suite 支持多种UI选项,如 Razor Pages 和 Angular 。它还支持多种数据库,如 MongoDB 和 EntityFramework Core 支持的所有数据库(MS SQL Server、Oracle、MySql、PostgreSQL 和 其他提供商...)。", "AbpSuiteExplanation5": "好在你不必担心这些选项。ABP Suite 可以理解您的项目类型,为您的项目生成代码,并将生成的代码放置在项目的正确位置。", "SourceCode": "源代码", "AbpSuiteExplanation6": "ABP Suite 为您生成源代码!它不会生成神奇的文件来生成网页。ABP 套件为 实体、资源库、应用程序服务、代码优先迁移、JavaScript/TypeScript 和 CSHTML/HTML 以及必要的接口生成源代码。ABP Suite 还根据软件开发的最佳实践生成代码,因此您不必担心生成代码的质量。", "AbpSuiteExplanation7": "由于您在正确的应用层中拥有生成的 CRUD 页面构建模块的源代码,因此您可以轻松修改源代码,并将您的自定义/业务逻辑注入到生成的代码中。", "CrossPlatform": "跨平台", - "AbpSuiteExplanation8": "ABP Suite 采用 .NET Core 构建,具有跨平台性。它在本地计算机上以网络应用程序的形式运行。您可以在Windows、Mac和Linux上运行它。", + "AbpSuiteExplanation8": "ABP Suite 采用 .NET Core 构建,具有跨平台性。它在本地计算机上以Web应用程序的形式运行。您可以在Windows、Mac和Linux上运行它。", "OtherFeatures": "其他功能", - "OtherFeatures1": "轻松更新解决方案中的 NuGet 和 NPM 软件包。", + "OtherFeatures1": "轻松更新解决方案中的 NuGet 和 NPM 包。", "OtherFeatures2": "从头开始重新生成已生成的页面。", "OtherFeatures3": "创造新的解决方案", "ThanksForCreatingProject": "您的项目已成功创建!", "HotToRunSolution": "如何运行您的解决方案?", "HotToRunSolutionExplanation": "查看入门文档,了解如何配置和运行解决方案。", "GettingStarted": "入门", - "WebAppDevTutorial": "网络应用程序开发教程", - "WebAppDevTutorialExplanation": "查看网络应用程序开发教程文档,了解逐步开发示例。", + "WebAppDevTutorial": "Web应用程序开发教程", + "WebAppDevTutorialExplanation": "查看Web应用程序开发教程文档,了解逐步开发示例。", "Document": "文件", "UsingABPSuiteToCURD": "使用 ABP 套件生成 CRUD 页面和工具", "SeeABPSuiteDocument": "查看 ABP 套件文档,了解 ABP 套件的用法。", @@ -288,7 +288,7 @@ "AdditionalDeveloperLicense": "额外的开发人员许可证", "ProjectCount": "项目计数", "AllProModules": "所有专业模块", - "AllProThemes": "所有专业主题", + "AllProThemes": "所有专所有者题", "AllProStartupTemplates": "所有专业启动模板", "SourceCodeOfAllModules": "所有模块的源代码", "SourceCodeOfAllThemes": "所有主题的源代码", @@ -367,7 +367,7 @@ "VolosoftMarketingInformationMessage": "我想了解有关企业和组织解决方案以及其他 Volosoft 产品和服务的信息、提示和优惠。", "VolosoftSharingInformationMessage": "我希望 Volosoft 与选定的合作伙伴共享我的信息,以便我能收到他们的产品和服务的相关信息。", "WeWillSendYouADownloadLink": "电子书下载链接已发送至 {0}。请检查您的收件箱、垃圾邮件箱!", - "InvalidFormInputs": "请输入表格中指定的有效信息。", + "InvalidFormInputs": "请输入表单中指定的有效信息。", "DDDBookEmailBody": "谢谢。
要下载您的书籍,请点击此处。", "StartFree": "免费启动", "FreeTrial": "免费试用", @@ -409,24 +409,24 @@ "CreateNewOrganization": "创建新组织", "RenewLicenseEarly": "如果我提前更新执照,我可以获得全年的执照吗?", "RenewLicenseEarylExplanation": "如果您在许可证到期日之前更新许可证,许可证到期日将增加 1 年。例如,如果您的许可证到期日为 {0}-06-06,而您在 {0}-01-01 续费,则新的许可证到期日为 {1}-06-06。", - "OpenSourceWebApplication": "开源网络应用程序", + "OpenSourceWebApplication": "开源Web应用程序", "CompleteWebDevelopment": "完整的网络开发", - "ABPFrameworkDescription": "ABP Framework 是一个完整的基础架构,可通过遵循软件开发的最佳实践和惯例来创建现代网络应用程序。", + "ABPFrameworkDescription": "ABP Framework 是一个完整的基础架构,可通过遵循软件开发的最佳实践和约定来创建现代Web应用程序。", "CommunityDescription": "分享您使用 ABP 框架的经验!", "GetStarted": "开始", "Views": "观点", "LatestPosts": "最新文章", "PreBuiltApplication": "预建应用程序", "DatabaseProviders": "数据库提供商", - "UIFrameworks": "用户界面框架", + "UIFrameworks": "UI框架", "UsefulLinks": "实用链接", "Platform": "平台", "CoolestCompaniesUseABPCommercial": "最酷的公司已经在使用 ABP商业软件。", - "UserInterface": "用户界面", + "UserInterface": "UI", "APIGateway": "应用程序接口网关", "Microservice": "微服务", "Database": "数据库", - "Architecture": "建筑学", + "Architecture": "架构", "MicroserviceArchitectureExplanation": "这是一个完整的解决方案架构,由多个应用程序、API 网关、微服务和数据库组成,利用最新技术构建可扩展的微服务解决方案。", "BusinessLogic": "业务逻辑", "DataAccessLayer": "数据访问层", @@ -434,7 +434,7 @@ "ModularArchitectureExplanation": "该初创企业模板提供了一个分层、模块化和基于 DDD 的解决方案架构,以构建一个简洁、可维护的代码库。", "SeeDetails": "查看详情", "SeeDocumentation": "查看文档", - "Bs5Compatible": "兼容 Bootstrap 5 的专业主题,非常适合您的管理网站。", + "Bs5Compatible": "兼容 Bootstrap 5 的专所有者题,非常适合您的管理网站。", "LeptonXTheme": "LeptonX 主题", "LeptonXDark": "LeptonX Dark", "LeptonXLight": "LeptonX Light", @@ -467,7 +467,7 @@ "OrganizationName": "组织名称", "AddDevelopers": "添加开发人员", "StartDevelopment": "启动开发", - "CreateAndRunApplicationUsingStartupTemplate": "了解如何使用 ABP 商业启动模板创建和运行新的网络应用程序。", + "CreateAndRunApplicationUsingStartupTemplate": "了解如何使用 ABP 商业启动模板创建和运行新的Web应用程序。", "CommunityDescription2": "社区.abp.io是人们分享 ABP 相关文章的地方。搜索文章、教程、代码示例、案例研究,并结识与您志同道合的朋友。", "UseABPSuiteExplanation": "使用 ABP Suite 下载模块和主题的源代码。", "ManageModulesWithSuite": "您还可以使用套件管理 ABP 模块。", @@ -476,8 +476,8 @@ "SeeLess": "查看更少", "LayeredSolutionStructure": "分层解决方案结构", "LayeredSolutionStructureExplanation": "该解决方案基于领域驱动设计原则和模式进行分层,将业务逻辑与基础架构和集成隔离开来,最大限度地提高代码的可维护性和可重用性。ABP 框架已经提供了抽象概念、基类和指南,以便为您的应用程序真正实现领域驱动设计。", - "MultipleUIOptions": "多种用户界面选项", - "MultipleUIOptionsExplanation": "我们喜欢以不同的方式创建用户界面。本启动解决方案为您的业务应用程序提供三种不同的用户界面框架选项。", + "MultipleUIOptions": "多种UI选项", + "MultipleUIOptionsExplanation": "我们喜欢以不同的方式创建UI。本启动解决方案为您的业务应用程序提供三种不同的UI框架选项。", "MultipleDatabaseOptions": "多种数据库选项", "MultipleDatabaseOptionsExplanation": "你有两种数据库提供程序可供选择(此外,你还可以在一个应用程序中同时使用两种数据库提供程序)。使用 Entity Framework Core 可以处理任何关系数据库,当需要编写底层查询以提高性能时,还可以选择使用 Dapper。如果需要使用基于文档的 NoSQL 数据库,MongoDB 是另一个选择。虽然这些提供程序都经过了很好的集成、抽象和预配置,但您实际上可以与任何可以使用.NET的数据库系统进行交互。", "ModularArchitectureExplanation2": "模块化是 ABP.IO 平台的一等公民。所有应用功能都被分割成独立的可选模块。启动解决方案已经预装了基本的ABP商业模块。您还可以创建自己的模块,为自己的应用程序构建模块化系统。", @@ -489,10 +489,10 @@ "PreIntegratedToolsExplanation": "该解决方案已集成到行业标准工具和技术中,同时您还可以随时更改它们并集成到您最喜欢的工具中。", "SingleSignOnAuthenticationServer": "单点登录验证服务器", "SingleSignOnAuthenticationServerExplanation": "该解决方案有一个身份验证服务器应用程序,其他应用程序将其用作具有 API 访问管理功能的单点登录服务器。它以 IdentityServer 为基础。", - "WebAppsWithGateways": "2 个网络应用程序和 2 个应用程序接口网关", - "WebAppsWithGatewaysExplanation": "该解决方案包含两个网络应用程序,每个程序都有一个专用的 API 网关(BFF - Backend For Frontend 模式)。", + "WebAppsWithGateways": "2 个Web应用程序和 2 个应用程序接口网关", + "WebAppsWithGatewaysExplanation": "该解决方案包含两个Web应用程序,每个程序都有一个专用的 API 网关(BFF - Backend For Frontend 模式)。", "BackOfficeApplication": "后台应用程序", - "BackOfficeApplicationExplanation": "系统的实际网络应用程序,具有多种用户界面框架选项。您可以创建任何类型的业务应用程序。", + "BackOfficeApplicationExplanation": "系统的实际Web应用程序,具有多种UI框架选项。您可以创建任何类型的业务应用程序。", "LandingWebsite": "登陆网站", "LandingWebsiteExplanation": "通用登陆/公共网站,可用于多种用途,如介绍公司、销售产品等。", "ABPFrameworkEBook": "掌握 ABP 框架》电子书", @@ -506,7 +506,7 @@ "GetInTouchUs": "联系我们", "ForMoreInformationClickHere": "如需了解更多信息,请点击此处。", "ForMoreInformationClickHereByClass": "更多信息,请点击 此处。", - "IsGetOnboardingTraining": "您想参加入职和网络应用程序开发培训吗?", + "IsGetOnboardingTraining": "您想参加入职和Web应用程序开发培训吗?", "OnboardingWebApplicationDevelopmentTrainingMessage": "要安排培训日程,请在创建组织后联系 {0}", "CustomPurchaseMessage": "下一步,请点击 {0} 联系我们。", "Note": "备注", @@ -545,7 +545,7 @@ "Pricing_Page_Testimonial_6": "ABP Framework 是一个很好的框架,但需要时间来理解它所使用的不同层、类和库(尤其是 ABP)。我花了很多时间阅读代码库,但 ABP Commercial 节省了我们创建项目专业实体(AR)和与每个实体链接的资源库的时间。我还喜欢 ABP 中使用的非常成熟的方法;我们知道它是基于 DDD 和 monolith 的。", "Pricing_Page_Testimonial_7": "作为一家初创公司,我们需要快速迭代,并尽量少花时间在模板和非核心功能上。\n我们的工程师从经验丰富的工程师到初级工程师都有,我们需要一种共识和一种分享技术和领域知识的方式,ABP 凭借其出色的指南和文档让我们做到了这一点。\n由于 ABP 提供了开箱即用的功能,所以有些事情我们无需担心。\nABP帮助我们简化了快速原型设计和开发,从功能开始到投入生产不到4周时间。ABP的所有高级功能都包含在许可证中,在软件工程方面为我们提供了 \"盒式启动\"。", "Pricing_Page_Testimonial_8": "我会向所有希望扩大客户可用产品范围的人推荐 ABP commercial。当需要使用分布式企业环境(Angular、WPF、Win&Linux)时,ABP 的表现非常出色。除了他们的产品,我们还喜欢他们的支持,这让我们的工作变得更快、更轻松。我们已经知道,我们已经找到了未来的最佳合作伙伴,他们将支持我们拓展业务。", - "Pricing_Page_Testimonial_9": "我们公司只有两名员工,已经经营了 20 多年。\n就我们与 ABP Commercial 合作的经历而言,一位客户找到我们,要求我们在现代环境中开发一个新的人力资源应用程序,以取代他们使用了 25 年的 Access 应用程序。我们决定从桌面解决方案过渡到基于网络的解决方案。\n\n当时,我们对网络应用程序和.NET知之甚少,但我们偶然发现了ABP商业软件,在ABP框架、技术文档和ABP套件的帮助下,我们不仅能够按照客户的要求开发应用程序,还能在一年内成功地在.NET环境中工作。", + "Pricing_Page_Testimonial_9": "我们公司只有两名员工,已经经营了 20 多年。\n就我们与 ABP Commercial 合作的经历而言,一位客户找到我们,要求我们在现代环境中开发一个新的人力资源应用程序,以取代他们使用了 25 年的 Access 应用程序。我们决定从桌面解决方案过渡到基于网络的解决方案。\n\n当时,我们对Web应用程序和.NET知之甚少,但我们偶然发现了ABP商业软件,在ABP框架、技术文档和ABP套件的帮助下,我们不仅能够按照客户的要求开发应用程序,还能在一年内成功地在.NET环境中工作。", "AbpBookDownloadArea_ClaimYourEBook": "申请您的 《掌握 ABP 框架》 电子书", "AddMemberModal_Warning_1": "如果系统中不存在您要添加的用户名,请让您的团队成员在{0}上注册,并与您共享他/她的用户名。", "MyOrganizations_Detail_WelcomeMessage": "欢迎贵组织,{0}", @@ -556,7 +556,7 @@ "MyOrganizations_Detail_LicenseStartAndExpiryDate": "许可证开始日期 - 到期日期", "MyOrganizations_Detail_OwnerRightInfo": "您正在使用{1}所有者权利中的{0}项权利。", "MyOrganizations_Detail_CopyApiKey": "复制密钥", - "MyOrganizations_Detail_ApiKeyDescription": "API 密钥是 {1}. 上托管的 PRO 软件包的标记。", + "MyOrganizations_Detail_ApiKeyDescription": "API 密钥是 {1}. 上托管的 PRO 包的标记。", "MyOrganizations_Detail_YourPrivateNugetSource": "您的 NuGet 私有源是 {0}", "MyOrganizations_Detail_PrivateNugetSourceWarning": "此密钥会自动添加到 ABP 解决方案中的 NuGet.Config 中。请勿与未经授权的用户共享您的私人密钥!", "MyOrganizations_Detail_DeveloperSeatInfo": "您正在使用{1}个开发人员席位中的{0}个。", @@ -601,7 +601,7 @@ "PaymentSucceed_ViewOrganization": "点击此处查看组织", "Purchase_TotalAnnualPrice": "总计 (年费){0} {1} 每名开发人员", "Purchase_IncludedDeveloperInfo": "{0} {1} 包括在内。", @@ -633,10 +633,10 @@ "Faq_Page_OtherCurrenciesInfo": "有关其他货币,请参见 所有账户。", "ProjectCreatedSuccess_Page_Title": "您创建的项目", "ProjectCreatedSuccess_Page_Description": "您的 ABP 项目创建成功!", - "Suite_Page_Title": "ABP 套房", + "Suite_Page_Title": "ABP Suite", "Suite_Page_Description": "ABP 商业版提供快速应用程序开发工具,以提高开发人员的工作效率。ABP Suite 可让您轻松创建 CRUD 页面。", "Themes_Page_Title": "ABP 主题", - "Themes_Page_Description": "ABP Commercial 提供多种专业、现代的用户界面主题。创建免费演示,快速了解用户界面的外观。", + "Themes_Page_Description": "ABP Commercial 提供多种专业、现代的UI主题。创建免费演示,快速了解UI的外观。", "Tools_Page_Title": "快速应用开发工具", "Tools_Page_Description": "ABP 商业版提供快速应用程序开发工具,以提高开发人员的工作效率。ABP Suite 可让您轻松创建 CRUD 页面。", "DeveloperPrice": "开发商价格", @@ -653,19 +653,19 @@ "UpgradePaymentInfoSection_LicenseUpgradeDescription": "升级许可证后,您将升级到更高的许可证类型,从而获得更多好处。请参阅 许可证对照表,查看许可证类型之间的差异。", "Landing_Page_CustomerStories": "客户故事", "Landing_Page_OurGreatCustomers": "我们伟大的客户", - "Landing_Page_WebApplicationFramework": "网络应用程序框架", + "Landing_Page_WebApplicationFramework": "Web应用程序框架", "Landing_Page_WebDevelopmentPlatform": "网络开发平台", "Landing_Page_CompleteWebDevelopmentPlatform": "完整的网络开发平台", "Landing_Page_TryFreeDemo": "免费试用", - "Landing_Page_StartingPointForWebApplications": "基于 ASP.NET Core 的网络应用程序的起点!它基于 ABP 框架,可实现最佳网络开发。", - "Landing_Page_AbpProvidesSoftwareInfrastructure": "ABP Framework 提供软件基础架构,以最佳实践开发优秀的网络应用程序。", + "Landing_Page_StartingPointForWebApplications": "基于 ASP.NET Core 的Web应用程序的起点!它基于 ABP 框架,可实现最佳网络开发。", + "Landing_Page_AbpProvidesSoftwareInfrastructure": "ABP Framework 提供软件基础架构,以最佳实践开发优秀的Web应用程序。", "Landing_Page_MicroserviceCompatibleArchitecture": "微服务兼容架构", "Landing_Page_PreBuiltApplicationModulesAndThemes": "预建应用程序模块和主题", "Landing_Page_MultiTenantArchitecture": "多租户架构", - "Landing_Page_MultiTenancyDescription": "SaaS 应用程序变得简单!从数据库到用户界面都集成了多租户功能。", + "Landing_Page_MultiTenancyDescription": "SaaS 应用程序变得简单!从数据库到UI都集成了多租户功能。", "Landing_Page_DDDIntroduction": "基于 DDD 模式和原则进行设计和开发。为您的应用程序提供分层模型。", "Landing_Page_CrossCuttingConcernsInfo": "用于授权、验证、异常处理、缓存、审计日志、事务管理等的完整基础设施。", - "Landing_Page_PreBuiltApplicationModules": "预建应用模块,包括最常见的网络应用需求。", + "Landing_Page_PreBuiltApplicationModules": "预建应用模块,包括最常见的Web应用需求。", "Landing_Page_ChatModule": "聊天", "Landing_Page_DocsModule": "文件", "Landing_Page_FileManagementModule": "文件管理", @@ -681,13 +681,13 @@ "Landing_Page_AccountModuleDescription_2": "提供带有用户名和密码的 登录页面", "Landing_Page_AccountModuleDescription_3": "提供注册页面以创建新账户。", "Landing_Page_AccountModuleDescription_4": "提供忘记密码页面,以电子邮件形式发送密码重置链接。", - "Landing_Page_AccountModuleDescription_5": "通过用户界面提供电子邮件确认功能。", + "Landing_Page_AccountModuleDescription_5": "通过UI提供电子邮件确认功能。", "Landing_Page_AccountModuleDescription_6": "实施 双因素身份验证(短信和电子邮件)。", "Landing_Page_AccountModuleDescription_7": "执行 用户锁定(当在一定时间间隔内因无效凭证导致一定次数的登录失败时,在设定时间内锁定账户)。", - "Landing_Page_AccountModuleDescription_8": "实现 Identity Server 身份验证服务器用户界面和功能。", + "Landing_Page_AccountModuleDescription_8": "实现 Identity Server 身份验证服务器UI和功能。", "Landing_Page_AccountModuleDescription_9": "允许在多租户环境中在租户之间切换。", "Landing_Page_AccountModuleDescription_10": "允许更改应用程序的 UI 语言。", - "Landing_Page_AuditLoggingModuleDescription_1": "该模块为审计基础设施提供审计日志报告用户界面。允许搜索、过滤和显示审计日志条目和实体变更日志。", + "Landing_Page_AuditLoggingModuleDescription_1": "该模块为审计基础设施提供审计日志报告UI。允许搜索、过滤和显示审计日志条目和实体变更日志。", "Landing_Page_AuditLoggingModuleDescription_2": "审计日志条目包括每个客户请求的关键数据:", "Landing_Page_AuditLoggingModuleDescription_3": "URL、浏览器、IP 地址、客户端名称", "Landing_Page_AuditLoggingModuleDescription_4": "用户", @@ -761,10 +761,10 @@ "All": "全部", "Mvc": "MVC", "DataBaseProvider": "数据提供者", - "UIFramework": "用户界面框架", + "UIFramework": "UI框架", "LeptonXThemeForDashboard": "用于管理控制面板的 LeptonX 主题,由", "AbpPlatform": "ABP 平台", - "YouDeserveGoodUXUI": "您值得拥有良好的用户界面和更好的用户体验。ABP 的 LeptonX 主题就是为您服务的。", + "YouDeserveGoodUXUI": "您值得拥有良好的UI和更好的用户体验。ABP 的 LeptonX 主题就是为您服务的。", "ViewLiveDemo": "查看实时主题演示", "GetLeptonX": "立即获取 LeptonX", "SeeLeptonXDocumentation": "参见 LeptonX 文档", @@ -779,7 +779,7 @@ "YourMenuDescription": "根据需要自定义用户菜单上可直接点击的图标和下拉框。用户菜单可完全根据需要定制", "RtlSupport": "为您的语言提供 RTL 支持", "RtlSupportDescription": "LeptonX 主题支持 RTL 语言。语言选项在设置菜单中,您可以更改语言。", - "YourColors": "管理仪表板用户界面上的颜色", + "YourColors": "管理仪表板UI上的颜色", "YourColorsDescription": "LeptonX 主题可根据系统偏好进行设置,并提供仪表盘浅色主题、仪表盘深色主题和仪表盘半深色主题选项。", "ArrangeContentWidth": "轻松安排内容宽度", "ArrangeContentWidthDescription": "轻松更改内容区域的宽度。", @@ -857,7 +857,7 @@ "Enhancement": "增强", "Bug": "错误", "Feature": "特点", - "AllUIs": "所有用户界面", + "AllUIs": "所有UI", "MVC": "MVC", "BlazorServer": "Blazor 服务器", "MAUI": "毛伊岛", @@ -872,12 +872,12 @@ "SimpleMonolithApplicationTemplate": "简单的单体应用程序模板", "LayeredApplicationTemplate": "分层应用程序模板", "MicroserviceSolutionTemplate": "微服务解决方案模板", - "CreateEmptySolutionAndUseAbp": "或者创建一个新的空 .NET 解决方案,并自行安装 ABP NuGet 和 NPM 软件包。", - "CreatingSolutionWithMultipleOptions": "在创建新解决方案时,有多个用户界面和数据库选项。", - "UIFrameworkOptions": "用户界面框架选项", + "CreateEmptySolutionAndUseAbp": "或者创建一个新的空 .NET 解决方案,并自行安装 ABP NuGet 和 NPM 包。", + "CreatingSolutionWithMultipleOptions": "在创建新解决方案时,有多个UI和数据库选项。", + "UIFrameworkOptions": "UI框架选项", "DotnetSolutionWithoutDependency": "现在,您的本地计算机中就有了一个普通的 .NET 解决方案,它不依赖于云平台或外部服务。", "CheckTheDocumentForDetails": "详情请查看 {1} 文档。", - "UIAndDatabaseIndependent": "ABP 可与.NET 支持的任何用户界面和任何数据库提供程序协同工作。\n 不过,这些用户界面和数据库提供商都是预先集成的,并有完善的文档记录。", + "UIAndDatabaseIndependent": "ABP 可与.NET 支持的任何UI和任何数据库提供程序协同工作。\n 不过,这些UI和数据库提供商都是预先集成的,并有完善的文档记录。", "InstallAbpModules": "安装 ABP 模块", "DevelopYourSolution": "开发解决方案", "DeployAnywhere": "随时随地部署", @@ -912,7 +912,7 @@ "ExtraQuestionCreditsFaqExplanation": "可以。要购买额外的问题点数,请发送电子邮件至 info@abp.io 并注明贵组织的名称。以下是额外问题点数的价格表:

  • 50个问题包 999 美元
  • 25个问题包 625 美元
  • 15个问题包 450 美元
。", "AlreadyBetaTester": "您已经加入了测试版程序。", "AbpStudio": "ABP 工作室", - "AbpStudio_Description": "ABP Studio 仍在开发中。您可以填写下面的表格,成为首批用户之一。", + "AbpStudio_Description": "ABP Studio 仍在开发中。您可以填写下面的表单,成为首批用户之一。", "AbpStudio_Description1": "ABP Studio 是专为 ABP 开发人员设计的跨平台桌面应用程序。", "AbpStudio_Description2": "它与 ABP 框架集成得很好,旨在通过自动化、提供有关解决方案的见解,为您提供舒适的开发环境,使开发、运行和部署解决方案变得更加容易。", "AbpStudio_ComingSoon": "即将发布 计划测试版发布日期:计划测试版发布日期:2023年第四季度。", @@ -930,7 +930,7 @@ "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description3": "查看来自任何服务的所有HTTP 请求的所有详细信息。", "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description4": "在任何服务中实时查看异常详细信息,轻松进行筛选和搜索。", "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description5": "显示 应用程序日志,按日志级别过滤或按文本搜索。", - "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description6": "浏览应用程序的用户界面,而无需离开解决方案运行程序。", + "RunMultiApplicationOrMicroserviceSolutionsInABreeze_Description6": "浏览应用程序的UI,而无需离开解决方案运行程序。", "IntegrateToYourKubernetesCluster": "集成到 Kubernetes 集群", "IntegrateToYourKubernetesCluster_Description1": "将本地开发环境连接到本地或远程 Kubernetes 集群,该集群已运行您的微服务解决方案。", "IntegrateToYourKubernetesCluster_Description2": "使用 Kubernetes 中任何服务的服务名作为 DNS 访问这些服务,就像它们在本地计算机上运行一样。", @@ -970,9 +970,9 @@ "EngageAndRetainYourCustomersWithABPMobileApps_Description1": "您的客户希望随时随地管理他们的产品和订阅。这就要求企业创建移动应用程序,让客户能够快速、无缝地满足他们的要求。", "EngageAndRetainYourCustomersWithABPMobileApps_Description2": "使用 ABP 移动应用程序,您可以创建适用于 Android 和 iOS 的高质量原生移动应用程序......使用单一代码库,且不会降低安全性、质量或可扩展性。", "OneCodeBaseMultipleDevices": "一个代码库多种设备", - "OneCodeBaseMultipleDevices_Description": "ABP 移动应用程序是跨平台的。它们可在 iOS 和 Android 设备上安装和运行,并使用单一代码库适应不同的外形因素。开发人员只需创建一次用户界面和前端代码,无需为您要支持的每种设备调整代码。", + "OneCodeBaseMultipleDevices_Description": "ABP 移动应用程序是跨平台的。它们可在 iOS 和 Android 设备上安装和运行,并使用单一代码库适应不同的外形因素。开发人员只需创建一次UI和前端代码,无需为您要支持的每种设备调整代码。", "ComesWithTheSourceCode": "附带源代码", - "ComesWithTheSourceCode_Description": "移动应用程序提供源代码。您可以轻松定制应用程序的用户体验/用户界面,以符合品牌准则。", + "ComesWithTheSourceCode_Description": "移动应用程序提供源代码。您可以轻松定制应用程序的用户体验/UI,以符合品牌准则。", "Purchase_OneYearPrice": "1 年价格", "Purchase_DeveloperSeatCount": "开发商席位数", "Purchase_DevelopersAlreadyIncluded": "{0}已包括开发人员", @@ -1007,11 +1007,11 @@ "CommonLibraries": "普通图书馆", "CommonLibraries_THEPROBLEM_Description": "您应该使用哪些库来实现常见需求?软件开发生态系统是高度动态的,要跟上最新的工具、库、趋势和方法具有挑战性。", "CommonLibraries_ABPSOLUTION_Description": "ABP 将流行、成熟和最新的库预先集成到解决方案中。你不需要花时间集成它们或让它们相互通信。它们开箱即可正常工作。", - "UITheme&Layout": "用户界面主题和布局", - "UITheme&Layout_THEPROBLEM_Description": "在解决用户界面问题时,会遇到一系列挑战。这些挑战包括为建立一个具有一致外观和导航菜单、页眉、工具栏、页脚、小工具等一系列功能的响应性、现代性和适应性强的用户界面套件奠定基础。", - "UITheme&Layout_THEPROBLEM_Description2": "即使您选择了预先设计的主题,将其无缝集成到您的项目中也可能需要数天的开发时间。升级此类主题还会遇到额外的障碍。通常情况下,主题的 HTML/CSS 结构会与您的用户界面代码交织在一起,从而使未来的主题更改或升级任务变得错综复杂。这种代码和设计的交织使后续调整的灵活性变得更加复杂。", - "UITheme&Layout_ABPSOLUTION_Description": "ABP Framework 提供了一个独特的主题系统,可将用户界面代码从主题限制中解放出来。主题独立存在,打包为 NuGet 或 NPM 包,使主题的安装或升级成为分分钟的事。您可以选择开发自定义主题或集成现有主题,ABP 商业版提供了一系列精良的现代主题。", - "UITheme&Layout_ABPSOLUTION_Description2": "此外,还有一些用户界面组件提供商,如 Telerik 和 DevExpress。不过,这些提供商主要提供单个组件,因此您有责任建立自己的布局系统。在基于 ABP 的项目中工作时,您可以无缝整合这些库,就像在任何其他项目中一样。", + "UITheme&Layout": "UI主题和布局", + "UITheme&Layout_THEPROBLEM_Description": "在解决UI问题时,会遇到一系列挑战。这些挑战包括为建立一个具有一致外观和导航菜单、页眉、工具栏、页脚、小工具等一系列功能的响应性、现代性和适应性强的UI套件奠定基础。", + "UITheme&Layout_THEPROBLEM_Description2": "即使您选择了预先设计的主题,将其无缝集成到您的项目中也可能需要数天的开发时间。升级此类主题还会遇到额外的障碍。通常情况下,主题的 HTML/CSS 结构会与您的UI代码交织在一起,从而使未来的主题更改或升级任务变得错综复杂。这种代码和设计的交织使后续调整的灵活性变得更加复杂。", + "UITheme&Layout_ABPSOLUTION_Description": "ABP Framework 提供了一个独特的主题系统,可将UI代码从主题限制中解放出来。主题独立存在,打包为 NuGet 或 NPM 包,使主题的安装或升级成为分分钟的事。您可以选择开发自定义主题或集成现有主题,ABP 商业版提供了一系列精良的现代主题。", + "UITheme&Layout_ABPSOLUTION_Description2": "此外,还有一些UI组件提供商,如 Telerik 和 DevExpress。不过,这些提供商主要提供单个组件,因此您有责任建立自己的布局系统。在基于 ABP 的项目中工作时,您可以无缝整合这些库,就像在任何其他项目中一样。", "TestInfrastructure": "测试基础设施", "TestInfrastructure_THEPROBLEM_Description": "建立强大的测试环境是一项耗时的工作。它涉及在解决方案中设置专用测试项目、仔细选择必要的工具、创建服务和数据库模拟、制作基本基类和实用服务以尽量减少测试中的冗余代码,以及处理各种相关任务。", "TestInfrastructure_ABPSOLUTION_Description": "ABP 启动模板预装了已配置的测试项目,为您简化了流程。这意味着从第一天起,您就可以立即开始编写初始单元或集成测试代码。", @@ -1020,11 +1020,11 @@ "CodingStandards&Training_ABPSOLUTION_Description": "ABP 解决方案已经整理得井井有条,并有清晰的解释。循序渐进的教程和指南向你展示了 ABP 项目的具体操作方法。", "KeepingYourSolutionUpToDate": "保持解决方案最新", "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "开始开发后,您必须跟踪所使用库的新版本,以便进行升级和打补丁。", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "我们会定期将所有软件包更新至最新版本,并在稳定版本发布前对其进行测试。当你更新 ABP 框架时,它的所有依赖项都会升级到边缘技术。", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update
CLI 命令可自动发现并升级解决方案中所有依赖 ABP 的 NuGet 和 NPM 软件包。有了 ABP,使用最新版本变得更加容易。", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "我们会定期将所有包更新至最新版本,并在稳定版本发布前对其进行测试。当你更新 ABP 框架时,它的所有依赖项都会升级到边缘技术。", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update
CLI 命令可自动发现并升级解决方案中所有依赖 ABP 的 NuGet 和 NPM 包。有了 ABP,使用最新版本变得更加容易。", "DRY": "不要重复自己", "DRY_Description": "创建基础解决方案需要大量时间,并需要良好的建筑经验。然而,这仅仅是个开始!在开始开发时,您可能需要编写大量重复的代码;如果所有这些代码都能自动处理,那就再好不过了。", - "DRY_Description2": "ABP 遵循 \"惯例重于配置 \"的原则,尽可能自动化和简化重复代码。不过,当您需要切换到手动档时,它也不会限制您。控制权始终掌握在您的手中。", + "DRY_Description2": "ABP 遵循 \"约定重于配置 \"的原则,尽可能自动化和简化重复代码。不过,当您需要切换到手动档时,它也不会限制您。控制权始终掌握在您的手中。", "Authentication": "认证", "Authentication_THEPROBLEM_Description": "单点登录、Active Directory / LDAP 集成、OpenIddict 集成、社交登录、双因素验证、忘记/重置密码、电子邮件激活、新用户注册、密码复杂性控制、尝试失败时锁定账户、显示失败的登录尝试......等等。我们知道,您对所有这些通用要求都不陌生。您并不孤单!", "Authentication_ABPSOLUTION_Description": "ABP Framework 和商业版本提供了所有这些标准内容,并作为可重复使用的账户模块预先为您实现。你只需启用和配置你所需要的即可。", @@ -1033,13 +1033,13 @@ "CrossCuttingConcerns_THEPROBLEM_Description2": "启动事务,成功时提交,出错时回滚。", "CrossCuttingConcerns_THEPROBLEM_Description3": "处理和报告异常,向客户端返回正确的错误响应,并在客户端处理错误案例。", "CrossCuttingConcerns_THEPROBLEM_Description4": "实施授权和验证,返回适当的响应,并在客户端进行处理。", - "CrossCuttingConcerns_ABPSOLUTION_Description": "ABP 框架可自动或简化所有常见的交叉问题。您只需编写与业务相关的代码,ABP 会按照惯例处理其余代码。", + "CrossCuttingConcerns_ABPSOLUTION_Description": "ABP 框架可自动或简化所有常见的交叉问题。您只需编写与业务相关的代码,ABP 会按照约定处理其余代码。", "ArchitecturalInfrastructure": "建筑基础设施", - "ArchitecturalInfrastructure_THEPROBLEM_Description": "您通常需要构建基础架构来正确实施您的架构。例如,您一般会实施存储库模式。您需要定义一些基类,以简化和标准化创建实体、服务、控制器和其他对象。", + "ArchitecturalInfrastructure_THEPROBLEM_Description": "您通常需要构建基础架构来正确实施您的架构。例如,您一般会实施仓储模式。您需要定义一些基类,以简化和标准化创建实体、服务、控制器和其他对象。", "ArchitecturalInfrastructure_ABPSOLUTION_Description": "ABP 框架开箱即可提供所有这些功能,甚至更多。它非常成熟,而且文档齐全。", "EnterpriseApplicationRequirements": "企业应用需求", "EnterpriseApplicationRequirements_THEPROBLEM_Description": "在每个业务应用程序中,您都要反复执行许多要求;", - "EnterpriseApplicationRequirements_THEPROBLEM_Description2": "详细的权限系统,并根据角色和用户管理用户界面上的权限。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description2": "详细的权限系统,并根据角色和用户管理UI上的权限。", "EnterpriseApplicationRequirements_THEPROBLEM_Description3": "编写审计日志和实体历史记录,以跟踪用户何时修改了数据库记录。", "EnterpriseApplicationRequirements_THEPROBLEM_Description4": "使实体软删除,这样它们就会被标记为已删除,而不是从数据库中物理删除,并在查询时自动过滤已删除的实体。", "EnterpriseApplicationRequirements_THEPROBLEM_Description5": "创建抽象和包装器,以便从前端代码中使用后端应用程序接口。", @@ -1048,7 +1048,7 @@ "EnterpriseApplicationRequirements_THEPROBLEM_Description8": "在服务器和客户端之间共享验证、本地化和授权逻辑。", "EnterpriseApplicationRequirements_ABPSOLUTION_Description": "ABP 提供了轻松实现这些要求的基础架构。同样,您无需花费宝贵的时间反复重新实现所有这些要求。", "GeneratingInitialCode&Tooling": "生成初始代码和工具", - "GeneratingInitialCode&Tooling_THEPROBLEM_Description": "在一个典型的网络应用程序中,您会创建许多类似的页面。它们中的大多数都会执行类似的 CRUD 操作。重复创建此类页面非常乏味,而且容易出错。", + "GeneratingInitialCode&Tooling_THEPROBLEM_Description": "在一个典型的Web应用程序中,您会创建许多类似的页面。它们中的大多数都会执行类似的 CRUD 操作。重复创建此类页面非常乏味,而且容易出错。", "GeneratingInitialCode&Tooling_ABPSOLUTION_Description": "ABP Suite 可在数秒内为您的实体生成一个全栈 CRUD 页面。生成的代码分层且简洁。所有标准验证和授权要求均已实现。此外,还生成了单元测试类。一旦您获得了一个完全运行的页面,您就可以根据您的业务需求对其进行修改。", "IntegratingTo3rdPartyLibrariesAndSystems": "与第三方图书馆和系统集成", "IntegratingTo3rdPartyLibrariesAndSystems_THEPROBLEM_Description": "大多数库的设计都比较低级,您通常需要做一些工作来正确集成它们,而不会在解决方案中到处重复相同的集成和配置代码。例如,假设您必须使用 RabbitMQ 来实现分布式事件总线。您要做的就是向队列发送消息并处理传入消息。但您需要了解消息传递模式、队列和交换细节。要编写高效的代码,必须创建一个池来管理连接、客户端和通道。您还必须处理异常、ACK 消息、失败时重新连接 RabbitMQ 等问题。", @@ -1059,7 +1059,7 @@ "WhyNotBuildYourOwnFramework_ABPSOLUTION_Description": "ABP 框架是一个社区驱动、文档齐全、成熟且通用的应用程序框架。由经验丰富的开发人员组成的团队正在努力使其保持最新、易懂和易于使用。使用这样一个稳定的框架,您可以专注于自己的业务代码,并随时从专家那里获得框架方面的帮助。", "ArchitecturalInfrastructure_Description": "SaaS 应用程序、模块化或微服务系统是最常用的企业软件模型。构建此类系统不仅需要良好的理解和经验,还需要强大的软件基础设施。否则,你会发现自己要花费很大精力才能在代码库中支持这些架构细节。", "Modularity": "模块化", - "Modularity_THEPROBLEM_Description": "建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、应用程序接口、用户界面页面/组件)都可以分割成模块,而且每个模块都可以重复使用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。", + "Modularity_THEPROBLEM_Description": "建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、应用程序接口、UI页面/组件)都可以分割成模块,而且每个模块都可以重复使用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。", "Modularity_ABPSOLUTION_Description": "ABP 框架是一种模块化应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南解释了如何以标准方式开发可重复使用的模块。", "SaaSMultiTenancy": "SaaS / 多租户", "SaaSMultiTenancy_THEPROBLEM_Description": " 多租户是实施 SaaS 系统的一种常见方式。但是,实施一致的多用户基础设施可能会变得复杂。", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json index 59c21a56cf..aeae0493f6 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json @@ -367,7 +367,7 @@ "VolosoftMarketingInformationMessage": "我想要有關企業和組織解決方案以及其他 Volosoft 產品和服務的信息、提示和優惠。", "VolosoftSharingInformationMessage": "我希望 Volosoft 與選定的合作夥伴共享我的信息,以便我可以收到有關他們的產品和服務的相關信息。", "WeWillSendYouADownloadLink": "下載電子書的鏈接已發送至 {0}。
檢查您的收件箱/垃圾箱/垃圾箱!", - "InvalidFormInputs": "請輸入表格中指定的有效信息。", + "InvalidFormInputs": "請輸入表单中指定的有效信息。", "DDDBookEmailBody": "謝謝你。
要下載您的圖書,請點擊此處。", "StartFree": "免費開始", "FreeTrial": "免費試用", @@ -738,7 +738,7 @@ "Landing_Page_PaymentModuleDescription_3": "此模組支援以下支付網關", "Welcome_Page_UseSameCredentialForCommercialWebsites": "對Commercial.abp.io和support.abp.io使用相同的憑證。", "WatchCrudPagesVideo": "觀看「使用 ABP Suite 建立 CRUD 頁面」影片!", - "WatchGeneratingFromDatabaseVideo": "觀看“ABP Suite:從現有資料庫表格產生 CRUD 頁面”影片!", + "WatchGeneratingFromDatabaseVideo": "觀看“ABP Suite:從現有資料庫表单產生 CRUD 頁面”影片!", "WatchTakeCloserLookVideo": "觀看“仔細看看程式碼產生:ABP Suite”影片!", "ConfirmedEmailAddressRequiredToStartTrial": "您應該有一個確認的電子郵件地址才能開始試用許可證。", "EmailVerificationMailNotSent": "電子郵件驗證郵件無法傳送。", @@ -912,7 +912,7 @@ "ExtraQuestionCreditsFaqExplanation": "是的你可以。若要購買額外的問題積分,請發送電子郵件至info@abp.io ,並註明您所在組織的名稱。以下是額外問題學分的價格表:
  • 50 個問題包 999 美元
  • 25 個問題包 625 美元
  • 15 個問題包 450 美元
", "AlreadyBetaTester": "您已經加入了 Beta 測試員計劃。", "AbpStudio": "總部基地工作室", - "AbpStudio_Description": "ABP Studio 仍在開發中。您可以填寫下面的表格,成為第一批使用者之一。", + "AbpStudio_Description": "ABP Studio 仍在開發中。您可以填寫下面的表单,成為第一批使用者之一。", "AbpStudio_Description1": "ABP Studio 是一款針對 ABP 開發人員的跨平台桌面應用程式。", "AbpStudio_Description2": "它與 ABP 框架很好地集成,旨在透過自動化為您提供一個舒適的開發環境,提供有關您的解決方案的見解,使開發、運行和部署您的解決方案變得更加容易。", "AbpStudio_ComingSoon": "即將推出計劃測試版發布日期:2023 年第四季。", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/zh-Hans.json index b1f1958433..605cb40616 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/zh-Hans.json @@ -3,7 +3,7 @@ "texts": { "Buy": "购买", "SeeBookDetails": "查看书籍详情", - "MasteringAbpFrameworkEBookDescription": "本书将帮助你全面了解框架和现代网络应用程序开发技术。", + "MasteringAbpFrameworkEBookDescription": "本书将帮助你全面了解框架和现代Web应用程序开发技术。", "Feedback": "反馈意见" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json index 3d705d6c3d..018a1cf3c4 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json @@ -10,7 +10,7 @@ "DatabaseProvider": "数据库提供商", "DatabaseManagementSystem": "数据库管理系统", "NTier": "N 层", - "IncludeUserInterface": "包括用户界面", + "IncludeUserInterface": "包括UI", "CreateNow": "立即创建", "TheStartupProject": "启动项目", "Tutorial": "教程", @@ -20,7 +20,7 @@ "SourceCodeUpper": "来源代码", "LatestReleaseLogs": "最新发布日志", "Infrastructure": "基础设施", - "Architecture": "建筑学", + "Architecture": "架构", "Modular": "模块化", "DontRepeatYourself": "不要重复自己", "DeveloperFocused": "以开发人员为重点", @@ -28,19 +28,19 @@ "DomainDrivenDesign": "领域驱动设计", "DomainDrivenDesignExplanation": "基于 DDD 模式和原则进行设计和开发。为您的应用程序提供分层模型。", "Authorization": "授权", - "AuthorizationExplanation": "通过用户、角色和细粒度权限系统实现高级授权。基于微软身份库。", + "AuthorizationExplanation": "通过用户、角色和细粒度权限系统实现高级授权。基于Microsoft Identity。", "MultiTenancy": "多租户", - "MultiTenancyExplanationShort": "SaaS 应用程序变得简单!从数据库到用户界面都集成了多租户功能。", + "MultiTenancyExplanationShort": "SaaS 应用程序变得简单!从数据库到UI都集成了多租户功能。", "CrossCuttingConcerns": "横向关注问题", "CrossCuttingConcernsExplanationShort": "用于授权、验证、异常处理、缓存、审计日志、事务管理等的完整基础设施。", - "BuiltInBundlingMinification": "内置捆绑和最小化功能", + "BuiltInBundlingMinification": "内置捆绑 & 压缩功能", "BuiltInBundlingMinificationExplanation": "无需使用外部工具进行捆绑和缩减。ABP 提供了一种更简单、动态、强大、模块化和内置的方式!", "VirtualFileSystem": "虚拟文件系统", "VirtualFileSystemExplanation": "将视图、脚本、样式、图片......嵌入到包/库中,并在不同的应用程序中重复使用。", - "Theming": "设计", - "ThemingExplanationShort": "使用并定制基于引导程序的标准用户界面主题,或创建自己的主题。", + "Theming": "主题", + "ThemingExplanationShort": "使用并定制基于Bootstrap的标准UI主题,或创建自己的主题。", "BootstrapTagHelpersDynamicForms": "Bootstrap 标签助手和动态表单", - "BootstrapTagHelpersDynamicFormsExplanation": "与其手动编写引导组件的重复细节,不如使用 ABP 的标签助手来简化这些细节并利用智能提示功能。使用动态表单标签助手,基于 C# 模型快速创建 UI 表单。", + "BootstrapTagHelpersDynamicFormsExplanation": "与其手动编写Bootstrap的重复细节,不如使用 ABP 的标签助手来简化这些细节并利用智能提示功能。使用动态表单标签助手,基于 C# 模型快速创建 UI 表单。", "HTTPAPIsDynamicProxies": "HTTP API 和动态代理", "HTTPAPIsDynamicProxiesExplanation": "自动将应用服务公开为 REST 风格的 HTTP API,并通过动态 JavaScript 和 C# 代理来使用它们。", "CompleteArchitectureInfo": "创建可维护软件解决方案的现代架构。", @@ -51,8 +51,8 @@ "ModularInfo": "ABP 提供了一个模块系统,使您能够开发可重复使用的应用程序模块,与应用程序生命周期事件相联系,并表达系统核心部分之间的依赖关系。", "PreBuiltModulesThemes": "预建模块和主题", "PreBuiltModulesThemesExplanation": "开放源代码和商业模块及主题可随时用于您的业务应用程序。", - "NuGetNPMPackages": "NuGet 和 NPM 软件包", - "NuGetNPMPackagesExplanation": "以 NuGet 和 NPM 软件包的形式发布。易于安装和升级。", + "NuGetNPMPackages": "NuGet 和 NPM 包", + "NuGetNPMPackagesExplanation": "以 NuGet 和 NPM 包的形式发布。易于安装和升级。", "ExtensibleReplaceable": "可扩展/可替换", "ExtensibleReplaceableExplanation": "所有服务和模块的设计都考虑到了可扩展性。您可以更换服务、页面、样式和组件。", "CrossCuttingConcernsExplanation2": "保持较小的代码库,这样您就可以将精力集中在业务专用代码上。", @@ -66,18 +66,18 @@ "Caching": "缓存", "Multitenancy": "多租户", "DataFiltering": "数据过滤", - "ConventionOverConfiguration": "公约重于配置", - "ConventionOverConfigurationExplanation": "ABP 在默认情况下只需进行最少的配置或零配置即可实现常用的应用程序约定。", + "ConventionOverConfiguration": "约定重于配置", + "ConventionOverConfigurationExplanation": "ABP 在默认情况下只需进行最小的配置或零配置即可实现常用的应用程序约定。", "ConventionOverConfigurationExplanationList1": "自动将已知服务注册为依赖注入。", "ConventionOverConfigurationExplanationList2": "通过命名约定将应用服务公开为 HTTP API。", "ConventionOverConfigurationExplanationList3": "为 C# 和 JavaScript 创建动态 HTTP 客户端代理。", - "ConventionOverConfigurationExplanationList4": "为实体提供默认存储库。", + "ConventionOverConfigurationExplanationList4": "为实体提供默认仓储。", "ConventionOverConfigurationExplanationList5": "管理每个网络请求或应用服务方法的工作单元。", "ConventionOverConfigurationExplanationList6": "为实体发布创建、更新和删除事件。", - "BaseClasses": "基础类", + "BaseClasses": "基类", "BaseClassesExplanation": "为常见应用模式预置基类。", "DeveloperFocusedExplanation": "ABP 适用于开发人员。", - "DeveloperFocusedExplanationCont": "它旨在简化您的日常软件开发,同时不限制您编写低级代码。", + "DeveloperFocusedExplanationCont": "它旨在简化您的日常软件开发,同时又不限制你在需要时进行底层工作。", "SeeAllFeatures": "查看所有功能", "CLI_CommandLineInterface": "CLI(命令行界面)", "CLI_CommandLineInterfaceExplanation": "包括 CLI,可帮助您自动创建新项目和添加新模块。", @@ -91,9 +91,9 @@ "ABPCLI": "ABP CLI", "Modularity": "模块化", "BootstrapTagHelpers": "Bootstrap 标签助手", - "DynamicForms": "动态表格", - "BundlingMinification": "捆绑和最小化", - "BackgroundJobs": "背景工作", + "DynamicForms": "动态表单", + "BundlingMinification": "捆绑 & 压缩", + "BackgroundJobs": "后台作业", "BackgroundJobsExplanation": "定义简单的类,在后台执行排队作业。使用内置作业管理器或集成自己的作业管理器。Hangfire 和 RabbitMQ 集成已经可用。", "DDDInfrastructure": "DDD 基础设施", "DomainDrivenDesignInfrastructure": "领域驱动设计基础设施", @@ -105,49 +105,49 @@ "AuditLoggingEntityHistories": "审计日志和实体历史", "ObjectToObjectMapping": "对象到对象映射", "ObjectToObjectMappingExplanation": "对象到对象映射抽象与 AutoMapper 集成。", - "EmailSMSAbstractions": "电子邮件和短信摘要", + "EmailSMSAbstractions": "电子邮件和短信抽象", "EmailSMSAbstractionsWithTemplatingSupport": "电子邮件和短信抽象,支持模板化", "Localization": "本地化", "SettingManagement": "设置管理", "ExtensionMethods": "扩展方法", "ExtensionMethodsHelpers": "扩展方法和助手", - "AspectOrientedProgramming": "面向方面编程", + "AspectOrientedProgramming": "面向面向切面的编程", "DependencyInjection": "依赖注入", "DependencyInjectionByConventions": "按约定进行依赖注入", "ABPCLIExplanation": "ABP CLI(命令行界面)是一种命令行工具,用于自动执行基于 ABP 解决方案的一些常见操作。", - "ModularityExplanation": "ABP 提供了一个完整的基础架构,用于构建您自己的应用程序模块,这些模块可能包含实体、服务、数据库集成、应用程序接口、用户界面组件等。", + "ModularityExplanation": "ABP 提供了一个完整的基础架构,用于构建您自己的应用程序模块,这些模块可能包含实体、服务、数据库集成、应用程序接口、UI组件等。", "MultiTenancyExplanation": "ABP 框架不仅支持开发多租户应用程序,还能让你的代码在很大程度上不知道多租户的存在。", "MultiTenancyExplanation2": "可自动判断当前租户,将不同租户的数据相互隔离。", "MultiTenancyExplanation3": "支持单一数据库、每个租户数据库和混合方法。", "MultiTenancyExplanation4": "您只需专注于业务代码,让框架代您处理多租户问题。", - "BootstrapTagHelpersExplanation": "与其手动编写 Bootstrap 组件的重复细节,不如使用 ABP 的标签助手来简化它,并利用 IntelliSense 的优势。只要你需要,就一定能使用 Bootstrap。", + "BootstrapTagHelpersExplanation": "与其手动编写 Bootstrap 组件的重复细节,不如使用 ABP 的标签助手来简化它,并利用 IntelliSense 的优势。你当然也可以在需要时直接使用Bootstrap。", "DynamicFormsExplanation": "动态表单和输入标签助手可以从作为模型的 C# 类中创建完整的表单。", "AuthenticationAuthorizationExplanation": "与 ASP.NET Core Identity 和 IdentityServer4 集成的丰富的身份验证和授权选项。提供可扩展的详细权限系统。", - "CrossCuttingConcernsExplanation": "不要重复实现所有这些常见的东西。专注于您的业务代码,让 ABP 按惯例自动执行它们。", + "CrossCuttingConcernsExplanation": "不要重复实现所有这些常见的东西。专注于您的业务代码,让 ABP 按约定自动执行它们。", "DatabaseConnectionTransactionManagement": "数据库连接和事务管理", "CorrelationIdTracking": "相关标识跟踪", - "BundlingMinificationExplanation": "ABP 提供了一个简单、动态、强大、模块化和内置的捆绑与精简系统。", + "BundlingMinificationExplanation": "ABP 提供了一个简单、动态、强大、模块化和内置的捆绑与压缩系统。", "VirtualFileSystemnExplanation": "虚拟文件系统可以管理不存在于文件系统(磁盘)上的文件。它主要用于将(js、css、图像、cshtml......)文件嵌入程序集,并在运行时像使用物理文件一样使用它们。", "ThemingExplanation": "通过基于最新 Bootstrap 框架定义的一套通用基础库和布局,编辑系统允许开发独立于主题的应用程序和模块。", "DomainDrivenDesignInfrastructureExplanation": "根据领域驱动设计模式和原则构建分层应用程序的完整基础架构;", "Specification": "规格", - "Repository": "存储库", + "Repository": "仓储", "DomainService": "域名服务", "ValueObject": "价值对象", "ApplicationService": "应用服务", "DataTransferObject": "数据传输对象", "AggregateRootEntity": "聚合根、实体", - "AutoRESTAPIsExplanation": "ABP 可按惯例自动将您的应用程序服务配置为 API 控制器。", + "AutoRESTAPIsExplanation": "ABP 可按约定自动将您的应用程序服务配置为 API 控制器。", "DynamicClientProxiesExplanation": "从 JavaScript 和 C# 客户端轻松使用您的 API。", "DistributedEventBusWithRabbitMQIntegrationExplanation": "使用内置的分布式事件总线(可与 RabbitMQ 集成)轻松发布和消费分布式事件。", "TestInfrastructureExplanation": "该框架在开发过程中考虑了单元测试和集成测试。为您提供基类,让您更轻松地进行测试。启动模板已为测试预配置。", "AuditLoggingEntityHistoriesExplanation": "针对关键业务应用程序的内置审计日志。请求、服务、方法级审计日志和包含属性级详细信息的实体历史记录。", "EmailSMSAbstractionsWithTemplatingSupportExplanation": "IEmailSender 和 ISmsSender 抽象将应用程序逻辑与基础架构分离开来。先进的电子邮件模板系统允许创建和本地化电子邮件模板,并在需要时轻松使用。", - "LocalizationExplanation": "本地化系统允许在纯 JSON 文件中创建资源,并使用它们来本地化用户界面。它支持继承、扩展和 JavaScript 集成等高级方案,同时与 AspNet Core 的本地化系统完全兼容。", + "LocalizationExplanation": "本地化系统允许在纯 JSON 文件中创建资源,并使用它们来本地化UI。它支持继承、扩展和 JavaScript 集成等高级方案,同时与 AspNet Core 的本地化系统完全兼容。", "SettingManagementExplanation": "为应用程序定义设置,并在运行时根据当前配置、租户和用户获取值。", "ExtensionMethodsHelpersExplanation": "即使是琐碎的代码部分也无需重复。标准类型的扩展和助手能让你的代码更加简洁易写。", - "AspectOrientedProgrammingExplanation": "为创建动态代理和实现面向方面编程(Aspect Oriented Programming)提供舒适的基础架构。拦截任何类,并在每个方法执行前后执行代码。", - "DependencyInjectionByConventionsExplanation": "无需手动注册依赖注入类。按惯例自动注册常见的服务类型。对于其他类型的服务,您可以使用接口和属性来简化注册过程并就地注册。", + "AspectOrientedProgrammingExplanation": "为创建动态代理和实现面向面向切面的编程(Aspect Oriented Programming)提供舒适的基础架构。拦截任何类,并在每个方法执行前后执行代码。", + "DependencyInjectionByConventionsExplanation": "无需手动注册依赖注入类。按约定自动注册常见的服务类型。对于其他类型的服务,您可以使用接口和属性来简化注册过程并就地注册。", "DataFilteringExplanation": "定义和使用数据过滤器,这些过滤器会在你从数据库中查询实体时自动应用。软删除和多租户过滤器是在您实现简单接口时提供的开箱即用的过滤器。", "PublishEvents": "发布活动", "HandleEvents": "处理事件", @@ -156,7 +156,7 @@ "Result": "结果", "SeeTheDocumentForMoreInformation": "查看 {0} 文档,了解更多信息", "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core", - "UiFramework": "用户界面框架", + "UiFramework": "UI框架", "EmailAddress": "电子邮件地址", "Mobile": "移动电话", "ReactNative": "React Native", @@ -175,66 +175,66 @@ "TieredOption": "创建分层解决方案,Web 层和 Http API 层物理上分开。如果不选中,则会创建一个分层解决方案,其复杂性较低,适合大多数情况。", "SeparateIdentityServerOption": "将服务器端分为两个应用程序:第一个是身份服务器,第二个是服务器端 HTTP API。", "SeparateAuthenticationServerOption": "将服务器端分为两个应用程序:第一个是身份验证服务器,第二个是服务器端 HTTP API。", - "ProgressiveWebApplicationOption": "指定项目为渐进式网络应用程序", + "ProgressiveWebApplicationOption": "指定项目为渐进式Web应用程序", "UseslatestPreVersion": "使用最新的预发布版本", - "ReadTheDocumentation": "阅读文件", - "Documentation": "文件", + "ReadTheDocumentation": "阅读文档", + "Documentation": "文档", "GettingStartedTutorial": "入门教程", "ApplicationDevelopmentTutorial": "应用程序开发教程", - "TheStartupTemplate": "创业模板", + "TheStartupTemplate": "启动模板", "InstallABPCLIInfo": "ABP CLI 是使用 ABP 框架启动新解决方案的最快方法。使用命令行窗口安装 ABP CLI:", "DifferentLevelOfNamespaces": "您可以使用不同级别的命名空间;例如,BookStore、Acme.BookStore 或 Acme.Retail.BookStore。", "ABPCLIExamplesInfo": "new 命令创建了一个 分层 MVC 应用程序,并将 Entity Framework Core 作为数据库提供程序。不过,它还有其他选项。", "SeeCliDocumentForMoreInformation": "查看 ABP CLI 文档,了解更多选项,或选择上面的 \"直接下载 \"选项卡。", "Optional": "可选", - "LocalFrameworkRef": "为框架软件包保留本地项目引用。", + "LocalFrameworkRef": "为框架包保留本地项目引用。", "BlobStoring": "BLOB 存储", "BlobStoringExplanation": "BLOB 存储系统提供了一种处理 BLOB 的抽象方法。ABP 提供了一些预建的存储提供商集成(Azure、AWS、文件系统、数据库等),您可以在应用程序中轻松使用。", "TextTemplating": "文本模板", "TextTemplatingExplanation": "文本模板用于根据模板和模型(数据对象)动态呈现内容。例如,你可以用它来创建带有预置模板的动态电子邮件内容。", - "MultipleUIOptions": "多种用户界面选项", + "MultipleUIOptions": "多种UI选项", "MultipleDBOptions": "多个数据库提供商", - "MultipleUIOptionsExplanation": "核心框架的设计与用户界面无关,可与任何类型的用户界面系统配合使用,同时还提供多种预建和集成选项。", + "MultipleUIOptionsExplanation": "核心框架的设计与UI无关,可与任何类型的UI系统配合使用,同时还提供多种预建和集成选项。", "MultipleDBOptionsExplanation": "该框架可与任何数据源协同工作,同时官方开发并支持以下提供商:", "SelectLanguage": "选择语言", "LatestPostOnCommunity": "关于 ABP 社区的最新文章", "Register": "注册", "IsDownloadable": "可下载", "DatabaseOptions": "数据库选项", - "BackToPackagesPage": "返回套餐页面", + "BackToPackagesPage": "返回包页面", "HowToInstall": "如何安装", "SeeOnNpm": "在故宫博物院查看", "SeeOnNuget": "在 Nuget 上查看", - "MVCGulpCommandExplanation": "如果使用的是 MVC(Razor Pages)用户界面,则在安装软件包后运行 \"gulp \"命令。", + "MVCGulpCommandExplanation": "如果使用的是 MVC(Razor Pages)UI,则在安装包后运行 \"gulp \"命令。", "UsingABPCLI": "使用 Abp CLI", - "WithoutABPCLI": "无 ABP CLI", + "WithoutABPCLI": "不使用 ABP CLI", "ABPCLIModuleDependency": "Abp Cli 自动添加模块依赖性。", "AddModuleDependency": "然后添加模块依赖关系", - "Packages": "套餐", - "NugetPackages": "Nuget 软件包", - "NPMPackages": "NPM 软件包", + "Packages": "包", + "NugetPackages": "Nuget 包", + "NPMPackages": "NPM 包", "SeeDocs": "查看文件", "None": "无", "Application": "应用", "ApplicationExplanation": "基于领域驱动设计实践,创建完全分层的解决方案。推荐用于需要可维护和可扩展代码库的长期项目。", "ApplicationNoLayer": "应用(单层)", - "ApplicationNoLayerExplanation": "创建单层网络应用程序。建议用于构建架构简单易懂的应用程序。", + "ApplicationNoLayerExplanation": "创建单层Web应用程序。建议用于构建架构简单易懂的应用程序。", "Module": "模块", "ModuleExplanation": "创建可重复使用、完全分层的应用程序模块解决方案。您可以使用该选项为模块化应用程序创建模块。", - "PackageName": "软件包名称", + "PackageName": "包名称", "LicenseURL": "许可证 URL", "License": "许可证", "ProjectCreationSuccessMessage": "您的项目已成功创建", "HowToRunSolution": "如何运行解决方案?", "GettingStartedMessage": "查看入门文档,了解如何配置和运行解决方案。", - "WebAppDevTutorial": "网络应用程序开发教程", - "WebAppDevTutorialMessage": "请查看网络应用程序开发教程文档,逐步了解开发示例。", + "WebAppDevTutorial": "Web应用程序开发教程", + "WebAppDevTutorialMessage": "请查看Web应用程序开发教程文档,逐步了解开发示例。", "CommunityPosts": "社区帖子", "CommunityPostMessage": "查看 ABP 社区平台,阅读有关 ABP 框架的有用文章。", "InvestigateSolutionDetails": "查看解决方案详情", "StartupTemplateDocumentationMessage": "查看应用程序启动模板文档,了解解决方案的架构和结构。", "ClientSideDevelopment": "客户端开发", - "ClientSideDevelopmentDocumentationMessage": "查看 {0} 文档,了解用户界面(客户端)开发的要点。", + "ClientSideDevelopmentDocumentationMessage": "查看 {0} 文档,了解UI(客户端)开发的要点。", "DatabaseProviderDocumentationMessage": "查看 {0} 文档,了解数据库层开发的要点。", "ABPCommercialExplanationMessage": "ABP 商业版为 ABP 框架提供高级模块、主题、工具和支持。", "ImplementingDDD": "实施领域驱动设计", @@ -245,13 +245,13 @@ "IntroductionToImplementingDDD": "领域驱动设计实施简介", "WhatIsDDD": "什么是领域驱动设计?", "Implementation": "实施", - "TheBigPicture": "大局观", + "TheBigPicture": "大图", "TheBuildingBlock": "建筑模块", "ExampleUseCase": "用例示例", "DomainAndApplicationLogic": "领域逻辑和应用逻辑", "Author": "作者", "Pages": "页面", - "PublishedOn": "出版日期", + "PublishedOn": "发表于", "FreeEBook": "免费电子书", "Download": "下载", "EBookSignInForDownload": "要下载电子书,请登录", @@ -274,31 +274,31 @@ "EmailNotValid": "请输入有效的电子邮件地址。", "WeWillSendYouADownloadLink": "电子书下载链接已发送至 {0}。请检查您的收件箱、垃圾邮件箱!", "GoHome": "回家", - "InvalidFormInputs": "请输入表格中指定的有效信息。", + "InvalidFormInputs": "请输入表单中指定的有效信息。", "DDDBookEmailBody": "谢谢。
要下载您的书籍,请点击此处。", "SubscribeToNewsletter": "订阅时事通讯,了解 ABP.IO 平台的最新动态,如新版本、文章、优惠等。", "FirstEdition": "第一版", "ThankYou": "谢谢!", "CheckboxMandatory": "您需要检查这一点才能继续!", - "UserInterface": "用户界面", + "UserInterface": "UI", "APIGateway": "应用程序接口网关", "Database": "数据库", - "Saas": "萨斯", - "OpenSourceWebApp": "打开源
网络应用程序", + "Saas": "Saas", + "OpenSourceWebApp": "开源
Web 应用程序", "Framework": "框架", "AuditLoggingExplanation": "自动跟踪系统中的所有操作和数据变化。", "AbpNewCommandExplanation": "使用 ABP 启动模板创建新的解决方案。", "AbpAddModuleCommandExplanation": "在解决方案中安装预置应用模块", - "AbpUpdateCommandExplanation": "自动更新解决方案中所有与 ABP 相关的 NuGet 和 NPM 软件包。", + "AbpUpdateCommandExplanation": "自动更新解决方案中所有与 ABP 相关的 NuGet 和 NPM 包。", "ExploreAllCLICommands": "探索所有 CLI 命令", "ExploreDocumentationAndGuides": "探索全面的文档和指南。", - "Documentations": "文件", + "Documentations": "文档", "Views": "意见", "EnterYouEmailToGetNews": "输入您的电子邮件,以获取有关 ABP 框架的最新消息", "Tiered": "分层", "SeparateIdentityServer": "独立身份服务器", "SeparateAuthenticationServer": "独立的身份验证服务器", - "ProgressiveWebApplication": "渐进式网络应用程序", + "ProgressiveWebApplication": "渐进式Web应用程序", "Preview": "预览", "CreateANewSolution": "创建新解决方案", "ABPFrameworkFeatures": "ABP 框架 特点免费的 DDD 电子书。", "EverythingYouNeedToKnow": "你需要知道的一切", "PreOrderNow": "立即预购", - "UITheming": "用户界面设计", - "UIThemingExplanation": "创建可重复使用的用户界面主题和布局,或使用预置的用户界面主题。", + "UITheming": "UI设计", + "UIThemingExplanation": "创建可重复使用的UI主题和布局,或使用预置的UI主题。", "DataFilteringExplanation2": "自动过滤数据库查询,轻松实现软删除和多租户等模式。", "NeedHelp": "需要帮助吗?", "GiveYourProjectAName": "为项目命名", "SelectProjectType": "选择项目类型", - "SelectUIFramework": "选择用户界面框架", + "SelectUIFramework": "选择UI框架", "SelectDatabaseProvider": "选择数据库提供商", "SelectDatabaseManagementSystem": "选择数据库管理系统", "InstallingTheABPCLI": "安装 ABP CLI", @@ -356,21 +356,21 @@ "Discounted": "折扣", "MasteringAbpFramework_Book_KeyFeatures": "主要功能", "MasteringAbpFramework_Book_Key_Features_Description_1": "使用 ABP 框架构建稳健、可维护、模块化和可扩展的软件解决方案。", - "MasteringAbpFramework_Book_Key_Features_Description_2": "了解如何在网络应用程序中实施 SOLID 原则和领域驱动设计。", + "MasteringAbpFramework_Book_Key_Features_Description_2": "了解如何在Web应用程序中实施 SOLID 原则和领域驱动设计。", "MasteringAbpFramework_Book_Key_Features_Description_3": "了解 ABP Framework 如何通过自动化重复性任务加快开发周期。", "MasteringAbpFramework_Book_Description": "图书简介", - "MasteringAbpFramework_Book_Description_Details_1": "ABP 框架是一个完整的基础架构,用于按照软件开发最佳实践和惯例创建现代网络应用程序。\n 的最佳实践和惯例,创建现代网络应用程序的完整基础架构。借助 ABP 的高级框架和生态系统,您可以\n 执行 \"不要重复\"(DRY)原则,专注于业务代码。", - "MasteringAbpFramework_Book_Description_Details_2": "本书由 ABP 框架的创建者撰写,将帮助你全面了解该框架和现代网络应用程序开发技术。\n 框架和现代网络应用程序开发技术。通过逐步解释基本\n 概念和实际示例,你将了解现代网络解决方案的要求,以及 ABP\n 框架如何让您愉快地开发自己的解决方案。您将发现\n 企业网络应用程序开发的常见要求,并探索 ABP 提供的基础架构。在整本书中\n 在本书中,你将掌握软件开发的最佳实践,以构建可维护的模块化\n 网络解决方案。", + "MasteringAbpFramework_Book_Description_Details_1": "ABP 框架是一个完整的基础架构,用于按照软件开发最佳实践和约定创建现代Web应用程序。\n 的最佳实践和约定,创建现代Web应用程序的完整基础架构。借助 ABP 的高级框架和生态系统,您可以\n 执行 \"不要重复\"(DRY)原则,专注于业务代码。", + "MasteringAbpFramework_Book_Description_Details_2": "本书由 ABP 框架的创建者撰写,将帮助你全面了解该框架和现代Web应用程序开发技术。\n 框架和现代Web应用程序开发技术。通过逐步解释基本\n 概念和实际示例,你将了解现代网络解决方案的要求,以及 ABP\n 框架如何让您愉快地开发自己的解决方案。您将发现\n 企业Web应用程序开发的常见要求,并探索 ABP 提供的基础架构。在整本书中\n 在本书中,你将掌握软件开发的最佳实践,以构建可维护的模块化\n 网络解决方案。", "MasteringAbpFramework_Book_Description_Details_3": "在本书结束时,你将能够创建一个易于开发、维护和测试的完整网络解决方案、\n 维护和测试。", "MasteringAbpFramework_Book_WhatYouWillLearn": "你将学到什么", "MasteringAbpFramework_Book_What_You_Will_Learn_1": "设置开发环境并开始使用 ABP 框架。", "MasteringAbpFramework_Book_What_You_Will_Learn_2": "使用 Entity Framework Core 和 MongoDB 开发数据访问层。", - "MasteringAbpFramework_Book_What_You_Will_Learn_3": "了解贯穿各领域的问题以及 ABP 如何自动执行重复性任务。", + "MasteringAbpFramework_Book_What_You_Will_Learn_3": "了解横切关注点以及 ABP 如何自动执行重复性任务。", "MasteringAbpFramework_Book_What_You_Will_Learn_4": "使用 ABP 框架掌握领域驱动设计的实施方法。", - "MasteringAbpFramework_Book_What_You_Will_Learn_5": "使用 ASP.NET Core MVC(Razor Pages)和 Blazor 构建用户界面页面和组件。", - "MasteringAbpFramework_Book_What_You_Will_Learn_6": "使用多租户创建模块化网络应用程序。", + "MasteringAbpFramework_Book_What_You_Will_Learn_5": "使用 ASP.NET Core MVC(Razor Pages)和 Blazor 构建UI页面和组件。", + "MasteringAbpFramework_Book_What_You_Will_Learn_6": "使用多租户创建模块化Web应用程序。", "MasteringAbpFramework_Book_What_You_Will_Learn_7": "了解模块化,创建可重复使用的应用模块。", - "MasteringAbpFramework_Book_What_You_Will_Learn_8": "使用 ABP 框架编写单元测试、集成测试和用户界面测试。", + "MasteringAbpFramework_Book_What_You_Will_Learn_8": "使用 ABP 框架编写单元测试、集成测试和UI测试。", "MasteringAbpFramework_Book_WhoIsThisBookFor": "这本书为谁而写", "MasteringAbpFramework_Book_WhoIsThisBookFor_Description": "本书适用于希望学习软件架构和最佳实践的网络开发人员。\n 的最佳实践。要开始学习本书\n 和 ASP.NET Core 的基础知识。", "ComputersAndTechnology": "计算机与技术", @@ -388,11 +388,11 @@ "ThisBookIsInDraftStageAndIsNotCompletedYet": "本书目前处于草稿阶段,尚未完成。", "Authors": "作者", "MicroserviceEBook": "微服务电子书", - "SelectUITheme": "选择用户界面主题", + "SelectUITheme": "选择UI主题", "LeptonXLiteTheme": "LeptonX Lite 主题", "BasicTheme": "基本主题", - "LeptonXLiteThemeInfo": "一款现代时尚的 Bootstrap UI 主题。如果你想拥有一个可随时制作的用户界面主题,它将是你的理想之选。这是最新的主题,也是默认主题。", - "BasicThemeInfo": "极简用户界面主题,采用纯粹的 Bootstrap 颜色和样式。如果你想创建自己的用户界面主题,它将是你的理想之选。", + "LeptonXLiteThemeInfo": "一款现代时尚的 Bootstrap UI 主题。如果你想拥有一个可随时制作的UI主题,它将是你的理想之选。这是最新的主题,也是默认主题。", + "BasicThemeInfo": "极简UI主题,采用纯粹的 Bootstrap 颜色和样式。如果你想创建自己的UI主题,它将是你的理想之选。", "SeeDocumentation": "请参阅文档。", "SeeFullScreen": "🖼️ 查看截图", "BuildingMicroserviceSolutionsShortDescription": "本书是使用 ABP 框架开发和管理基于微服务的应用程序的参考指南。", @@ -405,7 +405,7 @@ "MultiLayerApplicationExplanation1": "根据领域驱动设计实践,创建完全分层的解决方案。", "MultiLayerApplicationExplanation2": "建议用于需要可维护和可扩展代码库的长期项目。", "SingleLayerApplication": "单层
应用", - "SingleLayerApplicationExplanation1": "创建单层网络应用程序。 ", + "SingleLayerApplicationExplanation1": "创建单层Web应用程序。 ", "SingleLayerApplicationExplanation2": "建议用于构建架构简单易懂的应用程序。", "ApplicationModule": "应用程序
模块", "SeeTheScreenshot": "请看截图", @@ -422,24 +422,24 @@ "CreateSolutionFolder": "创建解决方案文件夹", "CreateSolutionFolderOption": "指定项目是放在输出文件夹中的新文件夹中,还是直接放在输出文件夹中。", "BooksPageTitle": "ABP 图书", - "PackageDetailPage_NuGetPackageInstallationOptions": "在项目中安装 {0} NuGet 软件包有三种方法", + "PackageDetailPage_NuGetPackageInstallationOptions": "在项目中安装 {0} NuGet 包有三种方法", "PackageDetailPage_InstallingWithABPCLI": "1: 使用 ABP CLI 安装", "PackageDetailPage_InstallingWithABPCLIDescription1": "如果尚未安装 ABP CLI,请首先在命令行终端执行以下命令进行安装", "PackageDetailPage_InstallingWithABPCLIDescription2": "安装 ABP CLI 后,在要安装它的项目(.csproj 文件)位置打开命令行终端并执行以下命令", "PackageDetailPage_InstallingWithABPCLIDescription3": "它将在项目中添加 {0} 包引用,并在模块类中添加 {1} 依赖关系。", "PackageDetailPage_ManualInstallation": "2: 使用 Dotnet CLI 安装", - "PackageDetailPage_ManualInstallationDescription1": "使用集成开发环境或执行以下命令在项目中添加 {0} NuGet 软件包引用", + "PackageDetailPage_ManualInstallationDescription1": "使用集成开发环境或执行以下命令在项目中添加 {0} NuGet 包引用", "PackageDetailPage_ManualInstallationDescription2": "然后在 模块类中添加 {0} 依赖关系,如以下示例所示", - "PackageDetailPage_SeeDocumentation": "请参阅文档,了解如何在应用程序中使用此软件包。", - "PackageDetailPage_InstallingUsingPMC": "3: 使用软件包管理器控制台安装", - "PackageDetailPage_InstallingUsingPMCDescription1": "在 Visual Studio 中打开 软件包管理器控制台(工具 -> Nuget 软件包管理器 -> 软件包管理器控制台)并执行以下命令", - "UIOptions": "用户界面选项", + "PackageDetailPage_SeeDocumentation": "请参阅文档,了解如何在应用程序中使用此包。", + "PackageDetailPage_InstallingUsingPMC": "3: 使用包管理器控制台安装", + "PackageDetailPage_InstallingUsingPMCDescription1": "在 Visual Studio 中打开 包管理器控制台(工具 -> Nuget 包管理器 -> 包管理器控制台)并执行以下命令", + "UIOptions": "UI选项", "Testimonials": "客户感言", "CoolestCompaniesUseABPFramework": "最酷公司使用ABP框架要下載您的圖書,請點擊此處。", "SubscribeToNewsletter": "訂閱時事通訊以獲取有關 ABP.IO 平台中發生的事件的信息,例如新版本、文章、優惠等。", "FirstEdition": "第一版", diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json index c679aa33b6..0f71181156 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json @@ -4,7 +4,7 @@ "GivenTenantIsNotExist": "给定租户不存在:{0}", "GivenTenantIsNotAvailable": "所给租户不可用:{0}", "Tenant": "租户", - "Switch": "开关", + "Switch": "切换", "Name": "名称", "SwitchTenantHint": "将名称字段留空以切换到主机端。", "SwitchTenant": "切换租户", diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json index 2bbcdb48fa..e16a756de2 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json @@ -3,8 +3,8 @@ "texts": { "Volo.Authorization:010001": "授权失败!指定政策未授权。", "Volo.Authorization:010002": "授权失败!给定策略未授权: {PolicyName}", - "Volo.Authorization:010003": "授权失败!给定策略未授权给定资源:{资源名称}", - "Volo.Authorization:010004": "授权失败!未授予指定资源的指定要求:{资源名称}", - "Volo.Authorization:010005": "授权失败!未对指定资源授权:{资源名称}" + "Volo.Authorization:010003": "授权失败!给定策略未授权给定资源:{ResourceName}", + "Volo.Authorization:010004": "授权失败!未授予指定资源的指定要求:{ResourceName}", + "Volo.Authorization:010005": "授权失败!未对指定资源授权:{ResourceName}" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hans.json b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hans.json index 9e90e38b3b..5f7343e771 100644 --- a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hans.json @@ -1,25 +1,25 @@ { "culture": "zh-Hans", "texts": { - "DisplayName:Abp.Mailing.DefaultFromAddress": "默认地址", - "DisplayName:Abp.Mailing.DefaultFromDisplayName": "显示名称的默认值", - "DisplayName:Abp.Mailing.Smtp.Host": "主持人", - "DisplayName:Abp.Mailing.Smtp.Port": "港口", + "DisplayName:Abp.Mailing.DefaultFromAddress": "默认发件人地址", + "DisplayName:Abp.Mailing.DefaultFromDisplayName": "默认发件人名字", + "DisplayName:Abp.Mailing.Smtp.Host": "主机", + "DisplayName:Abp.Mailing.Smtp.Port": "端口", "DisplayName:Abp.Mailing.Smtp.UserName": "用户名", "DisplayName:Abp.Mailing.Smtp.Password": "密码", - "DisplayName:Abp.Mailing.Smtp.Domain": "域名", - "DisplayName:Abp.Mailing.Smtp.EnableSsl": "启用 SSL", + "DisplayName:Abp.Mailing.Smtp.Domain": "域", + "DisplayName:Abp.Mailing.Smtp.EnableSsl": "启用SSL", "DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "使用默认凭据", - "Description:Abp.Mailing.DefaultFromAddress": "默认发件人地址", - "Description:Abp.Mailing.DefaultFromDisplayName": "默认显示名称", - "Description:Abp.Mailing.Smtp.Host": "用于 SMTP 交易的主机名称或 IP 地址。", - "Description:Abp.Mailing.Smtp.Port": "用于 SMTP 事务的端口。", - "Description:Abp.Mailing.Smtp.UserName": "与证书相关联的用户名。", - "Description:Abp.Mailing.Smtp.Password": "与凭据相关联的用户名的密码。", - "Description:Abp.Mailing.Smtp.Domain": "验证凭证的域名或计算机名称。", - "Description:Abp.Mailing.Smtp.EnableSsl": "SmtpClient 是否使用安全套接字层 (SSL) 加密连接。", - "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "是否随请求发送 DefaultCredentials。", - "TextTemplate:StandardEmailTemplates.Layout": "默认电子邮件布局模板", - "TextTemplate:StandardEmailTemplates.Message": "简单的电子邮件信息模板" + "Description:Abp.Mailing.DefaultFromAddress": "默认的发件人地址.", + "Description:Abp.Mailing.DefaultFromDisplayName": "默认的发件人名字.", + "Description:Abp.Mailing.Smtp.Host": "SMTP 事务的主机名或主机 IP 地址.", + "Description:Abp.Mailing.Smtp.Port": "SMTP 事务的端口.", + "Description:Abp.Mailing.Smtp.UserName": "凭据关联的用户名.", + "Description:Abp.Mailing.Smtp.Password": "凭据关联的用户名的密码.", + "Description:Abp.Mailing.Smtp.Domain": "验证凭据的域名或计算机名.", + "Description:Abp.Mailing.Smtp.EnableSsl": "指定 SmtpClient 是否使用安全套接字层 (SSL) 加密连接.", + "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "控制默认凭据是否随请求一起发送.", + "TextTemplate:StandardEmailTemplates.Layout": "默认电子邮件模板", + "TextTemplate:StandardEmailTemplates.Message": "电子邮件的简单消息模板" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/zh-Hans.json b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/zh-Hans.json index e59156106a..9f2ed5f49c 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/zh-Hans.json @@ -1,8 +1,8 @@ { "culture": "zh-Hans", "texts": { - "Volo.Feature:010001": "功能未启用:{功能名称}", - "Volo.Feature:010002": "未启用所需的功能。必须启用所有这些功能:{功能名称}", - "Volo.Feature:010003": "未启用所需功能。这些功能中至少有一个必须启用:{功能名称}" + "Volo.Feature:010001": "功能未启用: {FeatureName}", + "Volo.Feature:010002": "必要的功能未启用. 这些功能需要启用: {FeatureNames}", + "Volo.Feature:010003": "必要的功能未启用. 需要启用这些功能中的一项:{FeatureNames}" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/zh-Hans.json b/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/zh-Hans.json index 29e1e31ef6..3e391272b6 100644 --- a/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.Ldap.Abstractions/Volo/Abp/Ldap/Localization/zh-Hans.json @@ -1,16 +1,16 @@ { "culture": "zh-Hans", "texts": { - "DisplayName:Abp.Ldap.Ldaps": "通过 SSL 的 LDAP", - "Description:Abp.Ldap.Ldaps": "通过 SSL 的 LDAP", + "DisplayName:Abp.Ldap.Ldaps": "基于SSL的LDAP", + "Description:Abp.Ldap.Ldaps": "基于SSL的LDAP", "DisplayName:Abp.Ldap.ServerHost": "服务器主机", "Description:Abp.Ldap.ServerHost": "服务器主机", "DisplayName:Abp.Ldap.ServerPort": "服务器端口", "Description:Abp.Ldap.ServerPort": "服务器端口", - "DisplayName:Abp.Ldap.BaseDc": "基础领域组件", - "Description:Abp.Ldap.BaseDc": "基础领域组件", - "DisplayName:Abp.Ldap.Domain": "域名", - "Description:Abp.Ldap.Domain": "域名", + "DisplayName:Abp.Ldap.BaseDc": "基域组件", + "Description:Abp.Ldap.BaseDc": "基域组件", + "DisplayName:Abp.Ldap.Domain": "域", + "Description:Abp.Ldap.Domain": "域", "DisplayName:Abp.Ldap.UserName": "用户名", "Description:Abp.Ldap.UserName": "用户名", "DisplayName:Abp.Ldap.Password": "密码", diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json index 5304decb76..3a2e19d1ed 100644 --- a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json @@ -3,7 +3,7 @@ "texts": { "TenantNotFoundMessage": "未找到租户!", "TenantNotFoundDetails": "没有租户的 ID 或名称为:{0}的租户。", - "TenantNotActiveMessage": "租户不活跃!", + "TenantNotActiveMessage": "租户未启用!", "TenantNotActiveDetails": "租户未激活,租户 ID 或名称为:{0}。" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json index 7872f917cb..bfac148af4 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - "Menu:Administration": "行政部门" + "Menu:Administration": "管理" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json index 33ee990235..cbc45a5a08 100644 --- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json @@ -2,60 +2,60 @@ "culture": "zh-Hans", "texts": { "Languages": "语言", - "AreYouSure": "你确定吗?", + "AreYouSure": "你确定吗?", "Cancel": "取消", - "Clear": "清晰", + "Clear": "清除", "Yes": "是", - "No": "没有", - "Ok": "好的", + "No": "否", + "Ok": "好", "Close": "关闭", - "Save": "节省", - "SavingWithThreeDot": "节约...", - "Actions": "行动", + "Save": "保存", + "SavingWithThreeDot": "保存中...", + "Actions": "操作", "Delete": "删除", - "SuccessfullyDeleted": "成功删除", + "SuccessfullyDeleted": "删除成功", "Edit": "编辑", "Refresh": "刷新", "Language": "语言", "LoadMore": "加载更多", - "ProcessingWithThreeDot": "处理...", - "LoadingWithThreeDot": "正在加载...", + "ProcessingWithThreeDot": "处理中...", + "LoadingWithThreeDot": "加载中...", "Welcome": "欢迎", "Login": "登录", "Register": "注册", - "Logout": "退出登录", + "Logout": "注销", "Submit": "提交", "Back": "返回", "PagerSearch": "搜索", "PagerNext": "下一页", "PagerPrevious": "上一页", - "PagerFirst": "第一", - "PagerLast": "最后", - "PagerInfo": "显示条目总数的_开始到_结束", - "PagerInfo{0}{1}{2}": "显示{0}至{1}的{2}条目", - "PagerInfoEmpty": "显示 0 到 0 共 0 个条目", - "PagerInfoFiltered": "(从_MAX_条目总数中筛选)。", - "NoDataAvailableInDatatable": "无数据", + "PagerFirst": "首页", + "PagerLast": "尾页", + "PagerInfo": "显示 _TOTAL_ 个条目中的 _START_ 到 _END_ 个.", + "PagerInfo{0}{1}{2}": "显示 {2} 个条目中的 {0} 到 {1} 个.", + "PagerInfoEmpty": "显示0个条目中的0到0", + "PagerInfoFiltered": "(从 _MAX_ 总条目中过滤掉)", + "NoDataAvailableInDatatable": "表中没有数据", "Total": "总计", - "Selected": "选定的", - "PagerShowMenuEntries": "显示 _MENU_ 条目", - "DatatableActionDropdownDefaultText": "行动", - "ChangePassword": "更改密码", - "PersonalInfo": "我的简介", - "AreYouSureYouWantToCancelEditingWarningMessage": "您有未保存的更改。", - "GoHomePage": "转到主页", + "Selected": "已选", + "PagerShowMenuEntries": "显示 _MENU_ 条数据", + "DatatableActionDropdownDefaultText": "操作", + "ChangePassword": "修改密码", + "PersonalInfo": "个人信息", + "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改.", + "GoHomePage": "返回主页", "GoBack": "返回", "Search": "搜索", - "ItemWillBeDeletedMessageWithFormat": "{0}将被删除!", - "ItemWillBeDeletedMessage": "此项目将被删除!", - "ManageYourAccount": "管理您的账户", + "ItemWillBeDeletedMessageWithFormat": "{0} 将被删除!", + "ItemWillBeDeletedMessage": "此项将被删除!", + "ManageYourAccount": "管理你的账户", "OthersGroup": "其他", "Today": "今天", - "Apply": "申请", - "InternetConnectionInfo": "操作无法执行。您的互联网连接暂时不可用。", - "CopiedToTheClipboard": "复制到剪贴板", - "AddNew": "添加新内容", - "ProfilePicture": "简介图片", + "Apply": "应用", + "InternetConnectionInfo": "无法执行该操作。您的互联网连接目前不可用。", + "CopiedToTheClipboard": "已复制到剪贴板", + "AddNew": "添新", + "ProfilePicture": "个人资料图片", "Theme": "主题", "NotAssigned": "未分配" } diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json index c5b9626a1d..e67e32f8bb 100644 --- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json @@ -1,39 +1,39 @@ { "culture": "zh-Hans", "texts": { - "'{0}' and '{1}' do not match.": "{0}\"和\"{1}\"不匹配。", - "The {0} field is not a valid credit card number.": "{0}字段不是有效的信用卡号。", - "{0} is not valid.": "{0}无效。", - "The {0} field is not a valid e-mail address.": "{0}字段不是有效的电子邮件地址。", - "The {0} field only accepts files with the following extensions: {1}": "{0} 字段只接受以下扩展名的文件:{1}", - "The field {0} must be a string or array type with a maximum length of '{1}'.": "字段 {0} 必须是字符串或数组类型,最大长度为\"{1}\"。", - "The field {0} must be a string or array type with a minimum length of '{1}'.": "字段 {0} 必须是字符串或数组类型,最小长度为\"{1}\"。", - "The {0} field is not a valid phone number.": "{0}字段不是有效电话号码。", - "The field {0} must be between {1} and {2}.": "字段 {0} 必须介于 {1} 和 {2} 之间。", - "The field {0} must match the regular expression '{1}'.": "字段 {0} 不符合所要求的格式。", - "The {0} field is required.": "{0}字段为必填字段。", - "The field {0} must be a string with a maximum length of {1}.": "字段 {0} 必须是最大长度为 {1} 的字符串。", - "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "字段 {0} 必须是长度最小为 {2} 最大为 {1} 的字符串。", - "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "{0} 字段不是有效的全限定 http、https 或 ftp URL。", - "The field {0} is invalid.": "字段 {0} 无效。", - "The value '{0}' is invalid.": "值'{0}'无效。", - "The field {0} must be a number.": "字段 {0} 必须是数字。", - "The field must be a number.": "字段必须是数字。", - "ThisFieldIsNotAValidCreditCardNumber.": "此字段不是有效的信用卡号。", - "ThisFieldIsNotValid.": "该字段无效。", - "ThisFieldIsNotAValidEmailAddress.": "该字段不是有效的电子邮件地址。", - "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "该字段只接受以下扩展名的文件:{0}", - "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "该字段必须是字符串或数组类型,最大长度为\"{0}\"。", - "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "该字段必须是字符串或数组类型,最小长度为\"{0}\"。", - "ThisFieldIsNotAValidPhoneNumber.": "此字段不是有效电话号码。", - "ThisFieldMustBeBetween{0}And{1}": "该字段必须介于{0}和{1}之间。", + "'{0}' and '{1}' do not match.": "'{0}'与'{1}'不匹配.", + "The {0} field is not a valid credit card number.": "字段{0}不是有效的信用卡号码.", + "{0} is not valid.": "{0}验证未通过.", + "The {0} field is not a valid e-mail address.": "字段{0}不是有效的邮箱地址.", + "The {0} field only accepts files with the following extensions: {1}": "{0}字段只允许以下扩展名的文件: {1}", + "The field {0} must be a string or array type with a maximum length of '{1}'.": "字段{0}必须是最大长度为'{1}'的字符串或数组.", + "The field {0} must be a string or array type with a minimum length of '{1}'.": "字段{0}必须是最小长度为'{1}'的字符串或数组.", + "The {0} field is not a valid phone number.": "字段{0}不是有效的手机号码.", + "The field {0} must be between {1} and {2}.": "字段{0}值必须在{1}和{2}范围内.", + "The field {0} must match the regular expression '{1}'.": "字段{0}与请求的格式不匹配。", + "The {0} field is required.": "字段{0}不可为空.", + "The field {0} must be a string with a maximum length of {1}.": "字段{0}必须是最大长度为{1}的字符串.", + "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "字段{0}必须是最小长度为{2}并且最大长度{1}的字符串.", + "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "字段{0}不是有效的完全限定的http,https或ftp URL.", + "The field {0} is invalid.": "字段{0}是无效值.", + "The value '{0}' is invalid.": "'{0}'是无效值", + "The field {0} must be a number.": "字段{0}必须是数字.", + "The field must be a number.": "该字段必须是数字.", + "ThisFieldIsNotAValidCreditCardNumber.": "字段不是有效的信用卡号码.", + "ThisFieldIsNotValid.": "验证未通过.", + "ThisFieldIsNotAValidEmailAddress.": "字段不是有效的邮箱地址.", + "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "字段只允许以下扩展名的文件: {0}", + "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "字段必须是最大长度为'{0}'的字符串或数组.", + "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "字段必须是最小长度为'{0}'的字符串或数组.", + "ThisFieldIsNotAValidPhoneNumber.": "字段不是有效的手机号码.", + "ThisFieldMustBeBetween{0}And{1}": "字段值必须在{0}和{1}范围内.", "ThisFieldMustBeGreaterThanOrEqual{0}": "该字段必须大于或等于 {0}。", "ThisFieldMustBeLessOrEqual{0}": "该字段必须小于或等于 {0}。", - "ThisFieldMustMatchTheRegularExpression{0}": "该字段必须与正则表达式\"{0}\"匹配。", - "ThisFieldIsRequired.": "该字段为必填字段。", - "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "该字段必须是长度不超过 {0} 的字符串。", - "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "该字段必须是字符串,最小长度为 {1},最大长度为 {0}。", - "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "此字段不是有效的全限定 http、https 或 ftp URL。", - "ThisFieldIsInvalid.": "该字段无效。" + "ThisFieldMustMatchTheRegularExpression{0}": "字段必须匹配正则表达式'{0}'.", + "ThisFieldIsRequired.": "字段不可为空.", + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "字段必须是长度为{0}的字符串.", + "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "字段必须是最小长度为{1}并且最大长度{0}的字符串.", + "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "字段{0}不是有效的完全限定的http,https或ftp URL.", + "ThisFieldIsInvalid.": "该字段无效." } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hans.json b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hans.json index c5af8041f3..93c7a97405 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hans.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hans.json @@ -4,7 +4,7 @@ "DisplayName:PersonModel:BirthDate1": "出生日期1", "DisplayName:BirthDate2": "出生日期2", "PersonModel:BirthDate3": "出生日期3", - "BirthDate": "出生日期", - "Value1": "价值一" + "BirthDate": "生日", + "Value1": "值1" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hans.json b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hans.json index f9ed6904f3..f2dfc1f43f 100644 --- a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hans.json +++ b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - "hello": "您好" + "hello": "你好" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/zh-Hans.json b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/zh-Hans.json index 385eec5ee0..e34ff86e0b 100644 --- a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/zh-Hans.json +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - "Volo.Abp.Http.DynamicProxying:10001": "带数据的业务异常:{0}" + "Volo.Abp.Http.DynamicProxying:10001": "业务异常: {0}" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hans.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hans.json index 95b2ff2d69..8a70ff3bea 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hans.json +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hans.json @@ -1,7 +1,7 @@ { "culture": "zh-Hans", "texts": { - "USA": "美利坚合众国", + "USA": "美国", "Brazil": "巴西" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hans.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hans.json index cf9ecf3cc4..70c1d6e828 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hans.json +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hans.json @@ -1,12 +1,12 @@ { "culture": "zh-Hans", "texts": { - "ThisFieldIsRequired": "该字段为必填字段", - "MaxLenghtErrorMessage": "该字段最多可以是\"{0}\"字符", - "Enum:BookType.Undefined": "未定义来自 ValidationResource", - "Enum:BookType.0": "来自 ValidationResource 的未定义值为 0", - "BookType.Adventure": "来自 ValidationResource 的冒险", - "BookType.1": "来自 ValidationResource 的值为 1 的冒险", - "Biography": "来自 ValidationResource 的传记" + "ThisFieldIsRequired": "此字段是必填字段", + "MaxLenghtErrorMessage": "该字段最多可包含'{0}'个字符", + "Enum:BookType.Undefined": "ValidationResource 中未定义", + "Enum:BookType.0": "未定义,来自 ValidationResource 的值为 0", + "BookType.Adventure": "ValidationResource 的冒险", + "BookType.1": "来自 ValidationResource 的值为 1 的 Adventure", + "Biography": "ValidationResource 的简介" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hans.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hans.json index 2defd8a25a..863f13895b 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hans.json +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hans.json @@ -1,16 +1,16 @@ { "culture": "zh-Hans", "texts": { - "Hello {0}.": "你好,{0}。", + "Hello {0}.": "你好 {0}.", "Car": "汽车", "CarPlural": "汽车", - "MaxLenghtErrorMessage": "该字段长度最多为\"{0}\"字符", + "MaxLenghtErrorMessage": "此字段的长度最多为'{0}'个字符", "Universe": "宇宙", "FortyTwo": "四十二", - "Enum:BookType.Undefined": "未定义", + "Enum:BookType.Undefined": "Undefined", "Enum:BookType.0": "未定义,值为 0", - "BookType.Adventure": "探险", - "BookType.1": "值为 1 的冒险", - "Biography": "简历" + "BookType.Adventure": "冒险", + "BookType.1": "冒险价值1", + "Biography": "传" } } \ No newline at end of file diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json index 9389c1c704..e142d8c2c4 100644 --- a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json +++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/zh-Hans.json @@ -2,6 +2,6 @@ "culture": "zh-Hans", "texts": { "HelloText": "你好 {0}", - "HowAreYou": "你好" + "HowAreYou": "你好吗?" } } \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json index cb034d0fcd..cc3fba3a70 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json @@ -11,8 +11,8 @@ "UserLockedOutMessage": "由于尝试登录无效,用户账户已被锁定。请稍候再试。", "InvalidUserNameOrPassword": "用户名或密码无效!", "LoginIsNotAllowed": "您不能登录!您的帐户未激活或需要确认您的电子邮件/电话号码。", - "SelfRegistrationDisabledMessage": "此应用程序已禁用自助注册。请联系应用程序管理员注册新用户。", - "LocalLoginDisabledMessage": "此应用程序禁用本地登录。", + "SelfRegistrationDisabledMessage": "应用程序未开放注册。请联系应用程序管理员注册新用户。", + "LocalLoginDisabledMessage": "应用程序禁用本地登录。", "Login": "登录", "Cancel": "取消", "Register": "注册", @@ -41,13 +41,13 @@ "NewPasswordSameAsOld": "新密码必须与旧密码不同。", "Manage": "管理", "MyAccount": "我的账户", - "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "是否启用了自助注册", + "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "是否启用了自行注册", "Description:Abp.Account.IsSelfRegistrationEnabled": "用户是否可以自己注册账户。", "DisplayName:Abp.Account.EnableLocalLogin": "使用本地账户进行身份验证", "Description:Abp.Account.EnableLocalLogin": "表示服务器是否允许用户使用本地账户进行身份验证。", "LoggedOutTitle": "签出", "LoggedOutText": "您已退出,很快将重新定向。", - "ReturnToText": "单击此处返回申请表", + "ReturnToText": "单击此处返回应用", "OrLoginWith": "或使用以下方式登录", "ForgotPassword": "忘记密码?", "SendPasswordResetLink_Information": "您的电子邮件中将收到重置密码的链接。如果您在几分钟内没有收到电子邮件,请重试。", @@ -60,7 +60,7 @@ "BackToLogin": "返回登录", "ProfileTab:Password": "更改密码", "ProfileTab:PersonalInfo": "个人信息", - "ReturnToApplication": "返回申请表", + "ReturnToApplication": "返回应用", "Volo.Account:InvalidEmailAddress": "无法找到给定的电子邮件地址:{0}", "PasswordReset": "密码重置", "PasswordResetInfoInEmail": "我们收到了账户恢复请求!如果您发起了该请求,请单击以下链接重置密码。", diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json index 6fbcac0a00..b1fc843f19 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json @@ -17,17 +17,17 @@ "Date": "日期", "Duration": "持续时间", "Detail": "详细信息", - "Overall": "总体情况", - "Actions": "行动", + "Overall": "总体", + "Actions": "操作", "ClientIpAddress": "客户端 IP 地址", "ClientName": "客户名称", "BrowserInfo": "浏览器信息", "Url": "网址", "UserName": "用户名", - "TenantImpersonator": "租户冒名顶替者", - "UserImpersonator": "用户冒名顶替者", + "TenantImpersonator": "租户模拟器", + "UserImpersonator": "用户模拟器", "UrlFilter": "URL 过滤器", - "Exceptions": "例外情况", + "Exceptions": "异常", "Comments": "评论", "HttpStatusCode": "HTTP 状态代码", "HttpStatusCodeFilter": "HTTP 状态代码过滤器", @@ -47,15 +47,15 @@ "Entity": "实体", "ChangeType": "更改类型", "ChangeTime": "时间", - "NewValue": "新价值", - "OriginalValue": "原始价值", - "PropertyName": "物业名称", - "PropertyTypeFullName": "物业类型 全名", + "NewValue": "新值", + "OriginalValue": "原始值", + "PropertyName": "属性名称", + "PropertyTypeFullName": "属性类型全名", "Yes": "是", "No": "没有", "Changes": "变化", "AverageExecutionDurationInLogsPerDay": "平均执行时间", - "AverageExecutionDurationInMilliseconds": "平均执行时间(毫秒", + "AverageExecutionDurationInMilliseconds": "平均执行时间(毫秒)", "ErrorRateInLogs": "日志中的错误率", "Success": "成功", "Fault": "故障", @@ -70,14 +70,14 @@ "Created": "创建", "Updated": "已更新", "Deleted": "已删除", - "ChangeHistory": "更改历史", - "FullChangeHistory": "全部更改历史", - "ChangeDetails": "更改详细信息", + "ChangeHistory": "变更记录", + "FullChangeHistory": "全部变更记录", + "ChangeDetails": "变更详情", "DurationMs": "持续时间(毫秒)", "StartDate": "开始日期", "EndDate": "结束日期", "Feature:AuditLoggingGroup": "审计日志", - "Feature:AuditLoggingEnable": "已启用审计记录页面", + "Feature:AuditLoggingEnable": "启用审计记录页面", "Feature:AuditLoggingEnableDescription": "在应用程序中启用审计日志页面。" } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json index 64a485300f..e472f6509b 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json @@ -2,87 +2,87 @@ "culture": "zh-Hans", "texts": { "Menu:Blogs": "博客", - "Menu:BlogManagement": "博客", - "Permission:Management": "管理层", + "Menu:BlogManagement": "博客管理", + "Permission:Management": "管理", "Permission:Edit": "编辑", "Permission:Create": "创建", "Permission:Delete": "删除", "Permission:Blogging": "博客", "Permission:Blogs": "博客", - "Permission:Posts": "职位", + "Permission:Posts": "帖子", "Permission:Tags": "标签", "Permission:Comments": "评论", "Permission:ClearCache": "清除缓存", "Title": "标题", "Delete": "删除", - "Reply": "答复", - "ReplyTo": "答复 {0}", + "Reply": "回复", + "ReplyTo": "回复 {0}", "ContinueReading": "继续阅读", "DaysAgo": "{0}天前", - "DayAgo": "{0}天前", + "DayAgo": "{0} 天前", "YearsAgo": "{0}年前", "YearAgo": "{0}年前", - "MonthsAgo": "{0} 个月前", - "MonthAgo": "{0}月前", + "MonthsAgo": "{0}月前", + "MonthAgo": "{0} 个月前", "WeeksAgo": "{0}周前", - "WeekAgo": "{0}周前", - "MinutesAgo": "{0}分钟前", - "MinuteAgo": "{0}分钟前", + "WeekAgo": "{0} 周前", + "MinutesAgo": "{0}分前", + "MinuteAgo": "{0} 分钟前", "SecondsAgo": "{0}秒前", - "SecondAgo": "{0}秒前", + "SecondAgo": "{0} 秒前", "HoursAgo": "{0}小时前", - "HourAgo": "{0}小时前", - "Now": "现在", + "HourAgo": "{0} 小时前", + "Now": "刚刚", "Content": "内容", - "SeeAll": "查看全部", + "SeeAll": "查看所有", "PopularTags": "热门标签", - "WiewsWithCount": "{0}条意见", - "LastPosts": "最新职位", - "LeaveComment": "发表评论", - "TagsInThisArticle": "本文中的标签", - "Posts": "职位", + "WiewsWithCount": "{0}人查看", + "LastPosts": "最后的帖子", + "LeaveComment": "发布评论", + "TagsInThisArticle": "文章中的标签", + "Posts": "帖子", "Edit": "编辑", "BLOG": "博客", - "CommentDeletionWarningMessage": "评论将被删除。", - "PostDeletionWarningMessage": "帖子将被删除。", - "BlogDeletionWarningMessage": "博客将被删除。", - "AreYouSure": "你确定吗?", - "CommentWithCount": "{0}评论", + "CommentDeletionWarningMessage": "评论将被删除.", + "PostDeletionWarningMessage": "帖子将被删除", + "BlogDeletionWarningMessage": "博客将被删除.", + "AreYouSure": "你确定吗?", + "CommentWithCount": "{0}个评论", "Comment": "评论", - "ShareOnTwitter": "在 Twitter 上分享", - "CoverImage": "封面图片", - "CreateANewPost": "创建新职位", - "CreateANewBlog": "创建新博客", - "WhatIsNew": "有什么新鲜事?", + "ShareOnTwitter": "分享到Twitter", + "CoverImage": "封面图", + "CreateANewPost": "创建一个新帖子", + "CreateANewBlog": "创建一个新博客", + "WhatIsNew": "最新消息", "Name": "名称", "ShortName": "简称", "CreationTime": "创建时间", - "Description": "说明", + "Description": "描述", "Blogs": "博客", "Tags": "标签", - "ShareOn": "分享到", - "TitleLengthWarning": "将标题长度控制在 60 个字符以内,以便于搜索引擎优化!", + "ShareOn": "分享", + "TitleLengthWarning": "保持标题大小不超过60个字符,实现SEO友好!", "ClearCache": "清除缓存", "ClearCacheConfirmationMessage": "您确定要清除缓存吗?", "MarkdownSupported": "支持 Markdown", - "FileUploadInfo": "拖放或粘贴复制的图片。", - "PostDescriptionHint": "* 将在文章链接预览中呈现,支持 HTML", + "FileUploadInfo": "拖放,拖放,或粘贴一个复制的图像。", + "PostDescriptionHint": "*将在文章链接预览中呈现,支持HTML", "ReadMore": "继续阅读", "MemberNotPublishedPostYet": "还没有帖子!", - "UpdateUserWebSiteInfo": "例如:https://johndoe.com", - "UpdateUserTwitterInfo": "示例:johndoe", - "UpdateUserGithubInfo": "示例:johndoe", - "UpdateUserLinkedinInfo": "例如: https://www.linkedin.com/...", - "UpdateUserCompanyInfo": "示例:沃乐软件", - "UpdateUserJobTitleInfo": "例如:软件开发人员软件开发人员", + "UpdateUserWebSiteInfo": "示例:https://johndoe.com", + "UpdateUserTwitterInfo": "示例:约翰多", + "UpdateUserGithubInfo": "示例:约翰多", + "UpdateUserLinkedinInfo": "示例:https://www.linkedin.com/...", + "UpdateUserCompanyInfo": "示例:沃洛软件", + "UpdateUserJobTitleInfo": "示例:软件开发人员", "WebSite": "网站", "UserName": "用户名", "FullURL": "完整网址", - "JobTitle": "职位名称", + "JobTitle": "职称", "PersonalWebsite": "个人网站", - "EditProfile": "编辑简介", - "MoreFromBlog": "博客中的更多内容", - "MoreFromUser": "更多来自 {0}", - "BlogPosts": "职位" + "EditProfile": "编辑个人资料", + "MoreFromBlog": "更多来自博客", + "MoreFromUser": "更多来自{0}", + "BlogPosts": "帖子" } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json index bd21043e92..6d8f9ea39e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json @@ -12,20 +12,20 @@ "ChoosePreference": "选择偏好...", "Cms": "CMS", "CmsKit.Comments": "评论", - "CmsKit.Ratings": "评级", + "CmsKit.Ratings": "评分", "CmsKit.Reactions": "反应", "CmsKit.Tags": "标签", "CmsKit:0002": "内容已经存在!", - "CmsKit:0003": "实体 {0} 不可标记。", + "CmsKit:0003": "实体 {0} 不可标签。", "CmsKit:Blog:0001": "给定的标头 ({Slug}) 已经存在!", "CmsKit:BlogPost:0001": "给定的标签已经存在!", "CmsKit:Comments:0001": "实体 {EntityType} 不可注释。", "CmsKit:Media:0001": "{Name}'不是有效的媒体名称。", "CmsKit:Media:0002": "实体不能拥有媒体。", "CmsKit:Page:0001": "给定的网址 ({Slug}) 已经存在。请尝试使用其他网址。", - "CmsKit:Rating:0001": "无法对实体 {EntityType} 进行评级。", + "CmsKit:Rating:0001": "无法对实体 {EntityType} 进行评分。", "CmsKit:Reaction:0001": "实体 {EntityType} 不能有反应。", - "CmsKit:Tag:0002": "实体不可标记!", + "CmsKit:Tag:0002": "实体不可标签!", "CommentAuthorizationExceptionMessage": "这些评论不允许公开展示。", "CommentDeletionConfirmationMessage": "此评论和所有回复将被删除!", "Comments": "评论", @@ -45,7 +45,7 @@ "EntityId": "实体 ID", "EntityType": "实体类型", "ExportCSV": "导出 CSV", - "Features": "特点", + "Features": "功能", "GenericDeletionConfirmationMessage": "您确定要删除\"{0}\"吗?", "IsActive": "活跃", "LastModification": "最后一次修改", @@ -80,13 +80,13 @@ "Permission:BlogManagement": "博客管理", "Permission:BlogManagement.Create": "创建", "Permission:BlogManagement.Delete": "删除", - "Permission:BlogManagement.Features": "特点", + "Permission:BlogManagement.Features": "功能", "Permission:BlogManagement.Update": "更新", "Permission:BlogPostManagement": "博文管理", "Permission:BlogPostManagement.Create": "创建", "Permission:BlogPostManagement.Delete": "删除", "Permission:BlogPostManagement.Update": "更新", - "Permission:BlogPostManagement.Publish": "出版", + "Permission:BlogPostManagement.Publish": "发布", "Permission:CmsKit": "CmsKit 管理员", "Permission:Comments": "评论管理", "Permission:Comments.Delete": "删除", @@ -118,15 +118,15 @@ "Permission:TagManagement.Create": "创建", "Permission:TagManagement.Delete": "删除", "Permission:TagManagement.Update": "更新", - "Permission:GlobalResources": "全球资源", + "Permission:GlobalResources": "全局资源", "Permission:CmsKitPublic": "CmsKit 公共", "Permission:Comments.DeleteAll": "全部删除", "PickYourReaction": "选择你的反应", - "Rating": "评级", - "RatingUndoMessage": "您的评级将被撤销。", + "Rating": "评分", + "RatingUndoMessage": "您的评分将被撤销。", "Reactions": "反应", "Read": "阅读", - "RepliesToThisComment": "对此评论的回复", + "RepliesToThisComment": "回复此评论", "Reply": "答复", "ReplyTo": "答复", "SamplePageMessage": "专业模块的示例页面", @@ -137,10 +137,10 @@ "SendMessage": "发送信息", "SelectedAuthor": "作者", "ShortDescription": "简要说明", - "Slug": "蛞蝓", - "Source": "资料来源", - "SourceUrl": "来源网址", - "Star": "明星", + "Slug": "Slug", + "Source": "源", + "SourceUrl": "源网址", + "Star": "星", "StartDate": "开始日期", "Style": "风格", "Subject": "主题", @@ -148,7 +148,7 @@ "Submit": "提交", "Subscribe": "订阅", "SuccessfullySaved": "成功保存!", - "TagDeletionConfirmationMessage": "您确定要删除\"{0}\"标记吗?", + "TagDeletionConfirmationMessage": "您确定要删除\"{0}\"标签吗?", "Tags": "标签", "Text": "文本", "ThankYou": "谢谢", @@ -167,24 +167,24 @@ "YourMessage": "您的信息", "YourReply": "您的回复", "MarkdownSupported": "Markdown 支持。", - "GlobalResources": "全球资源", + "GlobalResources": "全局", "SavedSuccessfully": "保存成功", - "CmsKit.BlogPost.Status.0": "草案", - "CmsKit.BlogPost.Status.1": "已出版", - "CmsKit.BlogPost.Status.2": "等待审查", + "CmsKit.BlogPost.Status.0": "草稿", + "CmsKit.BlogPost.Status.1": "已发布", + "CmsKit.BlogPost.Status.2": "等待审核", "BlogPostPublishConfirmationMessage": "您确定要发布博文\"{0}\"吗?", "SuccessfullyPublished": "成功发布!", "Draft": "草案", - "Publish": "出版", + "Publish": "发布", "BlogPostDraftConfirmationMessage": "您确定将博文\"{0}\"设置为草稿吗?", "BlogPostSendToReviewConfirmationMessage": "您确定要将博文\"{0}\"发送给管理员审核发布吗?", "SaveAsDraft": "保存为草稿", - "SendToReview": "发送审查", - "SendToReviewToPublish": "送审出版", + "SendToReview": "发送审核", + "SendToReviewToPublish": "送审发布", "BlogPostSendToReviewSuccessMessage": "博文\"{0}\"已送交管理员审核发布。", "HasBlogPostWaitingForReviewMessage": "您有一篇博文等待审核。点击列表。", "SelectAStatus": "选择状态", - "Status": "现状", + "Status": "状态", "CmsKit.BlogPost.ScrollIndex": "博客文章中的快速导航栏", "CmsKit.BlogPost.PreventXssFeature": "防止 XSS", "Add": "添加", @@ -202,30 +202,30 @@ "Feature:BlogEnableDescription": "CMS Kit 的博客帖子系统可在应用程序中动态创建博客和帖子。", "Feature:CommentEnable": "评论", "Feature:CommentEnableDescription": "CMS Kit 的评论系统允许对 BlogPost 等实体发表评论。", - "Feature:GlobalResourceEnable": "全球资源配置", + "Feature:GlobalResourceEnable": "全局配置", "Feature:GlobalResourceEnableDescription": "CMS Kit 的全局资源功能允许管理全局样式和脚本。", "Feature:MenuEnable": "菜单", "Feature:MenuEnableDescription": "CMS Kit 的动态菜单系统可动态添加/删除应用程序菜单。", "Feature:PageEnable": "分页", "Feature:PageEnableDescription": "CMS Kit 的页面系统可创建具有特定 URL 的静态页面。", - "Feature:RatingEnable": "评级", - "Feature:RatingEnableDescription": "CMS Kit 的评级系统允许用户对 BlogPost 等实体进行评级。", + "Feature:RatingEnable": "评分", + "Feature:RatingEnableDescription": "CMS Kit 的评分系统允许用户对 BlogPost 等实体进行评分。", "Feature:ReactionEnable": "反应", "Feature:ReactionEnableDescription": "CMS Kit 的反应系统允许用户向 BlogPost、Comments 等实体发送反应。", - "Feature:TagEnable": "Taging", - "Feature:TagEnableDescription": "CMS Kit 的标签系统允许标记 BlogPost 等实体。", + "Feature:TagEnable": "标签", + "Feature:TagEnableDescription": "CMS Kit 的标签系统允许标签 BlogPost 等实体。", "DeleteBlogPostMessage": "博客将被删除。你确定吗?", "CaptchaCode": "验证码", - "CommentTextRequired": "需要评论", - "CaptchaCodeErrorMessage": "您输入的验证码答案不正确。请重试", - "CaptchaCodeMissingMessage": "验证码丢失!", + "CommentTextRequired": "请输入评论", + "CaptchaCodeErrorMessage": "验证码错误,请重试", + "CaptchaCodeMissingMessage": "请输入验证码!", "UnAllowedExternalUrlMessage": "您包含了一个不允许的外部 URL。请在不包含外部 URL 的情况下重试。", "URL": "网址", "PopularTags": "热门标签", "RemoveCoverImageConfirmationMessage": "您确定要移除封面图像吗?", "RemoveCoverImage": "移除封面图像", "CssClass": "CSS 类", - "TagsHelpText": "标签应以逗号分隔(例如:标签 1、标签 2、标签 3)", + "TagsHelpText": "标签应以逗号分隔(例如:标签 1,标签 2,标签 3)", "ThisPartOfContentCouldntBeLoaded": "这部分内容无法加载。", "DuplicateCommentAttemptMessage": "检测到重复发表评论。您的评论已经提交。" } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json index f62b765395..e5bb9f15b6 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/zh-Hans.json @@ -1,62 +1,62 @@ { "culture": "zh-Hans", "texts": { - "Permission:DocumentManagement": "文件管理", + "Permission:DocumentManagement": "文档管理", "Permission:Projects": "项目", "Permission:Edit": "编辑", "Permission:Delete": "删除", "Permission:Create": "创建", - "Permission:Documents": "文件", - "Menu:Documents": "文件", - "Menu:DocumentManagement": "文件", + "Permission:Documents": "文档", + "Menu:Documents": "文档", + "Menu:DocumentManagement": "文档", "Menu:ProjectManagement": "项目", "CreateANewProject": "创建新项目", "Edit": "编辑", "Create": "创建", - "Pull": "拉", + "Pull": "拉取", "Projects": "项目", "Name": "名称", "ShortName": "简称", - "DocumentStoreType": "文档存储类型", + "DocumentStoreType": "文件存储类型", "Format": "格式", - "ShortNameInfoText": "将用于唯一 URL。", + "ShortNameInfoText": "将用于唯一的URL.", "DisplayName:Name": "名称", "DisplayName:ShortName": "简称", "DisplayName:Format": "格式", - "DisplayName:DefaultDocumentName": "默认文件名", - "DisplayName:NavigationDocumentName": "导航文件名称", + "DisplayName:DefaultDocumentName": "默认文档名称", + "DisplayName:NavigationDocumentName": "导航文档名称", "DisplayName:MinimumVersion": "最低版本", "DisplayName:MainWebsiteUrl": "主网站网址", - "DisplayName:LatestVersionBranchName": "最新版本分支名称", - "DisplayName:GitHubRootUrl": "GitHub 根 URL", - "DisplayName:GitHubAccessToken": "GitHub 访问令牌", - "DisplayName:GitHubUserAgent": "GitHub 用户代理", - "DisplayName:GithubVersionProviderSource": "GitHub 版本提供源代码", + "DisplayName:LatestVersionBranchName": "最新版本的分支名称", + "DisplayName:GitHubRootUrl": "GitHub根网址", + "DisplayName:GitHubAccessToken": "GitHub访问令牌", + "DisplayName:GitHubUserAgent": "GitHub用户代理", + "DisplayName:GithubVersionProviderSource": "GitHub版本提供源", "DisplayName:VersionBranchPrefix": "版本分支前缀", - "DisplayName:All": "全部拉出", + "DisplayName:All": "拉取所有", "DisplayName:LanguageCode": "语言代码", "DisplayName:Version": "版本", - "Documents": "文件", - "RemoveFromCache": "从缓存中删除并重新索引", + "Documents": "文档", + "RemoveFromCache": "从缓存中清除并重新索引", "Reindex": "重新索引", - "ReindexCompleted": "重新索引已完成", + "ReindexCompleted": "重新索引完成", "RemovedFromCache": "从缓存中删除并重新索引", - "RemoveFromCacheConfirmation": "您确定要从缓存中删除此项目吗?", - "ReIndexDocumentConfirmation": "您确定要重新索引\"{0}\"吗?", + "RemoveFromCacheConfirmation": "你确定要从缓存中删除该项吗?", + "ReIndexDocumentConfirmation": "您确定要重新索引“{0}”吗?", "DeleteFromDatabase": "从数据库中删除", - "Deleted": "已删除", + "Deleted": "删除", "Search": "搜索", - "StartDate": "开始日期", - "EndDate": "结束日期", + "StartDate": "开始时间", + "EndDate": "结束时间", "CreationTime": "创建时间", - "LastUpdateTime": "最后更新", - "LastSignificantUpdateTime": "最后一次重要更新", + "LastUpdateTime": "最后修改", + "LastSignificantUpdateTime": "上次重大更新", "Version": "版本", "LanguageCode": "语言代码", - "FileName": "文件名", - "LastCachedTime": "缓存时间", + "FileName": "文件名称", + "LastCachedTime": "缓存项", "Project": "项目", "AdvancedFilters": "高级过滤器", - "RemoveCacheAndReIndexConfirmation": "文件\"{0}\"将从缓存中删除并重新索引。您确认了吗?" + "RemoveCacheAndReIndexConfirmation": "文档“{0}”将从缓存中删除并重新编制索引。 你确认吗?" } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json index f5c4d68e58..3f30cf0d09 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json @@ -1,7 +1,7 @@ { "culture": "zh-Hans", "texts": { - "Documents": "文件", + "Documents": "文档", "BackToWebsite": "返回网站", "Contributors": "贡献者", "ShareOn": "分享到", @@ -17,26 +17,26 @@ "SuccessfullyReIndexProject": "成功重新索引:\"{0}\"", "ReIndexAllProjectConfirmationMessage": "您确定要重新索引所有项目吗?", "SuccessfullyReIndexAllProject": "成功重新索引了所有项目", - "InThisDocument": "在本文件中", + "InThisDocument": "在本文档中", "GoToTop": "返回页首", "Projects": "项目", "NoProjectWarning": "目前还没有任何项目!", - "DocumentNotFound": "哎呀,没有找到所需的文件!", + "DocumentNotFound": "哎呀,没有找到所需的文档!", "ProjectNotFound": "哎呀,没有找到请求的项目!", - "NavigationDocumentNotFound": "该版本没有导航文件!", - "DocumentNotFoundInSelectedLanguage": "未找到所需语言的文件。显示默认语言的文件。", + "NavigationDocumentNotFound": "该版本没有导航文档!", + "DocumentNotFoundInSelectedLanguage": "未找到所需语言的文档。显示默认语言的文档。", "FilterTopics": "筛选主题", - "FullSearch": "在文件中搜索", - "Volo.Docs.Domain:010001": "未启用弹性搜索。", - "MultipleVersionDocumentInfo": "本文件有多个版本。请选择最适合您的选项。", + "FullSearch": "在文档中搜索", + "Volo.Docs.Domain:010001": "未启用Elastic search。", + "MultipleVersionDocumentInfo": "本文档有多个版本。请选择最适合您的选项。", "New": "新", - "Upd": "更新", + "Upd": "更新文档", "NewExplanation": "最近两周创建。", "UpdatedExplanation": "最近两周更新。", - "Volo.Docs.Domain:010002": "短名 {ShortName} 已经存在。", - "Preview": "预展", + "Volo.Docs.Domain:010002": "简称 {ShortName} 已经存在。", + "Preview": "预览", "Search": "搜索", "SearchResults": "搜索结果", - "SearchInTheAllDocuments": "在所有文件中搜索" + "SearchInTheAllDocuments": "在所有文档中搜索" } } \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json index 26212298a2..6663b0de00 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json @@ -1,16 +1,16 @@ { "culture": "zh-Hans", "texts": { - "Features": "特点", + "Features": "功能", "NoFeatureFoundMessage": "没有任何可用的功能。", "ManageHostFeatures": "管理主机功能", "ManageHostFeaturesText": "点击以下按钮即可管理主机端功能。", "Permission:FeatureManagement": "功能管理", "Permission:FeatureManagement.ManageHostFeatures": "管理主机功能", - "Volo.Abp.FeatureManagement:InvalidFeatureValue": "{0}特征值无效!", + "Volo.Abp.FeatureManagement:InvalidFeatureValue": "{0}功能值无效!", "Menu:FeatureManagement": "功能管理", "ResetToDefault": "重置为默认值", - "ResetedToDefault": "重置为默认值", + "ResetedToDefault": "已重置为默认值", "AreYouSure": "你确定吗?", "AreYouSureToResetToDefault": "您确定要重置为默认设置吗?" } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index 98731e5cf7..797c1b495a 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -1,126 +1,126 @@ { "culture": "zh-Hans", "texts": { - "Menu:IdentityManagement": "身份管理", + "Menu:IdentityManagement": "身份认证管理", "Users": "用户", "NewUser": "新用户", - "UserName": "用户名", - "Surname": "姓氏", - "EmailAddress": "电子邮件地址", - "PhoneNumber": "电话号码", + "UserName": "用户名称", + "Surname": "姓", + "EmailAddress": "邮箱地址", + "PhoneNumber": "手机号", "UserInformations": "用户信息", - "DisplayName:IsDefault": "默认值", + "DisplayName:IsDefault": "默认", "DisplayName:IsStatic": "静态", - "DisplayName:IsPublic": "公众", + "DisplayName:IsPublic": "公开", "Roles": "角色", "Password": "密码", - "PersonalInfo": "我的简介", + "PersonalInfo": " 个人信息", "PersonalSettings": "个人设置", - "UserDeletionConfirmationMessage": "用户'{0}'将被删除。你确认吗?", - "RoleDeletionConfirmationMessage": "角色\"{0}\"将被删除。你确认吗?", + "UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?", + "RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?", "DisplayName:RoleName": "角色名称", - "DisplayName:UserName": "用户名", - "DisplayName:Name": "名称", - "DisplayName:Surname": "姓氏", + "DisplayName:UserName": "用户名称", + "DisplayName:Name": "名", + "DisplayName:Surname": "姓", "DisplayName:Password": "密码", - "DisplayName:Email": "电子邮件地址", - "DisplayName:PhoneNumber": "电话号码", - "DisplayName:TwoFactorEnabled": "双因素验证", - "DisplayName:IsActive": "活跃", - "DisplayName:LockoutEnabled": "登录失败后锁定账户", + "DisplayName:Email": "邮箱地址", + "DisplayName:PhoneNumber": "手机号码", + "DisplayName:TwoFactorEnabled": "二次认证", + "DisplayName:IsActive": "启用", + "DisplayName:LockoutEnabled": "登录失败,账户被锁定", "NewRole": "新角色", "RoleName": "角色名称", "CreationTime": "创建时间", - "Permissions": "权限", +@ -35,50 +35,50 @@ "DisplayName:CurrentPassword": "当前密码", "DisplayName:NewPassword": "新密码", "DisplayName:NewPasswordConfirm": "确认新密码", - "PasswordChangedMessage": "您的密码已成功更改。", - "PersonalSettingsSavedMessage": "您的个人设置已成功保存。", - "Volo.Abp.Identity:DefaultError": "发生未知故障。", - "Volo.Abp.Identity:ConcurrencyFailure": "乐观并发性检查失败。您正在处理的实体已被其他用户修改。请放弃更改并重试。", - "Volo.Abp.Identity:DuplicateEmail": "电子邮件'{0}'已被占用。", - "Volo.Abp.Identity:DuplicateRoleName": "角色名称\"{0}\"已被占用。", - "Volo.Abp.Identity:DuplicateUserName": "用户名'{0}'已被注册。", - "Volo.Abp.Identity:InvalidEmail": "电子邮件'{0}'无效。", - "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效。", - "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代次数必须是正整数。", - "Volo.Abp.Identity:InvalidRoleName": "角色名称\"{0}\"无效。", - "Volo.Abp.Identity:InvalidToken": "无效令牌。", - "Volo.Abp.Identity:InvalidUserName": "用户名\"{0}\"无效,只能包含字母或数字。", - "InvalidUserName": "用户名'{0}'无效。", - "Volo.Abp.Identity:LoginAlreadyAssociated": "已存在使用此登录名的用户。", - "Volo.Abp.Identity:PasswordMismatch": "密码不正确。", - "Volo.Abp.Identity:PasswordRequiresDigit": "密码必须至少有一位数('0'-'9')。", - "Volo.Abp.Identity:PasswordRequiresLower": "密码必须至少有一个小写字母('a'-'z')。", - "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码必须至少有一个非字母数字字符。", - "Volo.Abp.Identity:PasswordRequiresUpper": "密码必须至少有一个大写字母('A'-'Z')。", - "Volo.Abp.Identity:PasswordTooShort": "密码必须至少包含 {0} 个字符。", - "Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码必须至少使用 {0} 个不同字符。", - "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在。", - "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码。", - "Volo.Abp.Identity:UserAlreadyInRole": "用户已是角色\"{0}\"。", - "Volo.Abp.Identity:UserLockedOut": "用户被锁定。", - "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定。", - "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在。", - "Volo.Abp.Identity:UserNotInRole": "用户不在\"{0}\"角色中。", - "Volo.Abp.Identity:PasswordConfirmationFailed": "密码与确认密码不匹配。", - "Volo.Abp.Identity:NullSecurityStamp": "用户安全印章不能为空。", - "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "恢复密码兑换失败。", - "Volo.Abp.Identity:010001": "您不能删除自己的账户!", - "Volo.Abp.Identity:010002": "不能为一个用户设置超过 {MaxUserMembershipCount} 的组织单位!", - "Volo.Abp.Identity:010003": "无法更改外部登录用户的密码!", - "Volo.Abp.Identity:010004": "已有一个名称为 {0} 的组织单位。同一层级不能创建两个同名单位。", - "Volo.Abp.Identity:010005": "静态角色不能重命名。", - "Volo.Abp.Identity:010006": "静态角色不可删除。", - "Volo.Abp.Identity:010007": "您无法更改双因素设置。", - "Volo.Abp.Identity:010008": "不允许更改双因素设置。", - "Volo.Abp.Identity:010009": "你不能委派自己。", - "Identity.OrganizationUnit.MaxUserMembershipCount": "用户允许的组织单位成员数量上限", - "ThisUserIsNotActiveMessage": "该用户未激活。", - "Permission:IdentityManagement": "身份管理", + "PasswordChangedMessage": "你已成功更改密码.", + "PersonalSettingsSavedMessage": "你的个人设置保存成功.", + "Volo.Abp.Identity:DefaultError": "发生了一个未知错误.", + "Volo.Abp.Identity:ConcurrencyFailure": "乐观并发检查失败. 你正在处理的对象已被其他用户修改. 请放弃你的更改, 然后重试.", + "Volo.Abp.Identity:DuplicateEmail": "邮箱 '{0}' 已存在.", + "Volo.Abp.Identity:DuplicateRoleName": "角色名 '{0}' 已存在.", + "Volo.Abp.Identity:DuplicateUserName": "用户名 '{0}' 已存在.", + "Volo.Abp.Identity:InvalidEmail": "邮箱 '{0}' 无效.", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", + "Volo.Abp.Identity:InvalidRoleName": "角色名 '{0}' 无效.", + "Volo.Abp.Identity:InvalidToken": "token无效.", + "Volo.Abp.Identity:InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", + "InvalidUserName": "用户名 '{0}' 无效.", + "Volo.Abp.Identity:LoginAlreadyAssociated": "此登录名的用户已存在.", + "Volo.Abp.Identity:PasswordMismatch": "密码错误.", + "Volo.Abp.Identity:PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", + "Volo.Abp.Identity:PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", + "Volo.Abp.Identity:PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", + "Volo.Abp.Identity:PasswordTooShort": "密码至少为{0}个字符.", + "Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码至少包含{0}个唯一字符.", + "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在.", + "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码.", + "Volo.Abp.Identity:UserAlreadyInRole": "用户已具有角色 '{0}'.", + "Volo.Abp.Identity:UserLockedOut": "用户被锁定.", + "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定.", + "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在.", + "Volo.Abp.Identity:UserNotInRole": "用户不具有 '{0}' 角色.", + "Volo.Abp.Identity:PasswordConfirmationFailed": "密码或确认密码不一致.", + "Volo.Abp.Identity:NullSecurityStamp": "用户安全标识不能为空.", + "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "恢复代码兑换失败.", + "Volo.Abp.Identity:010001": "你无法删除自己的帐户!", + "Volo.Abp.Identity:010002": "不能为用户设置超过{MaxUserMembershipCount}个组织单位!", + "Volo.Abp.Identity:010003": "无法更改外部登录用户的密码!", + "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", + "Volo.Abp.Identity:010005": "无法重命名静态角色.", + "Volo.Abp.Identity:010006": "无法删除静态角色.", + "Volo.Abp.Identity:010007": "你不能修改你的双因素身份验证设置", + "Volo.Abp.Identity:010008": "不允许修改双因素身份验证设置.", + "Volo.Abp.Identity:010009": "你不能委托给自己.", + "Identity.OrganizationUnit.MaxUserMembershipCount": "组织单位最大允许的成员资格计数", + "ThisUserIsNotActiveMessage": "该用户不可用.", + "Permission:IdentityManagement": "身份标识管理", "Permission:RoleManagement": "角色管理", "Permission:Create": "创建", "Permission:Edit": "编辑", - "Permission:Delete": "删除", +@ -86,44 +86,44 @@ "Permission:ChangePermissions": "更改权限", "Permission:UserManagement": "用户管理", "Permission:UserLookup": "用户查询", - "DisplayName:Abp.Identity.Password.RequiredLength": "所需长度", - "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "所需的唯一字符编号", - "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "必须填写的非字母数字字符", - "DisplayName:Abp.Identity.Password.RequireLowercase": "所需小写字符", - "DisplayName:Abp.Identity.Password.RequireUppercase": "必填大写字符", - "DisplayName:Abp.Identity.Password.RequireDigit": "所需数字", + "DisplayName:Abp.Identity.Password.RequiredLength": "要求长度", + "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "要求唯一字符数量", + "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "要求非字母数字", + "DisplayName:Abp.Identity.Password.RequireLowercase": "要求小写字母", + "DisplayName:Abp.Identity.Password.RequireUppercase": "要求大写字母", + "DisplayName:Abp.Identity.Password.RequireDigit": "要求数字", "DisplayName:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "强制用户定期更改密码", - "DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密码更改周期(天)", - "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "新用户已启用", - "DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定持续时间(秒)", - "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问次数", - "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "要求确认电子邮件", - "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "允许用户确认电话号码", - "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "要求确认电话号码", - "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "允许用户更改用户名", - "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "允许用户更改电子邮件地址", - "Description:Abp.Identity.Password.RequiredLength": "密码的最小长度。", - "Description:Abp.Identity.Password.RequiredUniqueChars": "密码必须包含的最少唯一字符数。", - "Description:Abp.Identity.Password.RequireNonAlphanumeric": "如果密码必须包含一个非字母数字字符。", - "Description:Abp.Identity.Password.RequireLowercase": "如果密码必须包含小写 ASCII 字符。", - "Description:Abp.Identity.Password.RequireUppercase": "如果密码必须包含大写 ASCII 字符。", - "Description:Abp.Identity.Password.RequireDigit": "如果密码必须包含一位数字。", - "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码。", - "Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户密码的有效天数。", - "Description:Abp.Identity.Lockout.AllowedForNewUsers": "是否可以锁定新用户。", - "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时,用户被锁定的持续时间。", - "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "假定锁定已启用,用户被锁定前允许的失败访问次数。", - "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登录是否需要确认的电子邮件地址。", - "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "用户是否可以确认电话号码。", - "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "是否需要确认电话号码才能登录。", - "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "用户是否可以更新用户名。", - "Description:Abp.Identity.User.IsEmailUpdateEnabled": "用户是否可以更新电子邮件。", - "Details": "详细信息", + "DisplayName:Abp.Identity.Password.PasswordChangePeriodDays": "密码更改周期(天)", + "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户", + "DisplayName:Abp.Identity.Lockout.LockoutDuration": "锁定时间(秒)", + "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "最大失败访问尝试次数", + "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "要求验证的电子邮箱", + "DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "允许用户确认他们的电话号码", + "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "要求验证的手机号码", + "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "启用用户名更新", + "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "启用电子邮箱更新", + "Description:Abp.Identity.Password.RequiredLength": "密码的最小长度.", + "Description:Abp.Identity.Password.RequiredUniqueChars": "密码必须包含唯一字符的数量.", + "Description:Abp.Identity.Password.RequireNonAlphanumeric": "密码是否必须包含非字母数字.", + "Description:Abp.Identity.Password.RequireLowercase": "密码是否必须包含小写字母.", + "Description:Abp.Identity.Password.RequireUppercase": "密码是否必须包含大写字母.", + "Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字.", + "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码.", + "Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户必须更改密码的周期(天).", + "Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定.", + "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒).", + "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数.", + "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登录时是否需要验证的电子邮箱.", + "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "用户是否可以确认电话号码", + "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "登录时是否需要验证的手机号码.", + "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "是否允许用户更新用户名.", + "Description:Abp.Identity.User.IsEmailUpdateEnabled": "是否允许用户更新电子邮箱.", + "Details": "详情", "CreatedBy": "创建者", - "ModifiedBy": "修改", + "ModifiedBy": "修改者", "ModificationTime": "修改时间", "PasswordUpdateTime": "密码更新时间", "LockoutEndTime": "锁定结束时间", diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json index eb0a7f20b9..afb5824356 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/zh-Hans.json @@ -1,14 +1,14 @@ { "culture": "zh-Hans", "texts": { - "Volo.IdentityServer:DuplicateIdentityResourceName": "身份资源名称已存在:名称", - "Volo.IdentityServer:DuplicateApiResourceName": "Api 资源名称已存在:名称", - "Volo.IdentityServer:DuplicateApiScopeName": "Api 范围名称已存在:名称", - "Volo.IdentityServer:DuplicateClientId": "客户 ID 已存在:{客户 ID}", - "UserLockedOut": "由于尝试登录无效,用户账户已被锁定。请稍候再试。", - "InvalidUserNameOrPassword": "用户名或密码无效!", - "LoginIsNotAllowed": "您不能登录!您的帐户未激活或需要确认您的电子邮件/电话号码。", - "InvalidUsername": "用户名或密码无效!", + "Volo.IdentityServer:DuplicateIdentityResourceName": "Identity资源名称已存在: {Name}", + "Volo.IdentityServer:DuplicateApiResourceName": "Api资源名称已存在: {Name}", + "Volo.IdentityServer:DuplicateApiScopeName": "Api Scope已存在: {Name}", + "Volo.IdentityServer:DuplicateClientId": "ClientId已经存在: {ClientId}", + "UserLockedOut": "登录失败,用户账户已被锁定.请稍后再试.", + "InvalidUserNameOrPassword": "用户名或密码错误!", + "LoginIsNotAllowed": "无法登录!你的账号未激活或者需要验证邮箱地址/手机号.", + "InvalidUsername": "用户名或密码错误!", "InvalidAuthenticatorCode": "验证码无效!", "InvalidRecoveryCode": "恢复代码无效!", "TheTargetUserIsNotLinkedToYou": "目标用户与您没有关联!" diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json index c213ac6063..53c3bc7012 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json @@ -5,9 +5,9 @@ "TheUserDetailsCannotBbeRetrieved": "无法检索用户详细信息。", "TheApplicationDetailsCannotBeFound": "无法找到申请详情。", "DetailsConcerningTheCallingClientApplicationCannotBeFound": "无法找到有关调用客户端应用程序的详细信息。", - "TheSpecifiedGrantTypeIsNotImplemented": "未执行指定的授权类型 {0}。", + "TheSpecifiedGrantTypeIsNotImplemented": "未实施指定的授权类型 {0}。", "Authorization": "授权", - "DoYouWantToGrantAccessToYourData": "您希望允许 {0} 访问您的数据吗?", + "DoYouWantToGrantAccessToYourData": "是否要授予 {0} 访问你的数据的权限?", "ScopesRequested": "申请范围", "Accept": "接受", "Deny": "拒绝" diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json index d458f5f395..afcdb60351 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/zh-Hans.json @@ -2,10 +2,10 @@ "culture": "zh-Hans", "texts": { "Permissions": "权限", - "OnlyProviderPermissons": "只有该供应商", - "All": "全部", + "OnlyProviderPermissons": "只有这个提供者", + "All": "所有", "SelectAllInAllTabs": "授予所有权限", - "SelectAllInThisTab": "选择所有", + "SelectAllInThisTab": "全选", "SaveWithoutAnyPermissionsWarningMessage": "您确定要在没有任何权限的情况下保存吗?" } } \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index 524c1b58e9..f024f9f775 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -2,37 +2,37 @@ "culture": "zh-Hans", "texts": { "Settings": "设置", - "SuccessfullySaved": "成功保存", + "SuccessfullySaved": "保存成功", "Permission:SettingManagement": "设置管理", - "Permission:Emailing": "发送电子邮件", - "Permission:EmailingTest": "电子邮件测试", + "Permission:Emailing": "邮件", + "Permission:EmailingTest": "邮件测试", "Permission:TimeZone": "时区", - "SendTestEmail": "发送测试电子邮件", - "SenderEmailAddress": "发件人电子邮件地址", - "TargetEmailAddress": "目标电子邮件地址", + "SendTestEmail": "发送测试邮件", + "SenderEmailAddress": "发件人邮箱地址", + "TargetEmailAddress": "收件人邮箱地址", "Subject": "主题", - "Body": "身体", - "TestEmailSubject": "测试电子邮件 {0}", - "TestEmailBody": "在此测试电子邮件正文信息", - "SuccessfullySent": "成功发送", + "Body": "正文", + "TestEmailSubject": "测试邮件 {0}", + "TestEmailBody": "测试邮件内容", + "SuccessfullySent": "发送成功", "Send": "发送", - "Menu:Emailing": "发送电子邮件", + "Menu:Emailing": "邮件", "Menu:TimeZone": "时区", "DisplayName:Timezone": "时区", - "TimezoneHelpText": "此设置用于全应用程序或基于租户的设置。", - "SmtpHost": "主持人", - "SmtpPort": "港口", + "TimezoneHelpText": "此设置用于应用程序范围或基于租户。", + "SmtpHost": "主机", + "SmtpPort": "端口", "SmtpUserName": "用户名", "SmtpPassword": "密码", - "SmtpDomain": "域名", - "SmtpEnableSsl": "启用 ssl", + "SmtpDomain": "域", + "SmtpEnableSsl": "启用ssl", "SmtpUseDefaultCredentials": "使用默认凭据", - "DefaultFromAddress": "默认地址", - "DefaultFromDisplayName": "显示名称的默认值", + "DefaultFromAddress": "默认发件人", + "DefaultFromDisplayName": "默认显示名称", "Feature:SettingManagementGroup": "设置管理", "Feature:SettingManagementEnable": "启用设置管理", "Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统。", - "Feature:AllowChangingEmailSettings": "允许更改电子邮件设置。", - "Feature:AllowChangingEmailSettingsDescription": "允许更改电子邮件设置。" + "Feature:AllowChangingEmailSettings": "允许更改邮件设置。", + "Feature:AllowChangingEmailSettingsDescription": "允许更改邮件设置。" } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json index 80a729645b..8cff1a09b7 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/zh-Hans.json @@ -1,11 +1,11 @@ { "culture": "zh-Hans", "texts": { - "Volo.Abp.TenantManagement:DuplicateTenantName": "租户名称已存在:名称", + "Volo.Abp.TenantManagement:DuplicateTenantName": "租户名称已存在:{Name}", "Menu:TenantManagement": "租户管理", "Tenants": "租户", "NewTenant": "新租户", - "TenantName": "租户姓名", + "TenantName": "租户名称", "DisplayName:TenantName": "租户名称", "TenantDeletionConfirmationMessage": "租户'{0}'将被删除。您确认吗?", "ConnectionStrings": "连接字符串", diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json index 17bb233185..46e5e4b811 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Localization/Resources/zh-Hans.json @@ -7,7 +7,7 @@ "LastUpdateTime": "最后更新时间", "VirtualFileName": "虚拟文件名", "FileContent": "文件内容", - "Size": "尺寸", + "Size": "文件大小", "BackToRoot": "返回根目录", "EmptyFileInfoList": "没有虚拟文件" } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json index a442261ae0..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Localization/MyProjectName/zh-Hans.json @@ -1,8 +1,8 @@ { "culture": "zh-Hans", "texts": { - "Welcome_Title": "欢迎光临", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Title": "欢迎", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json index 8e05aaf1e7..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json index 8e05aaf1e7..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json index a442261ae0..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Localization/MyProjectName/zh-Hans.json @@ -1,8 +1,8 @@ { "culture": "zh-Hans", "texts": { - "Welcome_Title": "欢迎光临", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Title": "欢迎", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json index 8e05aaf1e7..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json index 8e05aaf1e7..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json index 8e05aaf1e7..a43366df48 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Localization/MyProjectName/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "Welcome_Title": "欢迎", - "Welcome_Text": "这是 ABP 框架的简约单层应用程序启动模板。", + "Welcome_Text": "这是 ABP 框架的极简单层应用程序启动模板。", "Menu:Home": "首页" } } \ No newline at end of file From e4e9d9a7f9d590879d4c2a80bff4c619fb578adb Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 2 Jan 2024 10:25:50 +0800 Subject: [PATCH 18/88] Improve --- .../Base/Localization/Resources/zh-Hans.json | 2 +- .../Localization/Resources/zh-Hans.json | 38 +++--- .../Localization/Resources/zh-Hans.json | 12 +- .../Www/Localization/Resources/zh-Hans.json | 14 +-- .../Authorization/Localization/zh-Hans.json | 10 +- .../GlobalFeatures/Localization/zh-Hans.json | 2 +- .../AuditLogging/Localization/zh-Hans.json | 4 +- .../Localization/Resources/zh-Hans.json | 16 +-- .../Abp/Identity/Localization/zh-Hans.json | 112 +++++++++--------- .../Localization/OpenIddict/zh-Hans.json | 6 +- 10 files changed, 107 insertions(+), 109 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json index 3ce1f3e690..db184a1ccb 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json @@ -220,7 +220,7 @@ "NoContent": "无内容", "More": "更多信息", "WhyABPIOPlatform": "为什么选择 ABP.IO 平台?", - "AbpStudio": "ABP 工作室", + "AbpStudio": "ABP Studio", "ExtraMonths": "{0}额外的一个月扩展:
通过扩展/续订许可证,您将继续获得高级支持,并获得模块和主题的主要或次要更新。此外,您还可以继续创建新项目。您仍可使用 ABP 套件,从而加快您的开发速度。当您扩展您的许可证时,您的许可证到期日将增加一年。
升级:通过升级您的许可证,您将升级到更高的许可证计划,这将使您获得额外的好处。请查看许可证对照表,了解许可证计划之间的差异。另一方面,当您升级时,您的许可证到期日不会改变!要延长许可证到期日,您需要扩展您的许可证。", + "LicenseExtendUpgradeDiffExplanation": "扩展:通过扩展/续订许可证,您将继续获得高级支持,并获得模块和主题的主要或次要更新。此外,您还可以继续创建新项目。您仍可使用 ABP Suite,从而加快您的开发速度。当您扩展您的许可证时,您的许可证到期日将增加一年。
升级:通过升级您的许可证,您将升级到更高的许可证计划,这将使您获得额外的好处。请查看许可证对照表,了解许可证计划之间的差异。另一方面,当您升级时,您的许可证到期日不会改变!要延长许可证到期日,您需要扩展您的许可证。", "LicenseRenewalCost": "1 年后的许可证续期费用是多少?", "LicenseRenewalCostExplanation": "标准团队许可的续订(扩展)价格为{0}美元,标准商业许可的续订(扩展)价格为{1}美元,标准企业许可的续订(扩展)价格为{2}美元。如果您已经是客户,登录您的账户查看当前的续订价格。", "HowDoIRenewMyLicense": "如何更新许可证?", @@ -200,11 +200,11 @@ "ChangingDevelopers": "将来我可以更换组织的注册开发人员吗?", "ChangingDevelopersExplanation": "除了在许可证中添加新的开发人员外,您还可以更改现有的开发人员(您可以删除一个开发人员,然后在同一席位上添加一个新的开发人员),而无需支付任何额外费用。", "WhatHappensWhenLicenseEnds": "许可证有效期结束后怎么办?", - "WhatHappensWhenLicenseEndsExplanation1": "ABP 商业许可证是永久许可证。许可证到期后,您可以继续开发您的项目。您没有义务更新许可证。许可证开箱即附带一年的更新和支持计划。为了继续获得新功能、性能增强、错误修复、支持并继续使用ABP套件,您需要更新您的许可证。当您的许可证过期时;", + "WhatHappensWhenLicenseEndsExplanation1": "ABP 商业许可证是永久许可证。许可证到期后,您可以继续开发您的项目。您没有义务更新许可证。许可证开箱即附带一年的更新和支持计划。为了继续获得新功能、性能增强、错误修复、支持并继续使用ABP Suite,您需要更新您的许可证。当您的许可证过期时;", "WhatHappensWhenLicenseEndsExplanation2": "您不能使用 ABP 商业版创建新的解决方案,但您可以永远继续开发现有的应用程序。", "WhatHappensWhenLicenseEndsExplanation3": "您将可以获得小版本(RC 或预览版除外)中模块和主题的更新。例如,如果您正在使用某个模块的 v3.2.0,您仍然可以获得该模块 v3.2.x 的更新(v3.2.1、v3.2.5......等)。但您无法获得下一个主要或次要版本(如 v3.3.0、v3.3.3、4.x.x......等)的更新。例如,当您的许可证过期时,最新发布的版本是 v4.4.3,随后发布了 4.4.4 版本和 4.5.0 版本,您可以访问 v4.4.X,但无法访问 v4.5.X。", "WhatHappensWhenLicenseEndsExplanation4": "许可证到期后,您不能安装添加到 ABP 商业平台的新模块和主题。", - "WhatHappensWhenLicenseEndsExplanation5": "您不能使用 ABP 套件。", + "WhatHappensWhenLicenseEndsExplanation5": "您不能使用 ABP Suite。", "WhatHappensWhenLicenseEndsExplanation6": "您无法再获得高级支持。", "WhatHappensWhenLicenseEndsExplanation7": "如果您想继续享受这些优惠,可以延长(续签)许可证。如果您在许可证到期后{3}天内延长许可证,将享受以下折扣:团队许可证{0};商业许可证{1};企业许可证{2}。", "discountForYears": "{1}年的{0}%折扣", @@ -254,7 +254,7 @@ "AbpSuiteExplanation4": "ABP Suite 支持多种UI选项,如 Razor Pages 和 Angular 。它还支持多种数据库,如 MongoDB 和 EntityFramework Core 支持的所有数据库(MS SQL Server、Oracle、MySql、PostgreSQL 和 其他提供商...)。", "AbpSuiteExplanation5": "好在你不必担心这些选项。ABP Suite 可以理解您的项目类型,为您的项目生成代码,并将生成的代码放置在项目的正确位置。", "SourceCode": "源代码", - "AbpSuiteExplanation6": "ABP Suite 为您生成源代码!它不会生成神奇的文件来生成网页。ABP 套件为 实体、资源库、应用程序服务、代码优先迁移、JavaScript/TypeScript 和 CSHTML/HTML 以及必要的接口生成源代码。ABP Suite 还根据软件开发的最佳实践生成代码,因此您不必担心生成代码的质量。", + "AbpSuiteExplanation6": "ABP Suite 为您生成源代码!它不会生成神奇的文件来生成网页。ABP Suite为 实体、资源库、应用程序服务、代码优先迁移、JavaScript/TypeScript 和 CSHTML/HTML 以及必要的接口生成源代码。ABP Suite 还根据软件开发的最佳实践生成代码,因此您不必担心生成代码的质量。", "AbpSuiteExplanation7": "由于您在正确的应用层中拥有生成的 CRUD 页面构建模块的源代码,因此您可以轻松修改源代码,并将您的自定义/业务逻辑注入到生成的代码中。", "CrossPlatform": "跨平台", "AbpSuiteExplanation8": "ABP Suite 采用 .NET Core 构建,具有跨平台性。它在本地计算机上以Web应用程序的形式运行。您可以在Windows、Mac和Linux上运行它。", @@ -269,8 +269,8 @@ "WebAppDevTutorial": "Web应用程序开发教程", "WebAppDevTutorialExplanation": "查看Web应用程序开发教程文档,了解逐步开发示例。", "Document": "文件", - "UsingABPSuiteToCURD": "使用 ABP 套件生成 CRUD 页面和工具", - "SeeABPSuiteDocument": "查看 ABP 套件文档,了解 ABP 套件的用法。", + "UsingABPSuiteToCURD": "使用 ABP Suite生成 CRUD 页面和工具", + "SeeABPSuiteDocument": "查看 ABP Suite文档,了解 ABP Suite的用法。", "AskQuestionsOnSupport": "您可以在 ABP 商务支持上提问。", "Documentation": "文件", "SeeModulesDocument": "有关所有 PRO 模块的列表,请参见模块页面。", @@ -331,7 +331,7 @@ "Blazor": "Blazor", "New": "新", "MongoDB": "MongoDB", - "EBookDDD": "电子书《领域驱动设计", + "EBookDDD": "电子书领域驱动设计", "PracticalGuideForImplementingDDD": "本书是利用 ABP 框架实施领域驱动设计的实用指南。", "IntroducingDDD": "介绍领域驱动设计", "DDDLayersAndCleanArchitecture": "DDD 层与简洁架构", @@ -414,7 +414,7 @@ "ABPFrameworkDescription": "ABP Framework 是一个完整的基础架构,可通过遵循软件开发的最佳实践和约定来创建现代Web应用程序。", "CommunityDescription": "分享您使用 ABP 框架的经验!", "GetStarted": "开始", - "Views": "观点", + "Views": "视图", "LatestPosts": "最新文章", "PreBuiltApplication": "预建应用程序", "DatabaseProviders": "数据库提供商", @@ -471,7 +471,7 @@ "CommunityDescription2": "社区.abp.io是人们分享 ABP 相关文章的地方。搜索文章、教程、代码示例、案例研究,并结识与您志同道合的朋友。", "UseABPSuiteExplanation": "使用 ABP Suite 下载模块和主题的源代码。", "ManageModulesWithSuite": "您还可以使用套件管理 ABP 模块。", - "LearnHowToInstallSuite": "了解如何安装和使用 ABP 套件。", + "LearnHowToInstallSuite": "了解如何安装和使用 ABP Suite。", "SeeMore": "查看更多", "SeeLess": "查看更少", "LayeredSolutionStructure": "分层解决方案结构", @@ -545,7 +545,7 @@ "Pricing_Page_Testimonial_6": "ABP Framework 是一个很好的框架,但需要时间来理解它所使用的不同层、类和库(尤其是 ABP)。我花了很多时间阅读代码库,但 ABP Commercial 节省了我们创建项目专业实体(AR)和与每个实体链接的资源库的时间。我还喜欢 ABP 中使用的非常成熟的方法;我们知道它是基于 DDD 和 monolith 的。", "Pricing_Page_Testimonial_7": "作为一家初创公司,我们需要快速迭代,并尽量少花时间在模板和非核心功能上。\n我们的工程师从经验丰富的工程师到初级工程师都有,我们需要一种共识和一种分享技术和领域知识的方式,ABP 凭借其出色的指南和文档让我们做到了这一点。\n由于 ABP 提供了开箱即用的功能,所以有些事情我们无需担心。\nABP帮助我们简化了快速原型设计和开发,从功能开始到投入生产不到4周时间。ABP的所有高级功能都包含在许可证中,在软件工程方面为我们提供了 \"盒式启动\"。", "Pricing_Page_Testimonial_8": "我会向所有希望扩大客户可用产品范围的人推荐 ABP commercial。当需要使用分布式企业环境(Angular、WPF、Win&Linux)时,ABP 的表现非常出色。除了他们的产品,我们还喜欢他们的支持,这让我们的工作变得更快、更轻松。我们已经知道,我们已经找到了未来的最佳合作伙伴,他们将支持我们拓展业务。", - "Pricing_Page_Testimonial_9": "我们公司只有两名员工,已经经营了 20 多年。\n就我们与 ABP Commercial 合作的经历而言,一位客户找到我们,要求我们在现代环境中开发一个新的人力资源应用程序,以取代他们使用了 25 年的 Access 应用程序。我们决定从桌面解决方案过渡到基于网络的解决方案。\n\n当时,我们对Web应用程序和.NET知之甚少,但我们偶然发现了ABP商业软件,在ABP框架、技术文档和ABP套件的帮助下,我们不仅能够按照客户的要求开发应用程序,还能在一年内成功地在.NET环境中工作。", + "Pricing_Page_Testimonial_9": "我们公司只有两名员工,已经经营了 20 多年。\n就我们与 ABP Commercial 合作的经历而言,一位客户找到我们,要求我们在现代环境中开发一个新的人力资源应用程序,以取代他们使用了 25 年的 Access 应用程序。我们决定从桌面解决方案过渡到基于网络的解决方案。\n\n当时,我们对Web应用程序和.NET知之甚少,但我们偶然发现了ABP商业软件,在ABP框架、技术文档和ABP Suite的帮助下,我们不仅能够按照客户的要求开发应用程序,还能在一年内成功地在.NET环境中工作。", "AbpBookDownloadArea_ClaimYourEBook": "申请您的 《掌握 ABP 框架》 电子书", "AddMemberModal_Warning_1": "如果系统中不存在您要添加的用户名,请让您的团队成员在{0}上注册,并与您共享他/她的用户名。", "MyOrganizations_Detail_WelcomeMessage": "欢迎贵组织,{0}", @@ -645,7 +645,7 @@ "ExtendPaymentInfoSection_Description": "延长/续订许可证后,您将继续获得高级支持。您还可以获得模块和主题的主要或次要更新。您还可以继续创建新项目。您还可以使用 ABP Suite 来加快开发速度。", "LicenseRenewalPrice": "许可证续期价格", "LicensePrice": "许可证价格", - "TrialLicensePaymentInfoSection_Description": "购买许可证:购买许可证后,您将继续获得高级支持。您还可以获得模块和主题的主要或次要更新。您还可以继续创建新项目。ABP套件可加快您的开发速度。
请参阅许可证对照表,查看许可证类型之间的差异。", + "TrialLicensePaymentInfoSection_Description": "购买许可证:购买许可证后,您将继续获得高级支持。您还可以获得模块和主题的主要或次要更新。您还可以继续创建新项目。ABP Suite可加快您的开发速度。
请参阅许可证对照表,查看许可证类型之间的差异。", "SelectTargetLicense": "选择目标许可证", "UpgradePaymentInfoSection_ExtendMyLicenseForOneYear": "是,将我的许可证有效期延长一年。", "UpgradePaymentInfoSection_WantToExtendLicense": "您想将许可证延期一年吗?", @@ -738,8 +738,8 @@ "Landing_Page_PaymentModuleDescription_3": "该模块支持以下支付网关", "Welcome_Page_UseSameCredentialForCommercialWebsites": "在 commercial.abp.io 和 support.abp.io 中使用相同的凭据。", "WatchCrudPagesVideo": "观看 \"使用 ABP Suite 创建 CRUD 页面 \"视频!", - "WatchGeneratingFromDatabaseVideo": "观看 \"ABP 套件:从现有数据库表生成 CRUD 页面 \"视频!", - "WatchTakeCloserLookVideo": "观看 \"近距离了解代码生成:ABP 套件 \"视频!", + "WatchGeneratingFromDatabaseVideo": "观看 \"ABP Suite:从现有数据库表生成 CRUD 页面 \"视频!", + "WatchTakeCloserLookVideo": "观看 \"近距离了解代码生成:ABP Suite \"视频!", "ConfirmedEmailAddressRequiredToStartTrial": "您必须有一个确认的电子邮件地址,才能开始试用许可证。", "EmailVerificationMailNotSent": "电子邮件验证邮件无法发送。", "GetConfirmationEmail": "如果您还没有收到验证电子邮件,请单击此处。", @@ -882,7 +882,7 @@ "DevelopYourSolution": "开发解决方案", "DeployAnywhere": "随时随地部署", "InstallAbpModule_Description1": "ABP 是一个模块化应用程序开发框架。启动解决方案模板已经安装了基本模块。\n 但您可能希望在解决方案中使用更多应用模块。", - "InstallAbpModule_Description2": "每个模块都由几个 NuGet 和 NPM 包组成,并有一个安装文档。ABP套件会自动完成大部分工作,然后你可以根据文档手动配置或微调模块。", + "InstallAbpModule_Description2": "每个模块都由几个 NuGet 和 NPM 包组成,并有一个安装文档。ABP Suite会自动完成大部分工作,然后你可以根据文档手动配置或微调模块。", "DevelopYourSolution_Description1": "ABP 的基础架构可自动执行重复性工作,并提供预构建的基础架构和应用程序 功能,从而使您专注于自己的业务代码。", "DevelopYourSolution_Description2": "在下面的代码块中,您可以看到 ABP 框架是如何无缝集成到您的代码中并自动执行重复性任务的。", "DevelopYourSolution_Description3": "即使在这个简码块中,ABP 也能为您做很多事情。", @@ -911,7 +911,7 @@ "ExtraQuestionCreditsFaqTitle": "我可以购买额外的支持问题点数吗?", "ExtraQuestionCreditsFaqExplanation": "可以。要购买额外的问题点数,请发送电子邮件至 info@abp.io 并注明贵组织的名称。以下是额外问题点数的价格表:
  • 50个问题包 999 美元
  • 25个问题包 625 美元
  • 15个问题包 450 美元
。", "AlreadyBetaTester": "您已经加入了测试版程序。", - "AbpStudio": "ABP 工作室", + "AbpStudio": "ABP Studio", "AbpStudio_Description": "ABP Studio 仍在开发中。您可以填写下面的表单,成为首批用户之一。", "AbpStudio_Description1": "ABP Studio 是专为 ABP 开发人员设计的跨平台桌面应用程序。", "AbpStudio_Description2": "它与 ABP 框架集成得很好,旨在通过自动化、提供有关解决方案的见解,为您提供舒适的开发环境,使开发、运行和部署解决方案变得更加容易。", @@ -963,8 +963,8 @@ "Hindi": "北印度语", "Portuguese": "葡萄牙语", "Italian": "意大利语", - "Russian": "俄罗斯", - "Slovak": "斯", + "Russian": "俄罗斯语", + "Slovak": "斯洛伐克语", "Turkish": "土耳其语", "EngageAndRetainYourCustomersWithABPMobileApps": "使用 ABP 移动应用程序吸引并留住您的客户", "EngageAndRetainYourCustomersWithABPMobileApps_Description1": "您的客户希望随时随地管理他们的产品和订阅。这就要求企业创建移动应用程序,让客户能够快速、无缝地满足他们的要求。", @@ -1077,10 +1077,10 @@ "ABPCommunity_Description2": "ABP 开发人员之间可以轻松共享代码,甚至是可重复使用的库。对你有用的代码片段也会对其他人有用。有很多示例和教程可以直接用于您的应用程序。", "ABPCommunity_Description3": "如果您聘请的开发人员曾使用过 ABP 架构,那么他将立即了解您的解决方案,并在很短的时间内开始开发。", "WhyAbpIo_Page_Title": "为什么选择 ABP.IO 平台?", - "AbpStudio_Page_Title": "ABP 工作室", + "AbpStudio_Page_Title": "ABP Studio", "CampaignInfo": "购买新许可证或更新现有许可证,即可免费获得额外 2 个月的使用期!此优惠适用于所有许可证计划。请确保您利用了这一限时促销活动,以扩大您对高级功能和升级的访问权限。", "HurryUpLastDay": "抓紧时间最后一天{0}", - "CreatingCRUDPagesWithABPSuite": "使用 ABP 套件创建 CRUD 页面", + "CreatingCRUDPagesWithABPSuite": "使用 ABP Suite创建 CRUD 页面", "Testimonials": "客户感言", "MultipleYearDiscount": "多年折扣", "CampaignDiscountText": "黑色星期五折扣", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json index 3759ef0741..1b5607f157 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json @@ -47,7 +47,7 @@ "Stackoverflow": "Stackflow", "Votes": "投票", "Answer": "回答", - "Views": "观点", + "Views": "视图", "Answered": "已回答", "WaitingForYourAnswer": "等待您的答复", "Asked": "要求", @@ -65,7 +65,7 @@ "UpdateUserTwitterInfo": "示例:johndoe", "UpdateUserGithubInfo": "示例:johndoe", "UpdateUserLinkedinInfo": "例如: https://www.linkedin.com/...", - "UpdateUserCompanyInfo": "示例:沃乐软件", + "UpdateUserCompanyInfo": "示例:Volosoft", "UpdateUserJobTitleInfo": "例如:软件开发人员软件开发人员", "UserName": "用户名", "Company": "公司名称", @@ -207,9 +207,9 @@ "sec": "秒钟", "Winners": "获奖者", "To{0}LuckyWinners": "赠送给 {0} 名幸运获奖者", - "ActiveRaffles": "活跃的 来福牌来福士莱佛士来抽奖抽奖抽奖这是一个抽奖页面,旨在感谢您成为活跃的社区成员。我们举办 ABP 社区讲座 、ABP .NET 会议,参加或赞助与 .NET 相关的活动,并在活动中赠送一些礼品。

您可以关注此页面,查看即将举行的抽奖活动、参加这些活动或查看我们以前举行的抽奖活动(包括获奖者)。

感谢您成为我们的活跃会员!在即将举行的抽奖活动中再见。", - "RafflesInfoTitle": "ABP 社区来福牌来抽奖Abp CLI", @@ -213,7 +213,7 @@ "Packages": "包", "NugetPackages": "Nuget 包", "NPMPackages": "NPM 包", - "SeeDocs": "查看文件", + "SeeDocs": "查看文档", "None": "无", "Application": "应用", "ApplicationExplanation": "基于领域驱动设计实践,创建完全分层的解决方案。推荐用于需要可维护和可扩展代码库的长期项目。", @@ -246,7 +246,7 @@ "WhatIsDDD": "什么是领域驱动设计?", "Implementation": "实施", "TheBigPicture": "大图", - "TheBuildingBlock": "建筑模块", + "TheBuildingBlock": "构建模块", "ExampleUseCase": "用例示例", "DomainAndApplicationLogic": "领域逻辑和应用逻辑", "Author": "作者", @@ -332,7 +332,7 @@ "ConnectionResolver": "连接解析器", "TenantBasedDataFilter": "基于租户的数据过滤器", "ApplicationCode": "应用代码", - "TenantResolution": "解决租户问题", + "TenantResolution": "租户解析", "TenantUser": "租户 {0} 用户", "CardTitle": "卡片标题", "View": "查看", @@ -346,7 +346,7 @@ "Submit": "提交", "Unspecified": "未说明", "StaticFileMiddleware": "静态文件中间件", - "RazorViewEngine": "剃刀视图引擎", + "RazorViewEngine": "Razor 视图引擎", "PhysicalFiles": "物理文件(wwwroot)", "EmbeddedFiles": "嵌入式文件 (DLL)", "DynamicFiles": "动态文件(内存)", diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json index e16a756de2..466a5fa336 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/zh-Hans.json @@ -1,10 +1,10 @@ { "culture": "zh-Hans", "texts": { - "Volo.Authorization:010001": "授权失败!指定政策未授权。", - "Volo.Authorization:010002": "授权失败!给定策略未授权: {PolicyName}", - "Volo.Authorization:010003": "授权失败!给定策略未授权给定资源:{ResourceName}", - "Volo.Authorization:010004": "授权失败!未授予指定资源的指定要求:{ResourceName}", - "Volo.Authorization:010005": "授权失败!未对指定资源授权:{ResourceName}" + "Volo.Authorization:010001": "授权失败!提供的策略尚未授予。", + "Volo.Authorization:010002": "授权失败!提供的策略尚未授予: {PolicyName}", + "Volo.Authorization:010003": "授权失败!提供的策略未授予提供的资源:{ResourceName}", + "Volo.Authorization:010004": "授权失败!提供的要求未授予提供的资源:{ResourceName}", + "Volo.Authorization:010005": "授权失败!提供的要求未授予提供的资源:{ResourceName}" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/zh-Hans.json b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/zh-Hans.json index 3ed07fff4e..c8a21333c4 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - "Volo.GlobalFeature:010001": "{ServiceName}\"服务需要启用\"{GlobalFeatureName}\"功能。" + "Volo.GlobalFeature:010001": "'{ServiceName}' 服务需要启用 '{GlobalFeatureName}'。" } } \ No newline at end of file diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json index b1fc843f19..23ab2cf949 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/Localization/zh-Hans.json @@ -24,8 +24,8 @@ "BrowserInfo": "浏览器信息", "Url": "网址", "UserName": "用户名", - "TenantImpersonator": "租户模拟器", - "UserImpersonator": "用户模拟器", + "TenantImpersonator": "租户模拟", + "UserImpersonator": "用户模拟", "UrlFilter": "URL 过滤器", "Exceptions": "异常", "Comments": "评论", diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json index e472f6509b..a28905eff8 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/zh-Hans.json @@ -43,9 +43,9 @@ "Posts": "帖子", "Edit": "编辑", "BLOG": "博客", - "CommentDeletionWarningMessage": "评论将被删除.", + "CommentDeletionWarningMessage": "评论将被删除。", "PostDeletionWarningMessage": "帖子将被删除", - "BlogDeletionWarningMessage": "博客将被删除.", + "BlogDeletionWarningMessage": "博客将被删除。", "AreYouSure": "你确定吗?", "CommentWithCount": "{0}个评论", "Comment": "评论", @@ -69,12 +69,12 @@ "PostDescriptionHint": "*将在文章链接预览中呈现,支持HTML", "ReadMore": "继续阅读", "MemberNotPublishedPostYet": "还没有帖子!", - "UpdateUserWebSiteInfo": "示例:https://johndoe.com", - "UpdateUserTwitterInfo": "示例:约翰多", - "UpdateUserGithubInfo": "示例:约翰多", - "UpdateUserLinkedinInfo": "示例:https://www.linkedin.com/...", - "UpdateUserCompanyInfo": "示例:沃洛软件", - "UpdateUserJobTitleInfo": "示例:软件开发人员", + "UpdateUserWebSiteInfo": "例如:https://johndoe.com", + "UpdateUserTwitterInfo": "示例:johndoe", + "UpdateUserGithubInfo": "示例:johndoe", + "UpdateUserLinkedinInfo": "例如: https://www.linkedin.com/..。", + "UpdateUserCompanyInfo": "示例:Volosoft", + "UpdateUserJobTitleInfo": "例如:软件开发人员软件开发人员", "WebSite": "网站", "UserName": "用户名", "FullURL": "完整网址", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index 797c1b495a..08f0e826f1 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -16,8 +16,8 @@ "Password": "密码", "PersonalInfo": " 个人信息", "PersonalSettings": "个人设置", - "UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?", - "RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?", + "UserDeletionConfirmationMessage": "用户 '{0}' 将被删除. 你确定吗?", + "RoleDeletionConfirmationMessage": "角色 '{0}' 将被删除. 你确定吗?", "DisplayName:RoleName": "角色名称", "DisplayName:UserName": "用户名称", "DisplayName:Name": "名", @@ -31,58 +31,56 @@ "NewRole": "新角色", "RoleName": "角色名称", "CreationTime": "创建时间", -@ -35,50 +35,50 @@ "DisplayName:CurrentPassword": "当前密码", "DisplayName:NewPassword": "新密码", "DisplayName:NewPasswordConfirm": "确认新密码", - "PasswordChangedMessage": "你已成功更改密码.", - "PersonalSettingsSavedMessage": "你的个人设置保存成功.", - "Volo.Abp.Identity:DefaultError": "发生了一个未知错误.", - "Volo.Abp.Identity:ConcurrencyFailure": "乐观并发检查失败. 你正在处理的对象已被其他用户修改. 请放弃你的更改, 然后重试.", - "Volo.Abp.Identity:DuplicateEmail": "邮箱 '{0}' 已存在.", - "Volo.Abp.Identity:DuplicateRoleName": "角色名 '{0}' 已存在.", - "Volo.Abp.Identity:DuplicateUserName": "用户名 '{0}' 已存在.", - "Volo.Abp.Identity:InvalidEmail": "邮箱 '{0}' 无效.", - "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效.", - "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代计数必须是正整数.", - "Volo.Abp.Identity:InvalidRoleName": "角色名 '{0}' 无效.", - "Volo.Abp.Identity:InvalidToken": "token无效.", - "Volo.Abp.Identity:InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字.", - "InvalidUserName": "用户名 '{0}' 无效.", - "Volo.Abp.Identity:LoginAlreadyAssociated": "此登录名的用户已存在.", - "Volo.Abp.Identity:PasswordMismatch": "密码错误.", - "Volo.Abp.Identity:PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9').", - "Volo.Abp.Identity:PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z').", - "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符.", - "Volo.Abp.Identity:PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z').", - "Volo.Abp.Identity:PasswordTooShort": "密码至少为{0}个字符.", - "Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码至少包含{0}个唯一字符.", - "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在.", - "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码.", - "Volo.Abp.Identity:UserAlreadyInRole": "用户已具有角色 '{0}'.", - "Volo.Abp.Identity:UserLockedOut": "用户被锁定.", - "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定.", - "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在.", - "Volo.Abp.Identity:UserNotInRole": "用户不具有 '{0}' 角色.", - "Volo.Abp.Identity:PasswordConfirmationFailed": "密码或确认密码不一致.", - "Volo.Abp.Identity:NullSecurityStamp": "用户安全标识不能为空.", - "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "恢复代码兑换失败.", + "PasswordChangedMessage": "你已成功更改密码。", + "PersonalSettingsSavedMessage": "你的个人设置保存成功。", + "Volo.Abp.Identity:DefaultError": "发生了一个未知错误。", + "Volo.Abp.Identity:ConcurrencyFailure": "乐观并发检查失败. 你正在处理的对象已被其他用户修改. 请放弃你的更改, 然后重试。", + "Volo.Abp.Identity:DuplicateEmail": "邮箱 '{0}' 已存在。", + "Volo.Abp.Identity:DuplicateRoleName": "角色名 '{0}' 已存在。", + "Volo.Abp.Identity:DuplicateUserName": "用户名 '{0}' 已存在。", + "Volo.Abp.Identity:InvalidEmail": "邮箱 '{0}' 无效。", + "Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "提供的 PasswordHasherCompatibilityMode 无效。", + "Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "迭代计数必须是正整数。", + "Volo.Abp.Identity:InvalidRoleName": "角色名 '{0}' 无效。", + "Volo.Abp.Identity:InvalidToken": "token无效。", + "Volo.Abp.Identity:InvalidUserName": "用户名 '{0}' 无效, 只能包含字母或数字。", + "InvalidUserName": "用户名 '{0}' 无效。", + "Volo.Abp.Identity:LoginAlreadyAssociated": "此登录名的用户已存在。", + "Volo.Abp.Identity:PasswordMismatch": "密码错误。", + "Volo.Abp.Identity:PasswordRequiresDigit": "密码至少包含一位数字 ('0'-'9')。", + "Volo.Abp.Identity:PasswordRequiresLower": "密码至少包含一位小写字母 ('a'-'z')。", + "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "密码至少包含一位非字母数字字符。", + "Volo.Abp.Identity:PasswordRequiresUpper": "密码至少包含一位大写字母 ('A'-'Z')。", + "Volo.Abp.Identity:PasswordTooShort": "密码至少为{0}个字符。", + "Volo.Abp.Identity:PasswordRequiresUniqueChars": "密码至少包含{0}个唯一字符。", + "Volo.Abp.Identity:RoleNotFound": "角色 {0} 不存在。", + "Volo.Abp.Identity:UserAlreadyHasPassword": "用户已设置密码。", + "Volo.Abp.Identity:UserAlreadyInRole": "用户已具有角色 '{0}'。", + "Volo.Abp.Identity:UserLockedOut": "用户被锁定。", + "Volo.Abp.Identity:UserLockoutNotEnabled": "该用户未启用锁定。", + "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在。", + "Volo.Abp.Identity:UserNotInRole": "用户不具有 '{0}' 角色。", + "Volo.Abp.Identity:PasswordConfirmationFailed": "密码或确认密码不一致。", + "Volo.Abp.Identity:NullSecurityStamp": "用户安全标识不能为空。", + "Volo.Abp.Identity:RecoveryCodeRedemptionFailed": "恢复代码兑换失败。", "Volo.Abp.Identity:010001": "你无法删除自己的帐户!", "Volo.Abp.Identity:010002": "不能为用户设置超过{MaxUserMembershipCount}个组织单位!", "Volo.Abp.Identity:010003": "无法更改外部登录用户的密码!", - "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", - "Volo.Abp.Identity:010005": "无法重命名静态角色.", - "Volo.Abp.Identity:010006": "无法删除静态角色.", + "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位。", + "Volo.Abp.Identity:010005": "无法重命名静态角色。", + "Volo.Abp.Identity:010006": "无法删除静态角色。", "Volo.Abp.Identity:010007": "你不能修改你的双因素身份验证设置", - "Volo.Abp.Identity:010008": "不允许修改双因素身份验证设置.", - "Volo.Abp.Identity:010009": "你不能委托给自己.", + "Volo.Abp.Identity:010008": "不允许修改双因素身份验证设置。", + "Volo.Abp.Identity:010009": "你不能委托给自己。", "Identity.OrganizationUnit.MaxUserMembershipCount": "组织单位最大允许的成员资格计数", - "ThisUserIsNotActiveMessage": "该用户不可用.", + "ThisUserIsNotActiveMessage": "该用户不可用。", "Permission:IdentityManagement": "身份标识管理", "Permission:RoleManagement": "角色管理", "Permission:Create": "创建", "Permission:Edit": "编辑", -@ -86,44 +86,44 @@ "Permission:ChangePermissions": "更改权限", "Permission:UserManagement": "用户管理", "Permission:UserLookup": "用户查询", @@ -102,22 +100,22 @@ "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "要求验证的手机号码", "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "启用用户名更新", "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "启用电子邮箱更新", - "Description:Abp.Identity.Password.RequiredLength": "密码的最小长度.", - "Description:Abp.Identity.Password.RequiredUniqueChars": "密码必须包含唯一字符的数量.", - "Description:Abp.Identity.Password.RequireNonAlphanumeric": "密码是否必须包含非字母数字.", - "Description:Abp.Identity.Password.RequireLowercase": "密码是否必须包含小写字母.", - "Description:Abp.Identity.Password.RequireUppercase": "密码是否必须包含大写字母.", - "Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字.", - "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码.", - "Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户必须更改密码的周期(天).", - "Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定.", - "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒).", - "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数.", - "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登录时是否需要验证的电子邮箱.", + "Description:Abp.Identity.Password.RequiredLength": "密码的最小长度。", + "Description:Abp.Identity.Password.RequiredUniqueChars": "密码必须包含唯一字符的数量。", + "Description:Abp.Identity.Password.RequireNonAlphanumeric": "密码是否必须包含非字母数字。", + "Description:Abp.Identity.Password.RequireLowercase": "密码是否必须包含小写字母。", + "Description:Abp.Identity.Password.RequireUppercase": "密码是否必须包含大写字母。", + "Description:Abp.Identity.Password.RequireDigit": "密码是否必须包含数字。", + "Description:Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword": "是否强制用户定期更改密码。", + "Description:Abp.Identity.Password.PasswordChangePeriodDays": "用户必须更改密码的周期(天)。", + "Description:Abp.Identity.Lockout.AllowedForNewUsers": "允许新用户被锁定。", + "Description:Abp.Identity.Lockout.LockoutDuration": "当锁定发生时用户被的锁定的时间(秒)。", + "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "如果启用锁定, 当用户被锁定前失败的访问尝试次数。", + "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "登录时是否需要验证的电子邮箱。", "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "用户是否可以确认电话号码", - "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "登录时是否需要验证的手机号码.", - "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "是否允许用户更新用户名.", - "Description:Abp.Identity.User.IsEmailUpdateEnabled": "是否允许用户更新电子邮箱.", + "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "登录时是否需要验证的手机号码。", + "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "是否允许用户更新用户名。", + "Description:Abp.Identity.User.IsEmailUpdateEnabled": "是否允许用户更新电子邮箱。", "Details": "详情", "CreatedBy": "创建者", "ModifiedBy": "修改者", diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json index 53c3bc7012..f00a7c9e37 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json @@ -3,12 +3,12 @@ "texts": { "TheOpenIDConnectRequestCannotBeRetrieved": "无法检索 OpenID Connect 请求。", "TheUserDetailsCannotBbeRetrieved": "无法检索用户详细信息。", - "TheApplicationDetailsCannotBeFound": "无法找到申请详情。", + "TheApplicationDetailsCannotBeFound": "找不到应用详情。", "DetailsConcerningTheCallingClientApplicationCannotBeFound": "无法找到有关调用客户端应用程序的详细信息。", - "TheSpecifiedGrantTypeIsNotImplemented": "未实施指定的授权类型 {0}。", + "TheSpecifiedGrantTypeIsNotImplemented": "指定的授权类型 {0} 未实现。", "Authorization": "授权", "DoYouWantToGrantAccessToYourData": "是否要授予 {0} 访问你的数据的权限?", - "ScopesRequested": "申请范围", + "ScopesRequested": "要求的Scope", "Accept": "接受", "Deny": "拒绝" } From 6b141ec6b5812fd7087d490ea8a0e420aa7bc855 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 2 Jan 2024 13:41:38 +0800 Subject: [PATCH 19/88] Update zh-Hans.json. --- .../Localization/Resources/zh-Hans.json | 2 +- .../Admin/Localization/Resources/zh-Hans.json | 4 +- .../Base/Localization/Resources/zh-Hans.json | 10 +- .../Localization/Resources/zh-Hans.json | 110 +++++++++--------- .../Localization/Resources/zh-Hans.json | 64 +++++----- .../Www/Localization/Resources/zh-Hans.json | 66 +++++------ .../UI/MultiTenancy/Localization/zh-Hans.json | 2 +- .../Resources/AbpDdd/zh-Hans.json | 2 +- .../Localization/zh-Hans.json | 4 +- .../MultiTenancy/Localization/zh-Hans.json | 2 +- .../Localization/Resources/zh-Hans.json | 4 +- .../Localization/Resources/zh-Hans.json | 6 +- .../Abp/Identity/Localization/zh-Hans.json | 2 + 13 files changed, 140 insertions(+), 138 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json index 4c3532a253..8f7ed9cd9f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/zh-Hans.json @@ -5,7 +5,7 @@ "Welcome": "欢迎", "UseOneOfTheFollowingLinksToContinue": "使用以下链接之一继续", "FrameworkHomePage": "框架主页", - "FrameworkDocumentation": "框架文件", + "FrameworkDocumentation": "框架文档", "OfficialBlog": "官方博客", "CommercialHomePage": "商业主页", "CommercialSupportWebSite": "商业支持网站", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json index 610f502118..59b617ac0b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json @@ -223,7 +223,7 @@ "Menu:Reports": "报告", "TemplateName": "模板名称", "TemplateVersion": "模板版本", - "DatabaseProvider": "数据库提供商", + "DatabaseProvider": "数据库提供者", "IsTiered": "是否分层", "ProjectName": "项目名称", "Username": "用户名", @@ -543,7 +543,7 @@ "CompanyUrl": "公司网址", "TalkTitle": "演讲题目", "AbstractTopic": "摘要 主题", - "Bio": "生物", + "Bio": "简介", "LinkedIn": "LinkedIn", "Github": "Github", "Twitch": "Twitch", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json index db184a1ccb..b597754ed7 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json @@ -17,7 +17,7 @@ "Volo.AbpIo.Domain:030000": "您的试用期已经结束。", "Volo.AbpIo.Domain:030001": "该组织名称已经存在。", "Volo.AbpIo.Domain:030002": "一旦激活,就不能将试用版许可证切换为 \"请求 \"状态!", - "Volo.AbpIo.Domain:030003": "没有这种地位!", + "Volo.AbpIo.Domain:030003": "没有这种状态!", "Volo.AbpIo.Domain:030004": "由于意外错误,无法更改状态!", "Volo.AbpIo.Domain:030005": "试用许可证处于激活状态时,可更新开始和结束日期!", "Volo.AbpIo.Domain:030006": "结束日期必须大于开始日期!", @@ -42,7 +42,7 @@ "Community": "社区", "ContributionGuide": "贡献指南", "Blog": "博客", - "Commercial": "商业", + "Commercial": "商业版", "MyAccount": "我的账户", "Permission:License": "许可证", "Permission:UserInfo": "用户信息", @@ -63,12 +63,12 @@ "SourceCode": "源代码", "SeeAllPosts": "查看所有帖子", "Contribute": "贡献", - "LiveDemo": "现场演示", + "LiveDemo": "在线演示", "GetLicense": "获取许可证", "OpenSource": "开源", "WebApplication": "Web应用程序", "MeetTheABP": "认识 ABP", - "CompleteWebDevelopment": "完整的网站开发", + "CompleteWebDevelopment": "一个完整的 Web 开发", "Platform": "平台", "ABPDescription": "ASP.NET Core Web应用程序开发的开源框架。它遵循软件开发的最佳实践,提供完整的基础架构。", "StrongInfrastructure": "强大的基础设施", @@ -115,7 +115,7 @@ "Subscribe": "订阅", "WelcomeToABP": "欢迎来到 ABP", "EULA": "EULA", - "ABPCommercialIntroductionMessage": "预置应用模块、高级启动模板、快速应用开发工具、专业UI主题和优质支持。", + "ABPCommercialIntroductionMessage": "预构建应用模块、高级启动模板、快速应用开发工具、专业UI主题和优质支持。", "MasteringAbpFrameworkEBook": "掌握 ABP 框架", "MasteringTheABPFrameworkExplanation": "本书由 ABP 框架的创建者撰写,将帮助你全面了解该框架和现代Web应用程序开发技术。", "Speakers": "发言人", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index 1bb3f79af6..8d3315b16e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -2,15 +2,15 @@ "culture": "zh-Hans", "texts": { "OrganizationManagement": "组织管理", - "OrganizationList": "组织名单", + "OrganizationList": "组织列表", "Volo.AbpIo.Commercial:010003": "您不是该组织的所有者!", "OrganizationNotFoundMessage": "未找到组织!", - "DeveloperCount": "分配/开发商总数", + "DeveloperCount": "分配/开发者总数", "QuestionCount": "剩余/全部问题", "Unlimited": "无限制", "Owners": "所有者", "Owner": "所有者", - "AddMember": "添加会员", + "AddMember": "添加成员", "AddNewOwner": "添加新所有者", "AddNewDeveloper": "添加新开发人员", "UserName": "用户名", @@ -48,11 +48,11 @@ "UnsubscribeLicenseExpirationEmailSuccessMessage": "您将不再收到许可证到期提醒邮件。", "IndexPageHeroSection": "一个完整的web开发平台基于 框架", "AbpCommercialShortDescription": "ABP Commercial 提供预建应用程序模块、快速应用程序开发工具、专业UI主题、优质支持等。", - "LiveDemo": "现场演示", - "LiveDemoLead": "{1}使用您的 ABP 帐户,{3}访问 abp.io。
或填写下表,立即创建实时演示。", + "LiveDemo": "在线演示", + "LiveDemoLead": "{1}使用您的 ABP 帐户,{3}访问 abp.io。
或填写下表,立即创建在线演示。", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "已存在使用给定电子邮件地址的帐户:{0}
您可以使用您的账户登录,然后继续。", "GetLicence": "获取许可证", - "Application": "应用", + "Application": "应用程序", "StartupTemplates": "启动模板", "Startup": "启动", "Templates": "模板", @@ -66,13 +66,13 @@ "JoinOurNewsletter": "加入我们的时事通讯", "Send": "发送", "WhatIsABPFramework": "什么是 Abp 框架?", - "OpenSourceBaseFramework": "开源基础框架", + "OpenSourceBaseFramework": "开源框架", "ABPFrameworkExplanation": "

ABP商业版基于ABP框架,ABP框架是面向ASP.NET Core的开源和社区驱动的Web程序框架。

ABP框架提供了出色的基础架构,可帮助您使用最佳实践编写可维护、可扩展和可测试的代码。学习曲线低、适应简单、开发舒适。", "Modular": "模块化", "MicroserviceCompatible": "兼容微服务", "DomainDrivenDesignInfrastructure": "领域驱动设计基础设施", "MultiTenancy": "多租户", - "DistributedMessaging": "分布式信息传递", + "DistributedMessaging": "分布式信息", "DynamicProxying": "动态代理", "BackgroundJobs": "后台作业", "AuditLogging": "审计日志", @@ -87,7 +87,7 @@ "UIFrameworksOptions": "UI框架选项;", "DatabaseProviderOptions": "数据库提供商选项;", "PreBuiltApplicationModules": "预建应用模块", - "PreBuiltApplicationModulesShortDescription": "大多数常见的应用需求已作为可重复使用的模块为您开发。", + "PreBuiltApplicationModulesShortDescription": "大多数常见的应用需求已作为可重用的模块为您开发。", "Account": "账户", "Blogging": "博客", "Identity": "Identity", @@ -109,8 +109,8 @@ "DarkTheme": "深色主题", "DarkBlueTheme": "深蓝色主题", "LightTheme": "浅色主题", - "ProudToWorkWith": "为能与我们合作而自豪", - "OurConsumers": "全球 70 多个国家数以千计的企业和开发商信赖 ABP Commercial。", + "ProudToWorkWith": "荣幸与你合作", + "OurConsumers": "全球 70 多个国家数以千计的企业和开发者信赖 ABP Commercial。", "JoinOurConsumers": "加入他们,快速打造令人惊叹的产品。", "AdditionalServicesExplanation": "您需要额外或定制服务吗? 我们和我们的合作伙伴可以提供:", "CustomProjectDevelopment": "定制项目开发", @@ -121,7 +121,7 @@ "LiveSupportExplanation": "在您需要时提供实时远程支持。", "Training": "培训", "TrainingExplanation": "为您的开发人员提供专门培训。", - "OnBoarding": "入职", + "OnBoarding": "引导流程", "OnBoardingExplanation": "帮助您设置开发、CI 和 CD 环境。", "PrioritizedTechnicalSupport": "优先技术支持", "PremiumSupportExplanation": "除了 ABP 框架强大的社区支持外,我们的支持团队还会优先回答商业用户的技术问题。", @@ -139,20 +139,20 @@ "SendMessage": "发送信息", "Success": "成功", "WeWillReplyYou": "我们收到了您的留言,将尽快与您联系。", - "GoHome": "回家", - "CreateLiveDemo": "创建实时演示", + "GoHome": "回到主页面", + "CreateLiveDemo": "创建在线演示", "CreateLiveDemoDescription": "提交表单后,您将收到一封包含演示链接的电子邮件。", "RegisterToTheNewsletter": "注册时事通讯,以接收有关 ABP.IO 的信息,包括新发布的信息等。", "EnterYourEmailOrLogin": "输入您的电子邮件地址以创建演示版,或 使用现有帐户登录。", - "ApplicationTemplate": "申请模板", + "ApplicationTemplate": "应用程序模版", "ApplicationTemplateExplanation": "应用程序启动模板用于创建新的Web应用程序。", "EfCoreProvider": "实体框架(支持 SQL Server、MySQL、PostgreSQL、Oracle 及其他)", "AlreadyIncludedInTemplateModules": "本模板已包含并配置了以下模块:", - "ApplicationTemplateArchitecture": "该应用程序模板还支持分层架构,其中UI层、应用程序接口层和身份验证服务是物理分离的。", - "SeeTheGuideOrGoToTheLiveDemo": "请查看开发人员指南,了解有关此模板的技术信息,或访问实时演示。", + "ApplicationTemplateArchitecture": "该应用程序模板还支持分层架构,其中UI层、API层和身份验证服务是物理分离的。", + "SeeTheGuideOrGoToTheLiveDemo": "请查看开发人员指南,了解有关此模板的技术信息,或访问在线演示。", "DeveloperGuide": "开发人员指南", "ModuleTemplate": "模块模板", - "ModuleTemplateExplanation1": "您想创建一个模块并在不同的应用程序中重复使用?本启动模板为创建可重用的 应用模块或 微服务准备了一切。", + "ModuleTemplateExplanation1": "您想创建一个模块并在不同的应用程序中重用?本启动模板为创建可重用的 应用模块或 微服务准备了一切。", "ModuleTemplateExplanation2": "

您可以为单个模块支持单个或多个 UI 框架、单个或多个数据库提供商。除了单元和集成测试基础架构外,启动模板还被配置为在最小应用程序中运行和测试您的模块。

有关该模板的技术信息,请查看开发人员指南。", "WithAllStyleOptions": "所有款式可选", "Demo": "演示", @@ -165,14 +165,14 @@ "WhatIsTheABPCommercial": "ABP Commercial 是什么?", "WhatAreDifferencesThanAbpFramework": "开源 ABP 框架与 ABP 商业版之间有哪些区别?", "AbpCommercialMetaTitle": "{0}| ABP 商业", - "AbpCommercialMetaDescription": "基于 ABP 框架的综合网站开发平台,提供预建模块、启动模板、快速开发工具、专业UI主题和高级支持。", + "AbpCommercialMetaDescription": "基于 ABP 框架的 Web 开发平台,提供预建模块、启动模板、快速开发工具、专业UI主题和高级支持。", "ABPCommercialExplanation": "ABP 商业版是建立在开源 ABP 框架之上的一套高级模块、工具、主题和服务。ABP 商业版由 ABP 框架背后的同一团队开发和支持。", "WhatAreDifferencesThanABPFrameworkExplanation": "

ABP 框架是适用于 ASP.NET Core 的模块化、可主题化、微服务兼容的应用程序开发框架。它提供了完整的架构和强大的基础架构,让您可以专注于自己的业务代码,而不必为每个新项目重复自己的工作。它基于软件开发的最佳实践和您已经熟悉的流行工具。

ABP 框架是完全免费、开源和社区驱动的。它还提供免费主题和一些预建模块(如身份管理和租户管理)。", "VisitTheFrameworkVSCommercialDocument": "请访问以下链接了解更多信息 {1}", "ABPCommercialFollowingBenefits": "ABP Commercial 在 ABP 框架的基础上增加了以下优势:", "Professional": "专业人员", "UIThemes": "UI主题", - "EnterpriseModules": "企业就绪、功能丰富的预建 应用模块(例如身份服务器管理、SaaS 管理、语言管理)", + "EnterpriseModules": "企业级、功能丰富的预建 应用模块(例如身份服务器管理、SaaS 管理、语言管理)", "ToolingToSupport": "支持您提高开发效率的工具(例如 ABP Suite)", "PremiumSupportLink": "Premium 支持", "WhatDoIDownloadABPCommercial": "购买 ABP 商业版时,我可以下载什么?", @@ -185,13 +185,13 @@ "HowManyDevelopers": "有多少开发人员可以在 ABP 商业网站上工作?", "HowManyDevelopersExplanation": "ABP 商业许可证是按开发人员计算的。不同的许可证类型有不同的开发人员限制。但是,您可以根据需要随时向任何许可证类型添加更多开发人员。请查看计划与定价页面,了解许可证类型、开发人员限制和额外的开发人员费用。", "ChangingLicenseType": "以后可以升级许可证类型吗?", - "ChangingLicenseTypeExplanation": "您可以在有效许可证期限内支付差额,升级到更高的许可证。当您升级到更高的许可证计划时,您将获得新计划的好处,但许可证升级不会改变许可证的到期日。此外,您还可在现有许可证上添加新的开发人员席位,请查看 \"有多少开发人员可在 ABP 商业版上工作?常见问题。", + "ChangingLicenseTypeExplanation": "您可以在有效许可证期限内支付差额,升级到更高的许可证。当您升级到更高的许可证计划时,您将获得新计划的好处,但许可证升级不会改变许可证的到期日。此外,您还可在现有许可证上添加新的开发人员席位,请查看 \"有多少开发者可以参与ABP商业版工作?\" 常见问题。", "LicenseExtendUpgradeDiff": "许可证扩展和升级有什么区别?", "LicenseExtendUpgradeDiffExplanation": "扩展:通过扩展/续订许可证,您将继续获得高级支持,并获得模块和主题的主要或次要更新。此外,您还可以继续创建新项目。您仍可使用 ABP Suite,从而加快您的开发速度。当您扩展您的许可证时,您的许可证到期日将增加一年。


升级:通过升级您的许可证,您将升级到更高的许可证计划,这将使您获得额外的好处。请查看许可证对照表,了解许可证计划之间的差异。另一方面,当您升级时,您的许可证到期日不会改变!要延长许可证到期日,您需要扩展您的许可证。", "LicenseRenewalCost": "1 年后的许可证续期费用是多少?", - "LicenseRenewalCostExplanation": "标准团队许可的续订(扩展)价格为{0}美元,标准商业许可的续订(扩展)价格为{1}美元,标准企业许可的续订(扩展)价格为{2}美元。如果您已经是客户,登录您的账户查看当前的续订价格。", + "LicenseRenewalCostExplanation": "标准团队许可的续订(扩展)价格为${0},标准商业许可的续订(扩展)价格为${1},标准企业许可的续订(扩展)价格为${2}。如果您已经是客户,登录您的账户查看当前的续订价格。", "HowDoIRenewMyLicense": "如何更新许可证?", - "HowDoIRenewMyLicenseExplanation": "您可以通过组织管理页面更新许可证。为了享受我们优惠的 \"提前续费 \"费率,请确保在许可证到期前续费。不必担心不知道提前续订机会何时结束;您将在订阅到期前收到 3 封提醒邮件。我们将分别在到期前 30 天、7 天和 1 天发送。", + "HowDoIRenewMyLicenseExplanation": "您可以通过组织管理页面更新许可证。为了享受我们优惠的 \"提前续费 \"折扣,请确保在许可证到期前续费。不必担心不知道提前续订机会何时结束;您将在订阅到期前收到 3 封提醒邮件。我们将分别在到期前 30 天、7 天和 1 天发送。", "IsSourceCodeIncluded": "我的许可证是否包括商业模块和主题的源代码?", "IsSourceCodeIncludedExplanation1": "取决于您购买的许可证类型:", "IsSourceCodeIncludedExplanation2": "团队:您的解决方案将模块和主题作为 NuGet 和 NPM 包使用。它不包括它们的源代码。这样,只要有新版本,您就可以轻松升级这些模块和主题。但是,您无法获得这些模块和主题的源代码。", @@ -207,7 +207,7 @@ "WhatHappensWhenLicenseEndsExplanation5": "您不能使用 ABP Suite。", "WhatHappensWhenLicenseEndsExplanation6": "您无法再获得高级支持。", "WhatHappensWhenLicenseEndsExplanation7": "如果您想继续享受这些优惠,可以延长(续签)许可证。如果您在许可证到期后{3}天内延长许可证,将享受以下折扣:团队许可证{0};商业许可证{1};企业许可证{2}。", - "discountForYears": "{1}年的{0}%折扣", + "discountForYears": "{0}% 折扣 {1} 年", "WhatHappensWhenLicenseEndsExplanation8": "您生成的 ABP 项目不会存储在我们的服务器上。因此,您有责任保留您下载的源代码。当您的许可证过期时,您将无法获得您生成的 ABP 项目源代码。", "WhenShouldIRenewMyLicense": "我应该何时更新执照?", "WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后{3}天内续费,将享受以下折扣:团队许可证 {0};商业许可证 {1};企业许可证 {2}。但是,如果您在许可证到期日{3}天后续订许可证,续订价格将与许可证购买价格相同,续订时将没有折扣。", @@ -225,7 +225,7 @@ "UISupportExplanation": "ABP 框架本身与UI框架无关,可与任何UI框架配合使用。然而,启动模板、模块UI和主题并未针对所有UI框架实施。请查看入门文档,了解最新的UI选项列表。", "MicroserviceSupport": "它支持微服务架构吗?", "MicroserviceSupportExplanation1": "ABP 框架的主要目标之一是为创建微服务解决方案提供便捷的基础架构。请查看微服务架构文档,了解它如何帮助创建微服务系统。", - "MicroserviceSupportExplanation2": "所有 ABP 商业模块都是按照模块开发最佳实践文档设计的,以支持微服务部署方案(具有自己的应用程序接口和数据库)。", + "MicroserviceSupportExplanation2": "所有 ABP 商业模块都是按照模块开发最佳实践文档设计的,以支持微服务部署方案(具有自己的API和数据库)。", "MicroserviceSupportExplanation3": "我们提供了一个示例 微服务演示解决方案,演示了微服务架构的实现,以帮助您创建自己的解决方案。", "MicroserviceSupportExplanation4": "因此,简短的回答是:\"是的,它支持微服务架构\"。", "MicroserviceSupportExplanation5": "然而,微服务系统是一种解决方案,每种解决方案都会有不同的要求、网络拓扑结构、通信场景、验证可能性、数据库分片/分区决策、运行时配置、第三方系统集成等等。", @@ -254,7 +254,7 @@ "AbpSuiteExplanation4": "ABP Suite 支持多种UI选项,如 Razor Pages 和 Angular 。它还支持多种数据库,如 MongoDB 和 EntityFramework Core 支持的所有数据库(MS SQL Server、Oracle、MySql、PostgreSQL 和 其他提供商...)。", "AbpSuiteExplanation5": "好在你不必担心这些选项。ABP Suite 可以理解您的项目类型,为您的项目生成代码,并将生成的代码放置在项目的正确位置。", "SourceCode": "源代码", - "AbpSuiteExplanation6": "ABP Suite 为您生成源代码!它不会生成神奇的文件来生成网页。ABP Suite为 实体、资源库、应用程序服务、代码优先迁移、JavaScript/TypeScript 和 CSHTML/HTML 以及必要的接口生成源代码。ABP Suite 还根据软件开发的最佳实践生成代码,因此您不必担心生成代码的质量。", + "AbpSuiteExplanation6": "ABP Suite 为您生成源代码!它不会生成神奇的文件来生成网页。ABP Suite为 实体、资源库、应用程序服务、Code First、JavaScript/TypeScript 和 CSHTML/HTML 以及必要的接口生成源代码。ABP Suite 还根据软件开发的最佳实践生成代码,因此您不必担心生成代码的质量。", "AbpSuiteExplanation7": "由于您在正确的应用层中拥有生成的 CRUD 页面构建模块的源代码,因此您可以轻松修改源代码,并将您的自定义/业务逻辑注入到生成的代码中。", "CrossPlatform": "跨平台", "AbpSuiteExplanation8": "ABP Suite 采用 .NET Core 构建,具有跨平台性。它在本地计算机上以Web应用程序的形式运行。您可以在Windows、Mac和Linux上运行它。", @@ -268,11 +268,11 @@ "GettingStarted": "入门", "WebAppDevTutorial": "Web应用程序开发教程", "WebAppDevTutorialExplanation": "查看Web应用程序开发教程文档,了解逐步开发示例。", - "Document": "文件", + "Document": "文档", "UsingABPSuiteToCURD": "使用 ABP Suite生成 CRUD 页面和工具", "SeeABPSuiteDocument": "查看 ABP Suite文档,了解 ABP Suite的用法。", - "AskQuestionsOnSupport": "您可以在 ABP 商务支持上提问。", - "Documentation": "文件", + "AskQuestionsOnSupport": "您可以在 ABP 商业支持上提问。", + "Documentation": "文档", "SeeModulesDocument": "有关所有 PRO 模块的列表,请参见模块页面。", "Pricing": "定价", "PricingExplanation": "选择当前业务所需的特性和功能。随着业务发展,轻松升级。", @@ -338,7 +338,7 @@ "LayeringOfADotnetSolution": ".NET解决方案的分层", "ImplementingDDDBuildingBlocks": "实施 DDD 构件", "DomainVsApplicationLogic": "领域逻辑与应用逻辑", - "SamplesAndDiscussions": "样本与讨论", + "SamplesAndDiscussions": "示例与讨论", "Free": "免费", "Download": "下载", "DDDEBook": "电子书", @@ -423,7 +423,7 @@ "Platform": "平台", "CoolestCompaniesUseABPCommercial": "最酷的公司已经在使用 ABP商业软件。", "UserInterface": "UI", - "APIGateway": "应用程序接口网关", + "APIGateway": "API网关", "Microservice": "微服务", "Database": "数据库", "Architecture": "架构", @@ -489,7 +489,7 @@ "PreIntegratedToolsExplanation": "该解决方案已集成到行业标准工具和技术中,同时您还可以随时更改它们并集成到您最喜欢的工具中。", "SingleSignOnAuthenticationServer": "单点登录验证服务器", "SingleSignOnAuthenticationServerExplanation": "该解决方案有一个身份验证服务器应用程序,其他应用程序将其用作具有 API 访问管理功能的单点登录服务器。它以 IdentityServer 为基础。", - "WebAppsWithGateways": "2 个Web应用程序和 2 个应用程序接口网关", + "WebAppsWithGateways": "2 个Web应用程序和 2 个API网关", "WebAppsWithGatewaysExplanation": "该解决方案包含两个Web应用程序,每个程序都有一个专用的 API 网关(BFF - Backend For Frontend 模式)。", "BackOfficeApplication": "后台应用程序", "BackOfficeApplicationExplanation": "系统的实际Web应用程序,具有多种UI框架选项。您可以创建任何类型的业务应用程序。", @@ -506,16 +506,16 @@ "GetInTouchUs": "联系我们", "ForMoreInformationClickHere": "如需了解更多信息,请点击此处。", "ForMoreInformationClickHereByClass": "更多信息,请点击 此处。", - "IsGetOnboardingTraining": "您想参加入职和Web应用程序开发培训吗?", + "IsGetOnboardingTraining": "您想参加引导流程和Web应用程序开发培训吗?", "OnboardingWebApplicationDevelopmentTrainingMessage": "要安排培训日程,请在创建组织后联系 {0}", "CustomPurchaseMessage": "下一步,请点击 {0} 联系我们。", "Note": "备注", "AdditionalNote": "附加说明", "OnboardingTrainingFaqTitle": "您有 ABP 上岗培训吗?", - "OnboardingTrainingFaqExplanation": "是的,我们有 ABP 培训服务,帮助您快速启动 ABP 项目。您将从 ABP 核心团队成员那里了解 ABP,并获得开始 ABP 项目的技能。在入职培训中,我们将讲解如何设置您的开发环境、安装所需的工具以及创建一个功能齐全的 CRUD 页面。培训将是实时的,将使用 Zoom 应用程序,我们也欢迎使用其他在线会议平台。培训语言为英语。您也可以在培训过程中提出有关 ABP 的问题。我们将为双方安排一个方便的时间和日期。如需了解更多信息,请通过info@abp.io与我们联系。", + "OnboardingTrainingFaqExplanation": "是的,我们有 ABP 培训服务,帮助您快速启动 ABP 项目。您将从 ABP 核心团队成员那里了解 ABP,并获得开始 ABP 项目的技能。在引导流程培训中,我们将讲解如何设置您的开发环境、安装所需的工具以及创建一个功能齐全的 CRUD 页面。培训将是实时的,将使用 Zoom 应用程序,我们也欢迎使用其他在线会议平台。培训语言为英语。您也可以在培训过程中提出有关 ABP 的问题。我们将为双方安排一个方便的时间和日期。如需了解更多信息,请通过info@abp.io与我们联系。", "AddBasket": "添加到购物篮", "SendTrainingRequest": "发送培训申请", - "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* 本文件的英文版本为最新版本,任何争议均以英文版本为准。", + "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* 本文档的英文版本为最新版本,任何争议均以英文版本为准。", "Pricing_Page_Title": "定价与计划", "Pricing_Page_Description": "现在就选择您的业务所需的特性和功能。购买 ABP 商业许可证,创建无限项目。", "Pricing_Page_HurryUp": "快点", @@ -601,8 +601,8 @@ "PaymentSucceed_ViewOrganization": "点击此处查看组织", "Purchase_TotalAnnualPrice": "总计 (年费){0} {1} 每名开发人员", "Purchase_IncludedDeveloperInfo": "{0} {1} 包括在内。", "Purchase_LicenseExtraDeveloperPurchaseMessage": "{0}许可包括{1}个开发人员。您可以添加其他开发人员。", @@ -639,7 +639,7 @@ "Themes_Page_Description": "ABP Commercial 提供多种专业、现代的UI主题。创建免费演示,快速了解UI的外观。", "Tools_Page_Title": "快速应用开发工具", "Tools_Page_Description": "ABP 商业版提供快速应用程序开发工具,以提高开发人员的工作效率。ABP Suite 可让您轻松创建 CRUD 页面。", - "DeveloperPrice": "开发商价格", + "DeveloperPrice": "开发者价格", "AdditionalDeveloperPaymentInfoSection_AdditionalDevelopers": "{0}<小>开发人员 {0}
天", "ExtendPaymentInfoSection_Description": "延长/续订许可证后,您将继续获得高级支持。您还可以获得模块和主题的主要或次要更新。您还可以继续创建新项目。您还可以使用 ABP Suite 来加快开发速度。", @@ -667,13 +667,13 @@ "Landing_Page_CrossCuttingConcernsInfo": "用于授权、验证、异常处理、缓存、审计日志、事务管理等的完整基础设施。", "Landing_Page_PreBuiltApplicationModules": "预建应用模块,包括最常见的Web应用需求。", "Landing_Page_ChatModule": "聊天", - "Landing_Page_DocsModule": "文件", + "Landing_Page_DocsModule": "文档", "Landing_Page_FileManagementModule": "文件管理", "Landing_Page_CustomerStory_1": "ABP Commercial 允许 SC Ventures 在 9 个月内交付银行级多租户筒仓数据库 SaaS 平台,以支持应收账款/应付账款供应链融资,处理来自多个集成锚点的大额发票。ABP 的模块化使团队能够在创纪录的时间内交付,通过所有 VAPT,并通过完整的 CI/CD 和管道将容器化微服务堆栈部署到生产中。", "Landing_Page_CustomerStory_2": "我们看到了使用 ABP Commercial 降低定制开发项目开销的价值。团队可以统一不同项目流中的代码模式。我们在框架中看到了更大的潜力,使我们能够比以前更快地构建新功能。我们相信,我们将不断看到利用 ABP Commercial 的价值。", "Landing_Page_CustomerStory_3": "我们热爱 ABP。我们不必从头开始编写所有内容。我们从开箱即用的功能开始,只需专注于真正需要编写的内容。此外,ABP 结构合理,代码质量高,错误较少。如果我们必须自己编写所有需要的代码,我们可能需要花费数年时间。我们还喜欢的一点是,新版本、问题修复或改进很快就会推出\n 每隔一周。我们不会等太久。", "Landing_Page_CustomerStory_4": "ABP Commercial 是一款非常出色的产品,值得推荐。在一个可配置的平台上为我们的客户向市场提供商业产品。该框架和工具为任何团队提供的跳跃式启动都是物有所值的。ABP Commercial 最符合我们的需求。", - "Landing_Page_AdditionalServices": "定制或批量许可证、入职、现场培训和支持、定制项目开发、移植现有项目等...", + "Landing_Page_AdditionalServices": "定制或批量许可证、引导流程、现场培训和支持、定制项目开发、移植现有项目等...", "Landing_Page_IncludedDeveloperLicenses": "包括 {0} 开发人员许可证", "Landing_Page_SeeOnDemo": "观看演示", "Landing_Page_LeptonThemes": "LeptonThemes", @@ -941,7 +941,7 @@ "ThankYou!": "谢谢!", "SendBetaRequest": "发送测试版申请", "YouJoinedTheBetaTesterProgram": "您加入了 ABP Studio 测试程序。", - "PricingExplanation2": "30 天退款保证 - 了解更多了解更多React Native
和 .NET MAUI 移动启动模板。这样,您就可以选择最适合您需求的模板。这两种应用程序在 iOS 和 Android 平台之间的代码重用率最高。", "PreIntegratedToYourBackend": "预集成到您的后台", - "PreIntegratedToYourBackend_Description": "ABP 移动应用程序已预集成到您的后端应用程序接口。它可从服务器获取有效的身份验证令牌,并发出身份验证请求。", + "PreIntegratedToYourBackend_Description": "ABP 移动应用程序已预集成到您的后端API。它可从服务器获取有效的身份验证令牌,并发出身份验证请求。", "MultiLanguage": "多语言", "MultiLanguage_Description": "它开箱即支持 10 多种语言。您还可以添加其他语言。", "Arabic": "阿拉伯语", @@ -974,7 +974,7 @@ "ComesWithTheSourceCode": "附带源代码", "ComesWithTheSourceCode_Description": "移动应用程序提供源代码。您可以轻松定制应用程序的用户体验/UI,以符合品牌准则。", "Purchase_OneYearPrice": "1 年价格", - "Purchase_DeveloperSeatCount": "开发商席位数", + "Purchase_DeveloperSeatCount": "开发者席位数", "Purchase_DevelopersAlreadyIncluded": "{0}已包括开发人员", "1Year": "1 年", "{0}Years": "{0}年", @@ -987,10 +987,10 @@ "TrainingPack": "培训包", "TrainingPackDiscount": "培训包折扣", "Purchase_OnboardingTraining_Description": "此实时培训包适用于 8 人班,此折扣仅在购买新许可证时有效。了解更多 ", - "Purchase_Save": "{0}% 保存 {1}{2}", - "RemoveBasket": "从篮子中取出", + "Purchase_Save": "{0}% 节省 {0}% {1} {2}", + "RemoveBasket": "从购物篮中取出", "WhyABPIOPlatform?": "为什么选择ABP.IO 平台?", - "DocumentAim": "本文件旨在回答这个重大问题:", + "DocumentAim": "本文档旨在回答这个重大问题:", "DocumentAim_Description": "\"为什么要使用 ABP.IO 平台,而不是从头开始创建新的解决方案?", "DocumentAim_Description2": "该文件介绍了构建现代软件解决方案所面临的挑战,并解释了 ABP 如何应对这些挑战。", "CreatingANewSolution": "创建新的解决方案", @@ -1004,7 +1004,7 @@ "CreatingAnEmptySolution_THEPROBLEM_Description5": "如何设置自动测试?", "ABPSOLUTION": "ABP 解决方案", "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基于领域驱动设计原则,提供了一个架构完善、分层且可投入生产的启动解决方案。该解决方案还包括每个层的预配置单元和集成测试项目。", - "CommonLibraries": "普通图书馆", + "CommonLibraries": "通用库", "CommonLibraries_THEPROBLEM_Description": "您应该使用哪些库来实现常见需求?软件开发生态系统是高度动态的,要跟上最新的工具、库、趋势和方法具有挑战性。", "CommonLibraries_ABPSOLUTION_Description": "ABP 将流行、成熟和最新的库预先集成到解决方案中。你不需要花时间集成它们或让它们相互通信。它们开箱即可正常工作。", "UITheme&Layout": "UI主题和布局", @@ -1027,7 +1027,7 @@ "DRY_Description2": "ABP 遵循 \"约定重于配置 \"的原则,尽可能自动化和简化重复代码。不过,当您需要切换到手动档时,它也不会限制您。控制权始终掌握在您的手中。", "Authentication": "认证", "Authentication_THEPROBLEM_Description": "单点登录、Active Directory / LDAP 集成、OpenIddict 集成、社交登录、双因素验证、忘记/重置密码、电子邮件激活、新用户注册、密码复杂性控制、尝试失败时锁定账户、显示失败的登录尝试......等等。我们知道,您对所有这些通用要求都不陌生。您并不孤单!", - "Authentication_ABPSOLUTION_Description": "ABP Framework 和商业版本提供了所有这些标准内容,并作为可重复使用的账户模块预先为您实现。你只需启用和配置你所需要的即可。", + "Authentication_ABPSOLUTION_Description": "ABP Framework 和商业版本提供了所有这些标准内容,并作为可重用的账户模块预先为您实现。你只需启用和配置你所需要的即可。", "CrossCuttingConcerns": "横向关注", "CrossCuttingConcerns_THEPROBLEM_Description": "交叉关注点是每个用例都应实施的基本重复逻辑。举例如下", "CrossCuttingConcerns_THEPROBLEM_Description2": "启动事务,成功时提交,出错时回滚。", @@ -1042,7 +1042,7 @@ "EnterpriseApplicationRequirements_THEPROBLEM_Description2": "详细的权限系统,并根据角色和用户管理UI上的权限。", "EnterpriseApplicationRequirements_THEPROBLEM_Description3": "编写审计日志和实体历史记录,以跟踪用户何时修改了数据库记录。", "EnterpriseApplicationRequirements_THEPROBLEM_Description4": "使实体软删除,这样它们就会被标记为已删除,而不是从数据库中物理删除,并在查询时自动过滤已删除的实体。", - "EnterpriseApplicationRequirements_THEPROBLEM_Description5": "创建抽象和包装器,以便从前端代码中使用后端应用程序接口。", + "EnterpriseApplicationRequirements_THEPROBLEM_Description5": "创建抽象和包装器,以便从前端代码中使用后端API。", "EnterpriseApplicationRequirements_THEPROBLEM_Description6": "排队和执行后台作业", "EnterpriseApplicationRequirements_THEPROBLEM_Description7": "在全球系统中处理多个时区。", "EnterpriseApplicationRequirements_THEPROBLEM_Description8": "在服务器和客户端之间共享验证、本地化和授权逻辑。", @@ -1054,13 +1054,13 @@ "IntegratingTo3rdPartyLibrariesAndSystems_THEPROBLEM_Description": "大多数库的设计都比较低级,您通常需要做一些工作来正确集成它们,而不会在解决方案中到处重复相同的集成和配置代码。例如,假设您必须使用 RabbitMQ 来实现分布式事件总线。您要做的就是向队列发送消息并处理传入消息。但您需要了解消息传递模式、队列和交换细节。要编写高效的代码,必须创建一个池来管理连接、客户端和通道。您还必须处理异常、ACK 消息、失败时重新连接 RabbitMQ 等问题。", "IntegratingTo3rdPartyLibrariesAndSystems_ABPSOLUTION_Description": "例如,ABP 的 RabbitMQ 分布式事件总线集成抽象了所有这些细节。您可以发送和接收消息,而无需进行繁琐的操作。您需要编写底层代码吗?没问题,您可以随时这样做。当您需要使用您正在使用的库的底层功能时,ABP 不会限制您。", "WhyNotBuildYourOwnFramework?": "为什么不建立自己的框架?", - "WhyNotBuildYourOwnFramework_THEPROBLEM_Description": "所有基础设施,即使是最简单的,也需要大量时间来构建、维护和记录。随着时间的推移,这些基础架构会变得越来越庞大,很难在解决方案中对其进行维护。将这些分离成一个可重复使用的项目,是建立自己内部框架的起点。", + "WhyNotBuildYourOwnFramework_THEPROBLEM_Description": "所有基础设施,即使是最简单的,也需要大量时间来构建、维护和记录。随着时间的推移,这些基础架构会变得越来越庞大,很难在解决方案中对其进行维护。将这些分离成一个可重用的项目,是建立自己内部框架的起点。", "WhyNotBuildYourOwnFramework_THEPROBLEM_Description2": "构建、记录、培训和维护一个内部框架非常困难。如果你没有一个经验丰富的专门框架团队,你的内部框架很快就会变成没有文档的遗留代码,再也没有人能理解和维护。另一方面,这些框架通常由团队中的一两个开发人员开发。这些人正在成为知识孤岛。这对他们有利,但对公司不利,因为他们是项目的单点故障-SPOF-。一旦他们离开公司,项目就会急剧下滑。", "WhyNotBuildYourOwnFramework_ABPSOLUTION_Description": "ABP 框架是一个社区驱动、文档齐全、成熟且通用的应用程序框架。由经验丰富的开发人员组成的团队正在努力使其保持最新、易懂和易于使用。使用这样一个稳定的框架,您可以专注于自己的业务代码,并随时从专家那里获得框架方面的帮助。", "ArchitecturalInfrastructure_Description": "SaaS 应用程序、模块化或微服务系统是最常用的企业软件模型。构建此类系统不仅需要良好的理解和经验,还需要强大的软件基础设施。否则,你会发现自己要花费很大精力才能在代码库中支持这些架构细节。", "Modularity": "模块化", - "Modularity_THEPROBLEM_Description": "建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、应用程序接口、UI页面/组件)都可以分割成模块,而且每个模块都可以重复使用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。", - "Modularity_ABPSOLUTION_Description": "ABP 框架是一种模块化应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南解释了如何以标准方式开发可重复使用的模块。", + "Modularity_THEPROBLEM_Description": "建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、API、UI页面/组件)都可以分割成模块,而且每个模块都可以重用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。", + "Modularity_ABPSOLUTION_Description": "ABP 框架是一种模块化应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南解释了如何以标准方式开发可重用的模块。", "SaaSMultiTenancy": "SaaS / 多租户", "SaaSMultiTenancy_THEPROBLEM_Description": " 多租户是实施 SaaS 系统的一种常见方式。但是,实施一致的多用户基础设施可能会变得复杂。", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP 框架提供完整的多租户基础架构,并从您的业务代码中抽象出复杂性。您的应用程序代码大部分将具有多租户意识,而 ABP 框架会自动隔离租户之间的数据库、缓存和其他细节。它支持单个数据库、每个租户数据库和混合方法。它能正确配置 Microsoft Identity 和 OpenIddict 等库,这些库通常与多租户不兼容。", @@ -1070,11 +1070,11 @@ "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更进一步,提供了完整的 启动模板,以启动您的微服务解决方案。", "PreBuiltModules": "预制模块", "PreBuiltModules_THEPROBLEM_Description": "我们每个人都有相似但略有不同的业务需求。但是,我们都应该重新发明轮子,因为没有人的代码可以直接用于我们的解决方案。它们都是更大解决方案的嵌入部分。", - "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial 模块提供了大量可重复使用的应用模块,如支付、聊天、文件管理、审计日志报告......等。所有这些模块都可以轻松安装到您的解决方案中并直接运行。我们将不断添加更多模块。", + "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial 模块提供了大量可重用的应用模块,如支付、聊天、文件管理、审计日志报告......等。所有这些模块都可以轻松安装到您的解决方案中并直接运行。我们将不断添加更多模块。", "PreBuiltModules_ABPSOLUTION_Description2": "所有模块均可根据您的业务需求进行定制。如果您需要完全控制,可以下载任何模块的完整源代码,并根据您的具体业务要求进行完全定制。", "ABPCommunity": "ABP 社区", - "ABPCommunity_Description": "最后,在一个大社区中,每个人都遵循相似的编码风格和原则,并共享一个共同的基础架构,当你遇到困难或在设计决策上需要帮助时,这将为你带来力量。因为我们的代码编写方式相似,所以我们可以更好地互相帮助。ABP 是一个由社区支持的项目,在 GitHub 上拥有 10K 多颗星。", - "ABPCommunity_Description2": "ABP 开发人员之间可以轻松共享代码,甚至是可重复使用的库。对你有用的代码片段也会对其他人有用。有很多示例和教程可以直接用于您的应用程序。", + "ABPCommunity_Description": "最后,在一个大社区中,每个人都遵循相似的编码风格和原则,并共享一个共同的基础架构,当你遇到困难或在设计决策上需要帮助时,这将为你带来力量。因为我们的代码编写方式相似,所以我们可以更好地互相帮助。ABP 是一个由社区支持的项目,在 GitHub 上拥有 10K star。", + "ABPCommunity_Description2": "ABP 开发人员之间可以轻松共享代码,甚至是可重用的库。对你有用的代码片段也会对其他人有用。有很多示例和教程可以直接用于您的应用程序。", "ABPCommunity_Description3": "如果您聘请的开发人员曾使用过 ABP 架构,那么他将立即了解您的解决方案,并在很短的时间内开始开发。", "WhyAbpIo_Page_Title": "为什么选择 ABP.IO 平台?", "AbpStudio_Page_Title": "ABP Studio", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json index 1b5607f157..48f6d386ee 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/zh-Hans.json @@ -1,7 +1,7 @@ { "culture": "zh-Hans", "texts": { - "Permission:CommunityPost": "社区岗位", + "Permission:CommunityPost": "社区文章", "Permission:Edit": "编辑", "Waiting": "等待", "Approved": "批准", @@ -10,13 +10,13 @@ "Approve": "批准", "Reject": "拒绝", "ReadPost": "阅读文章", - "Status": "现状", + "Status": "状态", "ContentSource": "内容来源", "Details": "详细信息", "Title": "标题", "CreationTime": "创建时间", - "Save": "节省", - "SameUrlAlreadyExist": "相同的网址已经存在,如果您想添加这个帖子,应该更改网址!", + "Save": "保存", + "SameUrlAlreadyExist": "相同的网址已经存在,如果您想添加这个文章,应该更改网址!", "UrlIsNotValid": "Url 无效。", "UrlNotFound": "未找到 Url。", "UrlContentNotFound": "未找到 Url 内容。", @@ -24,19 +24,19 @@ "MostRead": "最多阅读", "Latest": "最新", "ContributeAbpCommunity": "为 ABP 社区做贡献", - "SubmitYourPost": "提交您的帖子", - "ContributionGuide": "捐款指南", + "SubmitYourPost": "提交您的文章", + "ContributionGuide": "贡献指南", "BugReport": "错误报告", - "SeeAllPosts": "查看所有帖子", + "SeeAllPosts": "查看所有文章", "WelcomeToABP": "欢迎来到 ABP", "EmailNotValid": "请输入有效的电子邮件地址。", "FeatureRequest": "功能请求", - "CreatePostTitleInfo": "帖子列表中要显示的帖子标题。", - "CreatePostSummaryInfo": "帖子的简短摘要,将显示在帖子列表中。最大长度:{0}1MB。", + "CreatePostTitleInfo": "文章列表中要显示的文章标题。", + "CreatePostSummaryInfo": "文章的简短摘要,将显示在文章列表中。最大长度:{0}1MB。", "ThisExtensionIsNotAllowed": "不允许延期。", "TheFileIsTooLarge": "文件太大。", - "GoToThePost": "前往邮局", + "GoToThePost": "前往文章", "GoToTheVideo": "观看视频", "Contribute": "投稿", "OverallProgress": "总体进展", @@ -44,19 +44,19 @@ "Open": "开放", "Closed": "关闭", "RecentQuestionFrom": "{0}最近提出的问题", - "Stackoverflow": "Stackflow", - "Votes": "投票", + "Stackoverflow": "Stackoverflow", + "Votes": "观看次数", "Answer": "回答", "Views": "视图", "Answered": "已回答", "WaitingForYourAnswer": "等待您的答复", - "Asked": "要求", + "Asked": "提问", "AllQuestions": "所有问题", "NextVersion": "下一版", "MilestoneErrorMessage": "无法从 Github 获取当前里程碑的详细信息。", "QuestionItemErrorMessage": "无法从 Stackoverflow 获取最新问题的详细信息。", "Oops": "哎呀!", - "CreatePostSuccessMessage": "帖子已成功提交。网站管理员审核后将予以发布。", + "CreatePostSuccessMessage": "文章已成功提交。网站管理员审核后将予以发布。", "Browse": "浏览", "CoverImage": "封面图片", "ShareYourExperiencesWithTheABPFramework": "分享您使用 ABP 框架的经验!", @@ -90,25 +90,25 @@ "LatestContentRequests": "最新内容申请", "AllPostRequests": "查看所有职位申请", "SubscribeToTheNewsletter": "订阅时事通讯", - "NewsletterEmailDefinition": "获取有关 ABP 发生的信息,如新版本、免费资源、帖子等。", + "NewsletterEmailDefinition": "获取有关 ABP 发生的信息,如新版本、免费资源、文章等。", "NoThanks": "不,谢谢", "MaybeLater": "也许以后", "JoinOurPostNewsletter": "加入我们的邮政通讯", "Community": "社区", "Marketing": "市场营销", "CommunityPrivacyPolicyConfirmation": "我同意条款和条件以及 隐私政策。", - "PostRequestMessageTitle": "在 GitHub 上打开一个问题,申请您希望在本网站上看到的帖子/教程。", + "PostRequestMessageTitle": "在 GitHub 上打开一个问题,申请您希望在本网站上看到的文章/教程。", "PostRequestMessageBody": "以下是社区要求撰写的文章列表。您想撰写要求发表的文章吗?请点击请求并加入讨论。", "Language": "语言", - "CreatePostLanguageInfo": "帖子内容的语言。", + "CreatePostLanguageInfo": "文章内容的语言。", "VideoPost": "视频", "Post": "职位", "Read": "阅读", "CreateGithubPostUrlInfo": "GitHub 上 Markdown 文件的完整 URL(示例)。", - "CreateVideoContentUrlInfo": "帖子的原始 Youtube URL。", - "CreateExternalPostUrlInfo": "帖子的原始外部网址。", + "CreateVideoContentUrlInfo": "文章的原始 Youtube URL。", + "CreateExternalPostUrlInfo": "文章的原始外部网址。", "VideoContentForm": "在 YouTube 上提交视频", - "GithubPostForm": "在 GitHub 上提交帖子", + "GithubPostForm": "在 GitHub 上提交文章", "ExternalPostForm": "提交外部内容", "HowToPost": "如何发布?", "Posts": "职位", @@ -118,8 +118,8 @@ "ThankYouForContribution": "感谢您为 ABP 社区做出贡献。", "GithubPost": "GitHub 发布", "GithubPostSubmitStepOne": "1.使用 Markdown 格式在任何公共 GitHub 仓库上撰写文章。示例", - "GithubPostSubmitStepTwo": "2.使用表单提交您的帖子 URL。", - "GithubPostSubmitStepThree": "3.您的帖子将在本网站显示。", + "GithubPostSubmitStepTwo": "2.使用表单提交您的文章 URL。", + "GithubPostSubmitStepThree": "3.您的文章将在本网站显示。", "YoutubeVideo": "Youtube 视频", "YoutubeVideoSubmitStepOne": "1.在 YouTube 上发布视频。", "YoutubeVideoSubmitStepTwo": "2.使用表单提交视频 URL。", @@ -129,23 +129,23 @@ "ExternalContentSubmitStepTwo": "2.使用表单提交您的内容 URL。", "ExternalContentSubmitStepThree": "3.访问者会被重定向到原始网站的内容。", "ChooseYourContentType": "请选择添加内容的方式。", - "PostContentViaGithub": "我想根据标记符规则,用 GitHub 添加我的帖子。", + "PostContentViaGithub": "我想根据标记符规则,用 GitHub 添加我的文章。", "PostContentViaYoutube": "我想在这里分享我在 Youtube 上提供的视频。", "PostContentViaExternalSource": "我想在这里添加我在另一个平台上发布的内容。", "GitHubUserNameValidationMessage": "您的 Github 用户名不能包含空格,请确保您的 Github 用户名正确无误。", "PersonalSiteUrlValidationMessage": "您的个人网站 URL 不能包含空格,请确保您的个人网站 URL 正确无误。", "TwitterUserNameValidationMessage": "您的 Twitter 用户名不能包含空格,请确保您的 Twitter 用户名正确无误。", "LinkedinUrlValidationMessage": "您的 Linkedin URL 不能包含空格,请确保您的 Linkedin URL 正确无误。", - "NoPostsFound": "未找到帖子!", - "SearchInPosts": "在帖子中搜索...", + "NoPostsFound": "未找到文章!", + "SearchInPosts": "在文章中搜索...", "MinimumSearchContent": "您必须输入至少 3 个字符!", "Volo.AbpIo.Domain:060001": "源 URL(\"{PostUrl}\") 不是 Github URL", - "Volo.AbpIo.Domain:060002": "Github(\"{PostUrl}\") 资源中没有帖子内容。", - "Volo.AbpIo.Domain:060003": "未找到帖子内容!", + "Volo.AbpIo.Domain:060002": "Github(\"{PostUrl}\") 资源中没有文章内容。", + "Volo.AbpIo.Domain:060003": "未找到文章内容!", "SeeMore": "查看更多", "JoinTheABPCommunity": "加入 ABP 社区", "ABPCommunityTalks": "ABP 社区讲座", - "LiveDemo": "现场演示", + "LiveDemo": "在线演示", "GetLicense": "获取许可证", "GetStarted": "开始", "SourceCode": "源代码", @@ -165,7 +165,7 @@ "NoPublishedEventsYet": "尚未发布活动。", "SubscribeYoutubeChannel": "订阅 Youtube 频道", "Enum:EventType:0": "会谈", - "MemberNotPublishedPostYet": "该会员尚未发表任何帖子。", + "MemberNotPublishedPostYet": "该成员尚未发表任何文章。", "TimeAgo": "{0}前", "Discord_Page_JoinCommunityMessage": "加入 ABP Discord 社区", "Discord_Page_Announce": "我们很高兴地宣布 ABP 社区 Discord 服务器!", @@ -178,7 +178,7 @@ "Events_Page_Title": "ABP 社区讲座", "Members_Page_WritingFromUser": "从 ABP Community 上的 {0} 读写。", "Post_Create_Page_MetaTitle": "新职位", - "Post_Create_Page_MetaDescription": "创建您的帖子,分享您关于 ABP 框架的经验并为 ABP 社区做出贡献。", + "Post_Create_Page_MetaDescription": "创建您的文章,分享您关于 ABP 框架的经验并为 ABP 社区做出贡献。", "Post_Create_Page_CreateNewPost": "创建新职位", "Post_Index_Page_MetaDescription": "ABP 社区的宗旨是为使用 ABP 框架的开发人员创建一个贡献环境。", "Layout_Title": "{0}| ABP 社区", @@ -254,7 +254,7 @@ "Videos({0})": "视频 ({0})", "LatestArticles": "最新文章", "RaffleHeader": "你好,ABP 社区成员!", - "RafflesInfo": "
这是一个抽奖页面,旨在感谢您成为活跃的社区成员。我们举办 ABP 社区讲座 、ABP .NET 会议,参加或赞助与 .NET 相关的活动,并在活动中赠送一些礼品。

您可以关注此页面,查看即将举行的抽奖活动、参加这些活动或查看我们以前举行的抽奖活动(包括获奖者)。

感谢您成为我们的活跃会员!在即将举行的抽奖活动中再见。", + "RafflesInfo": "
这是一个抽奖页面,旨在感谢您成为活跃的社区成员。我们举办 ABP 社区讲座 、ABP .NET 会议,参加或赞助与 .NET 相关的活动,并在活动中赠送一些礼品。

您可以关注此页面,查看即将举行的抽奖活动、参加这些活动或查看我们以前举行的抽奖活动(包括获奖者)。

感谢您成为我们的活跃成员!在即将举行的抽奖活动中再见。", "RafflesInfoTitle": "ABP 社区来抽奖 要下载您的书籍,请点击此处。", "SubscribeToNewsletter": "订阅时事通讯,了解 ABP.IO 平台的最新动态,如新版本、文章、优惠等。", @@ -281,14 +281,14 @@ "ThankYou": "谢谢!", "CheckboxMandatory": "您需要检查这一点才能继续!", "UserInterface": "UI", - "APIGateway": "应用程序接口网关", + "APIGateway": "API网关", "Database": "数据库", "Saas": "Saas", "OpenSourceWebApp": "开源
Web 应用程序", "Framework": "框架", "AuditLoggingExplanation": "自动跟踪系统中的所有操作和数据变化。", "AbpNewCommandExplanation": "使用 ABP 启动模板创建新的解决方案。", - "AbpAddModuleCommandExplanation": "在解决方案中安装预置应用模块", + "AbpAddModuleCommandExplanation": "在解决方案中安装预构建应用模块", "AbpUpdateCommandExplanation": "自动更新解决方案中所有与 ABP 相关的 NuGet 和 NPM 包。", "ExploreAllCLICommands": "探索所有 CLI 命令", "ExploreDocumentationAndGuides": "探索全面的文档和指南。", @@ -302,7 +302,7 @@ "Preview": "预览", "CreateANewSolution": "创建新解决方案", "ABPFrameworkFeatures": "ABP 框架 特点 模块", "SeeTheScreenshot": "请看截图", - "ApplicationModuleExplanation1": "创建一个可重复使用、完全分层的应用模块解决方案。", + "ApplicationModuleExplanation1": "创建一个可重用、完全分层的应用模块解决方案。", "ApplicationModuleExplanation2": "您可以使用该选项为模块化应用程序创建模块。", "Expert_": "专家", "Partner_": "合作伙伴", @@ -428,7 +428,7 @@ "PackageDetailPage_InstallingWithABPCLIDescription2": "安装 ABP CLI 后,在要安装它的项目(.csproj 文件)位置打开命令行终端并执行以下命令", "PackageDetailPage_InstallingWithABPCLIDescription3": "它将在项目中添加 {0} 包引用,并在模块类中添加 {1} 依赖关系。", "PackageDetailPage_ManualInstallation": "2: 使用 Dotnet CLI 安装", - "PackageDetailPage_ManualInstallationDescription1": "使用集成开发环境或执行以下命令在项目中添加 {0} NuGet 包引用", + "PackageDetailPage_ManualInstallationDescription1": "使用IDE或执行以下命令在项目中添加 {0} NuGet 包引用", "PackageDetailPage_ManualInstallationDescription2": "然后在 模块类中添加 {0} 依赖关系,如以下示例所示", "PackageDetailPage_SeeDocumentation": "请参阅文档,了解如何在应用程序中使用此包。", "PackageDetailPage_InstallingUsingPMC": "3: 使用包管理器控制台安装", diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json index 0f71181156..e4bb79a4d8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hans.json @@ -2,7 +2,7 @@ "culture": "zh-Hans", "texts": { "GivenTenantIsNotExist": "给定租户不存在:{0}", - "GivenTenantIsNotAvailable": "所给租户不可用:{0}", + "GivenTenantIsNotAvailable": "给定租户不可用:{0}", "Tenant": "租户", "Switch": "切换", "Name": "名称", diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hans.json b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hans.json index 223667f47a..bc57671e43 100644 --- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hans.json +++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hans.json @@ -1,6 +1,6 @@ { "culture": "zh-Hans", "texts": { - "MaxResultCountExceededExceptionMessage": "{0}不能多于{1}!在服务器端增加{2}.{3},以允许更多结果。" + "MaxResultCountExceededExceptionMessage": "{0}不能多于{1}!在服务器端增加{2}.{3},以获得更多结果。" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json index 1baedfe251..cc408a8b75 100644 --- a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json @@ -1,13 +1,13 @@ { "culture": "zh-Hans", "texts": { - "InternalServerErrorMessage": "您的请求出现内部错误!", + "InternalServerErrorMessage": "对不起,在处理您的请求期间产生了一个服务器内部错误!!", "ValidationErrorMessage": "您的请求无效!", "ValidationNarrativeErrorMessageTitle": "验证过程中检测到以下错误。", "DefaultErrorMessage": "发生错误!", "DefaultErrorMessageDetail": "服务器未发送错误详细信息。", "DefaultErrorMessage401": "您未通过身份验证!", - "DefaultErrorMessage401Detail": "您应登录后才能执行此操作。", + "DefaultErrorMessage401Detail": "您需要进行身份认证(登录)后再执行此操作。", "DefaultErrorMessage403": "您未获得授权!", "DefaultErrorMessage403Detail": "不允许执行此操作!", "DefaultErrorMessage404": "未找到资源!", diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json index 3a2e19d1ed..7ba586be3e 100644 --- a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json @@ -4,6 +4,6 @@ "TenantNotFoundMessage": "未找到租户!", "TenantNotFoundDetails": "没有租户的 ID 或名称为:{0}的租户。", "TenantNotActiveMessage": "租户未启用!", - "TenantNotActiveDetails": "租户未激活,租户 ID 或名称为:{0}。" + "TenantNotActiveDetails": "租户未启用,租户 ID 或名称为:{0}。" } } \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json index cc3fba3a70..e6af1b3b7e 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/zh-Hans.json @@ -45,8 +45,8 @@ "Description:Abp.Account.IsSelfRegistrationEnabled": "用户是否可以自己注册账户。", "DisplayName:Abp.Account.EnableLocalLogin": "使用本地账户进行身份验证", "Description:Abp.Account.EnableLocalLogin": "表示服务器是否允许用户使用本地账户进行身份验证。", - "LoggedOutTitle": "签出", - "LoggedOutText": "您已退出,很快将重新定向。", + "LoggedOutTitle": "注销", + "LoggedOutText": "您已注销,很快将重新定向。", "ReturnToText": "单击此处返回应用", "OrLoginWith": "或使用以下方式登录", "ForgotPassword": "忘记密码?", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json index 6d8f9ea39e..76c8f2b2a1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json @@ -17,8 +17,8 @@ "CmsKit.Tags": "标签", "CmsKit:0002": "内容已经存在!", "CmsKit:0003": "实体 {0} 不可标签。", - "CmsKit:Blog:0001": "给定的标头 ({Slug}) 已经存在!", - "CmsKit:BlogPost:0001": "给定的标签已经存在!", + "CmsKit:Blog:0001": "给定的slug ({Slug}) 已经存在!", + "CmsKit:BlogPost:0001": "给定的slug已经存在!", "CmsKit:Comments:0001": "实体 {EntityType} 不可注释。", "CmsKit:Media:0001": "{Name}'不是有效的媒体名称。", "CmsKit:Media:0002": "实体不能拥有媒体。", @@ -191,7 +191,7 @@ "AddWidget": "添加小工具", "PleaseConfigureWidgets": "请配置部件", "SelectAnAuthor": "选择作者", - "InThisDocument": "在本文件中", + "InThisDocument": "在本文档中", "GoToTop": "返回页首", "SetAsHomePage": "更改主页状态", "CompletedSettingAsHomePage": "设置为主页", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index 08f0e826f1..d244c98f5c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -31,6 +31,7 @@ "NewRole": "新角色", "RoleName": "角色名称", "CreationTime": "创建时间", + "Permissions": "权限", "DisplayName:CurrentPassword": "当前密码", "DisplayName:NewPassword": "新密码", "DisplayName:NewPasswordConfirm": "确认新密码", @@ -81,6 +82,7 @@ "Permission:RoleManagement": "角色管理", "Permission:Create": "创建", "Permission:Edit": "编辑", + "Permission:Delete": "删除", "Permission:ChangePermissions": "更改权限", "Permission:UserManagement": "用户管理", "Permission:UserLookup": "用户查询", From 153d8870c4f1de3d8cb8a0d92111ac331c49677b Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 2 Jan 2024 14:31:31 +0800 Subject: [PATCH 20/88] Add `verify` feature to `translate` command. --- .../Volo.Abp.Cli.Core.csproj | 1 + .../Volo/Abp/Cli/AbpCliCoreModule.cs | 4 +- .../Volo/Abp/Cli/Commands/TranslateCommand.cs | 60 +++++++++++++++---- 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj index 589509bd22..a27f26562d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj +++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj @@ -32,6 +32,7 @@ + diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index e7289b7edd..90c95d18be 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -10,6 +10,7 @@ using Volo.Abp.Domain; using Volo.Abp.Http; using Volo.Abp.IdentityModel; using Volo.Abp.Json; +using Volo.Abp.Localization; using Volo.Abp.Minify; using Volo.Abp.Modularity; @@ -20,7 +21,8 @@ namespace Volo.Abp.Cli; typeof(AbpJsonModule), typeof(AbpIdentityModelModule), typeof(AbpMinifyModule), - typeof(AbpHttpModule) + typeof(AbpHttpModule), + typeof(AbpLocalizationModule) )] public class AbpCliCoreModule : AbpModule { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs index 73b6a74421..cb85b37e17 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/TranslateCommand.cs @@ -11,6 +11,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Volo.Abp.Cli.Args; using Volo.Abp.DependencyInjection; +using Volo.Abp.Localization.Json; namespace Volo.Abp.Cli.Commands; @@ -23,6 +24,14 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency public async Task ExecuteAsync(CommandLineArgs commandLineArgs) { var currentDirectory = Directory.GetCurrentDirectory(); + + // Verify + if (commandLineArgs.Options.ContainsKey(Options.Verify.Long)) + { + await VerifyJsonAsync(currentDirectory); + return; + } + var referenceCulture = commandLineArgs.Options.GetOrNull(Options.ReferenceCulture.Short, Options.ReferenceCulture.Long) ?? "en"; var allValues = commandLineArgs.Options.ContainsKey(Options.AllValues.Short) || commandLineArgs.Options.ContainsKey(Options.AllValues.Long); @@ -368,20 +377,22 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency return Task.CompletedTask; } - private static IEnumerable GetCultureJsonFiles(string path, string cultureName) + private static IEnumerable GetCultureJsonFiles(string path, string cultureName = null) { var excludeDirectory = new List() - { - "node_modules", - Path.Combine("bin", "debug"), - Path.Combine("obj", "debug") - }; - - var allCultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures); + { + "node_modules", + "wwwroot", + ".git", + "bin", + "obj" + }; + var allCultureNames = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(x => !x.Name.IsNullOrWhiteSpace()).Select(x => x.Name).ToList(); return Directory.GetFiles(path, "*.json", SearchOption.AllDirectories) .Where(file => excludeDirectory.All(x => file.IndexOf(x, StringComparison.OrdinalIgnoreCase) == -1)) - .Where(jsonFile => allCultureInfos.Any(culture => jsonFile.EndsWith($"{cultureName}.json", StringComparison.OrdinalIgnoreCase))); + .Where(file => allCultureNames.Any(x => Path.GetFileName(file).Equals($"{x}.json", StringComparison.OrdinalIgnoreCase))) + .WhereIf(!cultureName.IsNullOrWhiteSpace(), jsonFile => Path.GetFileName(jsonFile).Equals($"{cultureName}.json", StringComparison.OrdinalIgnoreCase)); } private AbpLocalizationInfo GetAbpLocalizationInfoOrNull(string path) @@ -468,6 +479,29 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency return translateInfo; } + private Task VerifyJsonAsync(string currentDirectory) + { + var jsonFiles = GetCultureJsonFiles(currentDirectory); + var hasInvalidJsonFile = false; + foreach (var jsonFile in jsonFiles) + { + try + { + var jsonString = File.ReadAllText(jsonFile); + _ = JsonLocalizationDictionaryBuilder.BuildFromJsonString(jsonString); + } + catch (Exception e) + { + Logger.LogError($"Invalid json file: {jsonFile}"); + hasInvalidJsonFile = true; + } + } + + Logger.LogInformation(!hasInvalidJsonFile ? "All json files are valid." : "Some json files are invalid."); + + return Task.CompletedTask; + } + private static AbpLocalizationInfo SortLocalizedKeys(AbpLocalizationInfo targetLocalizationInfo, AbpLocalizationInfo referenceLocalizationInfo) { var sortedLocalizationInfo = new AbpLocalizationInfo @@ -503,8 +537,9 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency sb.AppendLine("--all-values|-all Include all keys. Default false"); sb.AppendLine("--apply|-a Creates or updates the file for the translated culture."); sb.AppendLine("--file|-f Default: abp-translation.json"); - sb.AppendLine("--online|-o Translate online."); + sb.AppendLine("--online Translate online."); sb.AppendLine("--deepl-auth-key DeepL auth key for online translation."); + sb.AppendLine("--verify Verify that all localized files are correct JSON format."); sb.AppendLine(""); sb.AppendLine("Examples:"); sb.AppendLine(""); @@ -572,6 +607,11 @@ public class TranslateCommand : IConsoleCommand, ITransientDependency { public const string Short = "deepl-auth-key"; } + + public static class Verify + { + public const string Long = "verify"; + } } public class AbpTranslateInfo From b9ab33fc3b0710ebad832b1239c737c61ced1660 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 2 Jan 2024 09:53:02 +0300 Subject: [PATCH 21/88] CLI: Fix build error in the project creation command base. --- .../Volo/Abp/Cli/Commands/NewCommand.cs | 7 +++++-- .../Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs | 9 +++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index b6fd6e2075..a75a8ff5dd 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -19,6 +19,7 @@ using Volo.Abp.Cli.ProjectBuilding.Events; using Volo.Abp.Cli.ProjectBuilding.Templates.App; using Volo.Abp.Cli.ProjectModification; using Volo.Abp.Cli.Utils; +using Volo.Abp.Cli.Version; using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus.Local; @@ -44,7 +45,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien IBundlingService bundlingService, ITemplateInfoProvider templateInfoProvider, TemplateProjectBuilder templateProjectBuilder, - AngularThemeConfigurer angularThemeConfigurer) : + AngularThemeConfigurer angularThemeConfigurer, + CliVersionService cliVersionService) : base(connectionStringProvider, solutionPackageVersionFinder, cmdHelper, @@ -55,7 +57,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien themePackageAdder, eventBus, bundlingService, - angularThemeConfigurer) + angularThemeConfigurer, + cliVersionService) { TemplateInfoProvider = templateInfoProvider; TemplateProjectBuilder = templateProjectBuilder; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index a2226fa6e2..506997ef9c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -22,6 +22,7 @@ using Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; using Volo.Abp.Cli.ProjectBuilding.Templates.Module; using Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule; using Volo.Abp.Cli.Utils; +using Volo.Abp.Cli.Version; using Volo.Abp.EventBus.Local; namespace Volo.Abp.Cli.Commands; @@ -42,6 +43,8 @@ public abstract class ProjectCreationCommandBase public ThemePackageAdder ThemePackageAdder { get; } public AngularThemeConfigurer AngularThemeConfigurer { get; } + + public CliVersionService CliVersionService { get; } public ProjectCreationCommandBase( ConnectionStringProvider connectionStringProvider, @@ -54,7 +57,8 @@ public abstract class ProjectCreationCommandBase ThemePackageAdder themePackageAdder, ILocalEventBus eventBus, IBundlingService bundlingService, - AngularThemeConfigurer angularThemeConfigurer) + AngularThemeConfigurer angularThemeConfigurer, + CliVersionService cliVersionService) { _bundlingService = bundlingService; ConnectionStringProvider = connectionStringProvider; @@ -67,6 +71,7 @@ public abstract class ProjectCreationCommandBase EventBus = eventBus; ThemePackageAdder = themePackageAdder; AngularThemeConfigurer = angularThemeConfigurer; + CliVersionService = cliVersionService; Logger = NullLogger.Instance; } @@ -86,7 +91,7 @@ public abstract class ProjectCreationCommandBase Logger.LogInformation("Preview: yes"); #if !DEBUG - var cliVersion = await CliService.GetCurrentCliVersionAsync(typeof(CliService).Assembly); + var cliVersion = await CliVersionService.GetCurrentCliVersionAsync(); if (!cliVersion.IsPrerelease) { From 564cff282aebded810ae6487bbf768e0ae052a32 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 2 Jan 2024 11:06:01 +0300 Subject: [PATCH 22/88] CLI: Run bundle command for module template. --- .../Commands/ProjectCreationCommandBase.cs | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 1ad125b275..61f3194b37 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -425,9 +425,18 @@ public abstract class ProjectCreationCommandBase { return; } - + + var isModuleTemplate = ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName); var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor; - var message = isWebassembly ? "Generating bundles for Blazor Wasm" : "Generating bundles for MAUI Blazor"; + + var message = isWebassembly || isModuleTemplate + ? "Generating bundles for Blazor Wasm" + : "Generating bundles for MAUI Blazor"; + + var projectType = isWebassembly || isModuleTemplate + ? BundlingConsts.WebAssembly + : BundlingConsts.MauiBlazor; + Logger.LogInformation(message + "..."); await EventBus.PublishAsync(new ProjectCreationProgressEvent @@ -435,19 +444,26 @@ public abstract class ProjectCreationCommandBase Message = message }, false); + var searchPattern = isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj"; var path = projectArgs.OutputFolder; - if (projectArgs.TemplateName == MicroserviceProTemplate.TemplateName) + + if (ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName)) + { + path = Path.Combine(path, "host"); + searchPattern = "*.Blazor.Host.csproj"; + } + else if (MicroserviceTemplateBase.IsMicroserviceTemplate(projectArgs.TemplateName)) { path = Path.Combine(path, "apps"); } - + var directory = Path.GetDirectoryName( - Directory.GetFiles(path, isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj", SearchOption.AllDirectories).First() + Directory.GetFiles(path, searchPattern, SearchOption.AllDirectories).First() ); - await _bundlingService.BundleAsync(directory, true, projectType: isWebassembly ? BundlingConsts.WebAssembly : BundlingConsts.MauiBlazor); + await _bundlingService.BundleAsync(directory, true, projectType); } - + protected virtual bool ShouldRunBundleCommand(ProjectBuildArgs projectArgs) { if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName)) @@ -456,7 +472,12 @@ public abstract class ProjectCreationCommandBase return true; } - if (projectArgs.TemplateName == MicroserviceProTemplate.TemplateName && projectArgs.UiFramework is UiFramework.Blazor) + if (MicroserviceServiceTemplateBase.IsMicroserviceTemplate(projectArgs.TemplateName) && projectArgs.UiFramework is UiFramework.Blazor) + { + return true; + } + + if (ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName) && projectArgs.UiFramework != UiFramework.None) { return true; } From 633dbd5c4637c11a938e2c76fc6af739e205e3da Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 2 Jan 2024 11:08:35 +0300 Subject: [PATCH 23/88] Update ProjectCreationCommandBase.cs --- .../Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 61f3194b37..09642f38c6 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -447,7 +447,7 @@ public abstract class ProjectCreationCommandBase var searchPattern = isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj"; var path = projectArgs.OutputFolder; - if (ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName)) + if (isModuleTemplate) { path = Path.Combine(path, "host"); searchPattern = "*.Blazor.Host.csproj"; From c6ba7b4bf2f7c949ac548eccbdb4b3156072f56b Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 2 Jan 2024 17:15:42 +0800 Subject: [PATCH 24/88] Fix the unit tests. --- .../AbpAuthorizationServiceExtensions_Tests.cs | 10 +++++----- ...lobalFeatureNotEnableException_Localization_Test.cs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/framework/test/Volo.Abp.Authorization.Tests/Microsoft/AspNetCore/Authorization/AbpAuthorizationServiceExtensions_Tests.cs b/framework/test/Volo.Abp.Authorization.Tests/Microsoft/AspNetCore/Authorization/AbpAuthorizationServiceExtensions_Tests.cs index b6a0195e27..7c9504a586 100644 --- a/framework/test/Volo.Abp.Authorization.Tests/Microsoft/AspNetCore/Authorization/AbpAuthorizationServiceExtensions_Tests.cs +++ b/framework/test/Volo.Abp.Authorization.Tests/Microsoft/AspNetCore/Authorization/AbpAuthorizationServiceExtensions_Tests.cs @@ -22,27 +22,27 @@ public class AbpAuthorizationServiceExtensions_Tests : AuthorizationTestBase { var exception = new AbpAuthorizationException(code: AbpAuthorizationErrorCodes.GivenPolicyHasNotGranted); var errorInfo = _exceptionToErrorInfoConverter.Convert(exception); - errorInfo.Message.ShouldBe("授权失败! 提供的策略尚未授予."); + errorInfo.Message.ShouldBe("授权失败!提供的策略尚未授予。"); exception = new AbpAuthorizationException(code: AbpAuthorizationErrorCodes.GivenPolicyHasNotGrantedWithPolicyName) .WithData("PolicyName", "my_policy_name"); errorInfo = _exceptionToErrorInfoConverter.Convert(exception); - errorInfo.Message.ShouldBe("授权失败! 提供的策略尚未授予: my_policy_name"); + errorInfo.Message.ShouldBe("授权失败!提供的策略尚未授予: my_policy_name"); exception = new AbpAuthorizationException(code: AbpAuthorizationErrorCodes.GivenPolicyHasNotGrantedForGivenResource) .WithData("ResourceName", "my_resource_name"); errorInfo = _exceptionToErrorInfoConverter.Convert(exception); - errorInfo.Message.ShouldBe("授权失败! 提供的策略未授予提供的资源: my_resource_name"); + errorInfo.Message.ShouldBe("授权失败!提供的策略未授予提供的资源:my_resource_name"); exception = new AbpAuthorizationException(code: AbpAuthorizationErrorCodes.GivenRequirementHasNotGrantedForGivenResource) .WithData("ResourceName", "my_resource_name"); errorInfo = _exceptionToErrorInfoConverter.Convert(exception); - errorInfo.Message.ShouldBe("授权失败! 提供的要求未授予提供的资源: my_resource_name"); + errorInfo.Message.ShouldBe("授权失败!提供的要求未授予提供的资源:my_resource_name"); exception = new AbpAuthorizationException(code: AbpAuthorizationErrorCodes.GivenRequirementsHasNotGrantedForGivenResource) .WithData("ResourceName", "my_resource_name"); errorInfo = _exceptionToErrorInfoConverter.Convert(exception); - errorInfo.Message.ShouldBe("授权失败! 提供的要求未授予提供的资源: my_resource_name"); + errorInfo.Message.ShouldBe("授权失败!提供的要求未授予提供的资源:my_resource_name"); } } } diff --git a/framework/test/Volo.Abp.GlobalFeatures.Tests/Volo/Abp/GlobalFeatures/AbpGlobalFeatureNotEnableException_Localization_Test.cs b/framework/test/Volo.Abp.GlobalFeatures.Tests/Volo/Abp/GlobalFeatures/AbpGlobalFeatureNotEnableException_Localization_Test.cs index 5917bde11d..bc45ada9ad 100644 --- a/framework/test/Volo.Abp.GlobalFeatures.Tests/Volo/Abp/GlobalFeatures/AbpGlobalFeatureNotEnableException_Localization_Test.cs +++ b/framework/test/Volo.Abp.GlobalFeatures.Tests/Volo/Abp/GlobalFeatures/AbpGlobalFeatureNotEnableException_Localization_Test.cs @@ -23,7 +23,7 @@ public class AbpGlobalFeatureNotEnableException_Localization_Test : GlobalFeatur .WithData("ServiceName", "MyService") .WithData("GlobalFeatureName", "TestFeature"); ; var errorInfo = _exceptionToErrorInfoConverter.Convert(exception); - errorInfo.Message.ShouldBe("'MyService'服务需要启用'TestFeature'功能."); + errorInfo.Message.ShouldBe("'MyService' 服务需要启用 'TestFeature'。"); } } } From 9ea196ad241281a9a065ab260f5ba64209d964a2 Mon Sep 17 00:00:00 2001 From: Salih Date: Tue, 2 Jan 2024 15:51:38 +0300 Subject: [PATCH 25/88] Update en.json --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index e2563fe684..49d3753a98 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -562,6 +562,8 @@ "SponsorLogo": "Sponsor Logo", "RegistrationUrl": "Registration Url", "AllowAbpStudioBetaAccess": "Allow ABP Studio Beta Access", - "TotalQuestionCanNotBeNullMessage": "Total Question can not be null" + "TotalQuestionCanNotBeNullMessage": "Total Question can not be null", + "Permission:EditWinners": "Edit Winners", + "Permission:ChangeDrawingStatus": "Change Drawing Status" } } From e9e19880fd48d8fe82afbc15bc8851487446a13e Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Tue, 2 Jan 2024 17:01:04 +0300 Subject: [PATCH 26/88] Update es.json --- .../AbpIoLocalization/Commercial/Localization/Resources/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json index 1c205bfb3e..dd2090cd26 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json @@ -37,7 +37,7 @@ "StartUsingYourLicenseNow": "¡Empiece a usar su licencia ahora!", "WelcomePage": "Pagina de bienvenida", "UnsubscriptionExpireEmail": "Cancelar la suscripción a los correos electrónicos de recordatorio de la fecha de vencimiento de la licencia", - "UnsubscribeLicenseExpireEmailReminderMessage": "Esta suscripción de correo electrónico solo contiene un recordatorio de la fcha de vencimiento de su licencia.", + "UnsubscribeLicenseExpireEmailReminderMessage": "Esta suscripción de correo electrónico solo contiene un recordatorio de la fecha de vencimiento de su licencia.", "UnsubscribeFromLicenseExpireEmails": "Si no desea recibir los correos electrónicos sobre la fecha de vencimiento de su licencia, puede cancelar la suscripción en cualquier momento que desee.", "Unsubscribe": "Darse de baja", "NotOrganizationMember": "No eres miembro de ninguna organización.", From c4a0b4662eb78748f2f73e9f91183fc431a10edf Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 3 Jan 2024 10:26:18 +0800 Subject: [PATCH 27/88] Add ClaimNameExist to IdentityErrorCodes --- .../Volo/Abp/Identity/IdentityErrorCodes.cs | 1 + .../Volo/Abp/Identity/Localization/ar.json | 1 + .../Volo/Abp/Identity/Localization/cs.json | 1 + .../Volo/Abp/Identity/Localization/de.json | 1 + .../Volo/Abp/Identity/Localization/el.json | 1 + .../Volo/Abp/Identity/Localization/en-GB.json | 1 + .../Volo/Abp/Identity/Localization/en.json | 1 + .../Volo/Abp/Identity/Localization/es.json | 1 + .../Volo/Abp/Identity/Localization/fa.json | 1 + .../Volo/Abp/Identity/Localization/fi.json | 1 + .../Volo/Abp/Identity/Localization/fr.json | 1 + .../Volo/Abp/Identity/Localization/hi.json | 1 + .../Volo/Abp/Identity/Localization/hr.json | 1 + .../Volo/Abp/Identity/Localization/hu.json | 1 + .../Volo/Abp/Identity/Localization/is.json | 1 + .../Volo/Abp/Identity/Localization/it.json | 1 + .../Volo/Abp/Identity/Localization/nl.json | 1 + .../Volo/Abp/Identity/Localization/pl-PL.json | 1 + .../Volo/Abp/Identity/Localization/pt-BR.json | 1 + .../Volo/Abp/Identity/Localization/ro-RO.json | 1 + .../Volo/Abp/Identity/Localization/ru.json | 1 + .../Volo/Abp/Identity/Localization/sk.json | 1 + .../Volo/Abp/Identity/Localization/sl.json | 1 + .../Volo/Abp/Identity/Localization/tr.json | 1 + .../Volo/Abp/Identity/Localization/vi.json | 1 + .../Volo/Abp/Identity/Localization/zh-Hans.json | 1 + .../Volo/Abp/Identity/Localization/zh-Hant.json | 1 + .../Volo/Abp/Identity/IdentityClaimTypeManager.cs | 2 +- .../Volo/Abp/Identity/IdentityClaimTypeManager_Tests.cs | 2 +- 29 files changed, 29 insertions(+), 2 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs index 4e681c3ea1..aedec65862 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs @@ -11,4 +11,5 @@ public static class IdentityErrorCodes public const string UsersCanNotChangeTwoFactor = "Volo.Abp.Identity:010007"; public const string CanNotChangeTwoFactor = "Volo.Abp.Identity:010008"; public const string YouCannotDelegateYourself = "Volo.Abp.Identity:010009"; + public const string ClaimNameExist = "Volo.Abp.Identity:010021"; } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json index 2917af3a49..c4879a2ec0 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "لا يمكنك تغيير إعداد العاملين.", "Volo.Abp.Identity:010008": "لا يجوز تغيير إعداد عاملين.", "Volo.Abp.Identity:010009": "لا يمكنك تفويض نفسك.", + "Volo.Abp.Identity:010021": "الاسم {0} موجود بالفعل.", "Identity.OrganizationUnit.MaxUserMembershipCount": "العدد الأقصى المسموح به لعضوية الوحدة التنظيمية للمستخدم", "ThisUserIsNotActiveMessage": "هذا المستخدم غير نشط.", "Permission:IdentityManagement": "إدارة الهوية", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json index 16d28f2d7c..6cabc6fa5d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Nastavení dvou faktorů nemůžete změnit.", "Volo.Abp.Identity:010008": "Není povoleno měnit nastavení dvou faktorů.", "Volo.Abp.Identity:010009": "Nemůžete delegovat své vlastní oprávnění.", + "Volo.Abp.Identity:010021": "Název '{0}' již existuje.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximální povolený počet členů organizační jednotky pro uživatele", "ThisUserIsNotActiveMessage": "Tento uživatel není aktivní.", "Permission:IdentityManagement": "Správa identit", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json index 1863863510..fb71884b16 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Sie können Ihre Zwei-Faktor-Einstellung nicht ändern.", "Volo.Abp.Identity:010008": "Die Zwei-Faktor-Einstellung dürfen nicht geändert werden.", "Volo.Abp.Identity:010009": "Sie können sich nicht selbst delegieren.", + "Volo.Abp.Identity:010021": "Der Name existiert bereits {0}", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximal zulässige Anzahl an Mitgliedschaften in Organisationseinheiten für einen Benutzer", "ThisUserIsNotActiveMessage": "Dieser Benutzer ist nicht aktiv.", "Permission:IdentityManagement": "Identitätsverwaltung", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json index 1f13cf9b37..e0b33da5ae 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json @@ -75,6 +75,7 @@ "Volo.Abp.Identity:010007": "Δεν μπορείτε να αλλάξετε τη ρύθμιση δύο παραγόντων.", "Volo.Abp.Identity:010008": "Δεν επιτρέπεται η αλλαγή της ρύθμισης δύο παραγόντων.", "Volo.Abp.Identity:010009": "Δεν μπορείτε να αναθέσετε την εξουσιοδότησή σας σε εσάς ίδιο.", + "Volo.Abp.Identity:010021": "Το όνομα '{0}' υπάρχει ήδη.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Μέγιστος επιτρεπόμενος αριθμός μελών μονάδας οργανισμού για έναν χρήστη", "ThisUserIsNotActiveMessage": "Αυτός ο χρήστης δεν είναι ενεργός.", "Permission:IdentityManagement": "Διαχείριση ταυτότητας", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json index 2cca91ec55..9a9c8b25ba 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json @@ -75,6 +75,7 @@ "Volo.Abp.Identity:010007": "You can't change your two factor setting.", "Volo.Abp.Identity:010008": "Changing the two factor setting is not allowed.", "Volo.Abp.Identity:010009": "You cannot delegate yourself!", + "Volo.Abp.Identity:010021": "Name exist: '{0}'", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximum allowed organisation unit membership count for a user", "Permission:IdentityManagement": "Identity management", "Permission:RoleManagement": "Role management", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json index 461a315052..5410e8b81a 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "You can't change your two factor setting.", "Volo.Abp.Identity:010008": "It's not allowed to change two factor setting.", "Volo.Abp.Identity:010009": "You can not delegate yourself.", + "Volo.Abp.Identity:010021": "Name exist: '{0}'.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximum allowed organization unit membership count for a user", "ThisUserIsNotActiveMessage": "This user is not active.", "Permission:IdentityManagement": "Identity management", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json index 3efb3f7e5e..7fdbe1914e 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "No puedes cambiar tu configuración de autentificación de dos pasos.", "Volo.Abp.Identity:010008": "No está permitido cambiar la configuración de autenticación de dos pasos.", "Volo.Abp.Identity:010009": "No puedes delegar tu propia cuenta!", + "Volo.Abp.Identity:010021": "Ya existe un con el nombre '{0}'", "Identity.OrganizationUnit.MaxUserMembershipCount": "Número máximo de unidades organizativas por usuario", "ThisUserIsNotActiveMessage": "Este usuario no está activo.", "Permission:IdentityManagement": "Gestión de identidades", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json index 44466eb7de..4e6a295317 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json @@ -75,6 +75,7 @@ "Volo.Abp.Identity:010007": "شما نمی توانید تنظیمات دو مرحله ای خود را تغییر دهید.", "Volo.Abp.Identity:010008": "تغییر دادن تنظیمات دو مرحله ای مجاز نمی باشد.", "Volo.Abp.Identity:010009": "شما نمی توانید خودتان را معرفی کنید.", + "Volo.Abp.Identity:010021": "نام {0} قبلاً استفاده گردیده است.", "Identity.OrganizationUnit.MaxUserMembershipCount": "حداکثر تعداد مجاز عضویت در یک واحد سازمان برای یک کاربر", "ThisUserIsNotActiveMessage": "این کاربر غیرفعال میباشد.", "Permission:IdentityManagement": "مدیریت هویت", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json index 2a1a796ea2..9c564ee028 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Et voi muuttaa kahden tekijän asetusta.", "Volo.Abp.Identity:010008": "Kahden tekijän asetusta ei saa muuttaa.", "Volo.Abp.Identity:010009": "Et voi delegoida itseäsi.", + "Volo.Abp.Identity:010021": "{0} on jo olemassa.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Suurin sallittu organisaatioyksikön jäsenmäärä käyttäjälle", "ThisUserIsNotActiveMessage": "Tämä käyttäjä ei ole aktiivinen.", "Permission:IdentityManagement": "Identiteetin hallinta", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json index ff8822652d..6bba226d60 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Vous ne pouvez pas modifier votre paramètre à deux facteurs.", "Volo.Abp.Identity:010008": "Il n’est pas permis de changer deux facteurs de réglage.", "Volo.Abp.Identity:010009": "Vous ne pouvez pas vous déléguer vous-même.", + "Volo.Abp.Identity:010021" : "Le nom '{0}' existe déjà.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Nombre maximal d’adhésions autorisées à l’unité d’organisation pour un utilisateur", "ThisUserIsNotActiveMessage": "Cet utilisateur n'est pas actif.", "Permission:IdentityManagement": "Gestion de l’identité", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json index 4d86fbc5f2..6e1d49559c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "आप अपनी दो कारक सेटिंग नहीं बदल सकते।", "Volo.Abp.Identity:010008": "इसे दो कारक सेटिंग बदलने की अनुमति नहीं है।", "Volo.Abp.Identity:010009": "आप अपने आप को अधिकृत नहीं कर सकते हैं!", + "Volo.Abp.Identity:010021" : "नाम '{0}' पहले से ही लिया गया है।", "Identity.OrganizationUnit.MaxUserMembershipCount": "उपयोगकर्ता के लिए अधिकतम अनुमत संगठन इकाई सदस्यता गणना", "ThisUserIsNotActiveMessage": "यह उपयोगकर्ता सक्रिय नहीं है।", "Permission:IdentityManagement": "पहचान प्रबंधन", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json index bc46e89157..e5919cde80 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Ne možete promijeniti postavku dva faktora.", "Volo.Abp.Identity:010008": "Nije dopušteno mijenjati postavke dvofaktorske autentifikacije.", "Volo.Abp.Identity:010009": "Ne možete delegirati sami sebi.", + "Volo.Abp.Identity:010021" : "Naziv '{0}' već postoji.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maksimalni dopušteni broj članstva u organizacijskoj jedinici za korisnika", "ThisUserIsNotActiveMessage": "Ovaj korisnik nije aktivan.", "Permission:IdentityManagement": "Upravljanje identitetom", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json index 8d6911fcbd..be4b1602a6 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Nem változtathatja meg a kétlépcsős bejelentkezés beállítását.", "Volo.Abp.Identity:010008": "Kétlépcsős bejelentkezés beállítás megváltoztatása nem megengedett.", "Volo.Abp.Identity:010009": "Nem adhatja át a saját jogosultságait.", + "Volo.Abp.Identity:010021" : "'{0}' nevű már létezik.", "Identity.OrganizationUnit.MaxUserMembershipCount": "A maximálisan megengedett szervezeti egység tagsági szám egy felhasználó számára", "ThisUserIsNotActiveMessage": "Ez a felhasználó nem aktív.", "Permission:IdentityManagement": "Identitáskezelés", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json index a1fe7f2262..d978250058 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Þú getur ekki breytt tveggja þátta stillingu þinni.", "Volo.Abp.Identity:010008": "Það er ekki leyfilegt að breyta tvíþátta stillingu.", "Volo.Abp.Identity:010009": "Þú getur ekki delegað þér sjálfum.", + "Volo.Abp.Identity:010021" : "Nafnið '{0}' er þegar í notkun.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Hámarks leyfileg fjöldi aðildar að skipulagseiningu fyrir notanda", "ThisUserIsNotActiveMessage": "Þessi notandi er ekki virkur.", "Permission:IdentityManagement": "Auðkenninga umsjón", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json index c40f743ad6..6459e6a436 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Non puoi modificare l'impostazione dei due fattori.", "Volo.Abp.Identity:010008": "Non è consentito modificare l'impostazione a due fattori.", "Volo.Abp.Identity:010009": "Non puoi delegare te stesso.", + "Volo.Abp.Identity:010021" : "Il nome '{0}' è già in uso.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Numero massimo consentito di membri dell'unità organizzativa per un utente", "ThisUserIsNotActiveMessage": "Questo utente non è attivo.", "Permission:IdentityManagement": "Gestione identità", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json index f52355588b..776d2d9e2c 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "U kunt uw instelling voor tweefactor authenticatie niet wijzigen.", "Volo.Abp.Identity:010008": "Het is niet toegestaan om de instelling van tweefactor authenticatie te wijzigen.", "Volo.Abp.Identity:010009": "U kunt uzelf niet delegeren.", + "Volo.Abp.Identity:010021" : "Er bestaat al een met de naam '{0}'.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximaal toegestande aantal lidmaatschappen van organisatie-eenheden voor een gebruiker", "ThisUserIsNotActiveMessage": "Deze gebruiker is niet actief.", "Permission:IdentityManagement": "Identiteitsbeheer", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json index 0a39b7b34c..efadd1e638 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Nie możesz zmienić ustawienia dwóch czynników.", "Volo.Abp.Identity:010008": "Nie wolno zmieniać ustawienia dwuczynnikowego.", "Volo.Abp.Identity:010009": "Nie możesz delegować swoich uprawnień.", + "Volo.Abp.Identity:010021" : "Nazwa '{0}' już istnieje.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maksymalna dozwolona liczba członków jednostki organizacyjnej dla użytkownika", "ThisUserIsNotActiveMessage": "Ten użytkownik nie jest aktywny.", "Permission:IdentityManagement": "Zarządzanie tożsamością", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json index 648fe194d6..2614181436 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Você não pode alterar sua configuração de dois fatores.", "Volo.Abp.Identity:010008": "Não é permitido alterar a configuração de dois fatores.", "Volo.Abp.Identity:010009": "Você não pode delegar a si mesmo.", + "Volo.Abp.Identity:010021" : "Já existe um(a) {0} com o nome.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Contagem máxima permitida de membros da unidade organizacional para um usuário", "ThisUserIsNotActiveMessage": "Este usuário não está ativo.", "Permission:IdentityManagement": "Acessos", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json index 8222c68b6a..e092ff3e4a 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Nu vă puteţi schimba setările de autentificare în doi paşi.", "Volo.Abp.Identity:010008": "Nu este permisă modificarea setărilor autentificării în doi paşi.", "Volo.Abp.Identity:010009": "Nu vă puteţi delega singur.", + "Volo.Abp.Identity:010021" : "Numele '{0}' este deja luat.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Numărul maxim de unităţi organizaţionale permise pentru un utilizator", "ThisUserIsNotActiveMessage": "Acest utilizator nu este activ.", "Permission:IdentityManagement": "Administrare identităţii", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json index 6c626ab0d1..26cc0ccfa0 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Вы не можете изменить настройку двух факторов.", "Volo.Abp.Identity:010008": "Изменение двухфакторной настройки не допускается.", "Volo.Abp.Identity:010009": "Вы не можете делегировать свои собственные права.", + "Volo.Abp.Identity:010021" : "Имя '{0}' уже существует.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Максимально допустимое количество членов организационного подразделения для пользователя", "ThisUserIsNotActiveMessage": "Этот пользователь не активен.", "Permission:IdentityManagement": "Управление идентификацией", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json index 0a09ff6f12..961eac42eb 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Dvojfaktorové nastavenie nie je možné zmeniť.", "Volo.Abp.Identity:010008": "Dvojfaktorové nastavenie nie je povolené zmeniť.", "Volo.Abp.Identity:010009": "Nemôžete delegovať svoje vlastné oprávnenia.", + "Volo.Abp.Identity:010021" : "Názov '{0}' sa už používa.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximálny povolený počet členov organizačnej jednotky pre používateľa", "ThisUserIsNotActiveMessage": "Tento používateľ nie je aktívny.", "Permission:IdentityManagement": "Správa identít", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json index 6e972c87ed..0bdcb60162 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Nastavitve dveh faktorjev ne morete spremeniti.", "Volo.Abp.Identity:010008": "Ni dovoljeno spreminjati nastavitve dveh faktorjev.", "Volo.Abp.Identity:010009": "Ne morete delegirati svojih pravic.", + "Volo.Abp.Identity:010021" : "Naziv '{0}' že obstaja.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Največje dovoljeno število članov v organizacijski enoti za uporabnika", "ThisUserIsNotActiveMessage": "Ta uporabnik ni aktiven.", "Permission:IdentityManagement": "Upravljanje identitet", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json index cede290569..a676592b80 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "İki faktörlü ayarınızı değiştiremezsiniz.", "Volo.Abp.Identity:010008": "İki faktörlü ayarın değiştirilmesine izin verilmez.", "Volo.Abp.Identity:010009": "Kendinizi yetkilendiremezsiniz.", + "Volo.Abp.Identity:010021" : "{0} isminde bir birim zaten var.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Bir kullanıcı için izin verilen en fazla organizasyon birimi sayısı", "ThisUserIsNotActiveMessage": "Bu kullanıcı aktif değil.", "Permission:IdentityManagement": "Kimlik yönetimi", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json index 330e952374..066ea8b538 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "Bạn không thể thay đổi cài đặt hai yếu tố của mình.", "Volo.Abp.Identity:010008": "Không được phép thay đổi cài đặt hai yếu tố.", "Volo.Abp.Identity:010009": "Bạn không thể ủy quyền cho chính mình.", + "Volo.Abp.Identity:010021": "Tên '{0}' đã tồn tại.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Số lượng thành viên đơn vị tổ chức tối đa được phép cho một người dùng", "ThisUserIsNotActiveMessage": "Người dùng này không hoạt động.", "Permission:IdentityManagement": "Quản lý danh tính", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index d244c98f5c..5d2c2d769d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "你不能修改你的双因素身份验证设置", "Volo.Abp.Identity:010008": "不允许修改双因素身份验证设置。", "Volo.Abp.Identity:010009": "你不能委托给自己。", + "Volo.Abp.Identity:010021": "名称:'{0}' 已存在", "Identity.OrganizationUnit.MaxUserMembershipCount": "组织单位最大允许的成员资格计数", "ThisUserIsNotActiveMessage": "该用户不可用。", "Permission:IdentityManagement": "身份标识管理", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json index b86e9121fc..6a90b029ec 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json @@ -76,6 +76,7 @@ "Volo.Abp.Identity:010007": "你不能修改你的雙因素身份驗證設置", "Volo.Abp.Identity:010008": "不允許修改雙因素身份驗證設置.", "Volo.Abp.Identity:010009": "你不能委派給自己", + "Volo.Abp.Identity:010021" : "名稱 '{0}' 已存在.", "Identity.OrganizationUnit.MaxUserMembershipCount": "允許一個使用者至多可隸屬在幾個組織單位", "ThisUserIsNotActiveMessage": "該用戶不可用.", "Permission:IdentityManagement": "身份識別管理", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityClaimTypeManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityClaimTypeManager.cs index 2785e317b4..d7a13c8476 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityClaimTypeManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityClaimTypeManager.cs @@ -16,7 +16,7 @@ public class IdentityClaimTypeManager : DomainService { if (await IdentityClaimTypeRepository.AnyAsync(claimType.Name)) { - throw new AbpException($"Name Exist: {claimType.Name}"); + throw new BusinessException(IdentityErrorCodes.ClaimNameExist).WithData("0", claimType.Name); } return await IdentityClaimTypeRepository.InsertAsync(claimType); diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityClaimTypeManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityClaimTypeManager_Tests.cs index 0a422239a8..9078040910 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityClaimTypeManager_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityClaimTypeManager_Tests.cs @@ -32,7 +32,7 @@ public class IdentityClaimTypeManager_Tests : AbpIdentityDomainTestBase [Fact] public async Task Create_Name_Exist_Should_Exception() { - await Assert.ThrowsAnyAsync(async () => await _claimTypeManager.CreateAsync( + await Assert.ThrowsAnyAsync(async () => await _claimTypeManager.CreateAsync( new IdentityClaimType( Guid.NewGuid(), "Age"))); } From 0273c43f8d3d0dac09c1e57a59d40327dc188368 Mon Sep 17 00:00:00 2001 From: selman koc <64414348+skoc10@users.noreply.github.com> Date: Wed, 3 Jan 2024 08:08:46 +0300 Subject: [PATCH 28/88] Update version to release 8.0.1 --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index cab8d80ee0..6774e9b1e2 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 8.0.0 + 8.0.1 $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 83e5d4213fa27f2a2424307d0b3b9150c4676941 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 3 Jan 2024 13:09:29 +0800 Subject: [PATCH 29/88] Update AppUrlProvider_Tests.cs --- .../Abp/Ui/Navigation/AppUrlProvider_Tests.cs | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs index a6fc63240d..5b448aa683 100644 --- a/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs +++ b/framework/test/Volo.Abp.UI.Navigation.Tests/Volo/Abp/Ui/Navigation/AppUrlProvider_Tests.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Shouldly; using Volo.Abp.MultiTenancy; +using Volo.Abp.MultiTenancy.ConfigurationStore; using Volo.Abp.Testing; using Volo.Abp.UI.Navigation.Urls; using Xunit; @@ -15,6 +16,8 @@ public class AppUrlProvider_Tests : AbpIntegratedTest private readonly IAppUrlProvider _appUrlProvider; private readonly ICurrentTenant _currentTenant; + private readonly Guid _tenantAId = Guid.NewGuid(); + public AppUrlProvider_Tests() { _appUrlProvider = ServiceProvider.GetRequiredService(); @@ -43,6 +46,14 @@ public class AppUrlProvider_Tests : AbpIntegratedTest options.Applications["BLAZOR"].RootUrl = "https://{{tenantId}}.abp.io"; options.Applications["BLAZOR"].Urls["PasswordReset"] = "account/reset-password"; }); + + services.Configure(options => + { + options.Tenants = new TenantConfiguration[] + { + new(_tenantAId, "community") + }; + }); } [Fact] @@ -66,14 +77,13 @@ public class AppUrlProvider_Tests : AbpIntegratedTest url.ShouldBe("https://community.abp.io/account/reset-password"); } - var tenantId = Guid.NewGuid(); - using (_currentTenant.Change(tenantId)) + using (_currentTenant.Change(_tenantAId)) { var url = await _appUrlProvider.GetUrlAsync("BLAZOR"); - url.ShouldBe($"https://{tenantId}.abp.io"); + url.ShouldBe($"https://{_tenantAId}.abp.io"); url = await _appUrlProvider.GetUrlAsync("BLAZOR", "PasswordReset"); - url.ShouldBe($"https://{tenantId}.abp.io/account/reset-password"); + url.ShouldBe($"https://{_tenantAId}.abp.io/account/reset-password"); } await Assert.ThrowsAsync(async () => @@ -100,16 +110,15 @@ public class AppUrlProvider_Tests : AbpIntegratedTest (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://abp.io")).ShouldBeTrue(); } - using (_currentTenant.Change(Guid.NewGuid(), "community")) + using (_currentTenant.Change(_tenantAId, "community")) { (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://community.abp.io")).ShouldBeTrue(); (await _appUrlProvider.IsRedirectAllowedUrlAsync("https://community2.abp.io")).ShouldBeFalse(); } - var tenantId = Guid.NewGuid(); - using (_currentTenant.Change(tenantId)) + using (_currentTenant.Change(_tenantAId)) { - (await _appUrlProvider.IsRedirectAllowedUrlAsync($"https://{tenantId}.abp.io")).ShouldBeTrue(); + (await _appUrlProvider.IsRedirectAllowedUrlAsync($"https://{_tenantAId}.abp.io")).ShouldBeTrue(); (await _appUrlProvider.IsRedirectAllowedUrlAsync($"https://{Guid.NewGuid()}.abp.io")).ShouldBeFalse(); } } From 3f5d8a7bd339dec2a9cd6358d62dd4439236317e Mon Sep 17 00:00:00 2001 From: voloagent Date: Wed, 3 Jan 2024 11:49:07 +0300 Subject: [PATCH 30/88] Update_NPM_Packages --- .../package.json | 2 +- .../package.json | 4 +- .../yarn.lock | 280 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 318 +++++++------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 258 ++++++------ modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 258 ++++++------ .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 258 ++++++------ .../host/Volo.CmsKit.Web.Unified/package.json | 4 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 392 +++++++++--------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 318 +++++++------- .../app/OpenIddict.Demo.Server/package.json | 2 +- modules/openiddict/app/angular/package.json | 18 +- .../package.json | 2 +- .../yarn.lock | 258 ++++++------ .../package.json | 4 +- .../yarn.lock | 292 ++++++------- npm/lerna.json | 2 +- npm/ng-packs/package.json | 2 +- .../packages/account-core/package.json | 6 +- npm/ng-packs/packages/account/package.json | 6 +- npm/ng-packs/packages/components/package.json | 6 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/generators/package.json | 2 +- npm/ng-packs/packages/identity/package.json | 8 +- npm/ng-packs/packages/oauth/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 6 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 6 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 6 +- .../package.json | 4 +- .../package.json | 34 +- npm/packs/aspnetcore.mvc.ui/package-lock.json | 2 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- .../bootstrap-daterangepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/cms-kit.admin/package.json | 12 +- npm/packs/cms-kit.public/package.json | 6 +- npm/packs/cms-kit/package.json | 6 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/cropperjs/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net-bs5/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/flag-icons/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 4 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/moment/package.json | 2 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/qrcode/package.json | 4 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/slugify/package.json | 2 +- npm/packs/star-rating-svg/package.json | 4 +- npm/packs/sweetalert2/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 6 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/vee-validate/package.json | 4 +- npm/packs/virtual-file-explorer/package.json | 6 +- npm/packs/vue/package.json | 2 +- npm/packs/zxcvbn/package.json | 4 +- .../Volo.Abp.Account.SourceCode.zip | Bin 223430 -> 223254 bytes .../Volo.Abp.AuditLogging.SourceCode.zip | Bin 89396 -> 89430 bytes .../Volo.Abp.BackgroundJobs.SourceCode.zip | Bin 62588 -> 62594 bytes .../Volo.Abp.BasicTheme.SourceCode.zip | Bin 491728 -> 491688 bytes ...lo.Abp.BlobStoring.Database.SourceCode.zip | Bin 67488 -> 67488 bytes .../Volo.Abp.FeatureManagement.SourceCode.zip | Bin 187772 -> 187771 bytes .../Volo.Abp.Identity.SourceCode.zip | Bin 389459 -> 391463 bytes .../Volo.Abp.IdentityServer.SourceCode.zip | Bin 165844 -> 165853 bytes .../Volo.Abp.OpenIddict.SourceCode.zip | Bin 2278102 -> 2278102 bytes ...lo.Abp.PermissionManagement.SourceCode.zip | Bin 177816 -> 177830 bytes .../Volo.Abp.SettingManagement.SourceCode.zip | Bin 278752 -> 278728 bytes .../Volo.Abp.TenantManagement.SourceCode.zip | Bin 163817 -> 163820 bytes .../Volo.Abp.Users.SourceCode.zip | Bin 32111 -> 32112 bytes ...olo.Abp.VirtualFileExplorer.SourceCode.zip | Bin 89759 -> 89727 bytes .../Volo.Blogging.SourceCode.zip | Bin 405022 -> 405007 bytes .../Volo.ClientSimulation.SourceCode.zip | Bin 80877 -> 80855 bytes .../Volo.CmsKit.SourceCode.zip | Bin 931850 -> 931794 bytes .../Volo.Docs.SourceCode.zip | Bin 679387 -> 679395 bytes templates/app-nolayers/angular/package.json | 18 +- templates/app/angular/package.json | 18 +- templates/module/angular/package.json | 20 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- 120 files changed, 1551 insertions(+), 1551 deletions(-) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index ac10fb87f0..878833cc7b 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~8.0.0", + "@abp/aspnetcore.mvc.ui.theme.shared": "~8.0.1", "@abp/prismjs": "^~7.3.2", "@abp/highlight.js": "^~7.3.2" }, diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index e99d414686..8108e77ec1 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0", - "@abp/prismjs": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1", + "@abp/prismjs": "~8.0.1" }, "devDependencies": {} } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index cd60eee899..5230be6644 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,175 +43,175 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/clipboard@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.0.tgz#cb597686e07e9ef68a09ebf7101498281939fb10" - integrity sha512-JonHbsCwJQ5iI45zy6lFu9kwXUYoRZC+t31N1w7fDMxekwPEjenBR4g33aGLIySTL7ExKiYjBsEVrCg8GKG/mg== +"@abp/clipboard@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.1.tgz#c8758c3a8259cb105307fe9971ee432f3950d287" + integrity sha512-Yo+EL8wfL54KNBhpicy/gSoUv2QNOt39LALgFxNdhMaAkMvQIhkuVN4H0Lk7bcUDG8cRT52CuFRy0Fb5nDFFYA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" clipboard "^2.0.8" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/prismjs@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.0.tgz#174ccbd33d47bb687fe35bed35f7c834ca5ee328" - integrity sha512-Udx3pdlUU2MO+di1BZgG3jKNIeImWoPySmBA8YaStqsAkD/yb+YyUD2QmCUfI55kqzRyhAKE467ZusDFFOY20w== +"@abp/prismjs@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.1.tgz#d9e1538188eaa2b5c7b8364c14255cf37a997d1f" + integrity sha512-TgJl+zx9UR9KU6p9BqzlSphp52hRCopJ7iv6gu1pkVHBK+mraE6nBHwZlAyziXVv/DJwo+RlXbBi/A9xfHB18A== dependencies: - "@abp/clipboard" "~8.0.0" - "@abp/core" "~8.0.0" + "@abp/clipboard" "~8.0.1" + "@abp/core" "~8.0.1" prismjs "^1.26.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index d4c175892a..6adfc2f79a 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0", - "@abp/blogging": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1", + "@abp/blogging": "~8.0.1" } } diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 2ea0f18895..434aeba66a 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,201 +43,201 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/blogging@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-8.0.0.tgz#25f805de6bc3ba9f26ba49798e72168950b8b97c" - integrity sha512-N56rtJiAontTMy6M/vqB/n46xZF3FCp1Q0d7/E4ObwmkBRvreN/Zq+zfbPxfvRXodHWAogE6h73vxbixGFnsuQ== +"@abp/blogging@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-8.0.1.tgz#bdeef25580cf149c6e02da91d10aa8d8711d2912" + integrity sha512-wLq885fBNBlTeafIM5R15UuLstvJCxa569U206xvnxMczD2efM+6dIkR0WIKpUC2E1JwzsHNUG04TXx5BaJnVw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - "@abp/owl.carousel" "~8.0.0" - "@abp/prismjs" "~8.0.0" - "@abp/tui-editor" "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + "@abp/owl.carousel" "~8.0.1" + "@abp/prismjs" "~8.0.1" + "@abp/tui-editor" "~8.0.1" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/clipboard@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.0.tgz#cb597686e07e9ef68a09ebf7101498281939fb10" - integrity sha512-JonHbsCwJQ5iI45zy6lFu9kwXUYoRZC+t31N1w7fDMxekwPEjenBR4g33aGLIySTL7ExKiYjBsEVrCg8GKG/mg== +"@abp/clipboard@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.1.tgz#c8758c3a8259cb105307fe9971ee432f3950d287" + integrity sha512-Yo+EL8wfL54KNBhpicy/gSoUv2QNOt39LALgFxNdhMaAkMvQIhkuVN4H0Lk7bcUDG8cRT52CuFRy0Fb5nDFFYA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" clipboard "^2.0.8" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/owl.carousel@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-8.0.0.tgz#250ba286ad0676341d1ecafca1a0138eb77cff2c" - integrity sha512-FeVLf3Y84QQWNWJfX405pWTAiub7v4yObnZW1lpBRUOaAozJpDN7RYfsqnO9vU9xZbCZZOTNFmpY5AlLGXmxUg== +"@abp/owl.carousel@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-8.0.1.tgz#d3f57656ff7964c046b8de9f38329397998c4482" + integrity sha512-tBOvG1RS+rDBBcAlZe9ajKyTiMgwRTzMybcUWA/23Ka1kcsQdmClVulCiSA6jaxdS4sbnVkBZkYpCf8sFXTB9A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" owl.carousel "^2.3.4" -"@abp/prismjs@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.0.tgz#174ccbd33d47bb687fe35bed35f7c834ca5ee328" - integrity sha512-Udx3pdlUU2MO+di1BZgG3jKNIeImWoPySmBA8YaStqsAkD/yb+YyUD2QmCUfI55kqzRyhAKE467ZusDFFOY20w== +"@abp/prismjs@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.1.tgz#d9e1538188eaa2b5c7b8364c14255cf37a997d1f" + integrity sha512-TgJl+zx9UR9KU6p9BqzlSphp52hRCopJ7iv6gu1pkVHBK+mraE6nBHwZlAyziXVv/DJwo+RlXbBi/A9xfHB18A== dependencies: - "@abp/clipboard" "~8.0.0" - "@abp/core" "~8.0.0" + "@abp/clipboard" "~8.0.1" + "@abp/core" "~8.0.1" prismjs "^1.26.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/tui-editor@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-8.0.0.tgz#580737ed8e3a29ada576866556afbce5655cddfc" - integrity sha512-bsFwmAxLIV9IkcTqJor0ev0+noQqWsczxIkaSx9HWw08/YkNPfG0ak7gICU1I/gZoB7IMoaiwC6dXfY27BKSWA== +"@abp/tui-editor@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-8.0.1.tgz#1310d50588fa7ad04b746cd3318723e2d23eab51" + integrity sha512-ALOIXj2sw9mCYKmzuXfbQ0J2ZHC+D3eWov8eJBVppkcQZeDlrxDLcFPqHLdNT+e2EYd1zABRhT7Fx7I9uVOqLw== dependencies: - "@abp/jquery" "~8.0.0" - "@abp/prismjs" "~8.0.0" + "@abp/jquery" "~8.0.1" + "@abp/prismjs" "~8.0.1" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 1a48bf14cc..286ed6f30a 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index f9b7466558..e724ffe2e3 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 2367cb95dd..d71f377f3f 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~8.0.0", - "@abp/ng.identity": "~8.0.0", - "@abp/ng.setting-management": "~8.0.0", - "@abp/ng.tenant-management": "~8.0.0", - "@abp/ng.theme.basic": "~8.0.0", + "@abp/ng.account": "~8.0.1", + "@abp/ng.identity": "~8.0.1", + "@abp/ng.setting-management": "~8.0.1", + "@abp/ng.tenant-management": "~8.0.1", + "@abp/ng.theme.basic": "~8.0.1", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 9e9fc83a60..dd731f3aae 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=8.0.0", - "@abp/ng.theme.shared": ">=8.0.0" + "@abp/ng.core": ">=8.0.1", + "@abp/ng.theme.shared": ">=8.0.1" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index c3095a2845..c05eacca79 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index f9b7466558..e724ffe2e3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 389a89a36f..a4ee1fd707 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index f9b7466558..e724ffe2e3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 03a05d027c..4698c9f051 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0", - "@abp/cms-kit": "8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1", + "@abp/cms-kit": "8.0.1" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 4a0c447fd0..bfcfba0fdc 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,257 +43,257 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/clipboard@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.0.tgz#cb597686e07e9ef68a09ebf7101498281939fb10" - integrity sha512-JonHbsCwJQ5iI45zy6lFu9kwXUYoRZC+t31N1w7fDMxekwPEjenBR4g33aGLIySTL7ExKiYjBsEVrCg8GKG/mg== +"@abp/clipboard@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.1.tgz#c8758c3a8259cb105307fe9971ee432f3950d287" + integrity sha512-Yo+EL8wfL54KNBhpicy/gSoUv2QNOt39LALgFxNdhMaAkMvQIhkuVN4H0Lk7bcUDG8cRT52CuFRy0Fb5nDFFYA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" clipboard "^2.0.8" -"@abp/cms-kit.admin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-8.0.0.tgz#2eb5ed3eb5c35041b2dcb2a5a03f8804c7af2de7" - integrity sha512-5bKUjgql5hty74wxq28xAplGlrFbJrqglIxcB8qTW7H6DH0JTPrANx7YXuSdRcfQay5SX2Sg9qvJmt3uTtND+Q== +"@abp/cms-kit.admin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-8.0.1.tgz#d888d69d5e5bede811650f48a63ccb1792d436ac" + integrity sha512-DiBi4tgytvSQCDYMp1iXQmYK1e5bn1lBvGPcD7Ba5Zjyu2MQZTkun9cAHza38q1rUs4r5dINj/DWftw4dI8o/Q== dependencies: - "@abp/codemirror" "~8.0.0" - "@abp/jstree" "~8.0.0" - "@abp/slugify" "~8.0.0" - "@abp/tui-editor" "~8.0.0" - "@abp/uppy" "~8.0.0" + "@abp/codemirror" "~8.0.1" + "@abp/jstree" "~8.0.1" + "@abp/slugify" "~8.0.1" + "@abp/tui-editor" "~8.0.1" + "@abp/uppy" "~8.0.1" -"@abp/cms-kit.public@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-8.0.0.tgz#9d0a0bc2f4e596222ebba4745b78543dc94b2abc" - integrity sha512-71EM2+VfMfhN5I/8DgLDVhUIy+yUSOS06ScQdtIB9MEutn7aRzP4Q1GptXpGo5hqfZJnnLthdFLyaZ3iXonQNw== +"@abp/cms-kit.public@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-8.0.1.tgz#a81dc492335eb58dfb1bd7673f34f4b5b1b3d19d" + integrity sha512-cZA9mtsWiry4BjiOY97IfXBmoTcWdNOKz+J4s/4qbg4GbRghB34tUvhZ7P9Gh28ORPUdOwiLmGF0IqeZFj5Unw== dependencies: - "@abp/highlight.js" "~8.0.0" - "@abp/star-rating-svg" "~8.0.0" + "@abp/highlight.js" "~8.0.1" + "@abp/star-rating-svg" "~8.0.1" -"@abp/cms-kit@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-8.0.0.tgz#ce2460d03c1e0f016cfad450955dff1b43b2a7d5" - integrity sha512-jmAY3i7L64kvGpEYdFXbdzhkh1z11nSCUgLiQlC5b4sTtsxWzlQnGgGAH8lIuk0ZaNmfFNIJdwahff3S+B4nfw== +"@abp/cms-kit@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-8.0.1.tgz#f581cfd6786439ca0812d78c2910e31f36bad545" + integrity sha512-Y3wV5TH2I2J8a0+4NwfJRkmvLMpUFWNqzyjXRbWgPTRMI1aJZ0ytoPHkd6l+tvWlyWWzt4WFF39Gd+OoHmDjDw== dependencies: - "@abp/cms-kit.admin" "~8.0.0" - "@abp/cms-kit.public" "~8.0.0" + "@abp/cms-kit.admin" "~8.0.1" + "@abp/cms-kit.public" "~8.0.1" -"@abp/codemirror@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-8.0.0.tgz#f9bd3e3fd9f26ac9b6bb43f15805ffd9e59bbd46" - integrity sha512-5U5vGJdzk0etDjWTv0zXp6c8sLPlBf6xRefvle4ffelr49vJaSpu1rs9T5gsmjnbcfBkklFNmBwoLemk5Q3DSw== +"@abp/codemirror@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-8.0.1.tgz#19516d2143b4243d29ab45394c6941345c691bc1" + integrity sha512-dpOkrPni3Y3MG58PPp7x38FZVsCBXuyGoIqxiEzC9egAzXPUkWT54361cy1FklwpOyJpJQeV0+7IWq2hJOnCJg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" codemirror "^5.65.1" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/highlight.js@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-8.0.0.tgz#1fd3aa48d0d45540983ff9b98aec48977513262c" - integrity sha512-weq7QfRNGaHWaLDjoeJLxCZ98hXCsgA9g9EBVXm5A+qOkzI+bAlOgOP1/3CbBh7jCskD9c9TEpK0KO9kGFw07Q== +"@abp/highlight.js@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-8.0.1.tgz#88fc06398a126886699f6d1782c3d35a92362b32" + integrity sha512-94Q9BKcwo/Cdpt6w+B/+t8To1zyxlQ+QxXvojb38fXx7XLHj/FSXGgC4mCeYanlcyU64CeUU9gcXNB4Cf224DQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@highlightjs/cdn-assets" "~11.4.0" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/jstree@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-8.0.0.tgz#4027c97ca21d7137dfd15a7fbc753e600c151334" - integrity sha512-KW46krpLHdyVlNbvXVnrq+lAaKzbKfSU6DT2HRcHdRWSXBkxYsDgCC4KRnGLwg6jdCrWT6BOQxHbyKmaBHb9yQ== +"@abp/jstree@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-8.0.1.tgz#199e1ba512a5f7a1cba5b9a342ac99ce9c91cf16" + integrity sha512-O7dGSW6inRMnaJzo/4kHAoopq9OvQHwl8LBe2iiFEZdxz7mtmxFHmJnNT/wUtTTl01rrhAlUndmoH8KvZDimSA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jstree "^3.3.12" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/prismjs@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.0.tgz#174ccbd33d47bb687fe35bed35f7c834ca5ee328" - integrity sha512-Udx3pdlUU2MO+di1BZgG3jKNIeImWoPySmBA8YaStqsAkD/yb+YyUD2QmCUfI55kqzRyhAKE467ZusDFFOY20w== +"@abp/prismjs@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.1.tgz#d9e1538188eaa2b5c7b8364c14255cf37a997d1f" + integrity sha512-TgJl+zx9UR9KU6p9BqzlSphp52hRCopJ7iv6gu1pkVHBK+mraE6nBHwZlAyziXVv/DJwo+RlXbBi/A9xfHB18A== dependencies: - "@abp/clipboard" "~8.0.0" - "@abp/core" "~8.0.0" + "@abp/clipboard" "~8.0.1" + "@abp/core" "~8.0.1" prismjs "^1.26.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/slugify@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-8.0.0.tgz#82bfd5706e644c48f712e46694e47b8709b75ae5" - integrity sha512-R8fhrGocWf4u3MwNoxD4Bdp+QLv1KWyT45zAMgQcTVUIoSCzjC5d9+1xMIQhVdMJZInKA3OHWnEr/GgJaXHthw== +"@abp/slugify@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-8.0.1.tgz#a07e3e4be41d3e174b79a9546f6daeb1a1ad921c" + integrity sha512-op8ih12winLMrR41asxqnHiDbkClnQGNQcDFSyyiPa5UhM4/wGbWejjBtp+ZYpfvpXvlQst1jJPegUdKeK93ew== dependencies: slugify "^1.6.5" -"@abp/star-rating-svg@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-8.0.0.tgz#f6b5046f1d06998440a25cedc8d69ad6ff8a4aa3" - integrity sha512-u51iKYe2QtdnbMaTRQddHIv7Z7c1g5/Cuo9T4wbNUCEOtbdLSlTstxeAyl+V6dkQaI7zGKemOB9E/gupBZUoKg== +"@abp/star-rating-svg@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-8.0.1.tgz#57c151bf154746cba1637873c62e613a774e31d4" + integrity sha512-i3qwBSCO8EDAxlduYufe4GONx08PHZ1p/gcwvNwZRbHdREKZBxvHbZhAj7SC4xqC2aGIieRG8W84NSnzP2Ur+w== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" star-rating-svg "^3.5.0" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/tui-editor@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-8.0.0.tgz#580737ed8e3a29ada576866556afbce5655cddfc" - integrity sha512-bsFwmAxLIV9IkcTqJor0ev0+noQqWsczxIkaSx9HWw08/YkNPfG0ak7gICU1I/gZoB7IMoaiwC6dXfY27BKSWA== +"@abp/tui-editor@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-8.0.1.tgz#1310d50588fa7ad04b746cd3318723e2d23eab51" + integrity sha512-ALOIXj2sw9mCYKmzuXfbQ0J2ZHC+D3eWov8eJBVppkcQZeDlrxDLcFPqHLdNT+e2EYd1zABRhT7Fx7I9uVOqLw== dependencies: - "@abp/jquery" "~8.0.0" - "@abp/prismjs" "~8.0.0" + "@abp/jquery" "~8.0.1" + "@abp/prismjs" "~8.0.1" -"@abp/uppy@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-8.0.0.tgz#9da0601a868fcab80a1c125da90e77758c09c640" - integrity sha512-Z/Du8qeHQYLjTgI9ZGva7orreBKfEsNRFxmfCXS5eqsytcoYyJsIR6o4tN0XnBRouV3P3C06yYpW0ttWlu6RmQ== +"@abp/uppy@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-8.0.1.tgz#775f5176d6e3693b550ee75f8562cfcaa8687e30" + integrity sha512-78+vWkm0D6jhq1wrflk58uicn5L1YdWHq0wN2vgjVtYRFlamjYx0vcmP5BI/v4htFjmpkyAfpFtyTBjdO18Y6w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" uppy "^1.16.1" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 6d18347aeb..884eada6ee 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0", - "@abp/docs": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1", + "@abp/docs": "~8.0.1" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 8908bb7157..7b87565e5a 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,47 +2,47 @@ # yarn lockfile v1 -"@abp/anchor-js@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-8.0.0.tgz#d2a51171d0ef07657d6cb7d5e933cbdbd68bc800" - integrity sha512-D98eiLTNS7sP0q4IcFFC5llULjWVBeacRdAeFbZMqak2TAz3i9zwgY1A8A53xrc6fpZKDAnFX3ARuS4VoqhDFQ== +"@abp/anchor-js@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-8.0.1.tgz#6845a309c53377069ca3267d2a6ed38c3f802176" + integrity sha512-woOxuG/cD+pjtlSh86E8FYEK7z0WKc/sBViNpnNaQtB7DgE5aWhheQymQajyuVtDL0h+6J5FFIQuHVp7Hj7j0A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" anchor-js "^4.3.1" -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -51,194 +51,194 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/clipboard@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.0.tgz#cb597686e07e9ef68a09ebf7101498281939fb10" - integrity sha512-JonHbsCwJQ5iI45zy6lFu9kwXUYoRZC+t31N1w7fDMxekwPEjenBR4g33aGLIySTL7ExKiYjBsEVrCg8GKG/mg== +"@abp/clipboard@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.1.tgz#c8758c3a8259cb105307fe9971ee432f3950d287" + integrity sha512-Yo+EL8wfL54KNBhpicy/gSoUv2QNOt39LALgFxNdhMaAkMvQIhkuVN4H0Lk7bcUDG8cRT52CuFRy0Fb5nDFFYA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" clipboard "^2.0.8" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/docs@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-8.0.0.tgz#b461b1233bb2e4e64035c374c29c30332f7cbf8d" - integrity sha512-StQMsssu+P+pG/+Or1Q3RL1TQRbJj+V1Z12DsybYRAATB8LBvSTOphx4/ico2nee6ZW6npOxze8ke2vS8MjHxA== +"@abp/docs@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-8.0.1.tgz#0ed6efe822d6d054018d3808d3cf607c40b88641" + integrity sha512-6qBi5G1qp9tdvyu9u/NhZXKyyWyOgGLRGUrdgBJoNOiCpXoqHWwktzww9THiFj+QkjUBW2C/rQVJkwOVQzoXdA== dependencies: - "@abp/anchor-js" "~8.0.0" - "@abp/clipboard" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/popper.js" "~8.0.0" - "@abp/prismjs" "~8.0.0" + "@abp/anchor-js" "~8.0.1" + "@abp/clipboard" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/popper.js" "~8.0.1" + "@abp/prismjs" "~8.0.1" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/popper.js@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-8.0.0.tgz#7e804a97e778ad2351e22daeabf6161ca58fd7f1" - integrity sha512-mqRmzdYq882zWE6+yVbVRHyzgTenvBfM/hfWgHSWJfMOpmt6LclhriaVrQspYFV7CTZQYNdZYX/4tgJ+MYiXZA== +"@abp/popper.js@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-8.0.1.tgz#d1f1a818eab98bd40ba7e964201043bd4064d521" + integrity sha512-0s5bH2kRSNGCfz+18rr8BWR2+OKAVPNQFplxfnQY0RVKQ82h1AK0m7vk7fOU+BAG2G7ctUOUmbtX5kq7yTZzUQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@popperjs/core" "^2.11.2" -"@abp/prismjs@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.0.tgz#174ccbd33d47bb687fe35bed35f7c834ca5ee328" - integrity sha512-Udx3pdlUU2MO+di1BZgG3jKNIeImWoPySmBA8YaStqsAkD/yb+YyUD2QmCUfI55kqzRyhAKE467ZusDFFOY20w== +"@abp/prismjs@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.1.tgz#d9e1538188eaa2b5c7b8364c14255cf37a997d1f" + integrity sha512-TgJl+zx9UR9KU6p9BqzlSphp52hRCopJ7iv6gu1pkVHBK+mraE6nBHwZlAyziXVv/DJwo+RlXbBi/A9xfHB18A== dependencies: - "@abp/clipboard" "~8.0.0" - "@abp/core" "~8.0.0" + "@abp/clipboard" "~8.0.1" + "@abp/core" "~8.0.1" prismjs "^1.26.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/package.json b/modules/openiddict/app/OpenIddict.Demo.Server/package.json index 389a89a36f..a4ee1fd707 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/package.json +++ b/modules/openiddict/app/OpenIddict.Demo.Server/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/modules/openiddict/app/angular/package.json b/modules/openiddict/app/angular/package.json index 46a14117ef..fe73e4611c 100644 --- a/modules/openiddict/app/angular/package.json +++ b/modules/openiddict/app/angular/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~8.0.0", - "@abp/ng.components": "~8.0.0", - "@abp/ng.core": "~8.0.0", - "@abp/ng.oauth": "~8.0.0", - "@abp/ng.identity": "~8.0.0", - "@abp/ng.setting-management": "~8.0.0", - "@abp/ng.tenant-management": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.account": "~8.0.1", + "@abp/ng.components": "~8.0.1", + "@abp/ng.core": "~8.0.1", + "@abp/ng.oauth": "~8.0.1", + "@abp/ng.identity": "~8.0.1", + "@abp/ng.setting-management": "~8.0.1", + "@abp/ng.tenant-management": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "@abp/ng.theme.lepton-x": "~3.0.0", "@angular/animations": "^15.0.1", "@angular/common": "^15.0.1", @@ -36,7 +36,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@abp/ng.schematics": "~8.0.0", + "@abp/ng.schematics": "~8.0.1", "@angular-devkit/build-angular": "^15.0.1", "@angular-eslint/builder": "~15.1.0", "@angular-eslint/eslint-plugin": "~15.1.0", diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json index 9800ea1f6e..c8ebd9b730 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json @@ -3,6 +3,6 @@ "name": "demo-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock index f9b7466558..e724ffe2e3 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json index 4ec4342b39..e4867d663d 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0", - "@abp/virtual-file-explorer": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1", + "@abp/virtual-file-explorer": "~8.0.1" } } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock index e8152c7f31..9d639c9d5c 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.0.tgz#c58d15186ad9842834c953e4d712009597ead5c2" - integrity sha512-d43CG48iS8vQvA85tSK7OlSHdcC9JuBT7mpN7DlLViiQewVeoKwdKkMhl5nkX4k0yNtqaRbWYlDD6kDp95TktA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.0.tgz#4931d9bd40fba2d3e38d3a2a8da2d2e1c1198cb1" - integrity sha512-YPusLRaR6sBN13rAH/rewZv4GIM3bUsmMjz7o8qVK/3CYTx/iCAn7JSvNBbhCJT151RLmdYrahOsr8UUXx4k8Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~8.0.0" - "@abp/bootstrap" "~8.0.0" - "@abp/bootstrap-datepicker" "~8.0.0" - "@abp/bootstrap-daterangepicker" "~8.0.0" - "@abp/datatables.net-bs5" "~8.0.0" - "@abp/font-awesome" "~8.0.0" - "@abp/jquery-form" "~8.0.0" - "@abp/jquery-validation-unobtrusive" "~8.0.0" - "@abp/lodash" "~8.0.0" - "@abp/luxon" "~8.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~8.0.0" - "@abp/moment" "~8.0.0" - "@abp/select2" "~8.0.0" - "@abp/sweetalert2" "~8.0.0" - "@abp/timeago" "~8.0.0" - "@abp/toastr" "~8.0.0" - -"@abp/aspnetcore.mvc.ui@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.0.tgz#9760a1e4be0e2632e11a3f570209b1eefdf81607" - integrity sha512-+WBwpQfDmhP64BVSjyyiqRENpn5EBgcmA7JVMfmdmEJTrzx9ma7WSbLd5QxUxawMSkcjjnK95c5JdMVZXdaL8g== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-8.0.1.tgz#3f151da8003c2c3d43a84b700a7681a5b77f98cb" + integrity sha512-N+QgEU51PyvqHGK3RkokZgsttifExXw1MZxDwWjZnfMyZyPo3UNwmnjSYjbrKt4lpz+5F1H7ar2auErCvVxVWg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-8.0.1.tgz#ea00616e4d71f3ae53eccad5c6de1fd9e81290ff" + integrity sha512-rHk99uPYcc4Zi/Hkd/D/tLABb6Jd3HlItC28Lod4QtV6BVghBcQT6IWu06dL5o7i+9+EeiUknI21hW9uW1QjOg== + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.1" + "@abp/bootstrap" "~8.0.1" + "@abp/bootstrap-datepicker" "~8.0.1" + "@abp/bootstrap-daterangepicker" "~8.0.1" + "@abp/datatables.net-bs5" "~8.0.1" + "@abp/font-awesome" "~8.0.1" + "@abp/jquery-form" "~8.0.1" + "@abp/jquery-validation-unobtrusive" "~8.0.1" + "@abp/lodash" "~8.0.1" + "@abp/luxon" "~8.0.1" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.1" + "@abp/moment" "~8.0.1" + "@abp/select2" "~8.0.1" + "@abp/sweetalert2" "~8.0.1" + "@abp/timeago" "~8.0.1" + "@abp/toastr" "~8.0.1" + +"@abp/aspnetcore.mvc.ui@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-8.0.1.tgz#7d1553901d58c2256e4dafb237d60774ba01868f" + integrity sha512-qy26tjaQaK2r7jjeEnvAxTGOzVaytfkz3kJE5fFEZ2bkcpYyMX9u9ta5JkO8qdxNyxgdJt2q9HbXcMDfIc+IMQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,185 +43,185 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.0.tgz#458e0acaf6aedbfb03df692b9b2ec87b9fdad954" - integrity sha512-UetR0ldw0u5i2ohNpeI8+W0AGrov8tiglTTNyx8sF6WMGcCNCtU72jZCOc9/z/q91AijQrtdHIqpN/1B91YiMw== +"@abp/bootstrap-datepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-8.0.1.tgz#18498cfc5bf1d9f7aa189dfde18e4058f3ead75d" + integrity sha512-1pji99slK1OAlDJv5yWDE6Pfp/kvN4xhWV6sJd3KiCLW8EAa7gQ1pggYIHohUbf73+MsmUyQzdT70jl0q1yD9A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.0.tgz#613d2984d0f3981e0270d337b360c27397dbc480" - integrity sha512-nQFDtCp1+EuUfnoRmMcGvOgd4yZPMqjsThiW3m2KIV2Y+YlT52mZLBVpqRBpC2993Bs8E9Zpp4R7ebHJgacePg== +"@abp/bootstrap-daterangepicker@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-8.0.1.tgz#a88efa81200c6abc2620b29ef67b45ce5dbc9348" + integrity sha512-8w5mwfy6p7d+5ky3vt4Jxl5GelaIcYz39yr/BAzcA6nDGkJTehl3Y1dW/kFuaNkZjHWwD4s3CYtU7YrxZyyc4A== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.0.tgz#7d679f88af98de6ac2c0725b86d43f9ce40c4f5b" - integrity sha512-JX6o8uMrsqiMMvbkDRePDqfPFHtWTuKhSTDa77ryp/AZYKOEvJfkdLZGZmYWy7UsB1RNXilth8kMyibqnw0CGg== +"@abp/bootstrap@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-8.0.1.tgz#ee3cf60a874b69386efad1d51cdf496a1f72c090" + integrity sha512-e8aPqM0ltPqas0k2T4xHPW1+3JBWpNKZNpHGnHo8PYxdtFZH2ZOFD6uEegiPbF8UvZMl8NpSR1QHAgTP65pjVA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" bootstrap "^5.1.3" -"@abp/clipboard@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.0.tgz#cb597686e07e9ef68a09ebf7101498281939fb10" - integrity sha512-JonHbsCwJQ5iI45zy6lFu9kwXUYoRZC+t31N1w7fDMxekwPEjenBR4g33aGLIySTL7ExKiYjBsEVrCg8GKG/mg== +"@abp/clipboard@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-8.0.1.tgz#c8758c3a8259cb105307fe9971ee432f3950d287" + integrity sha512-Yo+EL8wfL54KNBhpicy/gSoUv2QNOt39LALgFxNdhMaAkMvQIhkuVN4H0Lk7bcUDG8cRT52CuFRy0Fb5nDFFYA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" clipboard "^2.0.8" -"@abp/core@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.0.tgz#cc4d9c0da10fb922a4adea8df67f60bb02d95365" - integrity sha512-qM7jSTR2uAhjAcsaFNchA89rLBiiJpUsvDBFCz0SyOuFz5DYAHo1njlhICcVAHF7H3NxQfVIndGVSjvmqmLC7Q== +"@abp/core@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-8.0.1.tgz#29612d1a407aae3313e07c9c707edc3b05eb7fab" + integrity sha512-y9jP4hBL3vg+4Pt47bewJDPZNgP7mWn7fKNUZCM1DLOYvQHSdHrIXTrdfpkPFcAA9B2Anhsn3OiZKsHQygHHwA== dependencies: - "@abp/utils" "~8.0.0" + "@abp/utils" "~8.0.1" -"@abp/datatables.net-bs5@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.0.tgz#c874180ea85fd0b2598fde90e2207bea267870c6" - integrity sha512-8w4oXTQwFnb56NTpeXjUsITGeMtuxv18ZAPK8Zmw28s5uOoIV/d/bEp11hXPwSk3SrjlyLw0lDcZCItwD+W8DQ== +"@abp/datatables.net-bs5@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-8.0.1.tgz#42f28abe29133b6b0b24feb6f532015517b03f31" + integrity sha512-jgukx5LfBPjsrSfU3lA18QvP3qRqtYQxPsJxfUO1bzqr4bstdBXEPWWYFN5trJ9ZtnyWod6bsCKDS9KiFgfkug== dependencies: - "@abp/datatables.net" "~8.0.0" + "@abp/datatables.net" "~8.0.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.0.tgz#09ef3575a611f6ec123d2a9d4d55b8c89e30d115" - integrity sha512-WmsAfQEGPWMTqHGbeiX3RVfIdfkrMOtUfJmR0JaYJMuQo3STmMSnzOgNMKviDeQdzplgoOOKp6j0OgIqcciowg== +"@abp/datatables.net@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-8.0.1.tgz#321701e94b8494704137ef8056bf5055e40d4fe4" + integrity sha512-BAejiKaSQdypKgr82SpJKFmS8FAazI1xCDOQ3on3KiKxPS8Jh1TOPsltcRi55WSPDaGgS9SyOSKN4th7ZoqQUA== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" datatables.net "^1.11.4" -"@abp/font-awesome@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.0.tgz#ce7debf296fddbdf79139147f6c9761ec68b6587" - integrity sha512-qeihwiim6YMcL3KfHU0CViVl5MamQXbTp4606r/hKQejCSbdqR9XupYVbTAyojXLCCRqfnDVuXwqWCFTKVbQow== +"@abp/font-awesome@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-8.0.1.tgz#248119decc0dffa07ba0e7848acc015ab56a7fa6" + integrity sha512-/eOYPdfUQ58hor4WMZPtkAhCODqYrb0tv/4UrFovxkILidEXLVue9EODAi/ZVkeGr+kMPL35WsxP8XpZVxBI8A== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.0.tgz#466343a87baa2f53fb57cf377e0fb0c07ff02bb9" - integrity sha512-xinU2Yu0YWNjoaYnBm+OoN8oNX/BDPzbqGtjlH1s5I+M/S0yf/qlPEzvzL5+epBlt0GKza/SqwSsuAVsfuFrKQ== +"@abp/jquery-form@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-8.0.1.tgz#87467469f5493c336eb93bd6a2871543db8938ec" + integrity sha512-7+oW9OGrJmnHZeOXL/EogchMKQ/8QQfA92uFimteAnd3wn4wJ12mNj4ei24FVZFa40g6TCmIu4rSDFgF8TEO8A== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.0.tgz#a641cc4bff6de178ed3429987017c00bf68e81f9" - integrity sha512-nUcktSW5tPifa6yNX9Y8zCi0VCUJklVSSd4f3eKfjU8SIcWq1eNfR6R+MHRZEVVmyB7xeYMBlc0yjxVYwUUlEw== +"@abp/jquery-validation-unobtrusive@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-8.0.1.tgz#a34959240ab712d53e2f3b3e78d1abc59e563fca" + integrity sha512-OTFnvTXzzrAy4YKhBhb2LiGzYHHfDoIfeFm0NMM4aBLRFJ92BLhAx9bbb5E4NulKc0nA5GS4BTXEG3E2AEXHug== dependencies: - "@abp/jquery-validation" "~8.0.0" + "@abp/jquery-validation" "~8.0.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.0.tgz#674fe49294c622b07b843ab8721a5ae32024b7b9" - integrity sha512-B/aFZsKbILP4FPuc3eU17APkbBWJhjWXSQCiSXbHpDZYJN5km1l52gpuWR+7Yo5CXnAP06N+zUYHf86tNCZyBw== +"@abp/jquery-validation@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-8.0.1.tgz#8ff9116e34cdb4a1e6cee1ec7845b1118f8acbdf" + integrity sha512-b+EwUt0aujrDWXt4bchTr8oQkoalIjLe1GgTnCByFs9dwmG60fI5BxDJcc/WWMJWdzJhZCDT5vsFZgMLrkjCRw== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" jquery-validation "^1.19.3" -"@abp/jquery@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.0.tgz#67bf40f87c335b1cba73f406f0102f35e820fd84" - integrity sha512-QhjBz/s1hVJcsYCbuZwNOtOCvsC93OMzMJHoZ2COaKkOZlt6tiRHhawdYVZloKDaMdfcd5tvqbkNhXtQ4K9AXg== +"@abp/jquery@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-8.0.1.tgz#04d528b57486c0b1d70ce17dbbbf311bf65d7a8f" + integrity sha512-9szbH6FmletKWLwyK+V4ujITpHbMOo8ZAOeHWqEUjqmxRuOLeaR7JGWjctWyT5IbGJ0YwnXWuZh3PvYHyDMuOw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" jquery "~3.6.0" -"@abp/lodash@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.0.tgz#4c809c4755ed11e70875d30f04312b0ff10a2dbb" - integrity sha512-V0y4k9HlggBvJtK5m35Gkori2IN0E4ec1JpBgGeaOStcvThAL1EtXip1kqPORMbC4wm+bgpT0QWhiqCeKBFoLg== +"@abp/lodash@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-8.0.1.tgz#dc5e2456799e1c83468d5e0c15098706f1aae51b" + integrity sha512-JYknJElmBEmaBzs00JE3tOTH9QcpsfIkzA6WDmy7pRGrN3eyGk6zDb8iKz+8IX5zEqC5ysXtdujN5lf8IDGfgw== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" lodash "^4.17.21" -"@abp/luxon@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.0.tgz#13a1145dc79d908f3398944c4bf0fb0457d94217" - integrity sha512-ZEGegnr+KCczPUrxxPmBUKGyiWkjAa4hDWb06mozdVP14zHQbbZfyKKXwrPfanwcj96Ui9i2klnrKPXuyppBJw== +"@abp/luxon@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-8.0.1.tgz#87d8a8b0b6a33634355f6b53d071a86f74874e37" + integrity sha512-jccpLHUPTOnHpeBKK3QO+C35+eIAOadRsjXi02bqgIMKV6pnqhWPxXUAVTLslcTYDpGqfMhhEuPI68ZIqlq/AA== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.0.tgz#fd4428d66ee38b4b2c02c0e300d5bd75dcda414d" - integrity sha512-jrD4AHd2Pdr28Ps3QtEDVDMSnK7xSumCKKSJl0R5SJcMyskByJ6gwydYqMGeQkCVnk1ztEZFfJNhOO35A+SBWA== +"@abp/malihu-custom-scrollbar-plugin@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-8.0.1.tgz#9ef627c8c3c560342a2b0693d8a2e05c8a15a8a9" + integrity sha512-LI4tHBxtCb9gPv8BMreowPNIlnKPu57Xg7QUA+7/xF8alCFe0pe//cl7ub2Q8kTkQ8LJdGszHWvyxL5hUYI/MQ== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.0.tgz#26d0932bf4dac4dee25d0940eea50fcfeb37a69b" - integrity sha512-fgh0pXdxPi5Y9VnC6f12kwJmGQL4dowZtVp8lbNEjnCFiocAhEOOuN9gkTGk8y0xEhXroliW7wbaB2MJPINKhg== +"@abp/moment@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-8.0.1.tgz#a06eba4527acfd88d063a8b8f660113950ac230b" + integrity sha512-Fvm7ocdYzOnH+pRQ1d0dnn2Y5OWQ2aUSufLF7/PYBD4lP4FYBb1ZigGDPzSgyH9qy9adP/RLsNl6dPdT05rNHQ== dependencies: moment "^2.9.0" -"@abp/prismjs@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.0.tgz#174ccbd33d47bb687fe35bed35f7c834ca5ee328" - integrity sha512-Udx3pdlUU2MO+di1BZgG3jKNIeImWoPySmBA8YaStqsAkD/yb+YyUD2QmCUfI55kqzRyhAKE467ZusDFFOY20w== +"@abp/prismjs@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-8.0.1.tgz#d9e1538188eaa2b5c7b8364c14255cf37a997d1f" + integrity sha512-TgJl+zx9UR9KU6p9BqzlSphp52hRCopJ7iv6gu1pkVHBK+mraE6nBHwZlAyziXVv/DJwo+RlXbBi/A9xfHB18A== dependencies: - "@abp/clipboard" "~8.0.0" - "@abp/core" "~8.0.0" + "@abp/clipboard" "~8.0.1" + "@abp/core" "~8.0.1" prismjs "^1.26.0" -"@abp/select2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.0.tgz#4a4ebd63f2b79d663dab709decb2f1b1f510950f" - integrity sha512-kl3of/L0GSHyxt6WYnBDdBqqtoUscY9qubaMHZrk9y1zOVXOM0JUQoyu2KDQhOZm7iCu34ATX47NAw59eb9Omw== +"@abp/select2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-8.0.1.tgz#0a3acb3c5fcc5a8b56d38fa3731e77f05ffe995b" + integrity sha512-LbeXoN1yDDg/9F2Cd6XFEAsVIeYneeoz9XnFVdTxZRZGN2lcaAKHlKJtb519pW1F9kUJIgd6AYhH/6nOOdXfjg== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" select2 "^4.0.13" -"@abp/sweetalert2@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.0.tgz#369c04e433eead8e7171cd84298bb3e4ecb14050" - integrity sha512-riaHcFdozJ8R/sAdhtnfa7GHhWjptnQODrZ2bqBkcKuw2d8LKQ+2v3tcflaWWHwsOmGVbki3EhJJPdFWOtli/w== +"@abp/sweetalert2@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-8.0.1.tgz#7eab5e037f03c7b05353897e2a75af3c028af981" + integrity sha512-pJV991Gd5DbTK7ezl1urZhRDVWOE7feh76Gk7K6ctHhLVL/mzzxF2TDdye7Ui8wq37LW1FN7E4+FJPEr+0WH4w== dependencies: - "@abp/core" "~8.0.0" + "@abp/core" "~8.0.1" sweetalert2 "^11.3.6" -"@abp/timeago@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.0.tgz#93947505b68f369df10bb38cd8c05376e1c1cbcb" - integrity sha512-Q+e5CvvFAU21hGuIXREtIeEl8WlGpsNqK+QbCRbjNvM0HgCPH/gRQNpAV+S7TqaI5W2Uggfcsd7GvTH3GtMv7g== +"@abp/timeago@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-8.0.1.tgz#c75adc1820f6ebbf377834f6ebf8dc6760243d47" + integrity sha512-pBaHxHs5Kg4vlUGTjnZP4ahyxeJEB2caXk2x/s6UBR369mj2kUk+YGH1u/s/QVHQIyxwSY0Yopo9/r/m26naEQ== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" timeago "^1.6.7" -"@abp/toastr@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.0.tgz#d409fec3fb1e5a886d0a03b0f58449a2f8a563d9" - integrity sha512-7evxuHJ+ZJtyCoIv0+HY/av5FC8Y5UzBtVjEB8Ol8RvhH5PBkErguPg9qPZvYcpHjJlYN+iKYAuXdQLZdXHwUQ== +"@abp/toastr@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-8.0.1.tgz#05f975fc57779ea1854c6fb96e03ba325ede17c9" + integrity sha512-tHt/tUsQrsYLx2QPHVCNNhe1K+vcTZxoFvDNemdWKT6q1aKfsDjn9Tf+OL1eRh7rAZo9FdBliNb50AdLH6GR9Q== dependencies: - "@abp/jquery" "~8.0.0" + "@abp/jquery" "~8.0.1" toastr "^2.1.4" -"@abp/utils@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.0.tgz#3de8e34e97e10ac9c2b8c1c194bf6b034fde302f" - integrity sha512-F8LsEedqkngbeFsszdZi1lshFqr++anyJFBoaRsKRw6hJPDPrYtHoOWEQ+p7QcH5UVVzVywQUGMNM+gmAT0vGQ== +"@abp/utils@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-8.0.1.tgz#193ebac7fe96dfc6e36bfeba8ef550ff247f16e0" + integrity sha512-695x8eNgmGUyozwBIUTkXczmgqfbTxzPOLXaxO33+pSgdR9vHo38Xw0jG6HbE/5qj3+hp0vU8wJH60V4QWM69A== dependencies: just-compare "^2.3.0" -"@abp/virtual-file-explorer@~8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-8.0.0.tgz#9e24742aaf5901df9ed4a41f62c2eb7550965211" - integrity sha512-ACXuXR7ktoGkQlrUk26omNYguQGFL0o1uNh/Uwv+CA3qP+tSIefsC88Ifzz/TGfKDoHP9WeOkg31pVY+eM877g== +"@abp/virtual-file-explorer@~8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-8.0.1.tgz#72d2d7e34494f3195b061656a1d57b62e91efd9a" + integrity sha512-RNE4DIsEgtzCJYG560yaqmveywZwy9Cev7jkpgU/fo/8hJW72jYLCVW20IBG9DN3UJcrYTO/+iST6dTeNvj6yA== dependencies: - "@abp/clipboard" "~8.0.0" - "@abp/prismjs" "~8.0.0" + "@abp/clipboard" "~8.0.1" + "@abp/prismjs" "~8.0.1" "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" diff --git a/npm/lerna.json b/npm/lerna.json index be2c26948e..efc382d3dc 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 4baf350a87..1b6cb94d19 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -45,7 +45,7 @@ "private": true, "devDependencies": { "@abp/ng.theme.lepton-x": "~3.0.0", - "@abp/utils": "~8.0.0", + "@abp/utils": "~8.0.1", "@angular-devkit/build-angular": "~17.0.0", "@angular-devkit/core": "~17.0.0", "@angular-devkit/schematics": "~17.0.0", diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json index f971344fee..ea2d4c7991 100644 --- a/npm/ng-packs/packages/account-core/package.json +++ b/npm/ng-packs/packages/account-core/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account.core", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.core": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "@angular/common": ">=12.0.0", "@angular/core": ">=12.0.0" }, diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 86543885e9..b7484067ad 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.account.core": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 679afdf36c..33ae7853ba 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.components", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=8.0.0", - "@abp/ng.theme.shared": ">=8.0.0" + "@abp/ng.core": ">=8.0.1", + "@abp/ng.theme.shared": ">=8.0.1" }, "dependencies": { "chart.js": "^3.5.1", diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 4a73cf44a2..9d38cc61d2 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "~7.4.4", + "@abp/utils": "~8.0.1", "just-clone": "^6.0.0", "just-compare": "^2.0.0", "ts-toolbelt": "6.15.4", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 2c7305782f..37fd529361 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/generators/package.json b/npm/ng-packs/packages/generators/package.json index 81ed8241d1..25182356f4 100644 --- a/npm/ng-packs/packages/generators/package.json +++ b/npm/ng-packs/packages/generators/package.json @@ -1,6 +1,6 @@ { "name": "@abp/nx.generators", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "generators": "./generators.json", "type": "commonjs", diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index ddbf0cc3b7..ea2d33bd6b 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,15 +1,15 @@ { "name": "@abp/ng.identity", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~8.0.0", - "@abp/ng.permission-management": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.components": "~8.0.1", + "@abp/ng.permission-management": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/oauth/package.json b/npm/ng-packs/packages/oauth/package.json index 9c4574da94..7ace58df79 100644 --- a/npm/ng-packs/packages/oauth/package.json +++ b/npm/ng-packs/packages/oauth/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.oauth", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~8.0.0", - "@abp/utils": "~8.0.0", + "@abp/ng.core": "~8.0.1", + "@abp/utils": "~8.0.1", "angular-oauth2-oidc": "^15.0.0", "just-clone": "^6.0.0", "just-compare": "^2.0.0", diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 09a56acdb8..9ef7218f48 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 66928e3371..6f71e65bda 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "8.0.0", + "version": "8.0.1", "author": "", "schematics": "./collection.json", "dependencies": { diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index ed5126a635..73edbf9db7 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.setting-management", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.components": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index aba3033a15..5f47b0af0d 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.feature-management": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index 9bc884cb43..65e14cada2 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.theme.basic", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.account.core": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index df585dc89a..d5ed9d70ad 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "8.0.0", + "version": "8.0.1", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~8.0.0", + "@abp/ng.core": "~8.0.1", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "~16.0.0", "@ngx-validate/core": "^0.2.0", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index 8e3c6c32a2..6c1ab6c12c 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "anchor-js": "^4.3.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json index a44cccf4f9..d1bae375d3 100644 --- a/npm/packs/aspnetcore.components.server.basictheme/package.json +++ b/npm/packs/aspnetcore.components.server.basictheme/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/aspnetcore.components.server.basictheme", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.components.server.theming": "~8.0.0" + "@abp/aspnetcore.components.server.theming": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json index 55a55594be..5b797c492a 100644 --- a/npm/packs/aspnetcore.components.server.theming/package.json +++ b/npm/packs/aspnetcore.components.server.theming/package.json @@ -1,12 +1,12 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/aspnetcore.components.server.theming", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/bootstrap": "~8.0.0", - "@abp/font-awesome": "~8.0.0" + "@abp/bootstrap": "~8.0.1", + "@abp/font-awesome": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 763c01750d..3e969dc55e 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.shared": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 6492de8bbc..d56c7b6b06 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "repository": { "type": "git", @@ -10,22 +10,22 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~8.0.0", - "@abp/bootstrap": "~8.0.0", - "@abp/bootstrap-datepicker": "~8.0.0", - "@abp/bootstrap-daterangepicker": "~8.0.0", - "@abp/datatables.net-bs5": "~8.0.0", - "@abp/font-awesome": "~8.0.0", - "@abp/jquery-form": "~8.0.0", - "@abp/jquery-validation-unobtrusive": "~8.0.0", - "@abp/lodash": "~8.0.0", - "@abp/luxon": "~8.0.0", - "@abp/malihu-custom-scrollbar-plugin": "~8.0.0", - "@abp/moment": "~8.0.0", - "@abp/select2": "~8.0.0", - "@abp/sweetalert2": "~8.0.0", - "@abp/timeago": "~8.0.0", - "@abp/toastr": "~8.0.0" + "@abp/aspnetcore.mvc.ui": "~8.0.1", + "@abp/bootstrap": "~8.0.1", + "@abp/bootstrap-datepicker": "~8.0.1", + "@abp/bootstrap-daterangepicker": "~8.0.1", + "@abp/datatables.net-bs5": "~8.0.1", + "@abp/font-awesome": "~8.0.1", + "@abp/jquery-form": "~8.0.1", + "@abp/jquery-validation-unobtrusive": "~8.0.1", + "@abp/lodash": "~8.0.1", + "@abp/luxon": "~8.0.1", + "@abp/malihu-custom-scrollbar-plugin": "~8.0.1", + "@abp/moment": "~8.0.1", + "@abp/select2": "~8.0.1", + "@abp/sweetalert2": "~8.0.1", + "@abp/timeago": "~8.0.1", + "@abp/toastr": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json index 3eda28ae66..c4ba48d848 100644 --- a/npm/packs/aspnetcore.mvc.ui/package-lock.json +++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "@abp/aspnetcore.mvc.ui", - "version": "8.0.0", + "version": "8.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 929960a684..777c055ce3 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/aspnetcore.mvc.ui", "repository": { "type": "git", diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index df8048111f..6d94c7085f 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~8.0.0", - "@abp/owl.carousel": "~8.0.0", - "@abp/prismjs": "~8.0.0", - "@abp/tui-editor": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.shared": "~8.0.1", + "@abp/owl.carousel": "~8.0.1", + "@abp/prismjs": "~8.0.1", + "@abp/tui-editor": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 52cdef161a..f1d2c1cda2 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/bootstrap-datepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap-daterangepicker/package.json b/npm/packs/bootstrap-daterangepicker/package.json index 1d2b4e0e46..1f1b0ef34d 100644 --- a/npm/packs/bootstrap-daterangepicker/package.json +++ b/npm/packs/bootstrap-daterangepicker/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/bootstrap-daterangepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index d7cb48c80b..03fe06a381 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/bootstrap", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "bootstrap": "^5.1.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 1b5ed535aa..684525fdf7 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 9bc955c256..3d95a8ba5b 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "clipboard": "^2.0.8" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json index 2c40155633..9c5b41c31e 100644 --- a/npm/packs/cms-kit.admin/package.json +++ b/npm/packs/cms-kit.admin/package.json @@ -1,15 +1,15 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/cms-kit.admin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~8.0.0", - "@abp/jstree": "~8.0.0", - "@abp/slugify": "~8.0.0", - "@abp/tui-editor": "~8.0.0", - "@abp/uppy": "~8.0.0" + "@abp/codemirror": "~8.0.1", + "@abp/jstree": "~8.0.1", + "@abp/slugify": "~8.0.1", + "@abp/tui-editor": "~8.0.1", + "@abp/uppy": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json index f4b47bdb36..bbc0b25741 100644 --- a/npm/packs/cms-kit.public/package.json +++ b/npm/packs/cms-kit.public/package.json @@ -1,12 +1,12 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/cms-kit.public", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/highlight.js": "~8.0.0", - "@abp/star-rating-svg": "~8.0.0" + "@abp/highlight.js": "~8.0.1", + "@abp/star-rating-svg": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json index 79acf3cbf8..8303964b1e 100644 --- a/npm/packs/cms-kit/package.json +++ b/npm/packs/cms-kit/package.json @@ -1,12 +1,12 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/cms-kit", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/cms-kit.admin": "~8.0.0", - "@abp/cms-kit.public": "~8.0.0" + "@abp/cms-kit.admin": "~8.0.1", + "@abp/cms-kit.public": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 9184450e2d..098ceba9ca 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "codemirror": "^5.65.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index d39272eca5..1e847ed667 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/core", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/utils": "~8.0.0" + "@abp/utils": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 3f302ec2ab..433e92ca0d 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "cropperjs": "^1.5.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 5b1adae492..19a8b35f49 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/datatables.net-bs4", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/datatables.net": "~8.0.0", + "@abp/datatables.net": "~8.0.1", "datatables.net-bs4": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/datatables.net-bs5/package.json b/npm/packs/datatables.net-bs5/package.json index 2d0ab947d4..86fc96b75c 100644 --- a/npm/packs/datatables.net-bs5/package.json +++ b/npm/packs/datatables.net-bs5/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/datatables.net-bs5", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~8.0.0", + "@abp/datatables.net": "~8.0.1", "datatables.net-bs5": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index cd1165d551..5ba769a6b7 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/datatables.net", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "datatables.net": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 1470d1a483..95bfa5c303 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~8.0.0", - "@abp/clipboard": "~8.0.0", - "@abp/malihu-custom-scrollbar-plugin": "~8.0.0", - "@abp/popper.js": "~8.0.0", - "@abp/prismjs": "~8.0.0" + "@abp/anchor-js": "~8.0.1", + "@abp/clipboard": "~8.0.1", + "@abp/malihu-custom-scrollbar-plugin": "~8.0.1", + "@abp/popper.js": "~8.0.1", + "@abp/prismjs": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index ab60a849f4..2fdffa4d98 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/flag-icons/package.json b/npm/packs/flag-icons/package.json index d576001794..11aa367df1 100644 --- a/npm/packs/flag-icons/package.json +++ b/npm/packs/flag-icons/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/flag-icons", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 0e70a9b948..af4d0795ea 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/font-awesome", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "@fortawesome/fontawesome-free": "^5.15.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 42f56a38c5..a6ca3e0fd5 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "@highlightjs/cdn-assets": "~11.4.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index e73c628e71..2c435378ea 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/jquery-form", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index b80c4ec98b..48b8603159 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/jquery-validation-unobtrusive", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~8.0.0", + "@abp/jquery-validation": "~8.0.1", "jquery-validation-unobtrusive": "^3.2.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index cbd78c2d55..6a7aff1866 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/jquery-validation", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "jquery-validation": "^1.19.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index f8648d7b38..fc768bf432 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/jquery", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "jquery": "~3.6.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 4ce6194f28..0a9eb83c4c 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "jstree": "^3.3.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index c7ce404679..2c1156b7d3 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/lodash", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "lodash": "^4.17.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 278bced1a7..586f4de345 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/luxon", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "luxon": "^2.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 1ab07dd380..18a98dbcba 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/malihu-custom-scrollbar-plugin", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 96039de852..5ca1a45907 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "markdown-it": "^12.3.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/moment/package.json b/npm/packs/moment/package.json index d449b888c7..affaa6c3c4 100644 --- a/npm/packs/moment/package.json +++ b/npm/packs/moment/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/moment", "repository": { "type": "git", diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 28a4241375..0d48982ac9 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 8aa57bc91e..4f4b9c415c 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "@popperjs/core": "^2.11.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 402bfa1f87..e811e66996 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~8.0.0", - "@abp/core": "~8.0.0", + "@abp/clipboard": "~8.0.1", + "@abp/core": "~8.0.1", "prismjs": "^1.26.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/qrcode/package.json b/npm/packs/qrcode/package.json index 5b226ead5e..69e0306b9d 100644 --- a/npm/packs/qrcode/package.json +++ b/npm/packs/qrcode/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/qrcode", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0" + "@abp/core": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index c388e98df6..706b847441 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/select2", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 44b8dd87b8..6575781c31 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "@microsoft/signalr": "~6.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json index 4374fea5a5..4c480b41ff 100644 --- a/npm/packs/slugify/package.json +++ b/npm/packs/slugify/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/slugify", "publishConfig": { "access": "public" diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json index 0bb3b83df8..ac75f9a2de 100644 --- a/npm/packs/star-rating-svg/package.json +++ b/npm/packs/star-rating-svg/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/star-rating-svg", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "star-rating-svg": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json index 399476a81c..7e1199ef49 100644 --- a/npm/packs/sweetalert2/package.json +++ b/npm/packs/sweetalert2/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/sweetalert2", "publishConfig": { "access": "public" @@ -10,7 +10,7 @@ "directory": "npm/packs/sweetalert2" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "sweetalert2": "^11.3.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 9c0a5938bb..741d87284e 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/timeago", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 67ef228441..e6c24611e9 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/toastr", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", + "@abp/jquery": "~8.0.1", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 133b0bf0f3..ddd20ff040 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,12 +1,12 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~8.0.0", - "@abp/prismjs": "~8.0.0" + "@abp/jquery": "~8.0.1", + "@abp/prismjs": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 5c47e2caf1..ff864856c1 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 8a523f9e3c..05c0915122 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "8.0.0", + "version": "8.0.1", "scripts": { "prepublishOnly": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json index d41be2544d..a8ff61d6e1 100644 --- a/npm/packs/vee-validate/package.json +++ b/npm/packs/vee-validate/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/vee-validate", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/vue": "~8.0.0", + "@abp/vue": "~8.0.1", "vee-validate": "~3.4.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 055a84ce2f..9dfecdf546 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~8.0.0", - "@abp/prismjs": "~8.0.0" + "@abp/clipboard": "~8.0.1", + "@abp/prismjs": "~8.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json index 1b1470707f..bda8bd935a 100644 --- a/npm/packs/vue/package.json +++ b/npm/packs/vue/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/vue", "publishConfig": { "access": "public" diff --git a/npm/packs/zxcvbn/package.json b/npm/packs/zxcvbn/package.json index 6ef1e6e53e..aedbdb435a 100644 --- a/npm/packs/zxcvbn/package.json +++ b/npm/packs/zxcvbn/package.json @@ -1,11 +1,11 @@ { - "version": "8.0.0", + "version": "8.0.1", "name": "@abp/zxcvbn", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~8.0.0", + "@abp/core": "~8.0.1", "zxcvbn": "^4.4.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", diff --git a/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip b/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip index bc4085e6f6a0958aefc1d405f70ea71f85a003b5..37b9138838324f28a6ef1eb6a0c9ed2669b605f2 100644 GIT binary patch delta 20806 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 diff --git a/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip b/source-code/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip index a017d2fc2feea85bad70dd65f8747704f234eab5..67472962497c2078c0f18cd46dd305803e26f442 100644 GIT binary patch delta 8022 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�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 diff --git a/source-code/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip b/source-code/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip index 417cbe06537566d88f90e735c68c1d2881a2f91c..d568083ea658d7940906511d255f82ce333e7b0b 100644 GIT binary patch delta 68663 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"a+|bII$OAK8 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 delta 68696 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

Hb`~>r^jKRQ+dz^JelLy4&@C(-5U#LnIgvGi@65 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 diff --git a/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip b/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip index 5d85b2262ceaea4df9b449d542df978486f1dc1e..996f2fca8113fd799e9a70c03d8fb1dce845a4e0 100644 GIT binary patch delta 6788 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 G^ZpNFP3{)} delta 6818 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 B1d#v$ diff --git a/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip b/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip index 9c9dedb83590ee263b97987bf3dd096fe10de39a..008cd69d41cdadfb98d14991802392e4bfa7f1c1 100644 GIT binary patch delta 18631 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 delta 18713 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

=1DReg4(#A9Ip~AqLJGmQf+!6l5{<1RV_BpBb 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 diff --git a/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip b/source-code/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip index 01bf38ad6aecf28a250ab023e83ac25ebbd05bb1..2a0d149f5247bf19674ce07bee5bfc21aac8d3c6 100644 GIT binary patch delta 110095 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%0DICCgy2fOy5(sQ$BuU&(xo7mGI?Pn!R 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 z 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%0DBL#3(0Wr8vK9kPuve-V2n6CmjZG61YU za%uC=&#Z|?IbAdlh`vYtT_??X zO+hLdLn`XUm{2m!lY9%8sjZQaekJUqG_<7om3z(xM1ldaZpoUEOvq|(!q>jByfO@B z^Afd1{Gs1{buQwxSg#%9j+^df%O+wl_p6TQ^VyYuU^w4OwX1{jn=q_vb#_9)Th$Ic#>R$&lsBe}3G|MwyW3hS zP1lmyOZnD{JA_VN?cKH7+RJd=S4Z}{gJ-9geQ6ziua<)|l5cUL?9685)-%E{(Z>Z{ z7E}m<%zhkxPnyb6JF8;#F727SW#^Al(5D2_&w4@C=`Jg}cWgNzu2zbGcM23m*Ij+B zc0EaE`|?Z^tKUIT-=D)qkPbdtAg=S{wL88KPye4MSKV%qsu4{&1Rke$jd#g_zNZMho8RzQpt&jfT*=ZF zQxcOdpfoiDBB?K{`0&m0I*Z-$9b8Q$jBVTuqhMG~oZ|Jg%Qf9^r5#R;eT2$o2%6B3 z63%B%N5jy$E0?_WzwSx^NYRq0(fXL+%0(ynDWAkkSNhiyt%Vvo8i9PnUI}# z;#3c1@?!Bg)`-!PYcVBLY~D7J%}B~MNqLYrTUCyZFy~BYq@kSwSknI*>BS*4h@YjW zIizLQd=1D=z%YleJH1kaB=%Jdk1}sKo$K<)Y?bE*hl^6LIym-vhn*j!a-*v$d;-s@ zNk6cD<;h9v`@FSg5rUrA?s8Ro$X3j++(hM!X^>k({QG`VY_4u``qw7ZM(nh0cX)E* zJb_ZX(PAc>hvm&aycoxO#Tk{GeCy?7p=PJQehqhfH-7J_?!LtuGN{wGZ?JVwVN?lKeO zyZ8d(oeY85_AeU2=)gqdC$7{;@8(_5;41CnBv0b#YZDouEL4cxK3jFSWPC)q))n!L z_n|Ed5yE)T{BOxTAt9C(x-?obsmPF4`C7E(8|IHhSP<>Vimx28#0nb}(gI{-HIjo> zP;|TX8GKjt1A{wdC6u{ySvcmcGex|mR&wmoNxO=#-aB{B@krj^_nL0RR-qiG!*zB9 z5vZR4)uJ819kZ8K>*|86Xh^2Hb@9PtNM$)>x2Us!>0ws1j5#V(C`yXE132>Uk$hYm zIuiBI7NKf-Dpy@wTfPJ!rGMkLanPAztM_KRo#vbvYgMaMxdLEWY8{5`)cB~+zqg69Q|`~l`WQQ7sJNvNKejK`CO?Xi8j)f zf|sbBXj7g`5t@=qmc8B~_=7Bp7zpYLU_P`kko&wK`Z9b(!GDk*6D#QFWlP5WA3x78 zPTxWRg-KhH*OFWJ8X>w?%C~-M2-K>}pHmAshQD2zMaBh9P>SaB(cVOd=1sy}hTXD4 z7%*NW3AlDLA1F~q&?}X*d0@?Ri@>BigGpPy=m`*wLWFI)JZRBl5MU@9?vD zKDB8O3lMHfT&hX(!=`pBy=V(1_-dXZBec>0CkjlU+s$#(I|ta3M8G2|lH@&-G3BDuh}(L6ax@L&TZ!n!eW(lkWRhF`wy8wG~R ze%8?N`MUxi|8R#-OVR8X_zkn2$h^5H)PGamx&FxH(&{e=jq5xA(%2>MWfMoSBZjX1 zqBV^S`>R)=vnER@4L=$CzzM-#@_0_1YC{H!4d7Ek^LX^{B{`ELJbmwkL~cRb+u*fE zu@+KK&clBs0?&hmdDq~wM}>VAqL%S#2^f|&iKopM?TUm!>upKYBH6;<1}>gnwpp(a zwV|`I#v#b(Fb5|%-p2yLrcy7MUTF3x}BXESED#ML%m650b(&ibfh0!`jS@w^|#^14Pq05EYmK z2c~9E+j?Q&>GNk;Umm?6*0dix?`Pi)gg*19O6O(qf$b~KxH(hDpBen?vv-FyPGSh2 zm$MJfGto4(J-U$Z`TU`Ew?LoN;l@SRnmzXaQqhj~2Z|!G29)kNVM~x}M1pjZ zlHF9T2~qDl`9b3R8RMZ5(p-8i2{C%%tTF2X02Dja1sv8YN?APf7tJ$GTP z2#)(H}<-Cei- zs~x!!BC`4m@q;v@2QcUa@|tCM7~!Gu(D0Q2k)@|{)n8jE)nj#);eDLbq0zF8!vMP! z@hitzVkfPMy?KrAvbS-@s6dG5F!BSG=+ps{O*qU#pJdIZJfqHwqsXDiM)&dDz-$t$ zBXGL3#(|S<_ptk25QTscd*p+)y+^XlB60?5x_hwSoVO=s?&HQSqTu{ zu?LhO?$gYeLyMKR_L#44c#qcOpzPtH^cvXqf+6nVN=ebctuVdofwax-?_R#G&r)Uf z^weucDO0-8-J$Rsq8T5Dei_h%q?X!+9rT4-Z2u9XFQz7w2Jg|mUWXVgzvCO2`~M2y z|HV`SRyz(b`=@}<()@Qt{U$XiG{Amy8EyMtQmbuA9DWx*iQPvu(}=ghP$-skc~!Er zQ1Xul5j@wiaaH)9SiYD7Dwq|h9;Ub=Re)hznE?;HfeW}02J551aqeT5GsC#o8>W-E z5J!Xg@%F>#-$d`nJBg_3^m?3O|L&IYrLKdr!p4f^%&9xcn3|Z>ZRK@ChWd!=0T4grtQnz~Rk|{{zBY?H`~k?yJXM zV2H${Kp;2gZEE3f{hs%8mi6LuG|~9F{P$5kf;@j#AJt5{JcIaJeIV!UVfn_x+D^lb zJv`jC8y!uZNW$6R&Pii0Hekx-xUrWJ2QU@md-j^sO@M$9YyA zA=7-d^%9tmxp$!=*V>ii)A!7y4_IWO<_}SQRX|WaWgE&8 z_YQwmzIh^eZ-r&K56sMQJY6Tu+nsUSS10wuM3gq&Zj?Vw}8{)Z^h!g0H0mc$W43OCq1|(Ra6o-ifVP%4z zV8|l-$6s#j%Gq;*NC&pDekxuXNw&%b@od#| zLyh4y9ad7hwW+tN5o6~8=Jr3-JLd9hgm*B$;0fu;EkxicuA{LmWiLP20rxnS3MYz4 zt8(Tld{q5N86fV^imN@<-iX&lZS*wf<~{p*uPhOLUrv+F4%}bfuz@3&FOrp4C{MTN zm#;9Wkq2yER$ZTlD5k7ULhkf99i-wK{-vL_e25=YAniRKxz{f$)D05^BOvrU#51{- zz$Y=t{p7?c;9c}nyx*ZVQEg1at`o(ksK_aS zT&aq45w)Om2PQXFG0$^g+TdlwFa$4keB!Do8S?8gikN|9#Ic$A$}-0?p#A&ponq2q z^NApW-$p7XUIZMRuC^Md?>X~m_4;GC8%gEb!vex6z>=;HX{vCyytO<%c^0j~kZaa| z6+k+%)S< zga>+6k#4?`;jDs@&QL0I4#8GHk(K2ZtzzQdGJO%F*qB2|QZ;-0yPMDu)w>9%&=suq z{Lb_Ib!SWyKL~sLuuy+XPgo&z!s3-58Nk5BMhI*Kj?vt5pR(gJj2t5)2{E{M82Y%8 z+$}9ebp`EEZ`xn5Zn-UC-RYPv3QT37-cpXm2W#cl^4WW6gww`iSK;JIjP}JCW8LR8 zZV#l&D1_v&32YD3xYqMprl8=1_NBgnZA3WyYz)K*24sx=s~%7G&+PkVJ)IZlJb-P; z%-`53t($R;(Z1&ayFKEEgMVvv^%eCj(l&(r+0k+YtpXeungbZy?z15LwN`15rD3*7 ze#h7dB@!9p5B0Of45#?&BT7X1Tmue~TGnFJZap9nyNFF7`okSvN0ZGQjeSV5s zwc@UF-8dhO8jVdcj^Z5-U9_^XsHy6jXv+NDn3P_00~a=__2K&eK<6T7)ryn>Zp%9Itj&sj8p*{QY)(bY-)(S76vk zc@8Zqx;Q-Sep-4d!vUHFdWIpe`|_FA9jR?genWRiFVpV0PLA9#Z=*6_$tlSM+S>f1 z8Fqd(6K-U(0e^vRG*q;>tE|I!JNBE+@zqh`Wdy4Io4=HGL){IC9-!U6e}BrAf>|x8 zd>=fX9{qj2g|JfkVXc$wa87+uxPZ$8lo);+(iKVwlm1@$GV@}W4R1r!_wdM_<$`kSj#O}%$j zWRy*^1ZAj_MQadM6Do+!ZI=FR%bDCqGuV2sZ5GwyvrQsPEbyA$*rre3LVL9?b`$$n zh*#guQr%0zFVlMAV6oQE3&srgOA26>y}^vv8rBmZ5F^V34xwfq9+((tjx%@U+o`48 zonXoEzJOdX18_6Z^*0p^+=Q7bJgcNh`}6}rZ;*tVBNQ4U`nLiMGy?jY+F)!^kIXG$ zA`(6Q2y!z?O{?Kogd}DKd1Z=;;ys&wA!D1dmRDQlD=H5v`g)O{Yrul`aSsl4!9 znIIxo9b@;)=i@Hy`BSIheNB^YbTA?1EiWe^>i$eoz+&s)HKJmp(;M~%SPG`!W zFU@-i55TLguy)hzuubTJH&$E|jCbV9GL@EnV6(ZaUajmd4=gr^xZndm=MMgFuRkK> ze}O<7fq9lK{w*#ciBt2Cfq7H?N6V3pz7_1SI~Y{;ksN4QSNB|0#&`A6(cr1^tDa(SQWHXCmk=2wvi zc*djb$VwL;H}<;E>()NjZ^NnjLq>SvHqtW{Mx)spqYrbny(lKt2kf5tkpkz~pP#@2 zfPUv*O7ojXGBM56$9i8Obnzip-rZ=mC!cON%Vf8z`ykDA_Q(ZP5I4SgQM5vrv`C1N zOU;LuUw2r(!8@3fXe%P_dlp_^+UW%2zH@m4xeZj-g8gN=CG0JVQ{2wKjHpTp;_gXsB8M^gJ0b0)88!YQQHPU5DU zu{(5xc}ADVuWc_(5I$kd*EF*HKn_tr`B_p3b?WgwGWaSa2h1gna&mPgnk(v^)-|~H zK=|n_Gkiv)r^iRM<`zP7sw#wQthq`j)h+0Ej+^>`eEBeu?3f~b_sg!30k1#re~;%C zh47IQH}U)<{r>V}H;O&xa*Vu(*T06_MSpDH3+4CZ_%*UhafKmfsOd@$?XxS^rbIC130XaERk<6&|`*w0=n zc`q$!{z3NP22(lMYP&N_1&koHe~irWG&%aYmE_&~-Islib8mwS?83(LRIj95J?a97 z4jHSxO=)~a(UX@~FUq$XA1_i-f7dc4wob^{UQL-1vcPnlcEq}waeqKw1N#UYdWhdg z$MGhrp%(GKmB%F{Y^!0>XphX>gk8DW_)=ID7OWQ*u{a=w7Ne5G0i+YQPlW5gJ@I%6 zU^Kjy%Y8b^5-xTMO|V4Txhqz-HH&SH%L8hhqOUUQwL>FHsz;v zmgZj5S`q`+NXsUlec`~f?ZNyLzgjk{C6p*Ns9(P@-Nn&CD8;x*{{88DOo1EUhsD+l zh$emgIP4^o_xtMcMLg?2Z@m2N@OL|R`kM#Z+Z--%`n8T^YVqEiW-9FS=ETw!)#ew? z>jp=vK9^4I{xh1_YuVKNQ%WFi2KWi~$?yZ*%(RQ*9oHI4) z?9uaOMx4Gn>pwLNy_%=})3RCEar<&Q&(O=1==K-kR|jcD^0oI(R1ZqHB}|Is?bPTx zd%ecG#wZ|Qdr6(GM?qZHjSrO<*53{E@c&9*&e;~7*Q)hlq15pgc>^0c8$&a{O&j24 zs{D}pdU1coH<6Ol|IJAiRnPzajDD9lOu*%l z|L3s5yToiD?9H6IAyuo>>x4}d9v{zB9+rIWSUDr;ez4oRNwILAWi9NKb!2PfppJ>U zU`WK_6_ai@ZW819x-zzQjc`T_<7DplM)56owG;x%8nWN?bhq|f6{fn%a>xCaTUTV6 znY=uQ&Sb{?M~lpo(4%Fp`O~n#iQ`W{M|)iM*a_Vy^5 zO`qHQYP?bv+v_SFY|I`;&$sQW$FzP#WbX=Lb`*F|4-YrCG5d36MpNC=xeU*w`H|BW zW0r&RiLdlxR|c)x`ZB{l@7h&GufmN>2EJ(q3}h^9WF9LzyueX4PHF0O^N6?~jvMy# zSMW|YmAz(J*izMKSSYcq(J)f~c0yU|t4qHVa`I95n#=c}xGW3{^wse`D0#^}N1D&B zq2i5Z*4h1ogL|GVUMkocp>qB13ZaWPYPmXA6j|JeH5317RXTFNa^st$T9GBcOkWDz z_;tkMh^TMqdl#nEb$wZ*1vw8&uX7N z-+%itdv3L}9ayt)Q*WBf?fDHVvPrHBM2l$mGsQM5IXcdA+Ba`og~RLXGbEQ7Cx=P) zKDcIovp_AQ`Mxxt_+#y@F}Lz)`f_PG-XU)vlxK8Ef7_B!vM`z%>}ZhPdP7skaoL0G zuhXO7J%6V2ev4zAYp<;Q=BI|=nA;D@z4Dspa6xoZbJo)f+e0V2(2W~J=B?OWCZj!N z@uLkflleq`yzAFq;U=^5SKv%7simU(cQP&t6`joy_?!^GxF~K*dv{)Etmwi6BIc37 zkFthr3zRy;6_4ALUV0Rq!<4xu^C0?u(4y}Ds^&1ZZ(FOVx#aunqs}62#d6Q)*CbWm zxUO8YY!biI$Y6Hg_h_C6)%*H| zZGHECO8@FBQ@3j9GbXjlw>I`sruD^~$(<^bM7bC!I7r+rbzJsW+Z+O?hsz#Qvcx z^iqMB)yA`VUnfPN`wAa+iFOz-y%EZcQd*uqOG;{SMuFq91;wwAc;;QXIaD_H5B-wh zJZ_Lx;)N)B>vxJ!x07gVUR$UBz(#%(f8SCR z{wh1MMC+}K&RNEtw)lE3$LyCYFL?z#Cfy0 zGz}Ig{W=}B?Pf&t-&wfiRWP&O_YB1$)ByI7k{5+`nz_9 zcD=r~rux+GoYPNBY8RE*~rcnyJS%1f#4<1i3dTb$Pwkbi5_CCuL5s!I74Ho=1O#`_qru~Mz4!s$L(@rij_au_S?cy5k4*0(z|}a90_if2LEu4j|oX@I-O6+$VyJ1 z*_W%R9p=`qHYYgew7lh-73&HOjiR(OE-y3{6S~%0_TkIMURQ3tl4<4- z;}{57p&e@Zvn>7L`sQekCWrX)y#KaXE~cw=<<|VZC~bYRP<=yVn^9+bZHjPxP0Kn>%t0XEvLYq-_~J#acOgMz3X4K<-I_v zeCextns_fxn(JGu!>h9Tpa~Dt$G0epGjW>4djWr6&HpqSC@lyKIDFP7Co3wyJR8NGymZQF6Zm^wA+8*v~1};uC!zGpTe2v z?dR|K;*oL5rxWcMuF*e#uWRU<;AGeLJlF21wb7ae#CLhmzNG~#xU?7V6$BD*PI|e0 zPG-WACH@Om7U^xR>0Hs{@^O{i(3daUD}FL7j8pvvSIt;Y`<43cd}_cqrT$a5idXvX z?Rwc%sT-H-#jJB#q4D!}W^LFU;iGiRZ|Oxw!C?w#M5p&eU%OS_80vOq^8vB8T!-GK zfmBn8^6MMc7F@hz?R=zZtyi_>wO5mB3iVuC3m%<1cHe$heP@RH{mXlUE|^msMkl|L1O(HH=3L)+Xdj~SiHdtfET z%yMv>{&k+}E_ckJ#A;{b^PvrCK{n!@d;Yqt%{j6ax-~T`8F~j=bFLb@h;5g7IA!VCt{KMo)wknO4-sWvksdQZFK9z%i!~zJ2~?F-QLwp_6n^(>@|1rx})*Yl?#J|g}c-0 zdge<#nswJkJhf%f0;c>xy4nx7FWC)l?|n7nn1vc0p{Z*;ndfZF&gA@-yK-vaVp&<) z2dRX*+a4VM{WUCE(;RxhSIPa#-y4%&w%xLD=lyh>qfzOTvevEKkiO33w(NC1OZzXc z+gYXGvq1CenPI2L^)d%Fw&};I)d=o;Sv07B%WUtBJF~fr1P(^J>5DN_-u&_YQttOOu3J7JcfPqSF|Y5yxYc_Mt||PhnN)u%LTFTJm)*8K<{*Vz=m&OJ5H+ouU;a zc_`>?tDsEUANc^fz^C1NZm5PZMNO}}{PC!CJY!j+xLo>RwZY=j-P_My`&DVK(tIaw z%~9oukY_(DHi=4CH9j6H_6&;4x}}hpf7@Z5plMc0O_*4T-O+^wt$UOb!XKJ{4%q%~ zXXnBC&|3=iE2H+?pBw%tSDnA`aD;qZ>Pzwew!M+*O)^aQ?J-xnMEdiKLkAeLLrkT~ zycaJNdT57#X!djs9=KUE=hl+xTuUtOK2&%1XvuZZeL71&G}xqn#@m#F#G5zj!*|R6 z!Pj;b3(p!e=S}u5{&K#edX7lNjMJ-%d2RaoVvdV%`z|TJd5gG~+tqX1mz8)iqSf@K z3Tkguz87_BeP!4KjSWqPt7^_~d|I{r+7_mZ!l`B6RU6$kKhthJN!plM#S!PaAoaif z0)m=Cvv(L&2r;YP}d5c@jTFQAoy2RsQwN|mr#p_Q?!zu-R}dWw^*f! zeY)G@e(pf^`-5CceCnQk4+8CdU9p*w3Ez8jw9ZH|zn&1$4)duzGhN9eTUlH6u*#C; zE{@1MKJ+@Jqo3kkG!Bla-8gqFli#W!c9Dzh-g#O%wjip>x8&8Kw|%AdU3=&a zUXJU}X&zd#qtbVOkj6JJ`McaFE9Wz$4+tm!%6zn3WQM_xrS~r+&i5=XbAK!w*VlBp z@aLZ58i9Dlayw3;l&%B6i(D6HE4|Ac`70NYFyoJOl1i<8hQEpEoq!V~a>)qBiDK)55{nqp9{^T4!zTV)EK{CEY z0$P7Q4U~6(nD8CpQ}G5xUOETIyh*z@$e|ozx>9wGBV#&UxYsv#Y23b*uhM879Jve* zj)dHXR9!Tb%uq*FBMgP=XlF()jrFqmn1ZvvAE*f8LBjJHDa?lLj}3$_t9}%$tX5Jk zee2V_<%)!I$J5S?HEr_^X}kf8y8KN}{tUAGlKYeQTrNjLdcOPa$7Vv)J_nBkKYRGR zZrx2|QQm^rkGp>!dwTNk6uTQ{*D@Us-;lzzB!1;+iXNQ*qj{=ieCrBtyTgJ7`r>!4 zn&0MX-q*kT*(U2V9*(-qMRtQ5{MG*+>Xlhu>?Oa1nZIn8?OA2jnq$s68c!Trw=U)z z4$3OAeV-qJ4QF0kn>JrWr+#JJ49}~ceA7z28h!dlF78t@k#nZL?Z$MRa(3cF`+kzS&mMwcXJfGg@xEz1OF3DN>=j zUgAnsfwM^O`exH|TIS-b&1S2!Es?gEkcmaAgF&&h$@NwHHI4U(*eusH63RO`t#E;{ z-6F$x_l|XMy`3Q1P)OgS^B59k;B)f!t+50$H@WoV`Xo=o^+w;;G4^|j&b;~GK9?wAO*LlK zW8MHoWBI(*mMT`|+(G(}epwt>Grd8N%r4#;+MZKodL|$$YWD}kEaHvt{1%pY^5^#& zi~nvEYkOH7dX^gAzxszroTfz6wfm7Bd#3z4cp#fu>lqlvy>#!RsNSWT0Zl(>)GJh4 zC2E1^A^(Kn7scWrSsPQei9G!f&fr2j{1`k)`YI+~4S%=e3Y~%Hb@i&njExMUIPAf2 zC5sL|jHe_((~q%&mjLVtXMEx!iW_4Yk|f|zJVS(=mHsC;t=+8&on$uyPk;CP)eN3$ zg%pM>jgW~+Wn_>=2viy=o}A9$C8=977&quVxLZ57pN&AwbcQDyx`~OP{&a>Idc2Xb znNSp*$(YVb6c1)G#7XJ%TNsx}oolx-9+A`~I~X^K&Z$w*UK$VHtzw|Rf;2f~(1EF- z`fUsmpUWH!`nu-pg%MU&C?JVp>xW|~l~>PLawQ@qq(afhUD zR-ANdcCN8)>!XV^(>7L|cwg+fB=wBKPlwcv+rM$=`^-=l4%6SC?H_FMx%HOGv**^# zrp%jD5}mhhY`wmwbOdeREhOYsR&;n#&Y?t))qBc~PxFY!-@f(uUF*TTWhZZJo^Sj- zJ<{#2G+JINyf;367t^7tNBPK|cAkK!??*NqY4mf_2x~lFBzSsBrgyQKRAJ-snTmYx zC4xCCgOufNtz+DY-7EJa;-$?{&V~%>Tyc-{+pw2=6VGf+{j?#aIax?9-cm6@G9h-r z!;!bG$|M0cj;#ATA$3H|5ows`)2T}$9wfRnRhKie4HYAmd|@- z|7vcLYoN~T8~(Qfd1e{ReN*GLUd`X-u7Xak!dr_DXQY978&utIimaYpedhmdG;*-%svzOPth7A}?o#!(3<_z6-N1{zcx8`hM z;{nBbrT5pg@~c)Dhu5C!{~W@rr_*~gW@HykYT+ zmOb0Q&MSs@$6(@D^I`=t5!LMe$M<%{^3#kZ(_5FxoBqCb&O87yR9qxA zTA!Xadz7R1=fA%tDMqiK-?$;|tLgGd?0t%D%gBUIU;Q6qsB*G8;Qf=|`JQmXpNba2 zr!Yuxn`*PYj5nODDNMWhxMdYEgG4wue9+E3hC}t*gN%oS{4T#*dFa$7`ZE zufQ1)Cra;OEJjh!8FyLq$+pw@F9Tf$2@e7NXg8yS7=_mMFf<9#*K3;XCBWCqEYWKE zONIuiUiTG4l)wx(iGH~NYGeuZb=?>@I{un*mCzOahM`E{YAd^!H2_YXzzw}+++n$4 zwIIdoFVM>f8>)Q_AwqyJzVBBpFeVWKdHswwmOze;mTnW!6$$#)0mgm8)`54U?%jCL zP#`@W7-UG3MV=vs1zB|X$j~P1C_Fb8HzQ4i!TSw189n>NXeM-?{LBa-MTCbLhGcQ> zSB45%jQBQcwBS3#ju>b+n|yhU>-@}tdbYy5(4o%^No4Vp5zAa6d(X;e=I*sZI5fTO{x_?=7ii6CUMCo5PUoXii3vZHBe>yY8{Xu<;PHefJ}53;-#uzo6dKw} zhs7T5PTViXL!yqZBQQ}BMY+GwT&&`5Yixv|S<^6nva)V;j6oJXI5A;%2pE_IS=@w; z0(Nj=(@APGH+GsVrcA;_X{-*MtU~iz4!LCro!A!%i(#{f>8s=;#$Qe2#X?DmNIp!G zEN1az7$JPVdF9X^s8|;~D{$d?s80Z^B^)jl9Ci4T5GF$kKNiNsX{_luvx%!8l?!5v z&^%GBij`AKd(<=#t}l1+h5|axj~O6uG3+uK6mjegsf0@sn@kqPq_AmZ(NP-HCyOaE z*f%1UC_x@GW+_1B^4N5S?y}sas8=4dCTQ9Um?2T}SHO&jQh@?Cizq!CEvYH8B~~h8 zP6W4Vl=edr^CoB>O6*d#5*AI+w3V?`R*m02Q=5iPD`Tq&x{?YOM3k~dOP^G*4FoMo z72C;@D)2a7h(y(}G=h%QFfXDsJX%^b1&btTO;fOBqBL8bO{-F8TU6J;{0VNh1{O|~ zerjOutWv%KCW9iUVip9wY%04Z{F+!WK}*oY;#fXCm6=_RK51er2)c(BwuC5EXtAxT zYGXbGEyWNNAJE3^Sfb7{J%3P-Atr(TYO`zNql2Zhm`(}bW}-Jb?8tfPVrvN<_jTE} zEcDo=BYN1nN%+v}IXl~kjx_bLL;?&|lA(P^4f@zj76Gpr{k|*uxSFPjW*T6!EL(Rx z=rGu5ViI({g{WZ~W{S!TFcBqO;RE{(0UQb(9R0BGa)f*w`*&;%%7qlBVbUyBVzsk; zko7cB#UF#KvO*487@s1pO6T#Zn;7)3!|*ta>4B0is-K1}B|Mge5YY?b(E@F{dT#w{ zel)0$2@otidi2!QY?dGrnvU@itfx5ZNdk&7!km%AEYf1yz>o8r!P+T!#juoOF%(4` zVZkhqlj^xwqGv|nac~kYZ;vdD$;x*|-+h$_a+UCyQRFYAplJ&jI=O?XgoCVD4aT@0 z7Jx}U0hy)h zm_t_dz85yQ3M#q-hAwxC%vbaUVR8t_dbZ#M9amTyx%(dw7cy z>Ndf~w?ZM#(%#Hw$r1v8O@O*#3s7y4w<)_>!cBq7k&RPxeXb-mhaZ5$ zRuo?Zb^zKOnVVrEgl0E0%$F#g87+yKV`~W7c5`e!s~P`3p6!FAXJWAgeaB2JgD8nx zV4g%N7D}vMVkT`AYlrSxU@Hj*tF}4^bJLF~p=3*ptP-oDyocCSek3p*6JTZX5jRXy z5xka%hw6PG60*Wv2(A8BQ2FOaK;8yjwj%q-_rOc#=$RE{+p%Kcm?HygOyr;LF^>|G zXyk9ru0yRgD1CYyb=c75ke>}EfEYHI5-X<8UN0Yo!ud&y7zf8Rih|!KNAapG=x~vR zHhi=XZ{eWxQK09_322=SrpSV}t-dgz11`}5X?UpiE}SLo<;=q5Sbdy@m-j|$BG6r| z1UWeDDE2hZjpC=XpvOx8&Rq)7X;5vd>V4ItPzfYy$4)(6JMePu1vGyx-590Xu@hq- zPByrhs+Znfo&>sfRlk|5d|NGqU|v^WNl9(i=qTDg2p0_e~aI$!Sg z>)gm?9($Bh zf-oRcC1YFumt^i>3pZ=N`p2#l#ctXyba*nRo$J~vhvv@1L|6k*!q5x_3_8&Z=Vf`oh*%phXhe)r6wuM<=mHXk|k` zG;r)_1gHfVoK1lmK4eX9$l8U}x@nfxnTr550H`Siy7VzVZRDcIGUHrpa{<>vo}g(n zF%5J&ogsjf=3`Tdal&~%@WS2_ydCpN18YUD|M>w1M!;=qrfu#chLo#)`bf!@U3mjn z(9%0V^zjf^Oq*4C{-sHQ7eI?1xJezw@4mycLmfSGW!Gq0OV$-ImM6i%VMD1=-(YUV zYy}jx5EDW!ZkQ6`c8nVsob-jl5<_inm>|otIhR@ZAgK8Y*6k?j+P;s< z)VCDR0jVM7iS8L8w}se3R;s?9A5&ffDn+0UmK4>GP{TsZnFxgNA_&BLUbJ8#CWX>w z(?yZTB21CsCF8tbZKkRsyW3mf@m?wBA^{U~>E<&yj; zz=|Lb;pAaOoNO~z;Rq#~2%2|~^wQ@22Hjln4nO5^r+B$Ug(Zl(mttzH3h5k)cmLne zWvZi4UKHhlNfY+BdVu`^HJs;whCDEBf~@EX zG(Mq;xr}U=0d7PW$1OzBdNi(o(*2Cx(1G=k#Xq2fub@QJ9d$3mVp!>}QuQS#06^RT za-)DeQM3=XoE7Xt7MXT`fcYAL)OOJ_!X0o%b-oxEI$%WO`ln~V8Fq=^2eNhWcvB4Q zGai+dCnDSJ3w5f1KWVZIvqjPGXgo-624wM*+g(lLN}LV zq{4U0L1CWhINo1Vnk4FWCl&H?C2L24q6B!T3hm5sAse)1CT%h*H>U}qK|gl${qX~> zQ)dzYFMmvf70E@6;pZzLieH3@qo6VWOwl2KEQF{c-wKcwwnc~iF-^40mgazbx0247 z$$ejnk39ZRL+a>nWrubKW7AmOW}h7mR+Ry4Uz7qspYQB3{*JxS66*pmaaPN{YhO~c z3v>#B&e>xgLCL~lOy)xXCc%O)`gpAiUr8##BAU81FmR;6xlu?UDbp>p#(fdUSa5N0 zI8#gvIgQE8cZQDsE|Bf^NFcauSlL*m2 z4G;CW<5l!1o*SiwlPS3J&bqRzfW?nT=2Kd&F^0f@2**@d4g5&vin_q zkhe#Yt$Ns9^phn-h7%Hn+6T2zeI({VSdxnZ+1nYoB{RgD0aizm(Yf`jyNd}modHUy zOQ6zCv5z7B|F~k4$q{hD5$Zr40qXL{37v@{`{crH zoVPTg$=snEP+f09$UhdF{lB`SjL}>lVKA@*1gS%YJMxQVA4=B6Lj5}Sva}$@IC8k@ z+#4e+3UY@bN2r8nAP#hGzF)StnJ!qx1q zK7s>GE5`vYRl-={vxb}&hI!nL19&+&GHfPBSf*;6(19xGP&WA<9m|v{=w?t8;xf zq2}fQr)KrcUIGfM6LBP$%nr9sGFS}l8|AS+m{4ZvDqB>#06(m)f%%6zq`c}MhyR_- zUbHBrfG*gov0P%Uf`mTOq)=27+t@xF&@wmhaj4=Frij%yk8Z)liB5G1=OwF+ z@`zNV?p}DcXAos<`lU&a+%G$`c(YrX_k7KF)g z+Q-t7>stB(baD+{W!$I`Rsc+kcos8m9DVX0u&ucU_3Vd)%h9LtA-^QL**^zKGS271 z@S}|P@c2?%fj5CFYlyfD*(0D*At;w#I}YHMLN`H5d&wZpQ?0Ju0TrXedr#^NrIbPy zQo_dy27cN}p7R>)1=SiEIBIm!L7qFE##xN@V=Tda2(wqA9Sa^P~je?&dL3IA{?>D*M^>pSd4ADa~f_@#7Ig)_}2=_e(K; z%%lySZ3#uy)*U!BfQ8z#$;DO&@_s~+gJT&5<+l?@*`bmHm<9`aZ&%`?2jJUA81tx5 zu6zROT}YQj&Iie`+cdumivYYWjLy^vbLk$m^T@cx7z4ri1vhFw$gWY(L8y`0J_2QV z2%EujU|wXFrUcaHtir@2$`wZl=D=;|kS0{y~Sk8zeXGB}P|5`M=V2Wr>l-3Bl z?E`-qlTh6^w!ecXARRS($Kh)S;jL2ZC(?*T#rmf~U_=+DMrx1c85k$TO7iFJpue65 zGxwPOcPBxA_xo{BRwC={g-EQbpYOVX^eRec&Jn~VlZdJco`y;o z2;&rK+%wRtAUAjEf8^io2lY?k@u8S; zlo+RUO!9mMxf6e6m3dwfoU?&xhuSp$l2l21!d0&`;Ocj2D$fM9oxvmtKtB#Bm!kqy zkh3bMAkvH@%yZ;?H>HwyxUE_o@RZ;I_nvQQ!sjw7zID0gd$LocvEuRB@iR>l-F6I` zZ|?=N`2v1-&wL2@#($d6{v?6tyGW|8SgZ62@8n0|p(b_aIRaXHiSys(TUAYK)E2OC z>YtDVR}o?dE`vvcmq?GUw48LoKW3Bur(rxA2z=Tl(xaP!Rp%T4`rsec12+licQ$mj z#FAttKu-gdnoxW16VT|((f&plqa$D|O)7N2uL&v>Jgcj~tAhRXDDT2m_GwlZ&a+-X z@C2LKQy{Ym$h($|ia4XcO&IZE=fMs4vK~QFJ%QC@6veAJk5RlQ>j<0`wghqaz95+E zG~nG=90mU^EPRF0%7{HMnYzGR# z8^n3{lBhgBwCxsoh>c&V+yy3E;8{*FeK-{tieSZ0wPt?B8E|k7EKfrzsMG6k)bcTf z*-wtH%m>JQc!DULHIFvk|i>xNh$Z_n{a5fAZRq|Ui!*L zB8u$0nsUhLHd~+fZP0gc6BQthT5glyt&ZLIoOqZPnMD<1-2f%Nv$z{-!^;D%R6z`= z%kxFqs!}0NDNak8gW+-uDRTgZv&7ha&3(O1?bu~U4vr9tn^&$* z6uR|@-TC{WM0dDG1@Iz|$Lt`ldklb^&0~Q44u&-A+a`H}nKsz-oe1-8*YvL!G>#8L0ids}qN= zV4+5DU;cwKe1M}|@e7&b7VM+9G67HBKmIL+0ZQ>f zh8lyMXN1z$H&8o=9$)B<>-E{}VlE^oRC-kcZgDlU5gjGn~8$-mv3wb$rQ2`@IBm?JI(O6UeN9a6MUg{WSP4{f{qwuL-EjD-wEr?RlqC zfZ{!lT20=!1hkC}U9{`BBmPcL5TMldo7zi27rbV-U-)bAE2NJg-ybCp;bhd0cD{j7 zFMC7ovNL_A7vU#!_?=0r4=n>Ylt{NP^M7r*3MkHhP}ANMb|Qx%z@cx+1}StY6gvy} z-|$eit{f!ruimo5`0Fh!61E}QYj7*LmrYIW1#iy}5#U}Rvw}Nz19sx6@ZXOF6t2Va z{j)%vcySfHBL5kGCd5AWv0shw_k-bxFF2WXC&30^H)^9({p{Sij04QSjRG7{_Fq`q z;HOV4A5S&4RYik(yk)85vCsE0q1|P0;xl^S6*QbVD-rM);i0ase143{pfVZ;*8xV4 z(aPR|Cy_tL0qW?OBn!YgBo(b*wgT7I08c7BWB=Bm!+mh{0v9cU$Lah19`t385c-}E z!k4by47jB;X7J=70E&N)0>~?u^FILj)Sq#F{NVz*=cmYsbkOha(uT~z4@JYroPg4s zzl6{SZfr418)AnzX9!ZF5GlWdPu{SPm_946l$*U2EfsVW^9eum#eb&)F8UHza*haQ z_7(yTKR*hf;I}exydyFnAdg`)E11nY0fP51>Vl&L!=dEotWQ5dJx_BH!f-Kod|O0( z2Hp*Bf;V+9+<(9i8d;7HNSAx>1i8WGWqh7DV69$R2a)1`?b^MejW_YY ou?bXm>|db>RY)&i7UPp}bHZSW51&%e>S-st;HOx`G5FvA0ZJ*CZ~y=R diff --git a/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip b/source-code/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip index f5fd5f1061b097d58f60d69692a54091219fea48..12a5a163d73eed59ecf24a5dff1d05c6d0f18c9c 100644 GIT binary patch delta 13455 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 delta 13769 zcmZu%2V73y8-MRfdoS&YRFa~Ml7gDN_xF1|&-a;U-sisUd1B3ZVp4970)rGd9F7R*RRHaiFBLp!7F4o8y%yCr~jMZB;UhS9W07RD=!z8{1sQK>c} zd?oz|vl?Y)0fwRt3nYS)TnsweOpcBKx!;hck`V2{D8+(m<`EOD}?=T4`T> zKde}({}L;f7z7hrf<~Jd)~@YFK#FIIb6+Q82Qp?LA?R3Iw~bJWx3U- z1ExO?C^>WnX|&f(Fd9>_rDuJp%c^GmvS#01o9xDpc{V)s3q3>sV9_sXs)obT!rYgd z9~F%f4!RCoBJeI$cTQ1|(~C~pRY@z^TG}uqtMQRfVEdPE4N1X2;M)Tenrc+(o>5gy z7%lO)pKU~?t>Dn*rjzNP`XxB>y`~W)a#^#@m{n%Bevk++^v~Y|1nEf=(kTo2%!GKq z#I#Oz?(@lqO4sX$!Vukq!zmb=thPf3=2w$+(_Q{CbG3&me_9R!)t%f%{ zFKdjoNy;@gkeGbU;^Wa1Z|_%)P2_CfVDMP{b>a9&O6Iq2#yyDIvP?kkPC}JHRIN+K zNARX9p*LWK++Lx?&()WQ`0IYOvwu?`Dr4WCpPR0CO0d{;qgC_5A?+Ikd zpWo83?y{YFY`M*sQ)SJ1!(*KiOpjaKwNnym_kH44Q0D%ss_VI?MU!}7wKugEH^ZFITTddwVgQN z5I1S(^}6L3sjtl!H$zDzL7Td?TqUm=2WXRj?mt$7wlwQD0{K*z+F_CDtrU`I3 zGw6gV4s_+T!D##&r^Wlc_UKgLelES^wql97`NQnDl^61tV`j3W_lciwu|4B7BJ=T)=@PY9LXz*wZ=c zyp7Bm@!zXuQs(8yM$^E3QAW}a;m1=Hzk1#McJ}7{s?y5B)vYhwjhC&wnytEOWs&al z{fFvZY$h+8Fn=ajZ?#uhf{|_g)(N-N3OY6Pn-6%dnQ5nXrH}r(yEEzP7m*ENr4NLM z|7Tqi@$0!;L`^>9kY-48zdPt}W<7gVQ?xtVjb!OTFA{^p*8 z^IGGv9w(vX$=`*(dhKDBC3kwP=6RIObfE(8IOw7Ygffb~YF*x%$W#yMmUf?X?s1(? zj+acyjJyN$4P9odNBBEwSjL@skzbRswZP6_6{Yc{r7?7o)!W2X9~2d)EUD7GlsBvN zQ|$DR6t2wdbrlWk8`kU3P?;&<@hQ`|+3&l<{TBI>yVt{~$|cXB+h;Wd-?4il_DVBM zuuuK)81clBhn;UdD}Pvf<>6%S!tnYp@2;v0zdU86-Z0-=&CfF9GM~gQ?0NRkV$jhb zfl1C^dx~E;9jKgLyZdL(Bc&?Or5y3PU)Kd_!;?vi_WNXwc<}iQ{dT5t#)YJmg)jG= zF${DRbU$YBsqtIEol9|cZZYCocfZTFO)#QrN2i5s5*?NuqO-mC)4uIDPIfIUx9ctH z(_EZeGkVd*#&NB4mnAeGx~Bi)y^PQ4dh5#8msOITIiG(y$51tIp53$mSTpr@UfQ-h z#njCE+|Le?D*i{GFWkFH@3hYA>CQe!a(=-h8ci>H)o#_ANw199y6v59&(BMOo<-p@ zJyyQX7xKYF(Svtaz7UV>8Dw}o?t+S#veA(v$+stUS$OJKzE$fE_iIc2_}cof71imJ z!z`MME62XSh6eEwIxT$Yo2Rtt@+l&;+hsAj#@8^T!*!R9O!~O)4DDxfUurL{UT?ap z;P`e`xiaU-YRBtK@0~yQKB;wB#rn#=GXi_^pP2hPCkOYWn~do=Y;F5XI^?bW)sRQI zQ?l>BYCiVkt;((fHFZsO&GEUe<)G z`daD;cjrbs@!q{n0nZgYY~1Xny^R_M34J)-61(}0g|nEj@yeXys>8GeTR(V|?VRvLD239n?ue33=-40I!Pzt=P4ak3>-00mzwKPI zHhfXPw`pq6pw4ZNzZ*rG8hG_C_`cwGdy;!s`u726SZ~*1}4oGtIT`qS}J$OY~Ei0*S}-)iSA1H# z}WL_^6pmA7CJkj|2$LNfjN$1dN_AH96 z|MH|3t>&;1dWvW@U!wv!mzHgvGfjHQ2?4F4ANI_;I?U;S$nU^+HfJgEy8pHa>Y2sA zjy?plMx^eJiaDpWB5UoHgr&>27JtybV!yA!#;y6*=O1hBwVGpRMV=OEv3fvRZBJHI z&}jJ~Jnq%CZM)J(pWP%@5S=k6{Kn!1W-FrXnxe(pJh$0Oifn!@U*@zgXk)r_l6qZ> z$DXS)RqpjymqFx0Ht(|LKTXXDq1o+Pfaq2$mUW8a&DweJ*9r z{0ob^#k_j9EjkW_8uFD!-4{L!6b#=>`Bh6LTZaauaoD3;;Wy_IzJ^p-1>VLdQH4T? z2H}~{Z6=gtSi1n;*+0zF62g>hoD$J6N*GNs`@?=WQHw3D2IR5B1XHUvKH6da0AXsWb*+MscFtlR%^7|y};FXr-R$Q`n8{yfk7a*B9zxL~QS|O5MDg{WGQum|H<9q}?dMa< zWnv@+y~6tFi|I2ED1Zgc1j?L)|6pb2eUDRDaJ5*J%gyDUNUMqE)N)Qq|} zgc@HjLnx;PbwWiqMiA=mwN)gA;3gaF^IfdsC=)bwLX445dss3KC_-x+AXPE=mW43( z=+&x1v=Z863AL(SfKWLdd4$q_GKI{K$QOICby3$uk3=-14hq0-Z#>;#*JPkuk@+ee zPhZiHzW4qJ;f$_j{?xa=SG7@5r%WE{hiXg=3jdb%CP4q&w zjh2Mn#%N8CvZQpm8RMv6V(OU%b(AP=nMi#mZu71C<63J=$rC_{9R&zruRT9Am^PK# zfy=1vKn)^t{pnN~-Q zct4vmBBVwDWkbl|K+1%Wn}R4~LS6}`l<_o+oZ|G8w-a?xyd4u|L5#MSmVe`WM`&NNNV*R?Vlp z@yhX^oCG!_YtPY>MBm)%4C7;gD*SCtiNM@wYCmHTTE4w7=`oHQ&Q(2m#L+Mn^I2+;k9A$>3rKTRA(hYXnKPR ze=4#4Sn?Yg0=-MS_ubG0{$MrWRn8IE@D{ z;*d%LloqE9;09qZjyvZrwH(jL^|@xb`AGUg0DEM)bo8#Oc06X;`8qg`mBiVmfOGIw&28@!FF$k`4)YV6II?FczH|lufe}=99G+-xWdDCRq>dG z>3tWrRNl<@nsHN|wisj}ZxB}b`Ay~g)_UJWo13F6Z3Ae_do`Ezu0Kl*bzgqCQRmp2 zx{Qk(J;zEq@6o>*k)NZnvotbE$4>9m$<{~Qq?tzqBa{wiTuM(53lP5d@nOouu067? z$GV4W?CulTemlO`z+6$ZuWqZE(1y}Ab-L0f2w2z2{YNwqTCbk*`xa6=vG3{hC+)_}GWwsXf0kN<8O&ag8q1`xzcy*WkDQK;$dA z5xbP?vgfxs7TWI*QQvsEY{!-w#p4gk6SPyUt&YF!t`2_wF4C!D?^@^<`ZRFX&r>SG zjvXD9%PvT+x%l<_1Iw2+hSlRZ+xJDU3YfC()Z^a6UF}_y$Gr*|-MK8SEc;V&-hcG+x8;Q2uLiUAW)e3l3m&|T-Kuf-gK)== zqY94u_7yC#53AmnQyp9@uh?z*&fY!mRCT3>@G7}`zm1#EpV2t6WaNXXv+}onxhdO| zF2KI)bI*u^5Ik|<5D8$;be!RA31E%)-5nBOG^Sc4z%)$hNb;!|NiYTTPDlcGOo>Z@ z*_evzry8Wd0?f0O1{q9qmDgg1bP2>EXZNBc->^EBL`9m zRt`jBN=lwjEtLn^m?y3Pw)8i0;Xwtk2J^=&f4H$f#W zWJm)&GX@MI>bgDbRt8g{g))%Cak(i2Rp32^Vbdq4$U{jvAi+e&YE`nVc)%`YfLrv? zSq142nL*pkm=1p<)qmo3V5zD*BBaAWsFQ2C$e#f4F0H(^#tUzJIIg!vHNHfoDpr z7E0&XEDVwH7l9=8Ym6rzX!{8B@b#v$JL6!cmwo~@m3#b;~=FCP>{K6S#murD&mQZ*Rw=I^p^EX z@ZB_0s{2E&MY4p@%p1<(II^NM&&7IIDOm- z3(L`LV{echn;AGPABo=gl17k;d~Ao`n2iX#1MNNYSe}gvVRr~+Pj4vHgHlHPA=flQ zo~IUJQGXq>jes7rwafn+Hg*v*a|k`rEOW=;O(U=rSHx{3GIDGiV}uuvCR6vA1FCmoyN0t&ll5FX&BwMLk!L_=GP$J7#W$lgGh7+=3Ret3fYQe*?C-o&{6O}1S!_S zIgO+1SX+af3Iskv$&4;l!6n*w>Ja`wR^+o}=N89~EYv0R2Gqd^j5 zFJ9bk&Kk5!l}rCUT0&)vYq~r|70x#Wia09kF(@j9!&sD^rVCxn_@Z{6Xi+&&WDl*( zfF9$(E{Goa6h$y!gu|K5ibAA!xVAuC~(Sah{g9mbgRMQP?p^ zD3^MvEcQZ`d58kfWCbo*{jahWF3;m}$oRLjf5}O=Pabwz@}o!{kAUFZ-#{Nq2zHJK zT1;k>lGjA0BF`1*VP80Y|DgzjCIA-(4?0$9?MB#M^dz8X;7{!QfTPV8z!?YYZh>O3 zy1f>QDhJHivkri;lB9lo-G^-Jd$R$FRE^ks`&y(H@ zecvU}JUN6mnIM**OV|F7uEljpxMegs#kp6*9U75N0m^R{OVa zDbo_S#Gtbce@@M@K{&fs7H%?ALyA*0fp-(VifYKdf(5p*;409DKLv3SqHU4Q#P+{H z856)LEdRliFYWkCu4Ms?8OIx+NZ)EfPG`w*I5SxZN28L9OyZ7H~}m(9C&mxh+%xO+RiLc*Xuuw()K_BJ1nzD4llm_L)PShW{{pM zkY>E@zj^U*g?I?>Mp-%!+KI8rJMnqm-ec3pp{$#=M%q!zUsNPC2_ACe-=xm*WZw<@WpXg^3MB|l+{sFK+?RK4G;)@TQV3$D&|=)L zBmyl)Q5w+2gYWUCJF>dc1OqxoQ^N4I2?7j+6ySjX%SQJDl;MqjIIhI5!UoZQDs~eRhYbh9ngQGeffY?Uj!ID{SUw^Uoe<)*8927r3^(hA8o7b zy)DDBAFlzE{YW7OJ~44Pb6JHbafU}j&}9?duawb8Cp_nYjinUtOie~Ef>`heF8y%L zf8JIj>Lz*@B6u5m*yYx9>sM2TTK+%-*WAV*W$56JWhMS#G*j-r&r2JwBNMNYclK@6 z3wHa1WUL!A8|m)%WOQkhE;-mSn?!$f$F21nk$ww$*fZ>`*8tqa0f@kf-jpab@#j~3 z{TyVo#hVB6fW7D+OtICaCS4XqvFt`GjeQGxFcU*ve2|&k0KS>+0m#g3Uo5-siw0FI zkS`k*h-7p9u&g)`$T2RqT#RU5iNfW5<_F@@KeHE#MUGJR_cP1NsMMALg;;LwRg_-kxcM*^@#M+anCK(bq$=svCIh?ctb>_B%yr z6GoC$C^-404n@$2B4@XM2G9EgpEr*Z`e&x6NH{cIK)T&XHwOKG;Lk4->!J_JL*S!G zv^~a!^T$3T90l{=d}2Htm@yS(eXtxb#G|77ZRz%Z!2EN*o{B&Q4Ps!z65tMtVkq^0 z0@d zGh&pICnK8=<^SGH{1y|NK9m&v7D--y(!P709nRav(OV$9{h*PG@yyY;J(V~i<2)Y) zaXp;}2!Ku*)X0G=KkMTwt75h=GYYI^qFkjrHt!2Mv*)>TI5{kk`3j!VBv=$p-mm2n zf3$X@ku*dBE@nYnvU$)zXdOeKVXs!D@IKvsl>B>(^UK4z+=v0Am;eU8^8RgAhQ?6d zj}DkqhQS+4&gZU2Q5c~;o!x7=y_vVCYeH?_N8S(d{9&?;Llt^b*e~-M=(dDSe`0eC z+4_uZvA4hnMg4di=o!y%JVeJMTe8LdGJW31Wb%GOB_P@5?O66`0T>DAC4ixLls52W zmOKBDeM|7bF|?Rr-yVEaWftYYUM>&XGT4QAf~`J8-!PN(8C`_m5F9OB>k1nnVz)!~5Q{ zZta}na(R5ScQ z_;V3|`AaND{Oq#~-x2nlr8F5K6T;ecKZPRDnmVTX_W=OT6NT9G=%UPP@-Pa*%{AtI zs5qNYaY9%zzrM^UOy+Hl%%xFkz|EL(8{Ai;Oo#t7FXq(~t;Tw^aa|ijw(5cJ?|RJ0_1W1`gm-C zX3R#P?1f?4Qhp6{mLl1cJ6MK3*o#4_RK83z70GVh!!q>AUKnocmmTEE9^c2ZA!&S9 z7HNp>-HzE!?MUTh8o4s{f5rbNsqPMpw@xQr!s@*BW8R|t7ybjC029*rMe6_9|96pg zKEw9V=YQdUHt_3~CQnYwOI}Zf&?= diff --git a/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip b/source-code/Volo.Abp.OpenIddict.SourceCode/Volo.Abp.OpenIddict.SourceCode.zip index 1001dcd663af2067b25c6aebf44ff35d17d225ae..4c460f70675d85f2ae1d52a7782b12a52c3b46e8 100644 GIT binary patch delta 24774 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

(%-IsRQiWTdCsyXpk(;fux_G)++DXpN*Drgf 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

!s;bTSykur*BAu{x z63rR6(ogpGs084e{j?NiQWt?n&^&YGA!MVwoSQ>6EfHVBsavuDqH|sK&8KA zbG`_fxL}E0RfV%$J}cv9xSLSpfjL7vgK@^~c<2Y-X1&Pg<3H$7ufO}3iht-!H?4QJ z9=pfKA}6;xp?63kx4oXp{jy8^SaSDd@E!5~>PdKq*(BrPkQ;_S7>}?p$A1J(3Pv-G z0}~p!hyElyjlQZmTMb3s(2Q9gk9V4ZeU(Jt|j_+hd4x@I~Xk9U<4pBKyJpZwrJ!egRXHq^}d>|9N>&>cq|%Tgn|v&ZDPo=k)( z#PN8VHkIxp8GkXPm6q+0wSgf1#XtOET0`XY-aqI);Q2VA;rs85;lqu5YN+>A{`V>W z*U!8UJ&8WGf`2Ok`hU&+e;xpRGW!0u9(SICAz)5C*vtunv`Cb3T*$RJCTuD|C{eZp z*?N+oJV?5{kTDHZG-(DBhDD?!8vJa_p3I$5@s)pBjXaszBCXW2q8)_BAlDPK(+mgO z4Mh<`^%1I7yFIBGYPg=%%*DElXJ_Y<|1pAwP}zlu_DieVYkynY-Y5SQiT3~y}kE0&?mUx*B{$s2@p#_4#ERJ3gS_Z#3|GT_ldO#>ssd$I6mUV`2qq- zhLZ|kOudu7k(Fk=t*lIwriDEj&Uv-s2lS8}UHGB|-OIUI?onxL7g<)dWN1*b&T~{N z>eNKh#|S|Tw||vRMt|_wzen(6CL~82DHq1aLtP?NLC!Lv%!AAS3{Rio=jEP%h8rz?ijz5s+U=h$z(AMwxT1 zPdVpo7lZ9VoFA}>Rc`rsxLzQ^Mspd4J&N>955iMBI)7=aPN;UYZy?hlsUJ{oA4!0ad&pdj zgO-p6%YU}WHIm(_MmIRg3l|wKe{qQ352z8>vH5m^JzwDO7yrBiQE#aS`*v#W(RYYq z`;yp@xS%*1bNVhbglS{FS4N?h>3Y5Vng)96g>GtYPCzz=FDYZS@3#kIp1xSefG4#YAKdUW(HV%yByp=zjw@>p-zqV+wns*nuogGvW^lmygZ7 z(%f-j%mAqeGTEC1qWGl&`ieZRP`!Z3Dl5A zM}Nx3I3BTupHS`W(D6>m?#`=%A!a{4191no_$yAqKl!bJ_b}H(`1t%Z1aX+!9>$n` z&wGa;DbNZz?sZ%e4zPY4#P>GnSYB{Pi`AMrXse{D@R=x;Jr*ds11(&mFSy77Tv|~w$_PbDHVt;d9q#HSz;j`h~tJXvIweF%n&hcR$-$cy4 zK>NM8*f%Gcf0W1lXcJ)jc;l(sk=geK=*!g+rs)w5MzIX-!5^Sqfnf(J8PFYr%HYNH zl^SQYQ%9+78_Sno};4v3tq!+*tu zvZmSUBI+|&M^-Vq87Zrp$NzYu^3mby%QATvA>QNHH`VvGAX$3l_#bu8ACULD@t%JA zk~V)=lK%+q-rgJ3SJnO1&@EW&o6L|X1QM>tq73ZYEJ?#2#CeeWgiM%6Q6>qp$nRlZ zt_HGfs-wtnBFtSZ=X+tL?hi!L7=K)w6{^ppyH+|)mrk0r;yEH*w#l}{hMHt7+gTTt zJW=`@JDpSH$N}-6!9L@^hS|+?*o&@tj;rhQgxRUDFntH=cb3YpcHc03zWKCFxHD-UZlUH zFMYQ7hRf~p`M{GySsY|BNQ&k-!omq~yJ57M1dBU#-{t6fbo`Yp2-{=B!C-0Z#DmK0 z)egx8ZreJxh#_LN$ms)rRDWH2$g^dVZfQfR(fLZ;Ok6BO!quf*`w_^I)W~bb)^_3! z#;!;ww@KV1Qov$uo5e4+B6zoVMdNYt)Pw+%IuMq?9)O}WxO<-4*YPGD+_`1RD2L%N z#=~A55#K30uNt)4a@BJ6UMme@Gn><>CQiaFWFh2Kvt%qqF3obC@qZlXj&}n-+|3GS zixCH5kynzx-=EN-jN=V@IWA{SOw8}%itAeB1o_EKUi-m6T;|^`Uh#Opd|Kim{R{gb z>3~n+!ir;3!2N^JiJ)!TC2)(wXp}}d_l1^oIPK<(teu~^;dwXXL$^)Fp(G5Wp`@U6 zqD+*5t@Fz8XrKjIdw&^!qAmR7v1PED*5*+a*p;=;&bXwm`6FY;TnrS;+vtE_*uB7m z6~9x&?8)E*kK5H#DKpe_EqHX&Lp__qSO;WG6o_0Y7xb;T&7e5W(3nTQSU%cyTvlr3 zmvdK|s3x`uR-HE;8hvk=GuD!#MearuV!@x=P86cyVb$@us(FfY`)Kt6B6dMD^6UwD}&`T5%OZuEi5`PJs;f_t=HVYa;*9NgAOh5*= zQ4*3T^sDTV98c){Ao$CJB%;D%qxz7o3zGxo_Qn6#Q3k=zN~jj`WM>T<|6<3uGoCMu zVG&LpH-9{v(_-WvS@U8~!?9KK;hfB#SD^lP{;lolZtepd@0$~6l4gIH4O~?WVm*g} zRTwon$|G=;C2SV-PYiJOFW8*r)Lyv9wE~Q#c?rEVLWxSa!O=;6Ww12|z6Xy?|i$1;2r@YY}x3bNC>E!C0 zxd(3j=O?0<>Qfyc25?CZ5qf$+5zjnsvR*N+8&fY8 zf4H59?#97V4Av-gWYEaL5qCR%YUxEaZGR?VG~&1C)za8J-0EwEuW$W>A2P1JrR(E+ z?Nc=>*8w8cq)k|cKzBlNu1T@*7Yj*V+hi>a;tE)B&==X<$~hLpJ>soTbQIqYixybId@zap%Km}Kz}dX zj=uL#{yaKnqdcF`H(pMLy-0(9qclG+sz zKMh&(lE|&NvEMX?oQ_EuLDn`zcL<(ev=UuO27O%EdFi5$^*2xZ27iWs^?KAkJ7wm_ zN4)kw|Ml$`|NB=Ks&6b`@%wuFY0+X>99(Y;qcI${Z3(&l|f^nWH#eYp1@~Z8`K{^rN@0Xy<0K7oRE7fA64MEW z)GGr5t?dBQT7T8zc*DSiyr+!`MksP+GP$foG2t=B&^SIvwcTOR9WBy@QgWgA2c&u3{u*#o2`knfztqH-pt)r(}s5Fo zmryu4nnQH@C!SB$@WPSEW~&8muKD!$>D}=2KNb0DPV9-rxexwMJanI}ZN^751b~X8 z>y%wdTz`Nsgh&#iM#Iz@ivdrBHVojw2nTmr}I+up%YCiHVDZV(fd-}kO@DM@SrS6R9)J`2rb8+pQn_|6R^IcCh zh+a(jwS51U8v3a6a|;MR8N9_memsx990yYT%YSj;$G;q>z8r^r;>&UP@5^zbs*U>P z_}BBmP5gQM-}U(CxQG4edTLF2TUM=+IvQe|I~2nJC}u%GXc$#vRhET26W9gHp+S0y z;*1Ft3qW>XuP!!1yUK}F=l%WIKCfKVV+YYO?F=@-))g5k?2iW{1r-hhrlXZRwvUZx zJAWp$a>`pKLv^%guqj4~BUVlpe(saha-DsXV{C?r{U^^{4*<%4{g0*-%BOAc-|cPi zqdCOWhrec3jO`B1?A>tFScgI}K5CWz5* zU)wy^s%rpneeD!{k#G0IK1lc3ZWp(DS$`9dH<#N6Vi%;_K#@^8{NH9dh~L0FasZ06 zfsCYZU*OU(WNQ(PVdA^MN(*{f*)7AF7y>78pK)u+N zw*?WPff_VWRyfI2pebqti%D55Fbm+^z5!z<^s0YU_Wg@|q@+9z=9x9T^v@E~5w_)N z$$~)WY-SV2x8j3Yme^%rlB?xVP}JhGjzCej(>G%G=q#riXY%oi&H@7e#(#_bE{n0= zFz(Rl-36#DTqh41p?}*=ekU{N)3mjHU&dPbK_+fEm<_sdSg{s?ld!uJuqVLkG%=ts zOx(n&D&OPHHecY$_Mq#h0%K#dkZjMzeGOU9)>AwflwEOITtjS|1zOL;sFhF-4hf&* z$VK!fr7{!+SJ*r1xXgF-9)Gvy#$-~O>d#7P-^QzsZ>yld910q8i0N(M;%N@{S|G9B6@xju`#FouQC1ZUcDJ}j z{r) z3tDo7_v`r6LU}2m`Sk4jzmHPe|N2*UNWy%7z+1t_$0hijANSGL?b}cMa}oL5=^q#E z^Ls51+r+`2ws9SY-NpiGGe}H;%Cjqc4<|XGJPC%g*muR?ki)98Lvuo(JLAFH)m=AH zhUb2-fA!TxG4C9^j(@mzGbPxM7gtL(X$_r*!{ZF$MQSl6`Hn4~h4A1BU4s_T&Cv0E z<<8|LaPjo)kL}q_t%~Y5f7+6Nm>%&wXKkYPKy8;>n-Ci|V%RWP*pdx^gyFHqf=G;V z43H?|EMT3uMR4{Th+#T(C1+`_az+#hyO@=`dCp%8Vv3>bEq_z;*a$~Dt88`@*&V%! zEqpd&5(FNCwT)VlJ!K3K-Zj(p#k zT%#>>l%)O=PJelX9LJQI$>vDR5YyB8ot?Q@5#`w1=IhDKAFOy*w+nvgZzm;nK6ZzD zDV7=`d~Fo3DIW7nnMth)8-v`B+I1^|GT?yBMM)jhgcN0g_d}AP%E3Tn;efmxRM#j* zzhMo^KGhR=n~8IN--`}pGLt)~cp5Lo^OgtZWUgWnHh+p};e1@osM99oEpa3rB&M|D zI8|wHG6>|ps3F;K<_;_wvx>#w#ThgW}wU;0?aQHsQ_kcQVdDO;NCdbfKK>*OQ zz$F3H7-&IYz}~T*&ge22Go5of;x0*H9n-|~r++v;pRL!fusnBXN$3vj**<3X*Ko=s z3prty>9W6CPnA7lXk9HEcGjEmNib=IT#m&gcRL?DTJx*@stk37oji17{~W0MV(ONm zp2pkY9hd|VO`3z}U|mz)0hAfI8;B@b$FVFOt!1olD2j2sQnLAGL7q|z;}QEvUG2dE z>3@wExPFYIfHkR0C+4_)0hAyj12dRgRHAQ!0n$HPXs&Z>b=MF3Cb}F@hu+G%;<$3d z)^8_XUE)^Y@-p_%&Gs>2ZLE)@wuT=h9w<$cph<4x2!uw_FyYIViNP4GrwO)_TH zHp#JIlcR}BD68wh5rJ-&wQ-cf-+w%zwR}iXhm9iZx_RBt$LDx^Jq^r(Yx!Ouxp*Xb z!4xex%vE!j4<&p>cM|gwjXFFg5vveA7t)yM`;#%R44oWbT@F3}-jDS5dz&RygQ2Zs z=J~jNkH5(?!T)Q;lOo$$`ybc`2o0=J8P$Q(w^rCZK zB$3BQo7pfwUsdB|o0G(#$GZ@7hX%UhiV7wn{o5jK1;bS*s!w}gRe#m~N6W4?A=sgH z^rxPxfyHdy;i_bZ${Lmh7+KXYk99cH0{oUXz^w*(+&hVX5>(WJD zO%lc!ZC0BTwc-XbHta-^u?!isv$OU7<#eX{7Aq~J&Ztit$6)8f z=Gh!IEDpEjr?Ho9t$!NAf6GL7l_^&>YzN;2=V%)xFyL(&ivoke24}!S!6YaLL`&=& zmFdXB6|FbvpHy$hjEu>}Ne3(v6yix4DAPc# zLv}hJCmEYt2#74hW0{g8y3<}UH|_0jJS-pc-Hp*8sgFlwm4Ey})0{(qW{J&txr_bb;wJgOUkuSa-Q0o21$qO6>}~2WaGe7Rr`Up`exn+j><`q)xSlsH`eX2wEHluW%lce6wn> ziQQwFlny0i4WP5U06LY-oEo(=@becS%5@`@5|~^tvOB4Wa~Nl-|&?6x7>y zGeSViqe`eWVxQ(mtUTVr)uyo5pFIGJnVkagpl5FCxPMjts2=R?Us_7ve@Sh#Z$Htl zO$V%!iPIE-ARNtMrco)JF_Z&z8O2#ZnP~|B-!?~+O2jSa*VRgAXVh#;(&O%ha8;Ae zoO!xa@Fm$*U0jKT6OC%gzKm%*UL28&J9k!Svh)zwm661noHoZZLYbCQ^1(M%ankCf z>dvH1{eQovBHe%gZ~vn?-@iVUQ+wUPm>+KP^|TLr))O=-m>fkq9D(V!p;IUektkyr z4yY|5a6nBIVp1Bzz;s`mE!A_q?;s1!+U%3*TG|QAEK+sMUAiLRQidza80fqs+1m=Z z#~1cRwp5BrgT=5E8TlIJR&4NNG**YsTu%k7lz;k7Pq}IZW`7JXG*30A_8XO9+cVa- zcpSE>#iBqqbMQp7Pz552+5$S3^bhcV{IbT{iX;lo4ZrGsLo>X{2{m{XNJA%Vp;;a{hE#Q>XY z>K2N=EnR&POzdp)63w2MJJdPwp&FGUMfr%j5Oinmi=?vcGd|9bF>*9Bhh>zJX9Vp? z8_GennNi|HdWE0QUB=m$!GYUvSLeS^kAFSP@wpE3LxK9P{nnkrPb1I0)g>dSLBC?(#xdPb$K3Xp-D6Z0N`Z+kcW}rsiB|&rfAp|9U#>})C5Y`s`ec5=IYFG z#v?EKY?mR+l}xSS*&1#6ZjTZT#JrBpSQ*ZNBp{ugISmX=F|ozzxbDu5p@T=gt$)5+ zpXZ82$BJMMN1M@+(Z}cD{nhzg`RhManW=66IQL4~@Xq|zdkwGosh0asZ;0nfpUq#3 zE9xm5VH8KvB*T$#0dO6jJsbnUEKqQ;d4fQjvPlY93&8ijHotF(r<``MkNKYMR!`KdSQ2y~He*sWpz=0GR`LbCs^?+R z98H4g(ZZ|L#y9TIFe~T5Rzl9au->Ti*|}I1pgZlHLaNw$<9?sMhRTGQZhzV0(9wE4 zD_h>Nu$PODnMg_2JGLMdG8%XL$5vw8=DC~Z&_%E4lIBUZ_-on?@!+Y{AU z;Hh_^CI>>M>Ea+CG2Zih^jZY^j$=F0@Y3lQI6p)jYK~;=r6cN+m006$n&i?oJRoA^ z>YfpIzuB#TKxkTpJkqHe!4-g8Ztcj00g#n1^&eUQ*h?AdmSyg5K7ZQrz?9GVZqJ{t zF4!lysT%s(&h|9t^TlcayGr>~`$M`z(=sQjY(c#V z{>_CuoCDz?7L(z4Pp-tx$}CCOTP(J8GThJhPOeQBpv=o>DG~6PV9b=#?1hsv!(4{r zh`wUVM4rr@3(a$*nSa2deRqBLhdzFCvxr}Wiq+7M(rh2|J=>$6s3B~0lzdZc3vpAa);=;jBeuyrqe%Oud)qjV#43OFh!1CXrTJN(} zcDTK4*JFh^p%O<`?Ke!&l-VX~Qa1R4HpW%$-GOUGA$Wab1#2}&`~97wACwG1k*JT1 zQ(`mrsr6`b^m0o>g-z-Ehux62r7lG*Hq%3(oX~5q+8F{n-u3c{#Sc1|moIVrC{1U& zY~5ExWL+xkv45i4-YA=XsJv;;QyRCW?Z62%;(g zp<_5W%QpAMA}5KnCPopID?yo#y}U1!1ilrPN>0r8Opi;A9h0R)Kn>;7I1Xk9;xI^d zduw)F@AB9;Rkh=Z)Ee^wB_l@6RZ7pk_MQ}|&jHvMuzx^Z+~f|%K6zTzXKsbM|G3t@ zkU)fd0}ZbrS5&5){ND zI7Sn1{01ajC%ZY%EEZ!dP`djIK^~MSR`YT)>h#ybWF3r^>4;4F<=!PPIg&YhKgK{| zFkcIVY8a0Gh3hpWXcVq(l@U0 zS|;-8S>mS}CX*}{ZuQWK1tyr&8Ul>m4u7&G<73;}UJy+rzX3*`ulenn`}bF6 z>&^F8|Cwj=GVR^st)a%)ja$QDERe7aX#&v-!7>9Z0dV^yDA@s5At}4cgMtUh8>zE; z>UXYZH&zArG}L?moe*ZS;?*w4DpcPfyF-gofxPc;?g zFf=jP<<{mrFlVxKv2gFuK{tugD^&>zCx0i8+9&hFZd=I8&iw(B&{}kl)`@>LofBVu zkXtv!zi+?CjFtHwM}L~Rnvw+7!a}P?JvKmgIFK+H3NA>M%nCf64T=&Ap2hE4Xp5t( zelVFRSH#n`oMoMH+_fW+f=GtA=$!DWe?H`JF?_6>u2(0$pJx|}*86%^SG#wywp`;>h-tjZGfMtwJ9((8rt!%)H?^5K_Q% z0jC`cG~5P=1|6d6d+Hc(3sEunfa~N_6K7@_+{DpL$hgf+av>I<&QiZ`^a`EzFI$B_ ztx?8VT?eDt4h~RtyQ94bJ<>}6*ndfLLipQUEAaV%NYVGvn90p}XVGFliTQ`^gn9cEe!e9X{$Pv3NrrJnDWN+H+JC#N!UMC%U3rP^H(SPb3qFA>uL}j(P#{jlvW~FZe;WL!2^H-b8#8?z zw$mywc<4El!J3vyRhtxJGpL1Qn2jBV@@h2Se_#J8ckRMx3suvVUH6wKYh_4lI_v z-|g$LJ__My{JF6+ZCnzRG@jR--{XU?J)FP_(Vwbg;>)w5ovHQLzkj29!SkFSSKvO- z>S4e^&<<1%xO(6&Q?PIe6xa`b$??o93|>crsr_FMh_Y0k-Kw`H(WNFbPIbhu!56NF3R-+@vlqg z{C;=*obL88VPn~wch{`x_Rv3ud_U&9S+hB4In=aHupl~T0ZX?y3T|*<$|wu9Sshdo zHEIbGC+l6|_st>qS1Y3z_ty(H!nLV*BvIwq<2PidU=3w8h<_A=6pzdO_QXX-JQ|X) zj*qlB(D$xo;0`jQyH_3^_`|X)(FQ1A3%iHz#I2gxT_R34s!^KVPQ`&fT|!Fo#RXfWF+qzXq?W8ij|Ccjj#dD1t8coMl|J* zL(YneNr%;YvVS@sZ7wmWyNpz|hBJB^6O1+O?g;-BDCZ<+dB@}pXFi=G`&rm=T;jdS zp7VNc_WE9&^gC+q|L`T1ZNL9SyDFz$MI9E1iQzHCk-DuD3~iC7NnnP_Fa(AHl4ZZE z#}H=dHc(fbv$szBv1u=CdMQXJY};i!e!c+J?doVRiGK|X%FvkW^{`|;AeLCf2nBk@ zw6bfmDZMEQwm&Yn4v3{@-3+}ys~_BVWwuY)^PLU<`(}GgSefW?RM%FxAqJ+yg3O}o zc?kqJ*aQ|Hh?c;KVQGVKEEK{IpzYu6e)@1NIR5eMUT2aAVX&2s{IEMCJ>fV-`O*!I ztv++h7YDc!ER-ew4@ zx0?PL_YBl#d7f=M(>?GcLAL_@#HXZf7-N2j=s%{ctok_m)68|tDZq3K2YoS0K;%}{ z9|TAg^iLEAPZ<-`EF?ILF!)Bmu1JVeZdN@_%71p`GC}0*5-^!01>Ul2Cua|-aX9v&5^9zhZ66e-WkZfU0GG~6loX!o8PRw>D|-%4|QnH22u zGSW(M1oqEnSlV)M0(3pN$%69(PYBAW3Z!u0JXh_|aOzDm?onSJ$N2Ul5nF7-BEy*m zs(+?&PjxSu8>hrdUa2Iq8;#usv7ge`aZ9qBP>Z>&AKUykC1z`Ox1-Jma`jwxvt`p@ zhkesv^N~pRlyzQ5STJ^Py7@5chXUbwfM^Z8E5q|6b>@AxwyEn$Zl#>Sj7s9ie!!ZK`!7E{qAo7Hbl4Wc_5`WD% zZu)-8+ubB7OT3iU%jx#yP#Fi zt{-&&`dV9RinmVQk7B*oSt|p+4AuAME#?DY&jH~lXEP+k!+$`Q85}%x zDG&>rjsth9!I z@oAp!sf0TTmY(OEzL84SxEJz>z-NcZwRB$|s=MzxguTlrtC|tod%fz2r5IaJMwims1)XWQkX6PL04 z%((i!0XcEb6dQqDJ=kZxEZ$wN(%>7H=DC$$Qy1gj(fFo60$B4FBA*5J29$O=d7oafh2G`B?G*&GE{axeM6E-(LO@Fc`gdRGGdsvHOS-pB3W2|k#@}$5ChX*x>+i#p7np!aK zl~$>8kYMK7+!yl2Fve#_IT8DLNm*kn(}12U>}h-e(e0u$brIo0XQhZr1EYhF_%g8h z*~A^iNw?3hq!as1k*KzDnfA?n6V2bKlIMX>G|A65)4PWL!;1AJH-9m+2@pPK5Clz8 zxI36FxgdzH)d%QdldP3Oo-O>|sP_{o-{0=F{@MloKU6OP zOWnM{-+?V2^EH>@c7Mwkc)!)jWfxr#0U780ENAw>^fAC zQQd9;!5<&wxH*tzE4uRC13{cN7dAjQ;n20jsE1jb&9o~a!;Z1v%;Whao(F>9&W*Bb&Kw61_+?Y8hyJT)UjK39sDA+R1hgb@y*O)NcGV1zA}CPD zI1FC3261TH0kgb0bL;9Ap5$e8S5=rnZ{2s}z?lSE^jtF&h`-hY%9lAXm~4X9H8d*5Jygm zPz(8{T*(8o@i1F$8t{L}+&<3;m?|+cQnx?XQ90*^AT4lQ)>;#4zS@M*ChnR8 zcXM5dqQEF&KXY;7EU5$_?iX`Q-FtcDuz4hzegbgkevZGxFn%#{ZJ|%2Exr*{c{VAt0(P-xN z_G)I!QG$&%TkB=Pi3io?c!I6WBkCL6S=JYYqH!|DsPUFwkM)Iln4C%{zTHZX-`!Na z`m~AuFb;am_iU6$b5eo^%n|lc%mK!gB7ZH4;V_Gaz14)93gllj2ykc%d*i?(OZDth zJ~GP*fgTI;=zJzdQid%g)iZ29H@zV)@0J)jMQ~nNT#5crI~6_ZprH~XDDG)$6I2z>^=(B}rcH(_@hc{3iJdhbJK=vDcHmBg$0eEZD`7k@t6 z`l&V5{R343Vj|uCw@^RFbtQxdqGX`h_bsJO+G-lGE*tJLp#Z3&rdeAbU96W!&UM$(fQT@xz z-tGeP%5PFe?GB3ZhH>pE>Q1fFj(@hZlW;nl?lRI6eS}=j>rRSKB(?*0REItCONT{= zK$a$*StQ$bI3(5Y7fXE_E$MzWzQ3nr-L5eGH_WWwy=13g!x{f8Yso~CTB z!{fNs>BFQc3&PBNZAowyVj${p-MJqa02S0!`4O@RBmBoV{xej^*27fKXi*V|D zF4Lds*J$f5n9I!Kcd>#8z2zKLdL1nqoJQ%&J?hM?@QXkjDmLHolfA1rrm#wgslTi= z>78#p#j12Lz@#_W7J}@mWcS(44q=|vg@v06*zFtog%Ws@0DzM6k+Jt1lwoVa+UAd} zy$2P@g8#)b1YmABK~NaOIe!kgVYCC3KLq5c1*E@j0OIkr#TRB5&(eIf8geEml&8Xa zx;o%-BD)g?^@C2*8F|-Bfv>lK_FmEp&r^7>?`h$JPp`~sZE=yr3^Y4CZM9yvIFaUF z`=+jV)gb=9UMs8%`>yYJes5Ze{bQ%So~kn8twrgF+wRb`Wte~n>3`swRSGDZBvH1i zTnjXp4!T+rI7IFZlA&woQKUmSLt}el?m25_F7rZs7zJCBaBYFxYW9MWFA_3Bjw|x$ z#L7v#gh^RU_M64POgu^g#(FQLD}Oo@a)BnNhr45vxbM4Z{p{Rfrs~w;pV}pB&fL;D zf^itoi`Y2k*Z?V3{eQ9mu_Y+L$H9RISC%%JHxkXRkA->KJ*=iZyT_R$ggG$@zC^D_ z3eEdVPZJg+L%+Hfm2!zU#D<70?&iioT#fT!bsW!66D>Y3m(!@Q&&R=O#zd?5e&&s& z`qPQu`Ov?A;aEq+FoS7c@!6D0;u{c2@Dh(&deiR*3S~aTB-R0T%>s8FXK381 zq|79QbsP(5DSxL|Qoyh6GFbGf7|Ydic$q|eG7WeW3xpsBJWr?lS}!!aV|R?N^%dV` zHv9xrCa|yX`Rn+kN~yAQ`k1AQ2r^v{WcK2YjYP=Io9kJymG+_5d*lB&-{UqJSmO4o zmE}?8f7`%@S&jt)3NQo&atsMH87KfzID5y2y@Gz134i4atev_0c;>jHt!1l`uE!%M zrF(%@MwdJl1hc^7l~8J@(cl{J77}+=e!E>>?eLsU!O;cL?M*%ekA(1;vyG`K?GUkvk3Oq<+gXwI1N3;S-BsvD!-RxR`dG7 zC71mzaFjHCWF3j*a{`(8#v$#8Kmv9rF`04)oN3BAzRz8_&sLe^_OiA@BWr<$2Gk^pQVz|KI9vCIGAs&~ zoqu6j0CECiQ_HBnwn8z^336~MrE+rd7w9oHrR%o0D)$Fw1F%aT&`UqwII6u!=4Y4l z4#hG>5NocF=If;*CuDYEkgJ8$>l3xLR~yaE_QCrb9e%lgstfLa)ShpLV>K=N@lI7X z_T!zGLibOkXMKadQl3q`crCyDA`kQpUk8VYIxPBqaFaLTGJop#tA+LYH}zs`a!c<~ z{GHu+dGB{h?7U3+vEDyMTKW&5I@l_IkpO`!=!11oEEyPPu?B&nx2G^-G7X=2E4s*nlOGHBuCXyyE6NOJ~G1qEC#%2J8%A>EBva*1N}u)n5?}xophJTK>F;&OY_S*$QTKrkeE*5nv zxz2Q+%}9Pl7~`d!`b$il1+y*69HRm2#7o>WFAJ^1rjxPxjqu(J1N+6|_1N=8MxWlQ zl7Z5%-l=zy`*!l9BEgSPzExxT3Bo!bT=Q@%Z}>ZLe0xT?j_t!%Bo9}MCQO|LZ5GLL z9O(cv41Zc)8f7`~OF0?^(Iu{vZ+!3}-P!H~Q*#l2(ob~XH`cjeV==m<4s*3Y{GRSg zU3|?;Yw)v$JXO(6ho1yTPF=Gnm+}H!(aO@Y`g_6QuVpe9nAt5hsekYd`F&v-@14|s zW{VFa)PLS+vmgWkK@mkdR0S4cv;}Ap1R)&A)qkp9UPRTL7Z`)D&tAAptlc)oX6vzR zOo-r&nsJ&6;aXB~ni0LEpN}+byYnvnRikN`I9q8g02(J98(bO&RuABx z7JmkEXq*Iz0sBVDR&@1&-k)(Ky*H#tprYwUT6PK*KV)=(_A+9mo;N+Ln|EU^Oy`9l z4T%MF?gs}}oSq<3R}N@?U>MJ4=I4EQ?P#3(jf9|`H}rB3eoCfkBADuwqw=qR8vi!a z+)NlXRLiYxI0c?C7?A+vL)QsludCL?D1QYK01E^9-zHGqpt(2qnn$i8q`yq*&Q8-CgVh(ODFj zu@}3$a#Q%y6uWq0y4Yz8eJor?z(5{^xR~>D!C>kvg}?}tk9M*@#o=BF{FLewyZf2f zok#09GWi{KS9`|F60O6QvWu}To4`T84y>$Y7;SO$ZR^*fYI4D9A@w)T1c2%OJo18Hw#^=}q?~H_l z(MvEEapm)IN@-j#cD`xQru(*MHg%hbZ{w1?4_=@3UmyefpyQY za|j*PDT~B0xQF1b0xJ?I!GE9(Syhd-Q4j_I+HAcM#%hD(5wYZ*T%y_q_4d=*bjixO z9tV4deaYF#Q86amX#H#~)>oT0t#5Ke=TuEfrpz z#xFYwygpW1#UEch`7a(u_rRj1;vkK^90t9Xih0Q6pHh3G4a;2zyZ@ScP2&IF{f0_dL&Q z?@{*5-a=(Yr6eJ%ND&PyBPB&4X=zD0S<#S^LgYn5k|sq|Dj7*-B-(vL|MQIZ<*DCw z{kyLB_dDNnf9`SabDw>`FJqC2U1|KE*2O#38H!w6@L=}5aSrYdgsJ07FK+{ zT|euUrs|0Ich5aF>lVJ!R4SCo0YFnQk$Ba!%IFOr^sPyW3Kq8Zlo28{w7A;e$6G={4nC zThbTr9B1P-?a7gmuJS}xs}<+JUftXADm%|=?)5tkS>B*zmsL!Ot}*khnZ)6}@-s9w zik%*LuP{BPXSd;U4sW!2xSir>@BE-8_x46DUSm@F=y=x%|8~)%pYxx$bBJaw4}4g= zyu@U`(x>Jl&v)I*<$c1q%Qb$#MWSj?^k{wZxt{!O>Owva9m$WZ)`{saU7BC#x##qy zfE!QVv}pY0)b!yI(t{}@p_Eg9e<>5iU1_2>W9|=xgQJq+Qd!oi$m?bb-G>w z2X$W_4dtDe;q-n^iUeQN?K{i%IF|J~Nx9Tm-#erCI(fTJ#WSV1weo*#=RUOX+-J8Y zW1Z_^{&cI8>eE!cIzuii{L(j=F>0~Ny;*4ScQ5e;?y|8e(F3yWmLGO)(dk@RisakW z`;|@ysF;RQ)dSs(lM-7_YxcE;t zPw%!e`CmuK-U7Z;5d&~D3*k;{8WjZBl#o2KKQl*HkchJ1Rmq%3v+QA4{fBaJ z*yCMgc*Pl6j}Um~O#~UFiX|B0f(YRu5I>c9h6zWY2Le)S5H-;B1QP-uF@z6v6k+0E zB_~o#jJhi>mqNh>X+(#x1bA^FE(HIw`-Nc&P-7MfN~Iw`ZYNGv0i4{(l=#;j-w#jC z4xM{k#k>9CO8;xoD_*r9Zl7M^TXW&*sQ|ur%Dmiaq`tpCf0;32>(t^>pMoGzeM6*Te*`IJ@$Sp67?T3ujy~4e&db9h?*Lso{#j z;oR$C!zppcyxwwGy5093yM0;dO~!}#+MuKt`+|2gzpNF@ShU>n%2Uo6fzk>C^5qVX z1i9b7&8{k*zAE&ftD@QSvq#SJx1U-NVwkzijVbHcW4*m~`r<2TsgWB$WZZG(9O}`m z+Tg~GjC z-}tw$=UI5|*;f7?#dp`gJg3BGUDVrr@O{wNBYjgYs@9*q-+HaWF|h(oxhi&wq4Q;7 z(dUssONTdRjpNUn2UB}{5`*4HjRpE#nJ;8obi;`!k}Bqb6G63^PCO3j+7@4s0T zehYrvr$6Bdg4XkW=3AIB7wjoEpnJ8$%5lqM=u5!dA&l6NArIi6w-_SFL8T}XM7c~& z0y)i#4}%SNZBj%)vjmb5|2oX#%rWzF;WLRM?t_;X$v8eY^>x^<{(V4FbEDzn0B@m# zqYu9SzQ>!p<@c^5N9qe3+s>qRa9veD-f>Js?RbjtfR{Cl*@c#O+g@AFu=rZOZ8*AT z!?>#B^?8aiAsf_qu#vCs1J&Pi@`p{IT$hyTyciypv=LisId(~L|C6YKcm+SlbBA1K z$EvT^3C`}3v69()zs>%N*Qz_|o?e>T+;$OeXHviMOuLX{8mM{G*wc;&{`6V$=P8>4 zg45-?jHmwU%2eyi@L*n7EaF(XmB}eq?D)U=Qr(5jmBct?sc8&mE?4G zUOGJBIlg!6g=pWd4fS^AW7CF2ME$?>(%p$qKs|)((lSR4fS(K;;kjj)AhS~&k)a$} zAdT!Iy=x?cSTh81pYGI%1Zi+;I1D125OthS3p`XnrlPHTL5~8m*)P)k^(lKvt!dM|*d`~E zuOC+Vj`L_<>NZm~kl9!h$**!S+E4JQ{A16z)>Gnde%aCYHfix?pYumM(q@JqTGlD3 z9gteUXYFzz*V?xzf5^8;CqAZTCdk%AeiO!kEG=Z1H0zKy5=?c)m@bk{R_5p-5g4&9 z6oqG1g~P762$%3catXIFLcEY1kZFWO_!wM@I{3VMOgE`jvi@j9c>YfRZN6okO6t>3 zMBERsw^fmKa4czS;eL=XkbO9$R$BPkJel2pJS_|l1=m%F>F;#@(NWjK`StvTW41&5 zF=wNFJH4~!MSIJx(C-M^4AxFZvWY29TKPj|8tjBC96;0_E)@ndVIWx=vwGp9F|v|s zg7XYyAK8T0GZ0a77jimiTHr6p{T4RE1vLAi`oQ-ZrU)F(5ME*{IPX*HXW`V@euDU% zcka|VvAr(Kzum5{B=>?-Z+8Y{nlNs2Du%-EI-8XB-*3^8c@%wDU(zGQlGEI%^+)WU zBbrZC7hjIK^y6pY9<#5bBVB!ieBaKkkFrtpzHC=4jpI7sm^h^h5u5S|PK+*bO+4A6X-35n=#vTF3naaW=^M_>ek7f#gp~W4jLr z_&Ho{@pH;M8m3dU=1hLUN}uI|L1GWv`YXnNo2khP%I}wtYntmkenPcFPTnQ5{K=-N z2HL&%T28DoTR!*jo6+y;`>HkOoVL4Lux`PE*z}~I+Ka1f-|I}@GELel<*Vz!t7lJ+ z-E(%T_-T9TdzI~X-2>@PoptdaB3%w%{fx|4xqkUu51-0PuIA zd@|CVUjCC;)NEi@ZskMW%gX}hs2mSt%)KOY=+3m=hsIxas4+eK`V5(E?hZFX(!y$= zNy~Ty?#Mhd`}WIAZtv&6k_cS8iMKN_YE8n*+i73JM{FO;2`pQilODS#K48x}FXWqR zmhLKLy9%VQvsn7@MG-B()aoaqv$iu;#|GxT&*R^5dH2?X$ntZieF{o;Fm$EVeU6_C z^gmv?T-W8=kWOi%u4(lw8E?hlvr#!=y5b-$W!>g3f6X5Sm~0uEI>&F{H zlpZ)fXnwJjch}C2rE7eA+>duT2nvoossDIdwO>7U=2%P5r_!C7*6yvrA72(KSS=s1 zFxcF(rQ?x>_qorlv8wkx#%f}3jD;37ZXCVv^CS0Po>p9dyd^vh;M4(k$cqskrnNnL zI|To};a;*MzB?d*oJ5xIo%ebR90KRzJm^BqgG|Vlg`njXV1+XxN#bLi5n+s!oZ^af zk(J?Yh&MT+n2jEY1GTG=U5acY>DfyWb8=x|Xq_`}6hV>ffPf({rPUH%o=XiuKfES)OkbkoH{_F2CDG)F_W#7SEIELy89 ztbe6&SK+f;>Infl(|=BnR*Vn6Df#_&QpoiR;hdyUkRJ7>had+H+cg~$_Lii+DTuNmcMXDDY?Sh zQ>#*BJ!1LcJN&DdeX@^~PkCHLmG|5A>zBw6c}A!6uNY6<+8ff{yn0^p?RcjS1K-Bw zGD#jxAAQxBTHCY6;SI~JcDn5xRF$)cmFrNu?Pu%u%l%>b9=|T*iu}i3RojZ*3%|_R zXtri}pnXN^(9H{8u~UY^64Kt^DZDFsy|iC?v(8w*u?NqMrM|BcotbG?xs{fcmc!{n z<@)V$iwZyN=FU&v_913d#Md8!E`qdc4IuA}q>({V?u*Q%rsYqokiEp@uyTh>RR&1( zN7luEQ#=)y0Qc-cXNC*4n+t=roqXihi95<$Tz+mdeq!;$lX~TXM+_7i8(v;58@ZLa zR77fZ{Z_e0XG-p5h`kuyUeCjq)?EKVg~$Jtsb6W%vYsr}?Qg5Mq624|_rBo~>Isw_ zFgfELxg4=xwzBSO>A*Z}W!b}7=C@N9;H6Lvs&GDh{>6k_F3@fn{~Td+O9Vx7!2-R04fXMpz;UL`ES)fd%H_; zbG+Je%>QglRqOO*)a0_@_4hHYCu39c-D6KR!XGm1^f5TGgKN?2BJBfS$h6aGx)*s) zrmK4iIptkUSny+uYG|9{AH{*EcLU&i=oT^sn3 z^nT3qj$fJdQU^}kjR`^Ta^!wRG>YsKZ|Zo%C$_dEZ=rRIcCo+I&i5B@nC+9vk@G&E ziBuU5_sQ;*nEqYvzXgZ-*3TJFQ4IJrbI0_vWB%J7_1#-GYu9^Um9stzle7EZEV=rr z20m+g$o{E|zy4;MRGcwdy={`~*EmgE#(cRJS%ol&;_N`Afhr0IBN!rx*BbrsvCx8Z z;0mA^g3OFx?_%W)F9=`je1qRd3i7VqVXkacve9pWlG!8E(*A7c@A)3*9)!OSb$yOy zjSX#Uzxr@Pskg^Du5-~B`t3~1YcC1i3@uqM%;&+4DJ>P=8-ptDue-PH67yU1uGpCz zyvA>=jFVrlo#uHZ(zq6@@@xCGP!sU*-V;}|Temj0c7A;LB5~<&0d65P=hY+utH+NN z)3zM7d-~1b6ek*rTuF4<*{;2p)9k2vJwZufda` z&?4Tk3w23-`(pAYPRkz-gG(00d*xB)8pdjw?G)LF61J#GJmMAfvJ(|0+Ao9)* zjSD{y_KL50E6_N11(Nvu?Xk6cg`_>(4tV|=Rcs9$lDTkWg^@+y=(7=5cXh2(t;11O zmHLu36ETkaac!AL(;eu?+nhit1kqvM3q@X0&MpW;{$mhb0P>@dcCs^)HzMYUD9(9B zHB~GFZqWzf#~jo~BZleGNC}B5k4E^Z%cr`{$OtbvA66zJSNO~a+ySqWFXm;sMIVZnOdo3a*`2-VpEtu&La`joE=ic+6_2g zM0Oy=(XvRn<5VMbR~-;8g(t!Kr=rxHzgU2s0E@s&+#DM}M^+*IIc+(w3 zhiv1gLH}n8kWUIERzcqw)+2J@<{fx?b7{wfnVk0!1B!dr10T25n@12as`&mh^f<{@@)d3q$l`)uh%YBuEF4EHNeNf_Q7x)Lk_^<0w5R^% z<4fCMckY)0$_&(pSO$4_Dx)S;QGOb_nkpu%qRXgaw;H;GDz4K&H<3lqrHOtZ9n+wN zVkj{LcSIQ|?uRYi2g2lr7I@3fK&7hc@^-$`DlsRgEo?;MZVZqQXp1Clh3wS{H zYW%wO2WAYyzreGws404$>aiO$(T$Xl8D{89(kI3_6MUOu zZnr?|DW5E`MaQY)!Ubq9C1lVZ733j}A9F#kQMK1y(S?*kJ`eOVReRGDH6&Ztva|m5 zHrP5F@c0@^++ArA@y_(~V)?aVIXaKxv-d%bsN%L2s5&LMz!#M!&9B=3Trv|%Gh+Y) z31~iX2{VK+^VR5Y zs`zXz`kg8^1)_V%Vu4REN?G9-in>$u%JpatRqGXj%2TylBhmR(?d>QuimJ8PggQ~h z1JS4s1-KT2+EQVM#Gy+mfX_B`FIC%@fHqRt>Lm0VIn!IX?$5#RBvW9k+(B~`ssV;$ zP*sr2&k$fr?nQH`NvCojDo9RG%=`OMU#h5k2<4+DE%Q{Anv^?I(VgVFKz6Ta z8j4XCNgYMMQbmz;RFbkt=Qx^#5|Jn%w_|A^oKRjN;1Iyn0KAuz0twlu4pTJ?6{R@M zvQgI4jn)a&mulhulc)v-V4gyEQle+)qk2?r#94F~Rr}vL^Z`|SuMqX8iuy(9I8`*f zgsvo42|nIcDLT+c-Ee$R?|mgwjKxf$Qq+_JFSyJO>i#lRh_Yw2f<1K3SE15W?VW3= zA7zAg4JuC6+TKFtsM=Mx(LhRWV?FwYG@@GY(^O?>fDK%db3m;xG7a~PI4DtM%m9~! z85&Ht`{*o6!l8$#3?<=W1Ina|fsfEpR zk)`5R^e$0iZheX_qq_asbCg1he(iQkHPKvIW1tv>dGW`K9+q1--uF(ycLr;7`wOyY%-yn{YMd_3I6;rL%}*f@y? zzdf-5a(whJ#WE=&d%Uq}l#t>T81+KURP=-Lh{=80w&ePYP@X+V^~PeE_X4mR6z9IR z*dWEZH5g-Ud@|Q#mQ?M_2yB$XzKp^&N&EhY%xc*HsLRIz9urbHE+4#2h%t(ZOax+p%LT*y|$ zredGT+5KqyJ@?I!fPjMlON@`w4~_~C%W+@qEMqHmBkQLk&-)pDFS4fSNy>_U$Y-X? zM`n#F8DG6(Z+~;Xst3P%>k)~v^=heSR+R=Viro8OKy?}apHpRJ54Uq1DQD(vvtHZr zW7}H3hl@&=S)S(Gx6dz5ZE9!dwrqyj!P))^Xs71!as633)lRl{-T6gdbgbi_d>UN- zTFv}$=6##}o84{i72FKDXD0V$e8e&Y3bu&eII8xHF%XcOEoB?z@O zept;8Y0nHZse?5$w!J;y(3^21HYi7tGs}^WN2_kiZ9eCHWve@NZ>t`gd#bZR@!HHe z#kS2=78iMK{`^os+G=OK=I4$+)tGE?n{hJ{<p6O?q^n-{dkjAA<;gxA#8l-9_GWm2n-v^xZHt4hFZgJ* z!tvvY1dD`@pQa2ma{~n)-SBrGt@01;ZcOcnS6{GVz@+lk2|w(L$&L=Z8Ki&%@h1{+Q}x{HqPnfW6U^s(=A>j z?$=%+zwb6F1b1gUeqT0)u_b)Hq`g;lTCC{YLt5}}rG8Dc6MtSA`Q=mfcvj2TM9Jgk zC+d6iMc(*M90u_>JZ3V$hbM9RD9XeV$dX|eMn0W^?kvodA%vezWU{f@#NY-iva#u8 zDJ>f_CQA>pu|;G_I)_yX%)#u*y7C;%oh%8Qz}Ata%_p$+Wa+~RY!z8roQtg{OILES z5VEA2$D;1d!+eOrHaxE0un{h)>ELr7OR&R9Oa@I>N=uc{0*6jwQA(z) z(-XYcOdm8q6dDT!306x8BBJuxd_FKa+0*07hw>s zyGS`~BDIKv!-*zq7Z)2(#z^kH#6o7T#jO zG#gXWnogYdi5F*~XfVG<5ZDy5f=i$R0^0fL05Zgg_B+aSkE=lgrooR7&5(J5Y^E7N zuLKjANY$||!KR`;6LdomE`)G_zKfUuA(WlZ0{hsHCe%$B7it2o3M2X;6JZDtF)?|> z*wXNMAfgm=A%spI>2%N$QCz4k5H6=Cg^!o@weSWh!_Qipyg%ZkexWId{`6J;5fLHl z{vJ_8W(_nP-{jDl&q}bFO~4{{m=nQoJ{6}avy)Azz9WW!vLu}*NLWgCpmI6vpB>U{ zfB`sA&Wh+9oF*W{rdfhV=P=S^>{Jyv$J0a23D{o2RuCRzCy_uGSkm0EScw$M$}16` zG-`>6u~4Q1NRx@q!c$KEcf_0qsTI^Jm(GNy&rxLyAyQN35mw=8D810XDR9Q7N1UVv z9j^xXD={(3PnA$$v=#+0LL@+k7BboFR2&ejO$SW&H2hU-xESfO0dqmP9t>Ko`&7_& zYTmBEcf89aIXE`aycMH2iAh)=9_sLZAcg~;rvj|2;cyro>r#S*RFL43wTdY7bzXfSe zCTL_35`jTW5}-97Ixtczv7YiI2CTCw_R6 z^t^gZ>z_@L>-idqhft&{OcVE@iH%vxW}8F!4$pm1hi=J&n;d%@v;rV^u%+be<8ue9 zoZ|zQJit`QYaN%nm?h}DLxti*I>X;{$H-qyPDHy`2pv$7gW6=^hrZeVZzZXu>n^sC z)U9_9>Q41#SI?Z-p-mR!Ml-%)6^>U2CH^pnaoT;#OycDp`b7>-y>z^nKO1iV3gMJU z>aM;IM@#^4d4M?p#Rr%e;WFYS8A|yAM-2S^ib?@g0^Cmm)(<4j0jIkj_Xb*akBv;2JD+K0cBi9*bUb=hoS9wK0bYep?!Q3 zzPJe!Ch%2-{Jr?$sTqE3;Ai5WLQ-~c|s5@1!v)7Tmv}g!dJgdtuVZZ_9{Jr?*DRvO;h@3+Mqqe(nLPYCD|6YV0@tK z38qep;i;OaBhkbC$H3LKyStS4X+KuGoU@tKa#6nL!A zhsynOT&gyRd5%dd;-e~FX}fO&gk}9Rs)9htbBx?V+V?f+dBXYN0=#Rd&+mIG@K$Mn z&T&KXNGei5hCdgh>}7FCZ%N8rwtipy>t1PXsr$#@J`U3MJr3~RxEN;=IaDv4zS%)*#L_bXQGf?q*_+wRf<ZXxpa$fr9&mCWHrsyk^-N`x-*+o=k!=pTMoP zQZwa&+d><9KR_!QU|IxyW5(OUW@3O@9hemnWHT!l7;S`Z!tclElTpA^cIfhh`%mE( z&9W0J!NX0JvvpJ*GO5Ck#e|Px$>V~|0@Nct_zz&Lfdg@<*UD;Hr=eD8{7>6=R4^DGcepu zc{TkFq;quB>5{-;3PS`O=!PxN?q&Hu6^Cx_`5XG}4NI3|4+MDhk^uNMJ0o`1f;_m< z!xHldN0q&sgtB~#%^~8*rTa+L9q38{7)Jp#=f3zb2|xT6Bk$Opx1HQj2XXj!_d;lR zrG63*lNXkeo+|2vYC{Lu)kIE%7NK^v;oFF7kbMIbvxX+-?jT#OF>v_^qwV24Ry$t3 zg95pR*Z@axZU~tIEV&uvoyIf&=5t@5G`un4G^yIdY$g}*Ym_>n3#E2!OoX_%@UxkQ zF9fz9F!IYM;Nb_T_2y@`03%@5hmoW3!WPrLobY%*ssx|IXae?r#qrc6=hu(T_-7@1 zSS{i62=b0i`CGZtFFLOs;W9DNFE7qPcj-W$tu$Rp<7~Xgzk7ov1JL|B4$wUg7c%0T zbV>-i6bufqygG^lhA|wV0TM%CpeekfbbvG%7-elX5hsQJ71bjaC-QGg%M5u5!IEU2LTxpe|z((!6Zd_KBy$n z`pMe7SpI|!i8Y}EMDb)HX+o;u9L|;FP~|MxM?N&wVCEzyV)vvp3kC_kzaTjC1se_q zK%)_Oexx5;h0W-kV!(G4n@T#i;}^8&qd6Twc0aM1IvW)dc?3#aE6c&*O0!1^B>so3 zB0!s03NcNg>c!CK^vf?5fc&QJI4WZ5D{|nL%w75K5UIDHq~2;FIt9pnry6B<@A}T! zQ1V=Y~*Jdre}MqoRR zB@mz@UJtt`kXQ)gfWFOp0lLOn&zg(=z}{2#!Bs5*|Cx|;1{b*ZhqY(v#sQuyNPx?G zxLXqOL%EOnGRRYn<*}rMEU0BVY{P1rDG9!G9{zvcBqwse{=SOO0WfK76B%EH2m{Ww z{upH zp=_EGd4!2zFnE9fCxbeiC~`tn>Uuhg8|>j^P30GG!1Rc}0TNsc^7}%-fC~cLBL4;) z=VB<3hE(H#oTy0vIc^5Eopt1fG>J_(Z7#kelmd0!4A%Y?r>%`9X&uqb(!|T2-Z}`mqM~I72sh8Mwk3~$%OKgRL@!6XO@k5g+n!9J072uJe-FD#{G z{>={a5Ea0%C^f3m#h_tg*>sTo1RY$&0qBWIfQS?5N@Ch3n-(Ds0c%c@fZVg_EF!Tq z{S+#cF2NeQA`%dD_|(4`0dPVBMhbBSRgHtB^4TDFFfPuZvH(_0fwYBZ*)%^;$QI5w z71CPHku;dvr~~4a7_uPzJlr3%A5jA}LUdn2e>6ZRucvwFB&eOrh$Bs~m4u?WizbQM zcL@~$m49GndT#n;j~{n$YUzfu9>5L@pvmLCG>P3oib0-NXjzyvd`Jl!Pu+|NN<%A@ zF0-p0z|G50_w^ChKC=`D)Rlo%G7NuUAj2SUo+ITS?$Cqd+7aIS_|sH8g%7WcNMcz# z(SECN7X;PAdxI@B&<-#x1AlOp=!!U5s37+muD~1UUq__@zZ|PCW#u3ZtC>VAlw(c4 z*KwN6Eu3Z#7AY{MfJS*ZJL4vjaT;~Cw-0KqhMuDzKFx2_naGSDZvLeq3!$|uVUyx% z)}F0rE7ZU@1N(?u`_SUoOxD%k=F>r38yVv#+9j^%PKSD+SId<+^v1MBxwCoN1tfN^7 zuY_m{p@1fIDritR$;ghH##*X zQ@Zf`V0^DZf6!5G!KY{oU@?s$OU{Mf)1cC4R5dXV;`1nYj92ezCDA`y;WsrLra?Oi znu98&xjhBVYK+<7?o(9spJ_O|d)UYdD#!O-cJMRtuNZWzGTaF(8_NH@Sq;0r7VdlL z@AuAar0k<=40)o}Z&!>4;d_`Buvh4(4MotT#t0zf-2sR|3j{re8y))gSo}39Z})3d z{2yDD^ga6U_lw1ljlT7E2TkgXRfGXnXs&wfG!71>42;8ZqBXGO3S2Z8%Sp!+YcOQ6 znVc9HvBXT$HQ|~<_)7tnutyWsT;P)#yo}zi$#UpH9Ds7O`M5x@CfrUC%;PvMh?k@R zXDx<2Ss$SV>wiqD=LHY67^=!Rlc-?ysok(iTVa!y(5!_&HV2f;;ZJ4c=`e&qI6o#0 z%yn62L~28k-vuTk_G`cm6=6p|PP{*BGSNndAwlSSXfHh43iZ5!y=hC+mtZ!*Fpa?G zsd>FR25p-TZKK~?mzhssg@C*++zAny9dx1QtCoZZHi34wxr2E9E?c5L5^U9js|bPL zuLtYz+D#VrMvoy)P7Qw`5p|yrN@p>m!JqjUH#n|O?an5Wra3rbX{~s*ki?rCFsSR} zB?eH8)MB!_$ACc{^TzOMEf=!-kRd~yn6xIctN#}41ZoW#Phm(FNJ4_ z0VCGT@EfPqEhTAT%P{VLrk%@C3l;Fx#bUTp(T!i_O|s1}W*NWO7)sl-f~@X@)x^xl z(Ge-SA4(AVN5W5E61vBPB_Y=YN{|mAtBp)438VWfHZFxD^a0=BHUz*oP~71{>oD$r zj}{}QP?{Tj$;2V!!LU#E&0w`Wa|WbEttV*;VgIA$uDAR3*Fn2?z}17^^0Ek$ZDk}B z**=pca&RUTSq7gradq2gQJplAV*a<7PEaz7)k)T7khgye$=hVc>i2%U+GrbD9cRuU z^H0O3Cal8yqdpP4#i za|%=={!hmx?<1jxDbN9WRxAftSwS)950JFSR+IzS+3x>{X#()qf%XyBvNPXdlM-l6 zayUxKn+^BV8nYQx&XUz^sLL0yY1DaP09IqWGAEDGubG%A&{AUv5Yt4Ivg-T=Pys%X W(_fePvLpZ1Ns4T|!Ap5u>7LstI*cm5~*@iFLh@wjN=|3fN4 zTmGLCfWG=aFMSNt|F69<%)9?j>%m5Y`d_tW!u$UhQocQJ+U-BM^#6qIKS)}@-oVJp zz|4fv($UVAVS?pHKQTJ^48PKqZ%Vpe8KY{k?jbaNBIpZPA8Ml+6L}&Z|M=Fi6wPK# zguJ3)B8L-MJ`?n>AJ|98bA6;h(goh~>_W%xPiSGM(53tbL!y<}!E&8eNwG$n0Fn9z z_cA+(nX$q3+i&j}l6qrlSN>qMZ1=NQ(EtAs*2fc@fc>vmAEX-pU!XL|ZU1K)BZmZs z{lD;}3@1Mo#II0U0v;Qpp$Sb+5eqJgqNk9htWzM2QNvceGasM0lA>cpKUG0Ua=F;9 zJ5$}|WSD1Ope9`QjAtJSx#rF7Ek}*)BsWmq{lc)avNN-tH;(r??WN!vCIPDn73>XV zZahB@d=u&tNF(s>wx-E7;~%A2ew~XygD}p-se8Xjll{880bQxEe;yE?k+@eg8jNO0 zDZVi8bEW$FGCKf@VlTEib562-Wa*wqvhl6su^QVI^k8H$ z{Cm}ZDo5<}fdWkv><<&vB;=Ij^`^hh^GJ+H+wv^{h2q%Ce2@fhp4FCTDlobt0}DprIM@4XeGEFR+ul9tGNH|BCxIS9w~fvA@FXVA1cI}FZSh9f8xebhaN@hed?k5KP8 zx&HOE+`*IFZwjrT#YyFvi)}w5g5P49defrM2W?TBDuz6U&#zae9qdPlU>+axTt^_{ zRQ>M_;I`%*Q3rZiXdnL0wBxsiV#rv?3spUBJ*Q6lGU^%Mzk%?hs~UBnx$mI5G);lc zQRynU6IM5(6+_~8)g4~SoXiDO>*B^dZX+6hb7{$sQWhaS%9|}H{hZghx(-A!zGB?C z+jIU&mil2KT*cl^^G(c%)T6O9(8VO>S*Uks>H&jAc??S{t^I)|*f%7TZGvBU-d%J~Yl6|}7`Cu^Pq75^exDEL z&1Zi5ewXGGo&9C8<@`07+Gft-)6f=hG))wF8$IiGo4-SgnUHA8E0JcM9frBI)+wYU<9rLe=&FoZB@V9y5Qme09 z;2`@#{)vJG$ou}-{{GYx^uf1?Yg2sL7eum4I7Um8_=?pM{Mt9x%=p@F)Dm&EO`}N8 zK5QP|x+=zjY!v(+TN_`#?(Xopowip0U_y~f0B-oKXq!mKDa~pV*tjO>I;`Qr%0t7c zi3g9$^-hCvHYsdfUSoM696!ce7w=^viO^oTxDb{vY&Au9i{iByy!rS?WC|{lob1g@ zm2q$9n!`FwH5xaNk;y9ZvX7HnS0NO~Tw z9Uv0y3dZ+Q7ODLHc$p?U1Gbcx1>dtT%g$YWX4RLGIlSn_UL4GdeO_T36R<-%DHgLH*=+L}@l|`lr%h^`0m&ROyxSD%Iv3 z1@91aZjntLvL<>OMR#d+#AOJ z8>%{;JzxU(NOrHLzo7(RzuCRgz5=tq3=3W&kk%DbI%ClOh57p2)_#%{j~)(2#qCTB zI+J(73xYvyOA|^+BpsA`ev~;2)=8duJ^Fp%2kCVX^>FgMMx+*NqIVRSqP}(s198bK z)2>&^08BE0sh$^cp#VGESGjx!^<=1gJdxUWV>-&3} zDnwFok`ToN9A!DSzld=!D$O9AbPbI(Jr#=R*GE^t*_z>f^xYZ?jL%F@nGcDvsyLU$bs|{sb~Z)ir(SD_tK5%a?F+N z<U)E?~*QE)%_d{*MrQ@)SMPDjBAxNo^{pC{Rw!R$;QV0%0+R6Knx zgE+m;U^Om}c%4*5IIc%p1D&}KlOpcMor!2^!*mP_yawi>Z`uUk&ZCi$Dkxx;zO3{k6lO~^W$9^&Lm1Jn!;0_vaGJ5?OsViJ zcG?dJt^P(k5%k&&VRUl?uDu1ZNoBIb4ei6NjaF4)=x8ej*W(KGg^!3y_B2u~E~noO zP|nnv3_UZ^{!olcoS(is_L>I|zpazfr-A2%D{k8J+w7rl25t+PI-MQ_7&#_2s2vAP zEIqoc#Z8T84n12%DBBc`6?d;7A*n-V`t6v$HL!h|+-&=Pl8B=KwWCJlX)t8qa~QNr z;y)3?3c;A_IaG=3(Oalq3&b=vcd9hGR#Gfww*_NhS~$sZ@`VZmw`^}IRo z(0re4`?Xr*ATxdg?nqUU`YUPJ>7=#9CdVuxun`ENy{JgX5WkZilKqiHOsY6&? zKjFh3voQ0k*?#F}RoMcW34%ph-#?0ox}lN3-0t|d;KsFq3i4V?Oqe8-)g(>pv~Xj^ zBrU$C9YkYI756y1?B;bI8y?o-iG$X&8zlh*1sSy_Z~cFjyqgTux26qNX~|NaeRc(D zXqay&4S(+$lUX+Z@J(Yim6YL7X#|U?@5L0f3--QWihJ`^2VHv&)5T0LT_4v^3 zzva{cJ}=ORf&SU|s2ngVWK2|S&^J&}SYIx2|5_##NS>h3ydY|PeknaUjio=jOB=ZB zCz$;r<-)tefwc=qyuTzY5Kzr>o*BwlRhMkn#-_>pWEW41ABYi``eA1v=3k}cI{m6_ zxqZ@q)@$&6ezx!Iij;Q{c8;2N(T9F7`n-Gqbb6jg_s`qU7{UX{h!ekACnlj3A(Zzt zW3|FZ#z~ET@x_Xv2;3eNaYMcOT$2xr#u`o8PGec7Wv!R%tcZOX&hS;v8Vq3;H=5S{ zYqnTiko^;jhp4E6LuDS14}Y2`xL)D^M#>RHcs4xyHcc6WwEV2v>>VYNn06;vPJV3x z$bTU{ZWZ%CeMRM|2!-me8&k|Gxk-yCgr_IK1WRcyalrU#>WO7PD}k3?;a4w*NOZ4L zn>RU4>Y_wMMlHKY+&$5)5iAY1oeb2*_v82x^-;2Mu!)1Tx<+-(a6|s_9~6f zq?x&Le;>OpoFD2IV;;)xIe*S{uR>P?J>9?3e=$dEKn>6tuBU{QX)tq(GIQbl)sl`y z+0_Wc68y!hH08|SzoN_h_JoY^q&!F}x3pPUFG^AoH_1wH!RT$LN$&N}Wz{xc7Rh`4 zdyZ3HQ5aWr<{HjWVFU>Op? zu!%R{b0I}lU7LX|LXaA%+f)L--hnli@7&o%l^#Dn)-OGT7=5qSq93Hl5T6d?q;$|>F^v;MxlI0vIQ z{7>>O6>?BYo~wBHja--F{4$*NKemQIq;nqzO4pA=-q|=wU)_VbcN-?pLJT6Wf6FbP z4HeaKQ=V;INRa$?o8qwy>CS{!#nQO7wkzJOKHUMJAF8|2JoeB3J6uo#a-eJIwCwR( zsC3#Y2NdEv#2JpLCXl1(?sB^@K6A3CwInv4;>RiL?>%7+U$&N4i!D}_6E4>cE_)5r z5fuP#%i3(c1mf|=nrljDCHItmORDw012)Deqh@9;_T!I8XEIIF$7`4QWpy7i{~M!k z)rybq1$otV6F`MYASMGq|BKt(;ARXb$qZpl*P{T_G!cQEL_SmM>lyz_g(Dx2ND7|$ zT#;GuMb4u|K-MT(9+mHh_s@($74zN#=~?}r(&8WIy3ZCLeZIaqq05JUQ(btTozwtE zvF?^|trN3{qML_6vMy6@8|cAGY5y(PoCIjn8 zilGrJ9%^){l<6I}OJ`KHe!4Umqq!c?hjLsVG4yx;3YB0f2#rC3tWFi}Hr)O6xA{W4 z{M{|fP0^}Tc*;&J(of2=%X;a{hV$qiU zX)|}X%Q`-Qq%r>6zBRySe)fx?$1W0lrCFV*#8ph(c>On!sxdy$7Y>S$ZY|<40EU4C z3r|P7WSWhf5>Jfm>1olpLwUZo=F(DP-q@zL!Q*0FzuC+yEwFhdm-#_XpLpqHG5VIb zPW)zlazJL{0kiHiGnVAhMw54?aLpdI5B>$6`gBQJ{-O0j!=I;P5&MlgqPk8ov=|Y6 zN@R{hDv1N&o48w}?m&t~vAOF{A^0ZKb{LF?Qpm%&wJYib-)Gj!>!=cFgyCdag;3+) zev#NoW#%$pju;HFAFes@Khdvh{IJ{-k8A_yu00M{ASdnCIoqku6)#xLjJIO@hS)p9 zEr1fX}yEP9&Xo<&P`AcE=<#f27x#C8CBVhTiBBW69~0o**8_>7=es<+@& zCb`of3w8oycG2!x`&E^u84}%VN@{L`rFH_smwrqiG4?weCnb;F68P2&Qqa7F+5ND@3ku=L`kiT(#Xlj@7sS?&A^3 zcj^G$ds>ufn7ydbwJBsp|J;>PHL-0+63|Nq$I%ys#PHEe&)0Tj`g7mDY1z4(9&M_KiYCd~WJe=as%i{zVoqC>y=$=v}iF zr&UdB^!46N2yr7w8=3AIfrh@$x%kG^_b>zKpJKZ4dz7ZNy*K=K1f{ozMWtHjV5LEF zZ5lwy>5)|$L&x76MZ5CcII?S>ct%ip%j|VivK;0hpYi#o&B~>@{sgi49&?;*?Wny%ZS4VS zSt8xg&1I!tS^wMoR%tk2{`m0`tcLyqyj%EEMx zY~2yRY$LD3Dwmwd+cR9~W0n=q%Pcd{ohl+fjJCBRk%9^=&hvsdj4H9->)q>1$Ia&n zqPg%1%I)0(jFMx{izvhE^p&sahI3aNy>4h;R zcRPrQ6*0N>BZU>c@(3u~UDWm7>iRi(Tji3%>r)mdD1KyqaqF_TCZ1?sI?*cU+Q%1d z_dl`J%es@xwx0B$#6|Y*?~L8nH7@MUYAN?GzCEZz&9vWwFUw5>I+-MPDEq)SrlG2* z>quEZa#^lbWi-MLB%%xrZ9p_k9T9Rfhue*@2!-W+9ED-8#}WETQ@^;ixC|Ogt&8HP zj-crzRMf2$IQS2Sh6uLVh_3-YBJJAk35aA(>HS-nG1;D2(hg$AAwQVNU=wI5&rhWps@5+7;CoCwa01yVWM3usH4FQ@^TQ)&o?Eu6^-_aKfoB@0MDc-G-(6^_H2KPis84J8K zalKqCk7zkbKn|yKXooC$!TDzHNu*$e1%)4NKxULrVvwWa*D(;e+x#d#9!2T!JB^Ct zcT&rjS6}<5hsQ|Rx4suR2->_Kh+gIk%*J!D;i?L(#;YCVf-~}3IBb^z@FuJ_{5t!t zuCnXtZI7Kf*C{|?*>9tRKEI~O7rqd;oVcYc(ETgQp8}3_1PV+eUpOp@3ucSg+*pP%&Y#2vOTbn=A`pIFU_Wp%kzu#iE-ZdW;{+R1(rdRo+KU4Gwjv-b(o zXtuFIv;a_^`*Df!x0aT54Kg{B*~i2YbZ+hC(17!tn2-C+tnqa_gYC^?H8(VwDBfLd z`B~jdK^4tuXCcmStUD4>wp|}@RU>Zgb`bI(Y%#yW3qh@Nl=ugOfWwE89>`>v(}u&~ z!uRg%9b^UNf%>!fnKfenV&#k~n0>`;gpEo}~J5Y3X;G9tsh{Kb2v zaRYA92$LAZoSKzx_JiTyB=HL4WNXWY6o$J3DCi;>g~`^yC$6-eoOh_U{aO0X##(!x zBX5amomHExP#y_~Rb2{pMqn=$trD%lOn?nx9(Dv`ADH?Jc_}^5J80IqSOP&c5-gzF z$;9EYMk<}Kplgm6IUr|4Y|{VQqtoDmRkR{0E5Wxz!3>JC;pWW1tNn)|7^(P{zHs8u zsdcE5m(TXZl<_uO=6IWku3Gj>$RvbWOS+xM;sEgNdjo*Hs$*L*ov{^8j(s^O7|Y zd2;Qm)$|NMd$&_)c~Vv>6vtSL>Q4?Du~G+Pd;?e4yGfbsAJGG6?@0O}h6NNDF-+Un z-L{j?4ms{z^D{iX*MAM#$cmTGm(2^MWPB)RM`;o2t!H3`u{qv|r0PgIZgwq5WCnF{ zG|8l#eU&VZCmO%&5PZWmz#VLJqnASgy=nyf2%;svCcn9QVDU##>1dmb*MkvyC&a{l zQb-e1PHW4HsAuvb;F+ssO9DpRhP+^sM&_74RJTU3b?Y(3yoVbq`Z*e9d(aWAmpmN?sXI2s2Jza!g%L*PN zRXX4&;;6{k!89v*7Jy%iu+0rff2O5&PCz)sUoAhNj>qz9e%0fey3@q=w)n@fj1tA{ zIgbc|L$1@%mG7kdWsSF*mV+|i<2sgS<~3NqRaASan+8=|y%Dq(5A}xd9G|SGTzJ5H zMQYI%qn8wuABrFDt!MCdI!F1UQ8X1{FiG%%a-DEGc@l*XDPWKWC7B#dipz>G?Q$w< z5KHYHHJ)&4F}F5qlB0^LMnE|{2uinUo+OS{TMgAhP5CS7kM^q%*?m{;kAtoT-Ahqg z0tN13qM10U(4zh(^AQ?9Qb05D;~}H92zVBW`}1boxzSjP<>3NTBGkP8 zHFTz8@143DwtXGpY5IJggIl)O$mEt@kM1YVJPIaS)N_g8#dhGdvWFlA_BRVnla?Q+ zjB?@W{l~AU<3N&ft_C&HvbFViC#A3xt=7z!9CH~J1JsA(i-y&xK`C|RKIPu3;w;yS z=0$^fM?i6-u8z%uq_7yjI;)!(lV*}N`>P7?rEyTtO$Uj{R(HxU*BBK6xu+K5iv?|{ z5K$F_TB~9L3=Qc5(MrG(s+tn7ow0&Xn5IRz7)?{kk=EAQg5kntBdl>@)OrKf)$Fv! z>Hr5#mFHdw z&hkvkYWuvA7TCkGdw;pF-+i*T6?1QCBxi5%CceHalw~GWOu6`>X@zxhP*Z-|4#n#9 z3A6}WTsm^#bIw@sD><%qMB?r@DtHKL?GS!UB_=Z@o}X4dOS^-sBm6kYKnLTdMj+N* z?K$=nPD0yhlab4j1Tg^nS9gcTF+MYFq|G*CtGtaJv2^4+ZoVi*CxqkJLy^jfRf-QUV-+-sz zAp=*}Ah|b;#+{f!*L4Y;jkCqqiJD*UcHh=BU0n{HWZUeR62(|xx!68V&g{>6>Q625 z#6Pr|I30GS3SO2Yln~&?(1@}5d)<%&>K!GajhaKGZ^?deZZ#7d&58@D1Knb!MPP6&EyRVtT=q7CkO%ieVMm~==vE*} zT9-;z-0%NhR*mXCpjjQU3wH_&{L(k=$Y27#UlV)VV^(`Ihyu#b?{aItfX1z^3WsX| zy~T`qP%9ycbJa@4f5ESS@^70K% z|J%P6&{}t^M4$jMC^>Jml(I%T!bNFc(CvBf8}Gge35*gJzg<5Mv^a_sq}`)r8|og} z!GR0qL+&G_#tKZXVXuyAhSMIsFb(we$Th}jIiEhB%=#nO)kai6vj1@j&z@lkM+~8S z&auqt2#o>!FTiGkh4>TyDLzu}DfoTERK+&pA&%-w8gr9;Kt1?zJ`<;E9i{_X;g!;N zdnGK_@_ogNTZK z=)|JedXI;Lx^WB8??SthIQ9M1LPALU?rD_SqTKeQ!y?SIcl}Se2OLbwIjBwyw|okfd8{v4##5Y}`;{!~d3ZO9(<}@~YH=l>3h`@eKG#e`eYuDi zNqd(4@YCDpA!QG5BetG(jlJm}c;&P!v3e#V70bot9mVL;GI(Mtz>2#XG-Rz>l zfz9o{7sMh}wq;3bkYg+Om}gD&i=AN7(Uk#A;Uan*m=n&VM3nD|-*z1D@gzps#PK>K z`G#e7>8-$w!zUqWZc+u(k2xO81BcqWZT#SPr@9heX~K2qd8;R$POS;!i2J-oN$vTk znAKRhi@ejwXWv)U5n+!gX)8&ZtOWPuhuENlE>6`Bn?|w2%hd3wz=j;u9GTJJ0qA=Z z(t&%@7BDw1uqRP^tVBN$YmmQ5kAVU6cT&Z(YZO3ccCO5Xt(jkmu7ABUZ$td z6Q}W;Yi_g&qc3TUX~LH$roR;sKIjklkEZ~GN{8iZPj?`B6KYLJa(C1x&G%dRGN*3e zNE=#p_g17gC!IU7B#f<|s~w8z@>tH(4V~_=)MM|naQ3Gec)sP1M>DKG{y`}5UBVcq zOgwsv`8ZVOK!eaX<^`)6`1@eIhsqSVY0qRhi5BP4;4JLGpXMFLr@j)iJ(pe43MC-g z!hXi7(;0O@h$RFsD@F(}jrw}%M4lIgPqn>h+WsQt3 zkFTvgGAd{Z8Fk9dJZ6v@lonSM#sRholah`w1Jbs4oz)JR49!nk-3d8{S5NZRZ3Hk} zPieOs_q$xpSgHh9ptM(%Nlrb%Pa1pG`Ns009pUWkdsZTvDE$7!K;GjIVMaSxkox+G zBP)jX;4H;|bd6dUtzG=&gmGY};tkJQ;kuL=;$nML;XC@&E#5a`;#oc`umiaCL3w3{ zi@Wrr+`r}?)>#CX{68%Y=@qEBt{LN9R_g8Q*Q`#TJRz=^pT;h|d5F>C*z7)>A8*z zGlFg)%WxKzqtoCWwWjs#2@rjGobv`;y4f5ElnuE@uJlv6n4>_ z;JkXx!vAGig$vufjPw!JD{KQFrHGAJ;zshB1o%P%+%ip%*&AZEK z%CBGI3oPnd&x_uPdrkJAGgC9|5uB<$v3>}obSf=(ka$o;$fC}KyR=NH62T?d)m?O_ zl_Pg{R+(0$n?*Fs0=){vOa2&G|9%s{N}?m6#fbM;!oZT5fj3Pj3B%^j3()f`mk|B) z=wy@`G>qXS@1~BM;#hrNcal!?Y!0qlLa3&Xxs9IadCYWi6+fJBT}_u6aw3p&f<~Rg zr03*OC)&)bIu*-;f9flyba~b0+R&miXz8rLc6x2Y!-JP$1!57fh2Z*F5$LV`Z%7?X z=5%mZdpk|&Hsam2ksc^$E*uQ%^T`q`HWuHAMdY;{88AHJ%{^HrKkF7njL&4loJ)9J zb}u@WJNu#Y9kf}n9^*y*N#fEr8_rLu(5GDVZbmo*9zE4wl5-xS6x&T{nw@1o`UT>V z!Q!k$p0u8mfaGI^mbP{|7d-brq~O!#S?xQk)O#@C7s5$5 zpC^&MP(nRDXRFe7^(@QxP58Lyzn4gP+nxl%-M2aIz)nU!uN|!FJ-#pMDL{JB z)4T>>r}|goPhj!U8d6E<#&<+vURq)PzDf0LcEE5P@Xj179E0O(%DT+>i_MFsWOZ4n zqGNp+B{T05Rh;j}m5~K6<&eTh6F2KZ4n>l`&|kl8zV24WhF8Wuckd<0U2uvX0ym1#EB*=Ke={ zd%a)*{_B4T_j=ez{$eL;3xr`(Z-Bw`lYp>;$g~8R$i(zHo=Dw}>y8}Ga8(x%^@`4J z1uWD8#Ahlhmx|d>%k{Ceo@_3iGz$x718BKh6#M!mO(vzwQ^R|`|Nf0@nO{#6NT))` z%^PBl-Sb>(jdx_|oG)KKTCs*S8zSo{J#W$jdX*flnZTmHOt;Dl5f<5pa^+L)Al&hC z|F3SOJieIO3W#7e+FE>2_oVy|3;jMnoS+a`NKHx~5z|NL0CBraeECgSwyYIV$?lgh zQM^gm=_yL-`p(tmG`2SFiwga@1*R^Zl(!|5W5T#m@?q|nko6;u?k`Zn!+)kfEnWOo^~lgOpKDCOdG zIyCOxsDdr_u4Mke9JG~k9rOQTyUg-(vBz8VTw_LC!W(nua^VK+ON0nHC6%1YXx2M4 zYn;!V`XxQP3YY&Af@z-&UtK)yJtW)-SX^L&(Pg)&p<6N0^^@-BOcW0Af0Nbk?dlPU zmC?Al`wiA7AL{-ym%VZ@QbgRIQO*_bn$2}bLu=t5T$4izEAbge;vb>(C6(v=Pi}m? zID6LmB?`gH;>EzqoEo~jn=*~Z0t=Ysi5D;FG@}CIXIwr5Rz$P!f zotzrQmd!Or76tuCoPHdebq)YKeQ&>=;K}A6CFREKqfsZ7ZCvkFPk|M2`qIHKd7-xQ z(A&U2xi1=l2w|eZ^s+WM^vKV4aS`o+=gg?IhN#2K_j90djQ(w%EwegBhY!C9?Jw@` zAG3pI3()6f0*>yg4}aEf}djJqgSWG?=_TjXc8*oT#@=+7ny#B)yvYXDM764G-tDq0O;NqzT)+Jio!} zS(@Z@lzt(}_|e54QHd9a{j(dh>ptHs^Z+-lB;Lbiy?fs}UB3B$Ni za<>_xg40H=hA+zvMmrF7$y8js$?c|mjNa{#oSqsijs>&F0FfL5RC^^}F%0j+lr6f` z;bh(+`54oNMgo4xyu4I*-7S~!`CQo3^Y*?LKRZxF+*|WG-eY+taLF_TthQuQg28pQ z4$F(@vL3(w!mHN*EmC+7$l6#_yhF{rG7Z=JJve`ecrE?3{lk6nOnatW8L1|Dk0LH+ zH0%cM77kmJ{suLjwK|2F-XsZR-XM;uK1lHHZ8%RVmD`*W8w55 z1w+oUklFT~b+ak8h46i@b=!Vw)?8qTw__iFmF#H+9#9MsA)j~#W;fm~3nf2jS{?E+ zx4KnH5WM4#9K7y{fS92Fh;pLz4#Rhk4`dSzaEpqZ(JXF$Uh9(-wPYxxvOv)uE&HGUyD9cO0C}c z2tN!Y6@@l-+<(j&K^&ALq(LDmr@R^;OwuPPIcS;9u{3iLJa}8m#q))w$5-*2S|!_X zxr#byN#jyuA8Q`B$oyP9J%sv=&OwAT(ZOAPEbG!1dG_D`N61rhX+6+3X#qebeER+O zWxLpZ^%1Su6|_R}W|)LDG)vw;) z^2w(qw!h?f8PRJ7uuJ~rxYt?ZpAlrx|1IW^4~>5vY9gwdqS~6#>QC*49x81;jfrH; zo{PfJtjyo#20nLgFvHK$wW82&jl591Q``7CUc*Nwk+s=f*EhA9h1QgWE=2H=yke;h z(1=-sShKN&^coqWa;T(n-Aa|WxjXN-7VE1*nvPg1V6$fLEp@7nJCicy(+p^TNZw-; zt@m(n!~ZtkevGH?7W-Yp`ueoSn%>4oD0Zn|#qlBb4(xG*R2#o}M(sK3?$=)&EP^Nh zF|<_W(Nt~MJzXi|1aa-59Ya&lwX6U6HLM#MeX09?xH$@)9SlJahT(4CyAll2Nbe>n ztt1@lH&jQQ8Q7s63~?`&RXL^o$Y&Y?nXI>QrArVSvyK%&1FK^{0p`fQ%)Y!?^_rw9 zgMe!*1AsO=l~*B!-}+054Y6-_aQ~~IpJ7dQ&`0-FA1oc9?((grWzTg9f_*;qf#2>3 z+Wx7Pdw(?1FGpxt3a>Ep7@G%@4x0uF4W2~Z0piLzEGk90t`V25@|~VJHN+6_Hd$zw zQ8c+|9wKDztX$=+i7=D!_S?!ccE6RAU(Dtw4j>+L_^;7|V=KjoN#2cdHywKGoOP43 zUK+fy^{)9DwcultB3g-NkqAuN9S*=tEbHVYUKDQpfuR@w$9SzrkVLm?!hkqygjgB; zlE#-pfxHRKKYUVKp0ZbVQ*b=AFXpz#bJf|9q=2cGTW_AqS#{2~P^5~-| z`$Ez$X+GEvTKY2l?H5xR(e5U(P4Sw<$ncHi-=hXrl`)ha3$^?>pH3)ntBT+@5bNOJ-pt<2B z>GTsrDeUB{HQB3aDSsq%;^2n~CxP{0=FO^rQ}I;-m@OIZ4p_c(^k)Z0V9l~$WH~*3 z7d`VL!%kCeb7RLkpFWJqYNGE*$p;G`>N55glK19|1Tj(kBC!cDnt6vf6THd}0eydp z1R%eoR|I#egenVDcD8qD612sV{95VU!GytP3H&HPHw562-Lm(6XzdpWrxPyQ8Vuz5g{LPub6=*$`pSOyO|cV^(GZChsRU;V@OFQ zp%ihzHFxBQf54#A0cRCEd#zfT$Bb?K(*Tg}^Efo?1+&}vun7GE5-T6TzEN(ZnE+ zFbK63+Tih_m8>;=06!!^5>F@Db?h4Y#XIUH_(+9q!crZ|Igtb*SbM||{e zzaDFN3nFIloDLhZ>xCqK!Isn=&(<6^nvY;!j>{F)ma!ufU8@r&_5W#3-8f!srV9d) zG#{#F;j%f+2un!Oyb|#DjD?9YC*bRdM_F%%Stq*nV|T|o0hwIOU|&23ENijJj1^`5%EB3!Gcs~1%0tBV`ll3vu_IHxTlPgptCT!{%?YM4&` zXXKh5F8Xl|L*Y)A-d>m^of2HJUd$ev-ZegC(z+ZzpfNWy8aiim{RvD%=aGy15vyF8 zVS{%`Whqlu@20&X*V)k~Wx$J&ZkL=Kkyjc@6PZcUp{6BN(>BOZogU}!M6iTW-^Lm6lE=ee@8c@TZnT!_+3NuQ9Y*(WhMw`r(XGrz{OY$z#2G}yAn zS{~^jfIegaELuNAFWjLaNKK*d?dfO{UcHzS-h1hfn3+Y5%U`u6Kltp5pa|qJ*31Sq z7s>gz<&($+ZWjh~*-bs)gsy{w+oB(B7WQ4n>-jPei|Op7!RN83u%>&1X-_crIPp?^ zdTu!(M+AFs*@b?Sq7wzK#P}h{EcOtoskN}K00YDfEC_I}Z8kLzuu(-_D^J?zKc^Bp zvwkQ$5{#B=_II(&CeZNq8F<&QrBoK$uMp&HlsURvasG04FV7TrXg$N%kh3i*SA$@@ zVXNo8c6q4YfBBsT^xV2$s68HYbzSM2z+xASpmL+YL&?xFe~RcN2(=z*NE-^TLEmY( z1ARFc^4>nJs1x?6c&6HhYHZF+dMELRJUp2kW!C5fd}*PrgAywIdQI^il}xI#e}i8c zmnuX`=3B4s5%q4x6wex-V36==^!MvZtCyrYT&c7|x1R2h6vr>l(y z8LIN9?$@KSU8C3=>2$d*-B5ONug3dh+cFU2LoiVBFsyVN(oG0#m45^nm7s950Hauv z0QNH}pW)v@8APx1H>|@M%dWUOf{h%V1iJErGQ#ySgr>(PR5G2DwD-;0cJ|nH?frb| zXVhEusB2+$4cX?I2h4Si{u#vGt!d(4drfHa?j~38y086JXr=pWc0qOOSLOKeCq&oZ zw`+tC{pY>?UqlJMMEN>=keD>^KsrZ<+CSFMST_Z}9Ef0;9jM9!2^5R%daCrNQ%cVe0nvJ8M^&j9 zH&0-_O}?5bI|g;A?y+ezNI8nAGQt*E$iE_~3W?*hxi~Le)Z#6~)ZB|x{%~L-eI1e* z1*hgkcHK$bl9RzrO19p{(_M5r_{}jLjDM91pQjLUD*ch<$6R_O0cT8?vK1Q%@lF+fIS}@8+L4HwxZ(zrF^qX6Kb`REmwt z!p}9h>0hx?scSp-4uD5_KjSJOz84;S6!{Cb+UvaSa(=Sb1IYhL(V5Ux&>XvyTbTZ( zB=Y@r0Nr(we%EUhp$gqWs7A9SD-c6ZI}S&c@XmoM&a8o>!@>M|i<#1I-48`GEirxP zw?{rC?tlmz{al_ zU;8JzKQL66VU-r@j$iwMIOzSbEw8uyXB!#dd;D>|?DGM&wftmj zu7^}MxYS&Hh75l~9?vEdk>VxQv)WS;@R}x409lR(`UrLsN%gg$D8CV0lE}GHBX?Hc zsK>h_%Ye~g4lI>YwRfelCA+9!SU8^@oy4R_Omj25aAYo~r6+pdnq^rJ&Z{!v{?wMs z#yJYb<0raa#vrS9T*tV0SE{GWqx#*k>}@Tmh|-O?(>aJ2_}m`?Y9&+yB27hZ(_v9Z z{2Rm#oewS8#*kL?5Daxd^F^u+d7n?n%d7+2aVwBp3W(R#Fsl*7h+%|s7no=lT^Hbx zsMEz-Gi@PSP&b^-GONv4(C@xx12rDW9MF-M| zz@a3p01TK-FL5vC8E$0L81;*Wn9DY^BNGo8(2<4XBAUs>YLnt= z-hx{x??WVNmpOafq!bP#;6AYmNL>2hpX)gZ(_n4zWuGurlE3`DbigmXdL49v=}}rs zDSO0RJWEvn-88-C#x({;F%WUcvdMTzO}j^)&JOW7!=3)-aasMBJw?K+pU>;TnJlJ`JxWR)3*mo3)xh`6FCVG!X8YjT4_0Lv>g>= zInEiduq;@&iBwEx%sE`uI+wZ!{s6&=Kq~hL@A@(GCWJYm&nH8PUdUHt)GL3%Kssf$ zeJ7#dn|v=c%}QO5f7~z$ecAw2n7EQqa4q7NuO=ECS}K6LtXV#PV*B%y6cN|&XyGFz zqDj|2K_PpX7MW+Bk&c4ZM!dEe)5gLgWW&#bG1$V6s0y8ZC$M$vxzx&tU zF1yS}4nn@n^R7X;4x4+7r1h|~uJ+4%6-Fb_Ze(+Y7=(3FXtI9+e=EICat*_v%nYex zR?X6FtaeH7r}HJ9@hH~_n)p`B&X;h8Cf6t|w)WodV)hzY;_@rz_2}Op=Y8TL_cXPn z{}mESe%@O&w%55)&o_^cU%%X|BApP)3l_VWvBL77qJPg%~E zKHBu|KbUe{{nIk-$v!&XrB_1V!s0Za-3(%se_RwvzIEr?YDPB8c5-GC0GRx?ubAE) zKo9VCw#9h4KAl*uw}qZCX4T1URzai`e)f!vuLe^n2cT&fuCoSnYRKhMa*g#yKXAu! ztib%NNI{fpuNdURv3aA%{(k^ZK(N09ZBI8Nx80W6(;}bb`wdoDvyNdvhdkTlmvv!Y zTdT9x!P(e0FtvlxZqDqc)}-5YgX=zjLe=$`OGB@>?T0K0PJI)Avau@y)e_dKiEAZQ zK2e$q78tyFF!>?yK1vY4IL-pq1guCfRhBClo&>N_V2IO=*BqpIJ>dndH}_mW5|^FM z&Y)f&FI|0SH{rN}nqc$VYGTx2498qBSx+>5*$UE~H9d!G-%KvDm)5)WLHuWb8^C|M z^~%@V*uBdNtJ&lA5k+5b+X9JC^(f+MkA(+v;`e1tHVMtkiy!Ttl9%7ANPaa}J_GUo zx*~?IwTK1N5)A8dZwxS`!OX=H9)T+jY&(`wJ`xy;6KtDLif2!WnvQ=l*;cZ0czoFA z^X6cm$k92~B2%ahn!3H?-Ci$$v725k(+7&7MZKmV?GE5@EbMh zNNxVfv)ams%{{DwEziGMw{R=*?ujx8|0%7uzj^tE;+yU%AFWz0JPhJDEV5m0=I@uQ zpHnBJZuoR%)wk}x_pMgF^7d4q!O6=O4lT~ zlw|=y_!VHVaui9B;{!o|VIuTwTP{}5m=q196|kP}X|3}LQD^RIJ2*@3upNS9Sveyx zgx70(w4cdbUK{fRbXPipNFpw+*m>X^PC@BQ+`4a%a4TU;LUf6n}~ZdSoiqld=)?MiVw)) z*LkQk9p%rKPJVNV^R2N8v+C8uE={7rQ$^-^5X^X!vS0>(Cx$3MxxiA>1iBHGPd>Ds zRR{ZH)1U7zc_cK4({{8tMO@xn;&?hdE!Nndb7vM8h26^+-OFHxiqn{v2HWI3+A)@Y z?8ohK-oDg^McvvsGP`4s6f<8emaJkB=&!HDa8>F|R2V0hcc&MxdSuUTI!U3wXEW+eoP4d8um%IJ|-o}$PsK=B+c^LE- z0;XmWn5r%o!(MhCAs_g{vST*WGdAXXXY>np_QbHK zrq~AB}epn7pUJzW{sz=HyL(3Gt>2e#fRj&%5AtV<1j~!l88W z!`%;zlL0K|!KKp&U%+tZY4bnA_H{ZIU=9sAAM3@qR)8!!$OB{j$FA(%>?V-MH943SI zx#2aOhF;(6b%Ti-9J6N=RcNyDW{X)G`>Hyg?D$b_x2(_S9_|jg+SHlYmsP|mevi?P zoA_WKJ;vbUnta`f>B%(sN>aXCeEqpZkN#ADqJMa|+$Q(7X%G7*6D~XWVf&$5-}nR! zR#s{7jLGR)uKV4&@@=DKf4x2Puownp4=UQgT_~1iDJIO4#FPnEz_ToJvdD@Cc+d>t z$*tm#NN2RV1Y{q0Ea-LhP_|b~b;;GU2JLqb{b=QQ!dX=Zbu1Beu!Aap%?|Be&0IEr z*`2bjZ!UP_%>79>-gbLZhiq$iPmk^Asq=Dzuep4#5zI0L6ND#GlO3ydFYUIIbH6Y51@98By{UBJiYO1K=Lw^&!;9&! zPJ5Z_uhG#T`0eExOO1ZpoYV$?9nf9c#UV_ya1xm%!)Rvq{@c)cNI zu9o8u>)h`&&0odqO`9cbZ%$N(3A}yp#U5z)^^kUPv?_X|D1Ae;c#3OZel}zmPCGg6f;@(=j{^^i=*J=skyHgK? zuw04<>?%~MEN4RX3fU11Lq&#)0RA5*DhQkvU`c*rFLrf=;5YH4*o zMmu3qcgQkG(zQR&t+Wk)j+t)0Jl5;{bjYoATF*>DnYK&=#d~WQzc=x<) z0t(8ccJ9B}WqcFV6u)bYAw|$~eNVwn>NMb40G9cu%K?R00EMu7{h-EOY+df{kI8{|NmGMZS4byOM77{;P%}MEy9q_3s9XBesWfiO- z5m%b>cYfqnRPZW)eEU?)9cI?gD9)R?3li6l7oQNjGMp~aX@pUdq9_g|Z>$OaA!b5? zlVDKCh5r+vy8w3NYaEh|iGi*nlt+0uX@zlbyV;_77N+59!Bj?)f;gx#gi&%r-MA3f zXSMK5)*7Cj6_OGl-?YQ9x7^p}K_bm;Ne!Hh@LlbNTYrv!%K~?A^8qR>qg(Rek?vBs zcZE@3Hv9hBlJ{(~!}9t1$qg~OWF2P{jzL%)cp@xAcBM`s|HOcN#dbK@N?4A1!Mio1 zr0TcREy?8~yNf8+)rOlfl~>xNG<Nx#Wu!5>e3EdX+fI-rZ@E&F+$kxWxH!=r6L7uV<1K zRN@wo`I<0~bcm}(Ezi)^Y&bCoDpIqjRprMXA6CeJM9V=swZkgm-nsN$vD}+a^&js` z=>E?6&37hmV7*;Gg=&le5M6qkx)7Fi^-)X%Whe$xmo(vko)>dz`(@FM2}*JeeH7I) ziK$v@mKM=F*sF=kk#?i4m1TbzV9R*CA1tENz#l=Wrg9*v_ zcnr*cIFbDTUHq*w#GY|aWZr$;?g-WU6z6ppcq>bN6GvY0f4W0|riFe~M)l3y4fo6E z3ng?dp$bA(5TnEP%0N8KSOx={GoZ@B=Y@=qY2YY{LxlXQyXoYJ>I*(P%h!a6J%Hv>O80k~$~+nDz<69eHICsRy#m4?Sj$)&CMIs$BuWxpqZ8AHOt9^8C=D*$ zi%w?(+Yfsi zmL8ZB98-XEQO=?!rYBa_sKfeO)&3Ve*k#KHhw5m=?~96Gp7`#~(VqdO{}!Ncj@;AL zpNpyMoQ6%-0pv2(lpb1`;xD+~yj9GV2b3Q>z!BuS9xVYHtG`-QOwVKU}3BEG8yq|m6nobjGH7=}b%)P{GYDo`4T@nF1{ zlbv1WOL~c!6KxBFtLY6qtEiQKw*Gtd!=L&3--XT_q)#cYFEASCuUbI!o7Ny8{uf!FJ&>?D`y# zv80316vH|;NxrPVaukJo40rMxbYM?(l*1OF6x*NIszNU zf-=@-aI^DY4VDEDjiw-fUUFV|vANQwLI@$2l&WG`qx&{!FsiDig+T~PQ{q7`JmfVq!~zl&L7r5fVT#R zEvfGdFZMD;@ecQ^v6tb)kC?}ICLgF@ub+5GpxhXeuxJY-fuW^;IQR$wE6rLaO*=M$ zgBlmd9rJ}VLPhx*o9Vn4Y_H4_Blu@_L5@se!k=2@Z>282ku6{6jDMR55%Yo@nJD zB*`5qSESaPB$HL_8)#B7A7CS9F$8CVKeIKp118FK_{Z#AEWQ+{(e6%c1L!mj) zb2l&Nj1Z{;|Jo^pEJ_x_+>(0Ys z2lwOZ&(+qIt0Ea2BxfifOj^Jz0Qtv&WQ8#t7vd4dB51~D4En|9&kY(c&zHD6U+1%Z zKr-w}*GTzVqUa`RqpkvUic+X= zm&_~m9+{MX5m2U)e=7&|F+%%cUD>;}4vE{xOHaI8@qY`o2^Mv5P~6}^*ijD20I>q} zF(@%H)`fH?)>RLE;R3bNAfjA3K?OzI=5ib4DKJpfP@Or4Vay7dN-aE8Z^bsm8?u;I z?PTL6d=mC~)5zTYa)PH)x=fj-pbzeNOQs&v|6YrKcM;xwoVZ42c^@^GSFvV(m*+kA za(XS@dsj{MruljNyL*Yoj}pzh$nitr!w&EJ-RG^na57koi>H&h-?W5^e78tk_oEu2 z+wuXT58hqe`QCY9C*{Y7?tWm={PD6*d-&mNAashlR+P7e^rM#4iDC4C1`@vwU+O~Lb=3$EBM zzUAVhNveL<*9sxTZRg}P-c~1uSW@t753#JGn3fin4}5yLrT1e7N4=a|4y(iKi0ZNr zzuU)NRU-Nw;9gk=Bwu~$*+uRKGsqH9P$t*}cm|kb1HXa62aYfyeT6a*@6a#g3N+5I zCwnRJg#j-wnv+D<+<92;8D}iivv|CJ+|>Ab$C9dJo6JVE`jA}og|)*b`r^!aeSJ(i zVVRxE(ppJ%-l*7CvcJhzeQK0;KZg0lR9;af{vlcZWbg*$?dpjnH%$gakt9Kan+p`M z!-7f*r(B?hTu3Dtuo$r2NtPEZWJFAcrASW?{H$K_N@(vS!S{ASL8Z&NDI7?DIxC|1 zsDTRAJj4TbqK-0UZ0>gAKr@eXW9*!#O5x8{){C8Gux#;_jokM7xBh_Fu2!FN$Up2y z|7Pw6#g&e|n7PtrCgxJC32YCITLuf7FkoUq)&b!%1xpx9QXEG)uc|&CQV5gifCcTM z0lHjj=er2d=N87S&ITWQWwSniXmxR%^iHg5KHZ$~H@~*Ko_!bL{dhw^h4?<9uNRjZ;nzb7G$^zn>qprf2k4n>t z@01Y2)-xHk7Ufu~kGt}?UEUNl&shBGaQlG8W57Wg1vP2Hbu1hsY1j-58a7x4Qh^kW zvv$`k&2gQVId^`yAJSxb0>T8+wII(8+$p(1>%4tA>(m08Vo&^jYVq{$;P+UzP^;&Kgvzs^_~|fe{F}jf%n)E7*HsK z3+P&q^D|%}B)j4WHn=OKgJKx0fWQHF$7sJs4RWlNimr89bpmD?ZpKpPc!AkY`+=BJ zy|pq=sbZCGMr(3^EX#WZ>kZDPxGdaW?)PzRvjT;Q1uN#d*zMYlFfs=k`3?2^Di;VC zeV{&mC;$A>YKPv3ThCCEz@CF>=6W!Qa4^Wm(3lIGj0Hmy)<1}{DIj9MhSJgEcq35e zex=~Eq$Ce$e?+uW(SMWDcd$&NF9X2p3EDT z9tX=hpG~>q$Xnlu={rGcYUFu+FV%4yZApIN#Qn~3ag!J2A=sZ4U;be9g5$e8e=a7k zY@F*_sOfSBj#(%u0Xg{3g^--)K<)+PL|0(Irtv=C6vkoz_3hcq5+AT@5U6DnpFZ>}!i309YvN?fO@Vchm zx#;WQ`c%sFhZ*C$H2~xO@iLgM`QolBDQE*Rpu|udbfze0S{#NN;QT_m7LZ- zza)C(=-@`vgECR`YR+fUaQu2OeZjGJtsPTfBCgZ(PS^hz&|Ghy@3o8G-yoiD{P&AO zMnBp`@769jUq3z_y9NCqZqcO6bv>(q>>>%6rM6>JUD<)+*$2>lIAubj7^ScM=?xMX zKZoET$-o&d&cbr`;<3l;UQ-^{c-d|!f4bCv{C&USi-nCG&xL*roJj#v-kDuSO` zrHtJznxrX^QJD~|gFMe*APBnD1a?>qhukNO4iel~1AD>!8wY`0xC49=rd&B19+^RZ z|CHobO=|l&7p?@{JNx2@2nO?bJ9h1pZ+I(HFBK`DCNo?rP7|(w_I7^Kx7O7mH!-d+a-+&>?EcaqXjG~yjOF*e!?KhWAD`*HTBo+yUTp1uoh#$q zG4yBqTqNR@RL6u&HVHR9v;AJ#mu79+&SwM&jlc6IGbaK%vijou(B}-#6;i8fdXR9h$39)Y)wIb^{HHL)SO6nM8B}aJg(|_p-hPBbkbX}w2w%BG;ynw zkdx8|5zYe+D;C7)z#S8Qw7;?w|E4hfy$;4}SbuBK{sh*inN4#R4vIcdRbeh9IBASU zL4^jHWX|lW!MHTbur&1o)|m2+@+!2}`P@C7iM|pwMKPM2%oy1=p{v(c<4UdE7o7Bw@<&hq)#;|f9Hh3lffH+ zx2vbK1wiL;91EKPYzwdqT3t<96P!>6Bo#CXytx5L8n22+w=GI*Y=I_i!f&S%Qko7< zx6W`i+gi$KKHiUg)&oX=gY@m;B+kj9#4QSiISnGrOnge^TQLpt+N8$wSRR_wG%$AU ztt83&R`$PhUhKWiD=1Glo=%G~6ay~b!i#jF zyIeiWC@ zdeL_erV@@&dQqX1;1D3MN7L;QE_$;LnfKY+?it^@jDyVUvxxhr3*TFd@wd+x@%D9j z14)p9J1}Gn@GzN6TS|;DU_jv}YuF&VbzIY7U&#z+mffG!={8)&)V`|BkV$G)*Q#|j zQ22u~r+QB9ZiV)L7%xOOC-=+PII4~^SOv><5E{fnOlI_UjBp~MYbRGetqh&I`&>C> z6Eo+gN9p`U$)3iIiZ zs^uX>=G!EpnZr8kA%rA0ng{vaDY*xXxi5n`FZCbs_o&Y`{ySp ze`)XhOHe-cOpuy@2SVVOjXI2B+bF?tD2YP;6#fTUC$n4qK_u}tl!3Y2HkcR}{bU#{ z!gV}a1Cv^wcu_YE)!_r+kg!6P=2<@VigBOJc&-S44}Da`PGjP*6qj2|-mOF1G3FGy zpfaHsOn$s){)Oh1KV9EG0r-_0*Y)rOA`$K6#+}ri!dRSu?bGC3lmP<6U|7gLSuZlq zM#b+kR2vX{t#U2INfmlfhJq&UPQ#->dZ!-Q5-VGe%1~&if*Yc{<%y9eSw5pc({7!% ziUAOR4SDp43{d#>*AgLrU+?;}_jJpr+|vM`hsuY9%lj@tU%r9M*aB|j^WA@X!1nw1 z@{m`-JD@m*gbXQ7quo(cmxYbHtDFrH3M6P;VAfdLc@gvDj-OMT(?VJ^sgoppGl^%y zT+h;+L$vJ{oXK=ToP_~GI-GozO5R}N0Tar9XSpVa=1Jp1Y=wKOOvL_#J+hm^->r+k z@m@YeH=p0j^EbSo8E=csqt@MRW?bIO$Ge}r%pV@=dS~+bULM!ajb3qxF+q6*X&aIO zM~VgF0aRB8jWISzu^d>mA-Ti8p!%r6RG-We6RQs5mKK6VP5JGHKWC1$QMmq;!L#yz zFw4-D7}-DVl*y1vL;kzqmD@z>5C7);2D$`l=?4%@^CW^ zhJ;<8b4Z+K2%sY{6aMdD7)9YU=@14%p|G@=FI)onf!pbM1)}6cNnqqn_I4c2nz7CE zZi82-yA8xBPC^p#*)r*Y^Fdj9*du>MPF* z9vFP!46?L~5}45m0cnyjTo!k22lP`U#W*gCS}*kTSbEY=%OLdTV=ne*Cr+!Uu3hBlU5)CXvZ0{-#34+a!5cvFr`37nS3Pe+JgY#C6FhU63u2Kz5lB z213RfWw0(Vgv1vPECc4ylueo;qB}|k#bJqeEyl)xy~i-_ zh1d{6?__uyrI9ZqalaBlu^j9dWOz_4Vy}CPbw(SB0Jd-l5B+!jz*) z8Yn-S0dXv>_wEa&NT!96)gMJJrpBV(^iSq-vzn}(C|^))S?y_B>+Kt(4mPJz<*zow z;DFEDwN$eky^ny5WWG9?WPRu(v%Jm52+B^PYrTtiKro+wfna_Ih>MvUmq$JkSoiY9cMQLFnO3*3(m^4TN>ODhjz0 zmOSK7k@UD{`?Cr~QF6MRkiv|RIl2cuUIpYJ^7k#P&736pRQ*Tl?DnaXt;Bb;?n%EArIB3K87l*S9fz@z5r zVHAs!yYkpWYdg#&1vh4ODeV} z`C&IR<_=pL39VP0`rV5DML)q$5MDyr&*x9k--YmhV)80^AVF(Op@vCxLJto7RmWg# z3Wty2d4YI~g!q+s#R9IETC0TSG^T;!8x+-~Jt3xDvTtS>Sel;>)^H@uuN}oM(A@KDzqZZY4PGI+Up;Ma;GLUY z=^api=~|TCIRz|iZ4_y8kd3v#orjPSr_mP)2&L{V9R>AIwc?cMbhMg?Wq=0eydMj` znvd#cv;`K~HRy#K&$txG(<#EHcE~KFp1o2`nIL=HfjBh}Jn2uz-eh4)-$p>7&AK0m zedm7O@BbQdcY{~t?pM#`9YX+Ekb?kWI0uq{8QdZ$+^~Uf2VDoOY@m+BaqCs;CeEaE zZKH0^Y&H{joofX|)->>&M>F8Xy~p*O*jw_Jv{~8Z%ALtJHc{(#A{zq%b7vK-RG9;sR8W3mS38W?pz!*>pGGRl_#lHuWfv?8C&+l6h29b2l0E z@;qa_9hpvC2)nXAHSIb5tTn*>UB@ebHX6*PfhuK~T66KL(eZ@lbXvcj9lk&U!cYH~ zUCxKeD;$sOr%{D-CW!i6mjMpl!EMriCa`W=LRbUREC9p-v2EAk=4(*;p1)M%L=br` z56-N&K`0O;AC&b-U0T~?7WL1)CA!yu@vRwjU8BQOC=CXlEKMj@PtLfrJ?dEhSZ&7< zwv8IcR;f3o$Xk;Ct$^RhTfe|D-t1iwx?MaUqJ<;_>c9%cVGd|VSO?O~xCIG+eGp2( zc%fkknI`sX(m7iN(?`b>ZqDPN*@AnvmPhS$l7KR2%#l9X-y9J+JrSx-DPgu8aE}&e`**yk~ zX~ODllPm=|!14|00+eP6k^@{lwDAboGD8*L5kK(eiiG-Y)Uh%yD%+fkkChbI2J@SZxgB4Yl;K1QX+%p`qvyn zhlq1_ey1Gr#nk2T;qRvs$S@mVx-g_|QILCbS&r!qiorW&qYIIL3fy^-(v#2A zNyMV92{@xU!aZ#kTrJJ3m`N1DrHO|njq&!W%4VZGk0ynsBNCgy4qofw#4>;Q2` z3rr}7f;7S-C2tna=#A8T_7Oj)Ie+^6PoB-2S9m8yTojVwG=_3CsHZTHn1K^R;|%Ts z?{0y(0Awx>`jXm3RNa<;#?c{A2YcQnZ}j|?S=qJ~_Lyyn*RX2 zi;?Rt)b%xVxQ-nMl9B-b8WifFV6j*mvn@#O5w(z_21X zP)JcE_{St?y~yr=o`}*|4~30AQFr=qMB6FoGu<9zjYT!r4|aN@GqfG}x&`k(*je|NpjuI|k3vEro6 zo!WDp=)eBY|Lz{{gW&8^yyHhq+b6>h3?KI{ROPKKAt+vdQG)1%ED-w>AnF132uEqN zqfSu5x)k4_omZzbrLCt0t~zgcC!V4xwHpd@)n-C};wd~R%ZsxnYfIcAm0n)T>#;IE zpO-_aCGv0{%+A3$SQuP?tw~Y@3pq9=)|1iv{m8mFAjajWLwQWhA}jMt?9m-1#y&N; z>hApwyuSW_ArI`n{yN}zsfBn^mO*sJk{}?X2!{emIu5Ze1-xe02bRPgkO|p_%^ELe zXgK%JlDD=>qhPB2_IQv)R~v>@L(jCh!M;sNc{P#l=K&0MI34eOj>yX8Nu2qpgef7VtU;K~H|L!6o;yxeI zfqOqH*!0Qpm+#|h_tuJq0ha<4>V^&OId~Zy16!;`lCa_0gk>`{tds03FJp^q@o|2_ z;-$|!)_OOAm}zrHnicFg&5%vJ%~tfbc5xErgU)SiQjx>TGKa}%kB$w^DC1URbNsN? z!Z|B{GJbXFvHP2sas9QgkipjRe0d3H{^!#jU;+O1zdC96yYFM(e-rbc*yWo(eOp&O z<92<0yKk5OO>}h&K28|=XFSl=*5gH74BT4s!Uk_)Y*)V;>k8m^CA2yck-|-vv2bvI zfW~-LHKM{9lXB1m*eWE5Nzj~71=6 zmSZ6q0wCGO3zCt}y=2MA{0ebfcS0P028MUWg1tm|n@Q%)`!1k$9M*=%+beF%7fC+g z!jXvXvsO>3#g4Vd8yC_6RCdhgr`)XEh`(!6-_=Wd*|+BBklan)F}Yt~WR{o8$DYce~Wrup~BKm4J*qy1Gww?2TmKqaS zUr~VMpVu-CgN-G4d%cDr^$=3jQtSI8DP1&)jM`DgGWc3{=fQDtRIn3&n}fGh$E_{p zfBfs+HSzBHQ+b>2){i#zn=t_D_UW=w-;_U?V|3s^2o5SN$T>npj+32Ciz5sNaBv_V zwdfbj>P+2mi^X=D?4?65IUU!3vt+hfjYMJO+ZaSMo1yFKgRx*w&%1tlVn7$f4AZu> zMso|Zky?CvH1;Z;y&drEw$CRleDT!$PjnASsllT?1T2+ooR3F`V4y!*eW{%Ua;gws!)ruQ>RBM|QPp_n4q9 zDO#NlXJ{Gh4oI~ui<#!D0cXlxmp6)64%> z;61`-`A@OCn7AD#2EPmga*U-IlQBq)>*6)TfYcgGS)>I~KgGh_d@;@>LCB6WE#j44 zZg~$;BcL-jOs`fU)?3Pd#-3Skiqo(yTsiZ52(nY+IfbeA#*yabX{ee89fr8Ng6WRp zz$Ok@^uA)hK|p_ihnlJ zlAHC`(1X=rX=SPCh|!SU46{;Sk`#R%PXFWoi@M&2S$Xwbzgn$-qX$+GiC4VL_W(_@mo~^P1w!U`Oxb8HYh1xAU3ra%mC3_e&6gr4FL5Jo1yC1_Zz^$8}A*Kw!z)HYjR< zR^lj{Lmi5PMT`bggnW_p8Kv5K7;^nxHIWm_Dy-3e_N)%l=|*=Da;40O^?cJ;baU*7 zVVp}Ty3VvIJ1UB`Mc_O=CO3NS&js2L#N{j=C1URY8HU%TAU<_#x?y$Ynr_A7en<9p zGu9z?{q!Vz>)J5T;4-)z3L^@oQO0o?4hEFXpr{S}FK$5w+kVlunU6;EXsn0BH9AUj zymj$^bUa7PqmZnyu-?M$VbeZ_4fyR5A-CKTl<0;gCxJ(6#L0Ow(VetU@u>~o3tdr7HoJ(L9 z$3e=&dXdzy8fI_LmfLO(47WSjyGSlAytT6x%WT=09OCtR_P%wpJ(^0ZGl{oIgXH;n zV64}8#GnNhmnUjuE8daR3oDWI9oPRsqntai*V-T51AZu`cdLm0ms)FfU+kjz^pBZ; z+?Vp(I+fT)cTy96Brr1{*oE88pS_>X-sQb?AO74-T-Pjyqd3e0>6Ue=7TcZJrbx?0 z&CZ8sP>Zm^b;n+H+QdU%a405ntW_Bq{HUC*<_)oI$ioDr%X>^EDgg_#!*)N*@&z&x zSCYIwuLEm4&oO4=nftZm*!^+EZueM!Q3aG(U4@i@LV503!7s@H>Sv+d#Z>qF-QRyM z|NPeD(y>Vnq-r?BbWsV#f&vhn?r(Mf%f zmeo{H)~#adb~xBI!z4H5!x#w-RX?MrR`WHZTd{euIUN0LHQyblQ+!U@2fUPju}yVL zxyDB5{DGzUQXT(ye4%$H0gQLoPaYAZ=^@M@An$CjuzLX$YEZyPqb}8nAsv{a7y)d- z3sBOtUv53rUkfK@J!O>X$jhn2Id{*)@{H@tw9psEHX;4}etaJE+tpm12>76k)sAsk z?@m2$Fct^Po`J<8AFF4oFMXqbL;mV~N>^LnEB{zPcO>zj+{%(DGK~xt))E5A>yGx} zsOsg`&%pfdXI#+z?i()q-<5s_-xEN!C~y!!o&`d;PP%2gCS~I$?Vy-V)8K|WFW8r; z-Vl?+2pP`!>HIh+1s;zKI@z5!({Q+rj-GQya=b3pi6`=+bd=&nxmv7$?WMw*6+cPO zIfmv^3(3D2%hO!DO4Bvj(PSKlGa;rlr|d z%ZBl3JVTq=vcGbWxypinBTC}v+lR8{M`SggBfq;Za`ci#2k4&iEoMP%QL)l*zdK8e@AI?w|0T-`teC`VRc1(KwSdk zgSA1AWD<~m0AG|fP0Pf)Hs}lmLX;PW%O~PtZ5r}Oo}Pxwa=35YVWF!ht~WWhp3m%2 zMbrh{^>~Uz#xp#Bn0SOYMDgV$JQ?Mf(8)Z}X&D<6g&Xt+O~^=z5WIFx-n*Rm4>}uv zC>0Ia1S{+svUK&QIw-Ik@=kVmw2b`~^q(wtZ{X?j=`BDy6bD`&XfL32P}JhOZVo2o zFG$9=Xjm&j^#bYA7Y?FfR=tyIm2)>F^yS>;+jy^I6D2NxYc^aV=y4=hN~RpdtoGdm zWSYswvis!zly4TSFv~x#ROAkTy;PH{k#v7ni;fHUJ9PzqW2ix6tM@xw#J z9l0q{BW9X^?+DppCrHgXB1aJHc^R>zzDiX-@3*zqw!SDddYjP4;l0zWCHs=srK*_ej0`3XfWU*q_~u%b_vj_%_wL%GunDF4m8t zZWoE_pJVc|rh0xfQX77OOF)7CC;Qw9=`L%1oc4GgV=wBSQ@=69E{3jYT98-)u>px8 z$OUdG$I zx{sp{$y?8x+XVhRS%2o9+|6BZynVjR)LXp4fv^*_9j;9P4aB+-zZx)kF`&2!7IH}t z4+C@bip3o>DNT4wzaP}tj2G$}+b}-CAcJOql&Kq)+AbFTc2BHTYl6;ajajE|yzb3V zsulZfz2J1M5v(m;5W0#elyMp?)RA0&596Opx0EX!Pb@<0pTUW>oo;Ksw2Jy%Vef~) z-R)hFyI)-D?cJcmaMUCT8u3#9$5ID=xB;>)-7hE@gH5qc6dJZ%Tmqof#@nKW0_?ce`cGBXbsu_=^ zfZnqF7J!;Q?T6P|` z<1%pTldG=6tRB^nnO%;w^caqhD_U#Dhj2I=B}o%v1DqgUC_+Nss<%sW zu7Or+ke18cZlJfEzxL01NEkT|>+&t^) zdDa_^k=1bnvIfTDoqExM zyefr(a?xUF2U4vD#&NGsqvQM4p@`7qI9E|+F${$CY>hICM|Ks5rqRlOFZKmD9=MBY zJ?1qkccu{`s#We02scc2o2}c!B1$#(Z7b48J|->Wa4l|qdGh;aesLoHX-DZddsh%{ zd-+pOX_I9P)-Xtz6E>*K9olqQSQ99dU^$j>AykG?5qs729h_qaU!hA=t_Q1uuDV6v z9n1}0@KL&S4c+k3SfF=*M=b14c4)_ykhx~hL$(~b-nJu}%oI`HjpD6V*|j7M<61op z`@iTe{sYhOTOaUKB}n{R=kWhOC-Ayy9N|g+6kz>j`uS&*=5DSVHTTa?%zf8=#c?{x zSjUetj*GLffppDgISzzE97zIgNWE%tKit~7KXzg>p9SSASyX3#qnYnTZhi6!#&hbt zYVcg$81AIya=3;;EaY6&es# zb|r1D#PJ8uxMO~QhRT<=JBYsg!i8GC5ilSQG6A$s|AKq+*ZmiVno!B@-y_OY82fcmfh`+xsMbbpZDANO9b zH?ghr=a|NCAVt3A94}drr-A&g8|d#8ba`*{!}}_{r@}6On9&uCpeWh_IYn2onzb;4 zb{PkRN;rxU46Kg^_(@;CCn8nGwT!XkHt9v6yh)llcEZ!C&B#`ho=)*H=dd2#^YNin zZ0eB$8UR(DuHs(1H4iIcBiC3tOJ{!1KUjn_S9h{Wf0zIN_x*D}1Ns{k6#gBck6H?- zZ9&Eeb`b)9xNNQ~{%fNg0}=}mvje$Cuq=+zAZU6av2^x1HOYxh0g6$1lX4m^=?!b2 z!c_9f!CGqx$vF7}?X+db?&5;h7F)g62lS90Ddr;F;q#-}i+OUhOM>CDw(7~v<2okw zpRV&`1fvpiDlZ()AC9vplNVH;t}kxrb(DdC5;Qx1EQq)mnuIVKM9r2-vw#NbaHLBT zmStj~cm5g_MXDC4HDJ*G!aZOpv#s);XqJdA#rtHn9H;oon8SlEVxq^)3rBBe_+WSl zS!FPtO9Oqox7T&E(O8!sN|1LN#2BY9{z@_WE8p<0IL_}ltM5#9z&&3-Ijk^rOd7>a ziXd@++@Nq^{|w-*K_Eb27o|A(Z77DlP=AquS?ss7e(vtgzU=#_U@{;0!w92oLBrY+ zDW`3Fu4zy+BT*tE`G6lNXKXZ76r~=W7R(fl#Ur+g!x`h0+R@q^WdFA9+(_%LmEX(i zfIpgIPX+;yr>je)vm4XrFdz+NO{Od7)z#O31yLmi3NVHOg#?R%n3;4qj(stX7;dsV z((3?WK%T$8NfYg%i2H@JRyPT^wgU#+gXD&oo4JFmPiHiDCzI(hca&oN`dV?f%n#-BoPrJmA zC3jB-e;A*Fq&a(n9#sIbSL3y^i|E-vM*@5s!y|M zv{hYMX?faA=Oyq91#zx|nY|n>5Ybto(aa57O8D;aoue+1xQQ3TVSFmN4$v%7-tB!-e8?nS$t z+t-Ll17lj({k6iK%*Bk*EIUEfraH_wOhiOSV?7O6vRtYAD6hjUs-z?9#o$1vb$e+?-XpA{DbW~^B?fi^6Z z-Hyzc4(AukkeH9tQ#n=xXB4(9OAW2o8j+)FJmx15$Ky#-mzsy9gR?F!)pU!jbOiCv z-u|0u4UyBMf6yb~c|W1y`)`cl-Hm)|f2j9V{`V>W*Uh|lJ&8WFf`2Ok`o;Z!9sqqX z`gmLSJ5Rw7Feff-<^(~SB+A$hNd9R3j&1dLsTudJ5tt_U^T9of3tZW zO;7eY`!<4xP}zZq_EW3dOIzE{C;t$McKl`Xg*NT=T!I|*Z>~X|y~i8q65NmV$8uQ$ z#1fE$aKVp)c+@3v3U$DJVok!l)VTzXk9cvufI#B@xWwlZ_o%HUxgKpwGgZY&ZjJl1 zfl>~7be|la2YCUyms7piq2k8Mf77&V$UvtgZNO2DpiyI48zBVI-;^2|e&ex!jpRG& z&AW{E6Kil|*58Kv{oW@z)Pr028OEK#2gu#kg>SzOarRPZ*di?qd@K+GI3S01DInh= zI-)TU5`aL(X2=&P7bl~qPn+Hl$gem+Wa?z0%&F2QoPDzL-exb%_So1ge>Q`tznUZd zT6GwPJqYwv^MhkEJgUoM?eY`Wn7o|R1gcY=T^i5i3N8?woaj(OLvilnzzFff2q>roXgmxC@I;sn~^Ao zyKSH{kul4YwG>bBX@BOHt3LZ$chMc^csGx)BIZt@{U|Q>#YyHL<#FHJ1lZo+c&c_} zbiDz(a&?4ZxP*;SEJM5S2WVGd*g;ALbjP4Fcrks&+FovzVd7~Z{yx>kE;;U3+rpH_ zN_Ir#S+n7He`_nHnsOXD`Kq4DWR}OvJtAdFe?F$nNxD1>+SJjIWrVJW^0FG>-=3(v zcewhrOx{F@xA^r<^?fNwmRvagd)@OpVk$&v>t4cCrli zqD!9R;`%&ccI+xl-+=m^rSh}gHw>R|J}r|D&`^*;hnz9$z`ouUEu)F9Svm#GJ_C~< zWq_38e_jN>#7>S>qc=Xt^z@i!C>6{(hnH}Q)HTitaca_x&ijZT6)EnIi@Gtk3zK4^ z!ER!&h-p%Xy0{b8_!juA-Dn;OS~ZStRKRmD(%;dSK3jal<$C#i;K`;;4zd^|MROcs z;sm(eFxm`)#cjIla&$R5{z?{v?XZ5Yx6rr3e_mmBN{eJXw`pukz!0IFXY_t>P#mj2 zV2e1}(7ITmv!$>eJ6MVY%X6{vLXaaVp<9p4&DiOU9D$Cnlej}9hsD}5@?UC2@UVA5 z<9_kfgaDE{5SG9mfTA?Gd#=;f@g{BDzGlfNo8d6V#a^16Q*>KfPEp&c8 zf1S~&DvW~-WFe$PH6<)T&h=uI4mi*qZ+nAaJI(D4M(p`{R*K$kcSQRVj@Rh}PRVqkNB*}9Xy-t~q#e_;(N znB;aiCgy`v(+Ygp-!I!irYHlefN&!M@4*?YWtS`M-DF11Y(&8Z+~D<6{PNV&4ZOe7 zQu2or?7h`Hj31jz-dI_NG`s#m3_(F=z;#WF0kK+Fe~K`ut_z~swPT@P5HS6YpRf78?qs|x zge*Iq$8(3#hl`tz5kmdh(H%x7GfALDYdcSq#97GDfqw|LXSFcPvPmOuyPdr| zq&vKa3%Qzy`8Yc8GsWRqANLv-$JF(>Xy``NGRI$%n1Bp!p(G?v=vUbzDH_w+p7$1eQ9$|m zTJa!T7sPwY>5Bia!W4p?e-{{K*iLXVCi&1gu*TV%1S7K= z1T!*yUV*yb`M0*Go4I#zJT@oJAdT)Y8@Q?%#CkRZt1xPCluO_!OIR%EpBUimU$8lg zi8Xf)D;XF|;~cn2Fc>9#bBHxuASN!tBEg8R)pa~uJI74X5+W9De@*g72V0Y2RcULY zo)^)2x-i6b4bciS7~9`;F8c63pYldG+=?dsrIV{~=I*$4pPz_cs!Mf%7{DPpNc=D; zX+yq^vSEz@-WO;F(gpn#Nxq0uG|~}f;}%Ope{tmY$BKXe&vsU-5}Oec1eh2hCx70n zc1{~08hb{@gr1-ye=R%r7Ku=ez+vP!V{dLOZOo0voV?wi4u9vo>JN^k0>*c#^i@Oi zNsDn8;r~^P@8&v;@1HLz5Zq_e>iI!OE6fY(4kHvdt2CU zwTY?a<)j`5;c&1yEf@Ow?p9wae0}L3{E%_&EL|SoZJw%8IW`cf25rDH1iBNFa}0`w zzgS4}S_W%k5Ldv0gTBb-mi8g=nop={S+41(&4{&GgABw<*Fp+UWj<19&a~%OV*4L4$K{*Rmd`IPGWHAI}9Nr(dC$s z+eYQ?e=&*iNNv8~8pHd^?KH{#^B>CtZIadLV5|rNM<;)||Nm?leQmr$=zT=4Viup3x}3xi}=Fk{m%#k01PR>?GJ zS$C2M^lHd$&e*(HA`{nHc~iB2ipxeA9;1O_e~e9}#A42q{jDw(^@dbiS0CRY%bcQU z{&x=(*lLIrL{)Y7xa+U@O^9)2J9I(F*>Vp2wF+m~CqPXL{ z*yCv0Q|7}AVemL|eJzND0fvy&DA;PJYTX|-bevcv5I;3p3`BujawD&iP0F2S{4N;X+9F<12*`f2MzN7{vXNwvhG0Z{@5)d?Lhw<4wRio4P zVqO$%ii;VWjZ?$^ro2}X`+#m-UCL{9*t>i*%@sb__PfC~?Fp z={zU`l3J|tZ*q*SD0Ti6x#t5w`LF-cbVB*G4gR~m4SqC-c>3^HPQ~pHKk_UL*ZC+? z`tSOQaTjnkHK6~W?bQ8O>o*??*nj=&`s3i2r;Y_;^xM}qe~-2L8US2>bqc=7xBFoq zr2A~Qi(9|E5|B5S+W}%1q}xD|Q3m|qVL6E3z&mmQigSRBq;Oyc@HglrHc=5a>8y7{ zy*i)LNoTnp&$4|-tWKLzY-fbLO1z^d#(hcOEUlost;F#zInFxWMJaD4uI6Y9>~g*^ zhA<=xlCK21e^h>epxny7f2ynTQN`h%AfZvt-|Djc)s$s>jePEv+WxkouajNve0}xj zIz=PbqHw@6fln|E;NB>P1iy>5Kvzo94#-FW5Jnw>c-IeA7)oq<)H@z=N!J~6svJ%V zy6HF<4nW{o8cBqprZP$%2tK*YXBVFfgE>ZR*{voA6RaYPN(2I{*?MqD_Q57TF4m~r zlTo@Ce_ic&d);EIfO>IiZwn$o6E$g|tZ3l+eFMf!=w<()?)qot zK*>cG&T@Nr?w@3&BW$YUf(3!l$;u~8U?+R4s<89GBA1JyplaoL6@#K~YpliY!Cg#s z&f=3LoreVejTie}7UOlpxI?FR7ofKAHF?O4e}da?@;jM9pQgRq_hqb=A7tUCi#ebh zhZSoRI0?Hu0eb?hP74DH!@@0`s`EYGZ1W|aZuW+8EHO5*O4;!}JkXJqw3_1Kpz4Z? z@)BX2Jk)zWMlFSEuuu5{N6w-@snnq;c*4%r##OPUcep(>CzHz3epX8RHePppYh{Q& zf7$m@!uE^O2tU+#e46&zz8?i`?}`tUaxsJAh`Kim>;fRv|Lb4*K8=dq9&ZI3AD7^B ze%wb}w{Ji3&qd^Kr+-|u&+oN7Yzqf}+QAJRb{iX{%^)!WD$l9$J)Go#@+26}X5STq zL-xzg7A**4=8gv|&+xod9iIBV{w2`n<*ak)y5h>q)o?eSUu@B$b#xjH4-&$Qf7E!BM2>Yd9=;o=$jAIEo^S{3zg{pHU_yLwd+;_WxxTMi;@PY2`S13 z?}sEom4kuE!UcIbsIF0re#076eX1w$4wDr8t{3mgR8l&qcpNXp(}oA;WTs&;Hi~KC zbeK!jaUJotIFk1=Q`t$9e`&No8H7q-)RBBBc>`O)>~cPMF~>d%9B_|+N1^pHY0E6P zk#;pe2&F))1rQU5vo<^kP!(UPMHf@j>=4)is-TCIYhvlKNGrTG@ zSpl#3irpxTZw*cg;;cHy=>b)QH9HL_8}t$<@qk$@kEyg=L`G-Oe~XMAOIyCnY`VLK zDtMEO-u(PH@+%14{gOy`u1xN}>Mn-oTM|3A?*Qe^VZrD=D+c7X9UFs_qa|@9O!mvs#ajf<+_bVl1YG*ZJ7dnqM8% zWvFZH8;eEevj@ zZTnH*LKg#S-&@)j99M7H`t8K)OWX=vUdH~p**+$`8tdbzt>FiW2TGG9Xj0*>W^osX zzz^0E!2zWM?liCyWSvm>wTTu?;jIn>cqq=Y&C<0cR1t@AZ#}d`975-rda_HAB6`+_ zy(Hnt-p1(Ae>||bRZ(OI?~-#Iwmlr5P{)PqV2h3~Az1ZY8TGi%k_UvseyxaISLQSP zKLH>!pxk~z-kKAS;<}~8FQxsxOxm*VZKR#{2gnp4oE#v?HYln#>fJ+vwoj#9q=Y%n1gf}dGu-Il@f6mmlHl_#G#2qGFtl~dJRi63@i%!U_;m~;|GrZCUnvQGRQD35x|;l^l)II>WDN+m ze<+B(Y!h=K{-Qxt3ZO;Zdx^zB!VHm!1;W3t&AnRr+t}#Lrkzrf)sf9hn1+8VYE7+Kvgk99fA2K<&b!L0^)+&hVX z8rOFoBU*M4h~}u=8S+_KPEy7kt(WT~wd4i~HtfW)xri9FvvrLA`FNuGHY?BN&ZtkD zhj1I<>tbH;S`Zi8GTLo)0{1A1Von6p~}b+-D$6woA&lM9+r>!?#5`4)W;*T zPX3^2&Lu#z$Jn4%APJi!X&?qMe~N+S15y&gbl+9cHYS?ox#T%CWc5<21yAiPlcb~7 zlDU*S@(@d_ut@TBF!vWkIZVm;oZG9DF~pRN7=(wA6U2`0pA_(B4d#L_tJAn?u=oaj z%7GVY_LA$~k^%By<#9lT+MW~t(sTYin{j}%C=dfptcL!e|lX{5VSZ9UgJC@`DWE%6Q{>A86C;U3P5LN%a==PFpQL{T+_~0(si`!bV)#=``e97 z^tvOR4dWDJ)ZWmxRn*^gb3#C?gGOjH;v8oOtUBDn)uyo5pB(^;xsw6#VB}urdUgJ& z5$>E{T1wx4$<=1xexhBQXbxB<3#TanK{%SjEVEWPV<-pcGK#Z+GSd+Lzio~tSBO{5 zF3Y9CN|ZDu>2dc=c$!7$?kwA?_=4~%yoOcOQ$P&D=hL@Gca%AiGWL)o~U4;^NtmNBj7$?I%mb! zC@Kr*!%Ae7OI+BA$&b-Q8@e+i6YNUvH$CO*6`21q{m43AF}2^Q4BMXZYJZEzVXIm! z3S=_}Pc$3Fz$zTDKPX|_HUv*5+>#t_5;n`B?<@kktKO3BhMUo#nqDFo@Y7N}#rFJ? zcojxZOT`t5szlti!1N9nft-9|vRq)3PU`L!11@3C>O>@ya<^ntV>xrCs&nr(SpVRw zNB^NWcp3SGU;Hq}{Fv@$oqr~Lc!<0VP|ValbAb(W>yjrVu(%fd>(;LrU~?_QM$xyW ztIvXkog7}K+0$Z+x_ds-;!32b0MX`x;m!h)R5yJl!1*yojwEYX#W{IG(2l&OTtt`5 z3Lnx-{B-Iv?yd^=+-|cx{e61uVUEvrm>&w%ckQ?C6n+-_-W`X1Dt|TcsN8wY9er~} zeuyZ&Oj=);=aCkgL_+`oUIqYp7zv&l3L0RFhF#GGQVm2+pmeQk&k=8~&J1UK@@z=k z99b+CY6Z{Mc*A#llxQN>Wo#wta0Vm+>29rQXzHqk&5wswS2{#49``oJa&?-iHl3(~ zH5{!+2gVqm!uMC_bARQp|4?P-YWv5z*UE->=C9vtc+F3>+<$sQJWu*;{;Rm+I%Ok_ z;wYMAI1(-ZZospLV<4CX3Jx|;5NJ~lNdapC_}SW+_^pNBB>%rENN^x%G*f^0Lrqk8uUK+AJzJEVcdV-=K!z2*>Z|XO- zORL?JtRJWLS5tZRHMC-X=r(`M_iVT8M9qpNK?mY67DWRp?_gvtUoh%=9yZO{kK!1AU&qGg9f8hROid&u4JMjJa5B_RC|9Y*dpXtm$&s$&fPlJE1 z6W`h(pe#+BAh!Vgf&hw|1+^{Azz|BBF3KKn@RVZ z-3kbVrd7xzovIOB0l4K|9l0n3vht<=Lkj?VDI?vo%>B(rJ06(wIp6L1)Aa@W1UJ<~ zKik=!=6`&?SPfuTE1$0Zkm1rajZy}Lu?A(}06h+$;~2u5h~V0KT5NG%zyW6kLyGYVPl{K#P~J_k5e0me;orO zEr>4a>YNf>dHz}D!MafsO%{3 zLShyvXkYKL+i++wyO_qBvR#iA z;(vr%996g9us~DhSg1ug;0rn!SGRWut`&vg^^FzmD<(ES=wN=a!104Tl?=tcuZY+_ z*VtoCwY^a`{ZM(+p7Cmp$00oX?|K_xqkjw&FjyAUtv3ict0x&VZM;ovMg z+#8D=WzL?MWmqi*bvpKozEBbPMp&o?G21acE;F}Go(%ytRF2~$l=j4akZyOjbXaYR zB(OBCi*-|_eMIm{eP&L zz;f;!%(cG3Kg^DNne=Y!$4Dz@veuVd4h9kj14RKPp;-d-mkw!=U~iV7AQr(fnt0^aI8*8WZJKG9(gX1+}#BU1`3Pu;C(`xB;QqP(m_2Y^3?hQS@w14eejolCL$uFjUnCW@E<(FD6gM#uC@NCC%>*j|J zVL2#-wE!}a2Ef`5g#I-1MmA%aiBN=@vI!^hfEM@brIbmIKnci{8^l#$UXqnU6w{N; zPjyToSuENZk(&riIHT7nbN02t~z69x;A9mSv&NFhuD z&=wMW4FUpHyzWZ!CRma$@_Ik%Z{w5Ytk<5$B0@p;MYoTSI&!KA{t{Uu$*yE*Vz4dj z^=V*9ihQel-KlF(XokJgEQHGiEGUwx2UH^ski zzsHQV`5s4qnz@>i1ogr~>qb2eKz2BgFc=ChNS(|IJe>oI5*wby?^Y(n7B~I z_%t}}3%D2o*3DMSqtP$&GesMHKI#b5{>4T5INciytI0<8 zRwGR8PCSLbvkf^Qw13tOTzOm9;%9MWd&P) z6GVe9QTIJ{&9{Z97<|BWim8P&QVut9ED1TcmShiN@u`#reX~~@Y;fMF{Beac?(#Ai zNn1ETwau3HWAs2T0AMGr2@z}xy~Jk&B17Ltlix>)t-|lmk$*rV^mWdAqsa2#DcAQr z=heRLfp)n*%Qh_524S(|0v8HTM0n1E?`OHRMSzeS!%>F<&E3}qHj%_gkdfaLsk4z_ zRVs4GWoT84c{wOP4kWWpJg!$o(5naBR(LJj7l zWjWs}O-lZUU4OE@=l+t|us!3$CfCE3Cu}ol&FWzk#nm~R;OgN3TW}`I0;yvVuoz*h zH{LlST@P@sVWOa=IkNPfGT&mBJ;%okz4MKA7g-p^c0rEFd@m1o$5oPYXr-+pa=O)M zbmDiiu|Jmu!5%G75sGz7Q&gAhdpywWxF^s4DC-Ej{eP#yf0|Iyp0P30$6-6I0)vO1 zOPQ=?TU5PCF%E;;IEFbWT=M_R${9-WV_S@qcAtd5>vDDSFtFJ&Zwr8>Y{ce8^>*EN1 z#-AHI(|^V#K}qBL&G|h(_}aq>tPuaHJ0`w7E83Y_fBpM6x)(gp`EdpA1Faqg90ct^ z<$$XP?lJ`nmq3BtZ~$HN*-oF0!dmhju{kl0ZGy0{z&L7i#*sRXxcyMYoj&TM{ z0mWUXsBxG}Pz(!uf(cXw$rv1GF(4y(*FfWVN;RxvtV@gyXf6c7ra7XiU>tFFQcgOo z(Nnb9XnjsV-DPH)J(TEaLNNBUyCs5SsDGZ)g5_O{H{IEEitMDQ<9ft^r;a*o5EH{=h$9WhAQ;*vEsMZRi(v>110>6NSC1je(M_l= zId^9tcVo+$JM==3kJzTmc7kFKs@vtkSrBU$l%WaN>tX3?KrFDB5lZxe=~dTaGk+N^pb2$-79h4`HyKje@8vk-l)4qI~5==EfL$+GgqZ z8Ebsb_8Z_sWs?<6jSm*|rGx5&`G2-!8`=awg*{Rhr`31L*oeHS{b}a9kk4X3i>CC zgQtuIY8Db4Mi_h}U{__tt=7w)F6Ucvks?Zd4w+n*Lx0gV)xC0FDO@p&(0}t<8VkK3 zNl1i?je-KatcSjEhpIL~!EG@N>qjC(K^hcUi6%ftp-v&c}=LDe+wY2G>a zl8jg?ON~Ufqp>$9c2n9uY=2009q9>|_Y;TTWQ4S0w_ECDA{XCd*Bdqqx7argHXn&} zPg&>J2n)vUO*bEA{ZJr04-l<^cV&2fq|Ut0);9HZl3OV!up?|^CV|0iZJCS>>yV@C zcG@@rGAa`XB_3|Q!vTYI5!viHiMyS#u$)#SUcobVITt*>KX8=E(tnAuLo(eu1C{q@ z!x64z`wlr&=@GYfl2{K%8)R9qQ)Oh4TQT&gbh~^HZGB1+Z;C5?Ve00dzE)_0Shud* z^BZM79`n`4{5WVysOq+KlmV(2fD7SS&Ec4df#8)eNf3F$M#(Y`Ac@u+H+?tdoo<>| z6<*1!#bq@TO}&=ac# z$~q;QFCyA3clWy)elBpwO={hzYN{~wQ$xUHH!HxaYdT#+@PHtltZ!G&;2=7oImWec z++Z;lZePYC>iWDaVVQ5>yPwe4e_Oa|e~ z1w%R$ZIlv)4nE(0D?00jT%e_tPT|N37I zhY0419`$nTT#C0&-j8Cv*I8==z6@RO&0EX|z@7`jPtIXTh=+kJGdXzZQXm$#To>+C zm$6v#T_uk+KYvYCWpG-tx+5xPHJnsY&|7S^YJkxywHAvCb@TI75%N)E_P7`Eh`{Ij*t3m58EV__I)uH;C##zgIy>Xq85K_ONret)e*kMlqsEiuHUVY$zrHk6AfJ*cJ8Lj#YZk@dC9y4y#YCK zPZS%2Ts_?7y*$~TFY=R$)g*t()n1`Pfw91kp}~@NU5}gMP>jTElX&A1>iR}@`GXoA zHLX9=hOzGKC*z}@BplYW)afum<{l$a9ytlmn!T6At_Ya+g*EvN5wXGnI~Bzx60Hr< zch?tVPOl63+mNJbj`>2)zzKP~V%&2ApX9|5~*a4ny9dD|>b}+Z+F1fw1UcX0R7j4#4{h1($p4|uN zVV$njQjz9CZ`AvVl<#l%T7T_={vWEBfTeC;;P1c|kNKL*a65l!0T-^t;kDalfSMB2 zeWrz)G^o=|l%T;`GB6HAN`Rcb;S@T`_(Cw#iZLvS97y&FpD$#BcNMi8aLD_G{AD?eJTl zam6r0D(qwzGIv}l7|z1nn$W@&9hSrqTlGUZ80x60A|tCDkKKxPMtI3wltA*fJHzn1 zo?0?go)6P`NCEFsB~4qD|L8YicZBCrPy7=m`$Ngdt(1TGt%~?vBEphv-HeO_{=_v1 zhav$)0l6rs-#Ck`OMHNj2~gM@%C19&Io0ik5d86Bfm;JbvEvKh-4n!deP%;+9SuEO zjC+{9UQfF+GVGYU^(>i9l36$i(|wHNxaIe#m?%}h-@%k_=-w#1=FD;MfL}JX>(GDo z%&&jkI4XaDJOM2UTrbX=m{T{yqX-JrF)oAGtwCJcaltHa&fLEEr7!zA-PKfP&|A83 zH?t~RVRl-t6VFH4Jai|a9((en*FP|012k2BPv4I0fk!SlA(-2}64!#wgx;!ov@#e! z;O}7t{80N^k*#*#(9Z%g82ah?H}l=B&>UQuTe^Q)1t4*>7}5cTo5Vm8fY}6y1nQC% z2E&4i4qyTTW!~j+A_fGeBO@P`I^G)}J3=sZNzdgc!&4~^Ws^fDjy{(P-`x#?G7dRq zXmwp`G-G>6aB|ecGBW)oH4ag0vrl3-L#VlOQ?3-D)p(e#HVybcWNx451e-h$w76S` zA#8szMJ<*9Ik01ch}twP*k|jixvT}G4QEs6yK3K#HYLMgvSK1WKI)mEtFuYO?k$ZN znVHw08K_clLy#7@9&4`%tyr$3c%5{ufw#UaMNweXsGoZ{agsFx5cjjSq3*pr3fMf- z+&BWbb3e!5VHm%d_-dg~qbROBY`ir|0hli&;BhC{I+H8VkR0+5>lE_DdlPoI zkvH?vsrNo)MSh(>SWCQ`&$r*Kap8ZHV;oyk-M_$vNA(}yDM78Y&mHfz$ERPvofhG1 z8RX}_$1i{M)bsS^y)RbqQ`B69^(ox4mVW0(`k3&#Rz8l}l2wy-9mWK0py7aufyOKv z6uUO*qPT?tSPxnTl!NE**NY{exLRkNU`EL(U8=>Uo6+tXi4|$@!dTo>vo0d zzmd%Jk;e7ZBNJu^ALzLn?LX}B@ib*~9UjN6P9GLc*+4!ybvGK@1;Lj^aU^TvELzj4 z2KWJ_Wje+isVp9D$yL}JFlc`jorPoH_n5w9T;h#4XU>w%Zxa;{dy5&W_BwhzIF7QV zcQ6>K49ZX+st(@?(w(Qemat5TX|Sj@>78#p#kzDbz@#_W7J}@$WcSI-_fe5w3kx?D zu-iBE3nlO*0RScCBV+G3D8tr-SDQbw_8wFq3;q|&5P-Si1VLd8=emF3hS4ri{t%F( zHjw^?35dtn7N1*PJkN^Ja>!YrP@W2_>2i-Jsp3r-GzdFsXXIbbCBE7K+I!BmCeO6Gtiy`c{hPYtb%Xf(dabc8?7P0>#l2}M_K%(R>r}M~ zZ!Jnc+;*3yZPNlo$N+!WtX4odB#E+hb>u#^|Nz_nd(!Af37ZBbLO_e5sb@#Uc|vM*8xbe?w5ZBh%G?@J`N5%xU#gx zypd>j11u`C?tVG#IX%uAAQ5(r=R^PgiC+cO@c*ka^(N_}PzwT9i{T); zuhUyl7Y8oDrD%W0!oF%URi;AMEpj8H*Dn zrm|>)>_+i{Da~@2cDIN#_9BJupKwAv==<%?8v{f*%dk+v%M^)jlCI}s&b5B%pNs#V z=d6wKG|zWavS zxZk{e#X-qC{D!%-3GyHl5CjW^;x2dxxJA`D=MI0!E5U;!G4xGX*pI~kS3Tq`Gl-yw zd>+Hzy4dvgI;W$@B(HWOR^xZF!s>oMJQqr^0gjTU53DPbd_f?Sz}#p32uQ&0Bq1|y zk26g<$M?Alx7?tw(rLa)xw&4E=Sp3_qgePfZDafAv6gB9vtW(GQ_Z9}Ad!F9%pzvH+cDD?Q&#DEx*TaYDrc`(Y#F+Uwv8I`1D7(YnHt8OdA2CU)R-zF{ z=T5HZroEVx#q?YtlP#JvuIcu9RSFBozYMk|HOkJy-o9=6r59FpP4>5T`H{NiK3i>$ z+smsJ8d(c0G@vF)lyYf?#Mx_aDAT53*_nT~4In2VHdh(d*H$RU1wjsum0V5E!5lqg zmVDXtmep?0tO0f@LV6J-YgcpT>Fnfj{=Qsf2x8BS(QLI)m6XiS405q?dUd2W&T_4L z`7V5aqr)!`j@N?wAGPP(;n40=t;sFDNAY)dBoBi7-{K0fa+lD{6zu; zuAmP#K(SZ<6|Ft#kRi9~ zInl=VQj-}MkoB^Co(kj>m+lErvaP z>N}TcL=AskeQjy3ukSWk_8J)ltO8PGKYA;y2%3f zt@B*(u-Rm6eIva0qtJP=_;u|0BBM`l)yY8FSMOYRk^6S?qawkNP`*`T`U%21?LBLM zD{uHaaeRA5xQ^|^RwNHsizY0C1#K3|avbRbGYo%PUK(XN@Jl%w1<@sLkZ*kOA>G;R zLQD6MVA4;GATU>j;9v>5p!PGZM1r2-$z6QK%Pa7+g(B0?b%&pX2TohDN00JDT-B?} zw);E5yy}XFJIWI5f=R2fVor$ggjz|K3DHVcahehRv|o&LY_s*x{bjD^ zqPm|MlVFcwII_|M;e1xzVv@|YKNr8>;2jHk<-a7>q~&@?jVRu-A2KVw8UZ z34o0O{qGQ{Vba{2d(9`8G16aTPLy(|DLp9HcxP28Ax+rQaemN|EatT1Zoe9sYfkj% zOYE#>I#DplSecQhb8ZcLq`8Zg`NCQd3ST;xxplkOn$*fhl>0yb)jE1H2KiHC+!HJt z#m4o|Z`%%oGXNV>u0hgNt(XUS83BLD7()WxLNcyxf@l0r$~+afD&}>yiKgzlTF9x3 zgI9E<&Aw7KAuHXO39MopaQ0FaMHJx=d8(d<-E*JCk$~Tr`7|3HhGWAaO;TwIy1IEoB$u*bae%ejQj@ z+ccfp4mOaEpzh=V)CXW0LM4CV9Ugj$jgr!~o^2nrvzN{zex=UML_+6UIpOwRPb!Pa zZXA{oiTK^wO24Ra+D%Uwli)LKj(0}F-t46qi+IZEFr{>^m$=_FXfp!Gx0!2VE z0JPbDBaGDthXZ0OTctwvGwScA(saQpg^{eheF!G?Qh+E_A;!Ar1Y`!CBYV(PN<`OF zQ-~DkM#hR)wFZqt)E-a^1Y(jklTf?uAc_q`4-k-E#Ark`4=ptRvX6q zyHWNBRN|0Zavgt^L25y@@ciVKy|h$#aT>quB=GuJX%&Bb@#MdF7~KPlwqN$*Q`S4j z%^>&hXx~ED&PC1F|9?RyvqlLqJK1nORsSF`cwVgdx}UXxdoSL&4n z>Ryvqv+(Nr0}kq5lUF0R?kpJr008*{lVR#ulThyoe`>=p5WENc4@Ms#=h%a62u)f7 zO$bSvbzKKsPTw1U@4atJTcxGFm&!<`h>R3US<#e?mJ+g3WRH}_K~sdHg?f!hM4{3k zL<%92ifr?;mhJYc;mWe5=6Skq-XvT*R`>z4ovA@~$Hmm{ zn0w^S#bk^5XsT5EKB2XqU3=5xjjy~G+x6(F{UWhvk(u7y^#>A*&7_00?WBe)e$#Ob zZB=jVmYtswjlNiD2kWhuUHCP5`UMa71d&B*N6ssKN*I#93?%Rd)o;*GHG$_EcWVwHq<&vmZYMNhPCnty6eM>4; zvims9Z$i(q!=smn*anRE7&-srjm>$@pPpVwy%?3~)%NLu*W4YO^jBZPeMa5)9wBJh zoxbSw>}jpehoswX?!w2{ybnCJ#ZV|`+idZGuGK|XCIqNFj))YPpD*US&o1;~er8My z-^{%NZ`2)wzHLi4PgoeOy;si6%Vyk>-HGcnz1l`4o-vs=EXSdUlQHAusH0Pc@GW1g zVL183^>H2)AjUMT3-A-zZM#ys#k3Iel^dg2N8jZmAeI-^3ZS_Y}{L zUmd{9jT={V?v!z*a--OXn@%l1BbtMQF7^&BKe=|@_}q`8>}iU9Q4(wnv$IP8B$-&zJN>Z29GmQ#1Le_3PC0Fk8y79;U=ee%FhW`_n{YzW>R_s21-ehP`K+ zh`^kfW;+*Cq?>36Kej`NoY$?dG(| zTVLA43iT~dcqtzYZh87CWpb5Oc*gVP1wnP@dHYY=DDHTX#f|mKji@Mp9BeXt^4aK( z5&EX%dVc+Wv7&wC=j_13$tr$lT~Essr(50H-8U}F3g7P`=T`Z&E6BZA{niukX8B zdxhC^gp>ub)3kT11TjO#kH3Ymw{+*bA=nanJaj&;Jy9jx%1iL@; zvHkkYddB*D;0na^6US^Ax8_PcvgM0QHgB0EP(S*_tCotqfRY2rT^D&Pb@g0xpX{5d_%<+K zaqDAuq1juvf6GsOb)z&mrYv+%Qr5dpYZiLT+vYyTa)u_FRp3+v0h9;1AoPN@Xm}%T%r-z%i-AN#sS_v?Jv+lW&Zi+b%HPE_MIN#Rumtj-I@|x^tp! zw3gq{`6sqbDzA-xHfm{%k?YumaE|8-BZ1bAEzWvrIs!XOCLfrZP{7T)F17i=_nY0> zH8)<)ePAe;8jX&rVCN|_&>~gr9o>R;WQWM_v0cux zW8FUC_B9n(j~sNUdfj}1PjcG0{2lM2ml>=|+cTkMed+3trP{8!bL=~BC-J78>Eur+ zsBqy^Id#i1&A7q&t8qiZgyIN`b=4th*}GTqDHwjfVDxft?L|Ysk+V-u+l5keF*;+T zZF*Q2ZSFdKa4NO#AIonzs{p|+$3dmdkQyT0Fe%g`!R15aFA}E6!wA!)S#}s`kDS5{Wt)|CSV@0*J z7rcK<_+DExtD>-FpMbym{u>del@3iS^mZRBd;R3b&gb3ukNXeqsD90g#s(8WUY7}p!82lRhV7y4y=8_;(lat-ake&U zHpe`vBiiIn{y$N*0%umepJ;ZdW`|9n{m@nKrpz_FRhT1FcOo;wbIe*dUXQbq=GrpF zrSq)UZ?vcqGj)Pl>WEyY1C3_WdX8!> z>N#SXf6yWDcy8;&pZwoT+p*@`VcVx%jY>FJ@|iEkEzl7Jvvp9 zs1JL+ADj<7`uHbBINY$2*xtGIk6P=3U}tNgAR=>)(IfR0-S_XV4O6Jo9(VV{oQ{$( z=Zw*FB*Zr!DldNAS#|264ZOoQ?ARP%Z6Kvvm*{QkzQu0E=I{i~4wt$%)2?p4n$ol- zlAh-cnoY{~xOw>Bs?Z3xr=hf*I@vX*S<&%%fJM=H- zuX#B{-D8*B6|+N2bX?KMLQw_kP(@@wiI|vsTn~tcky~ z+3TCNo$v2-bn#>rf6kOeUSp5jn*Uj5vOwH^wOs3lv6H^8-{!6vcI(lLyKkm%5xw%K zqwPj=bzQF2pZ@8fX9EdL!X8me@%N>=N5jCU8~BjqB+QDZXN#%Ri!@W|$h~Rcac=^t z)x#p)JO#6ba&qN{nMbDXpRP4|zmBoNzIc4x68Xk&o#O;`8}F~vQ?t67@?H6cy6xUH ziP&?y&t+Y<*VrqgJe_+k$E#xQ%i49VUA3N1F1Hp9HB1>ctljx`Sl~gWNBUEat(xf+ z+p}}QlQkcn`XzCyaz?Z$2A&Y9*?Y+DkFv^n!)uYg4Xz=P<`FyArM`B`IY0e?;qi(F z)!*e~h_hqV`3#*CEb;Qr#N!c3Z9`X2cj|GvXX+)qCjKqAA($(?LkMZ#X_q_kK`c}{ zZ>RHnXNSUSMcX8oo2zr{_xrwEwaPR^V8o795tcESLU4mqi>$Cv!JAL&JS^kB=J1qo z885pwTi3GhbGHjUn_eSf?A|oqA>+f@u=)uTdX*hcy|tZ^({MHCUF}|(l20E^Qr>i2 zxi#sq*0WI)gWmmV`t*C*xRobf=e^*m^eqTx285V)4L5$x~>C6Q8UKED$9$ z(G1f@@b}$CP_#WZi^jFs!(XeQlHugk^X|Nenb<8%e>6{h^dpsH9zRnGldn&mz*b^( z-d*f0Om3VIhhvLsT|s8R4MLSy=!g|FYi*4)))th%2v+(aDFW_L_HBH@B< zJYjBl*(6pM-!?}AFWa*}L_5}D@yRcf=LR(kaqV^0GM&x7|M>K)Lq5qk=R0TjGfPX6 zUl$KHm`iCa+BbHe=7jfGdOWNS#2E?feRcncy7>3YHMfVIahbX^%O_`E*&^usSlLt{GXS4B+RaA8cA_l@xChR9Q^N6IeLjM*~Ptl?CC zar}XOd__k^q6I`J?{^=vKE2Kr{>GSNxM=cLeuv8*GIQcfE7}%l@#&rayxYEX`*Puy ziM&q!b+ej-#UyhYWd*$rox`?w1oO_Gb8Gu3eqYg3_<**CzUJDGo4@-#yCZkz(yLW! zrNYq>BU9GthQv?^ZSqMyK+_GuZQ1Rw(!IhE|FHC6kdI&DbzZmuKM_0y(rH& zANKTcJgOR#g2jns>#%v&``c3H8eiD>_F-Dqq^>JJ8pSqUN;wnp`eVzFYl|#vE(L!w z%F0kti68c*;N^qT+UBwBkaHK?kAyw37&>OsJh8D%pf!49yQyRAnxN@ohfu&`Y*|FN z`0Vl5o>!>tmrl)|d^$VJJR~G}rpcQ36&}R*jb>U~ifYUfHgzvw+VCu8zidPCmTRg8 z4ROKR+s9PLSG@jeFxBahn}?eRcjAom{Dwsb8op`oPP>qsT57psb%y!Y8|IC-EJd^C zJ)IXRp7^lK`@Lmt^S+wT8=w&0nO|F^s+If1wTmI`|r-OGyeLhlmNA+3er+AN^?W1=tEWW*T ztly>ZzwS*?$Pz4ynzXzJiOoLf_Y!Pr#Pdf{1=}Q4k8hQ5nsr5PnN+6c+9fOJyz0D+ z*-9-`?x<3(+V|D;wSoV58}Izx;x~e0_572k#~A4>n(Czc{E$Y-^o^72Tl`HkMu5`jf|5|h0>q_ccIuLBgfSU$1^>S}}f+p?;pgDYL!rT*qGMNm2JIx_VlmV~qf@E?0SEh%R}u#%S!BkFeBb3-`#8dXN9CYZ439#VLT5Jj&eJ{g)FE)n zmFSw@a^F=&(_7y7;CHQq1Cld)wZ5fv?15jLZ)0IKYDQM9@wz+ZkFH(~Y%g5k5o2s_ z|J>~Dvz1e~DL>jKSZ_HqUrgPy>g(ePtIw=h75O@s^Fra6nPKhd{e_)VPrmF?=~>>X zaI(a9OGj0Y*;}^-+AGSQcKM7ScW+tAK>DJby&(XTz-hln2VpoL|I}GaX23M}mSZstK;;g$l1rUkom-ph$rI{N@;+QE@jN~p*)$QtytZo0 zhvqx!ScB2e4})Di3zgo)$D`CbYz=LnY&|xQ8D7W(><&Gs2@TjrdQevzux@(QJ>d7g zIU6+A5FCyj>aNFiP>U#6kk|PL3u7$xYs3~{lz9%LznlvNV5TH0n1^e{skVurYcDZH zR3*g~Mal0lQJ&dTESzx+uNiY;M2J1dLg~rMotzNu1^SGMei1wnk%m!WV|=q}bqP%6 zWe5H#U@MR)559GELNj#WC?W z;ydQaM@xw9#jI!vg|)aIGx}Zvw_v!&@!>xisHHH@T-ERvh~gI*fV4RNhiS@6;<-%o z_E0>JVcR5!t1)tqD&l?7B%_3vFxW@Rc>i)z#ry7sE7kDP41lYFFJYPin)m{yS)qmZ zt&Lea_!_zwmFwbd)O=s^HiT$KtCox~XJ=H!{ti zmbfuL-8*6;-pfZfO{U=xETn{@bvKJr1UQ^IY8=iyTG8pBgbdGOI(||>j6_VSxUy{m z*l$aq?l!Q$MiEy>*M7nDZx+YJdGlxE(=iH|mPxFy0-&4_Qc=REkr*}JFc_6^0Z0L0&9F8x8 z736C2tTpxMffv2!%L%5ohztBBRoR60sj;k|K zQxl0-F*1%u;h&kXI z#p3C7#=IGeZ=+i?58@~3!F@Z36O4QQ#NjH}1Be(&QkmM@xQV-!@8Mebm@F=FKnvBD%9ct1gQgKg$^55h3iFQfg>jz{C>$@Zp zM<1lQdSud7M4yl1nKV;s2EL7Phju1z#E6=I0^h;(K0k%uVS4kj@x@G2<_zA;G-Y#f z4+gtFA1`2fN1TNPN2{nkhl>%^f(cQ&yVVHhbp}7VV91?nBF}|~TQKY~7jb!JmU4=5 zFQ!+r1eaoZb+6;YnO?gxd^tV;0>bnCr-M)re&l_E5~_pJmAEoIm0NfigFaG$KVq6| z@8SxKVeyqXk7+tqbJeO`I-p9+S7SH$h4A7VJXp5xCoL`gY~Cp{0E!|YB)X?3_IjaIQB1ksy1ToRq+BTQ*^Px%NFhFL;@ z@L?5JVH5hz-2gQ;9#!M7*6&STOUdJ(Cb6M9Cl?9hxM& z5AeNc%T8h=@3IromtWjmh^=%KdEgD}Twv@QILKrsu>mcePb_01Z9Z{?k-l;vp+UnH zT@Q#q1n17?(k3W)5N&kiaGr%olFGycC<+Q5%@yFqdJ&0?3eOdlUA;Hel=?? zV1B~8{zw$!jys_Ic)~KmVP(C^@Dj(yuu~iO%hvM>f_g@d&U$sd%D;Go?tweAO1 z%;8A1*CwrD&CTJ5xI>~Rv_$fI`X36EeJZo)WcrES_6<#Y#4E>b@ZT_5wk~3n{I2fk z5!1g*ujAuGKFyvnYn$}u-yY{v`E;w@Fw~GdEFbb+1KM*HoZIOVjw80zt#VSk$du-@gm}T zQy-Rzx{a8ed{JL;mv5P@$-zL^eKV^fRE~$t93fVIWVDUzshNJs3&XZ(XRa*SCa-+B zsa?F}L3xGL+=|ffpLG@!#Kh$JB%F6>?2=JdnGsjMR83n?N%GUuwai((I%+SHxgYOEidY0jm<4jRj>bEjEBfMmzb7fD;cU*=vg`ttMoYDM z5x&7c5;yg}iodtp+jN(Q{H*Wyj;RiFy{k3X>P|_0zIsjK9`ng1VRo-Z;@0I77sFl! z=iGFg{@GBUU#>H&;_lp&lS`yEf+zW2bT(fuC%MEOdopx}ciyzqN=pwsUi_km`xJYB zB~MK^-*30gi>9T`&qn>o_f$DFbJf$e)mu@AuvtWm{?5kwlhFzrhmD(a*yj2D&gJ!s zP3up$7c3|6FwV?-Q77#lgof_C?sgdMRu%noY?e*(#Kp6GZfsE;v+#Lu{>F|K{y)w+ z{+wE)bxdlW*7T-DPx$N;Q(jtMuTj;Sc5}<)&;`5)LB-F$TK&1X?Bm%`Blq&CS6W|w z_dVbXK*x5#D5(@Z7^|)ARJ=AcN7)ERBB70|P#y!`Wffi&CL+Re24CuW^_cmk@DwN7Y z<>w;CD70P|2ZuJs4v=_&=N{`lK0gN(Mvp*;byMy&)&*GKaJD zF2*rovFIAaO*9xeNXNe~xGY%=l5bGRE6gy?=8Xh0DJ4YcksUb>Bm31)5<^|b2{CGT z$9;sCYk&kb_>i{(13!!3QIb$iCNTo7%Opf7yrcN9(Hr4>CJC=peFwnM`Z<7~M!h&7 zE69+_31S%j{X@SfU8p4EN2f0JS$6aUShlN+q>qi`b&DdEJjOCs`4mf2cy}LM90gw{ zL{!Mo7^tX%V>S!kfznSB8)-+VoC0;nd(hF7L=eh4MaWaUWTBM{>|XO=U~Jxz==rHW zUau_R75|R9Ct+%F`M(6>EWc|Y*raL4JP59DjR(Ew;4_A$Kl5iFi!?Pl+7iobkhbqv zA88mh5}K4kk~(_(NCHr8q>^~L&tnp&fy(8eEjfg4f-$C!@|-~C##paMf^=%ze^4l`P#X&z|o8KA*0=p++Y z5_Ds3$R?j~B@2n@F$~lYaX4-);Xg?vlgsk*L88AnsZAGk6%ZomPd;Hui?uEQ+69Sz zn*5-UI78C1CHrYQG>hU{=$4i4?-oIh(%5K}c9vO^RA~-4CJY?Alx5V_!AyV75;l~F z{(q#-9)^yd2b(t!gSX`a*@FyK%p8@TBPLS<>K5Sg|2^l2yZ(!Mi-}C(uYc%|ICAIrY-txCJ8Es zP?`pcUO1fPEKQw;gP8itV615;MO*|Y9WeS2fGO%V!bH(Z9usq9h0IDAc@E4iTRxQ3 z42+~tz5&X(#5j8J`ZQx%_H881*;n>L`+&C0rW7n|9>oR>r)iOwfi}@>Fb#+5p4*q< z`HWi1y(Hk?e*v^mKrtatd5o-~`40B9!l>B$e5?6?h*tUU5m~cFlVJ3}6$ygZF2dGG#oQi9X!0 z3SC%uKbwC11hl!NZ}W*R0Rto^(KIO17=mmjF}Z>o)6I#Dy(l2wq*jlSe%a07Jd%Mux)@6O&Ze`G2GMDaFEr1fS<7I>q z<^AH_rFRv*07W_7Axgn0(!UG@~6Advy|Fw-kwn9sdw*}=iMCxt~13y8F*-RrT?+zaD%mFa8!j{nZmfM5{1*P6#gXm9?9@)^|0jLgg^u_40s*=}D z#lN2NWPnK)m`1YXS1v`dm4r6>xfC{rHqxOaKEykwJQDD4AXwRW)8#bY3vTa_-CYJ> zV<#a{1ajqoXB105=11dA{J_;i9x`~=TVEDl(4VpAE+I#mvh>{Cnp+^Y3|z^6fY}~E zLvsT#5rct8B|#23g4uz#W#?eiKQM&DA-@eV@N*c&R1#M7V`@z$%p(e=- z@E`>s<0_zqt)^+|t1(H|qY?=z)QlZ^7zDqE5BpK6a7{m(C~9AW388oWa(|F=Pps|N zDTJm}6EbvMc~lb$L}3^f*F97h9oUBnqugpjOO4!W(&tQ8ng)YONrZPF1EYaf_7*l? z7LC70$WlzDsd~G0fN2UaIkT92;7u;0!~osCM~F~(&l!Hj9|1?c8?<2IeEUFPM5DtLaU#0c#As<~iZrkW4bLFDrm(cUq_KKP z;s~aMHrDoO*;@-fi%KHXpDwyr%bdquZg;#Q(?cqJ*m6YD`k{(wSsfuk+q1C_#I!QB zk~+eeT2bjn-XUFJjypuybe1{!8MGMjbeO>j^@KKs*B|v@d@n2{enTiKWZ?xe=>$!c zgu-n-tdLB21JqW}o=f8)*9)PX2h0E^ z)Ea#%0AKnK{#$-OUV}E1S}G0=V5a6dI;17|;k93U1EEMQU!PAz{Z7zX1|N1ranI9u zqw}!ml9_>Cb_x$c)(eIPFQvK2>meae)51yG)9r&zi|Q zs6CMQPDrAfM{ttSYiDM`Ui;GTY;c{V;NSNWei#3PQ-<>4!t>?1dw@w5-tSCf`EXA$ z?UR;bTn-sGf~J~c$i1^3_Zj8!7>rt9@}DSjtx!)hZJI^x<3avV2tr$y{5h!mG2u)Z z@lkq{A_fyfZcyy_`BXMYe0n3HP5a|cBdA_>YY>g{$Aw#vybZoH{^)$axIr0I%l+ez z#PUI$WJv-#(+K~RJ|UzidroY&%=!TTpX7IreTIRwL83o*!ka9dcz=A@6Cthxx6|2*mj;h|PSib_PZDa}n_ih4Z_P<;mP zKd5;2eg@r}9`whvFv@=baTeGgq<2YxeFF^;Z6-9RSdXyw{IwHoHV2#8XTsYIlq|A9 zP-HO_#WWMj6ceiygJt;DNBx0LF%3s@EzFeVojy3J2Ee_bEr`XmrjbfP14SC}9$0ta zDrumWgTwJ+G1fl$i?P4D1F61d)N0IDiy&)zvOq2S(d>HjU))rjDYsyfsNxC3Epcx@ z_60Z>LH6@u>6U-~H@7b?f!tm&&rbu@BYztm^OD6lhP6eL8G%(=!qOS^ieg1wuOZ_) zad9b>-U6`=H7Cl{f_%E#Zu(ZRHW1=_2aB^3)xIR?@3bPnRtSWTZT+H5>7tldt$pY6 zpCrKI-5@~pJ1Cv$cWF}RS04F&srmoRwvTl0`NAjGz-uXhIe@uqL16l(+0jqX0uB(%ScP^Z>q_^Asa zlR*9ga0~k~A%@{FE<==@jkh~@l#Rkdm@yw!K-AV zOCks?0B8HLgiaBrh5qS)3&BIeP|+3B(Kqz;4j7}4Xg|P$o>Qw2(5(Vjd!#W*ADF$~ z!dR!r5LA#SarTl^hub^`Dvy+bnKJ3KjY02duv>H3--na?Luq`K9Ik}c_7LI}UVB^M z+`}MyHMo(TNp{Nh&+2Ðq@XgcLqtH@Un$r+=Q@M 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 F`9C*Pu~q;8 delta 16903 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 G!uTJWv4lSW diff --git a/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip b/source-code/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip index 7a8b31dcde4d0e206c482977f6ec0790a6f9d254..25c05ae05b6e9e3f0e7ad46b3a1517d88cc01f26 100644 GIT binary patch delta 3224 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 delta 3250 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 z z#hyB`#a^32xs)k>Z@&cMs6+T;*z#bp^`qFst`YDUsGAhP89hA^r_p<@o}DX@&?NWC z)tnY=vrK+p1U)?-^8v>^`9l4U=g4af3v_$`|a4;0phMxg8<(0EhT75)#0KY=wz{ zwy~qVf-tS*LN(gn%YQ{PkRaRnqdm9sX=&?fk7-kD*u)BrY~Hv@EFBv;&74ui?c=sg z(P%nn@Y9{EMRQE{+>(S>k1JLZ}lF%R2-b}gE>lXYs2s-aFNXIZ%#`cQ|wkL{; ziB8mZ9VKTm^5>&Nt=9?aH*Nm(fAyN2YCTJ*<_SVgvOSy#YIM;<3N$A>}}NQV%ToJU{pa5{-ifWhg7^ymH8} zD$q8AxogUHg#x)*3vD1*59pvDr8|pHQ&@)f51uS!U+tf(*yIFTG17?^z|@y)FwU8nGw*vjm_HGPskJ>7#H_g7{y= zm59sEz{#apa%;8`RQx$lBD}CF8pTZy#P#nP}D4x3v+-a417M_I4PvGhP=*R-boN%0=DFprPkp=;fi+F4?C*e z=#3177UyN1=OPtf;Bjw1=!$MMna_f*3EfsQHmHj96|-?Fx+ib&;v%{sky!S|IJaV0 zz;2n_1?*rKt2x2ZRN>Cxs;Bdn5>#5W#ivihc=IpfBYLh8%UHT~6K!ug zbb*@%mwCB7P$M_>9hJ_z%@AzFKg#I_Hh9=!We@Oa(7)xW#r&2)1GS0?V_EZPZ&^rJ zj~Zs7G^9)bHz=a)l`Oy}~kx zD>9IWwukW}W|vm6G(Zwo&Ibj9tc7iK#!qc&Uw{S9q@QZ?tpajZ3eYp0Ld|pkt9j~R z4Vohxgw|+29Emb>O(7k;O3M6=#*DzNm#5o=m#`YLMY~u&iqQIHJ2#FCGlEH9wnu*F zLfvWgcF>%A8oIM_xjECSw?MT@vmx3sLWs8@P0c8tT?7FI7sd_$sDnp|1yM*1cF8=C zqO1!*55u<4p;EAKVT1kgm~at|NFg({v>Fo>sGZNgS#@S%Xxz%P)^YQ09?V){p$Em0 z=GGXcU6K#q?YHQVb||MF%h>kp*$=TjBJMWe_m44!(I{cXe2FV<&6+9RK zo39h1ukSeL94Lr2oy={Nn8kMx$EbJ9dHuVVPd7%Yxx{fPmtx;f1H+eLs6Jb)(G82n zAqA;CJQB^N`Lm7(&-`s^rMXY}*{oB6mi*l`;F@d3G7dPFuR!eTQ`O@^6dLh^j1upW zV3y9_5ym484FQ>&C`2{8<4;V-Fkt~&Xw$f5xE>UBZ=8sTp%zxeU9%L)LyE&==Ltre zAbcI6&O!>0>IWTbc97N_*s?q{*7F~|x7bK09AxSEBQ{k+FzTC(u4u+8eCg<;yQ!vp zSG>T%X|suKCzKlrQ;hgSM;&vAg0zG?L^SckVr<5YcYXf3*%!v z$|CkpG8iDJ5XU~v7{4|}nP%hz`>4C)9|q2CnWih7idP%qo@zZVLLe(FSFWfj!aI0Y9xD0`iFv4QUP6_bG z)BVGzldu98TZKVCXUx*SCv~#(;Iin@PHut+B77Hm1G*cBaB*KN>mMlCx^BGEt@Et2 zS>Oz-d!vh4q?>|2Iez1Dt4=bzAn!_PLWx3%YW@qKn#+8~-D^~UP>jp$TJ1tyru8|rW?=PnN9 zVU@|h+`ta;=7h2D*C!bUK2{YKf75$LHHc-s=4Z|m?7sF{{N*k-)(km{{1Mz3n15!z zCp1riyIUf3yr_#fyPpp{Jv1Bi3xdH+5iGRCK{63SKn}(u3P4UsqmQ+Lkt0Y#ByTR? z9C*oT!Key|Kr@by(zg&Zk|v*~u;cU@v_D49Gylc@Scqr)O>&*EwYb>QYirZECI$R% z)G;NL)HS~TG`A@%)RC6+z3F{g;n7LTCbVXmZH?t;PYkUpg6^C-H*_!ntKdUZ2L5y7u z)3_enIw+6Yzb6S;t4wo^`&g_&mI`jv*TJ97?um2f{K8TGbW+MR;r-GCwYDK zBZUKhB%r2n(2*Ag8SBgW1YfRK-e$Eum;J$Qt%+xWe1r^mN?i1a+@JL(a%H<^zK}d( zGuS-;XtRhQfEUEXQ7MC^$tiuwnKZ3YHh}zIczCyga!MIVpl27Bo(Y0H#H)HkhOdA! zQ_n|CXGt%zsLwlUL~PlJoax|mT<6wVlqmi3a9jwvFqiba53&dTorEIUoV>lNQ+`UZX1SdhawR(UcEsZD(LYw9C?9ZXS4Ey~WVdzX^i zPwwz%p$C$L!hvH{TkqV9gKuDMq)IRng8B6Yk-^DmIU@S-Hvb6Zy*S9qdvvAntTOv7 zB9xBcCCIAgNY$-JK&&>QUsjFEHo3Fz(#i5*o{a^<&Sa&WGHIUi3}b>8t+~zhI>&9g zm?1yikj}1J2)H(KR+1>b@7D!H>IopH5#@~8G0hRCK<8P_%@I!kp$7hr z5dnZ3>36MyjrYEAoUbnr!HIeBvXfwjE&Enle2w$<9D`E+eEM|ERSz5OcnohW^ng26 z6Gn$oR8f#?5QZ)zal8CHsqWCaph%?Q39{N|e7#ZUYk3X!W1Jd=FsBmAJtT zaNlL!T}9R*!5aLK!dp;gwbbFleT+L#kZXXk#tfEGU}=Y$P_oEA=7fnun33W3X_nf0 zemPV9KdFM>1!HGbPKd0c0T|V87*&B5RP_2YsT66K*l$hRcfGzS4qm!V3t`!!Xy_=o zsu>jEak@yprMA2Macl-*#dMATN~$8}8y#DGp^2Tai*m09{WExqQCoU}PSG1$VOF5# zXqYg8ijQomnnGNe<7z(^>=`Vl)8`&NFG~_c1f%y~V@7fw->>F864{skhSPHAs0P(@! zo*Vuy*j}`XQ2JL$JT&__pjO!EkfT`kvf?NEvA3^v_3gm6J@xP-*QF4_4_`o#Juq?) zIlL14X8v+3BaWvpO_)ZoFI5@80#g#|;7gXQ0f{FoCNV1}CS;xZsccZ$W3S72wlnBu zsK(c0Y2-39Di$Py58?*8Bx+&ky0zUPV@J&2op8{SjTO4K#KaNopSg@G1Q?pZzf9(e zik_tl#D+AkmhNu+V~KW?s3btY)&3{mpT;d?7ySzZyRvX6sTEAER-R;yd_qwtwDHhe zPfP5Nd^UM5YuZ&IP07N@u8(5YyOpws?+@fx=x^xP^KV}g|8zObR~qRjJ}#w$=+mm0 z!(HpZIuN@mPO%_JN#O={yd*6sj4>GmlC>d34zD2P&%RSf3QMiGiVfhAjW$_(g%=}% zxkQ;_Zg4E5#EA9w8LzO)MkW2_LOdr%^sVs%!L4I=oeX{WO%OMJK;SR&kmav0%!y}k z(yooV8`tcSOYx}KJ9c@FFOsNj1I>(94?!q)y^K=UG5rK$#CR#~q@@6CeR&93^%H48%iyv1 zl=PUOnp|4`v<^gnWGNMY6cLA9xZEAM738T9AP>YE#8I^$lLSy3#R`wovu-sGfaS=9GyJH9_GF+LAn7@b@K-@-tvQX7LP zG-wi8CpFTfmI1&7Vu*Tz0vN(`-(Y`tMCTF;v5;z;o8s&$Xv0JnG-@#w`8Oppuw2ZF z)o(^~dI{~4Id3{@2wROWZ0RT}p)R+#PPF}OE+^OJU~Xb)O#g>zs96^DGE>-H$j(zU&)aLSO@AOmfcAc#6JQ#+R6<(Hb?@0^F8um9c?bvW z^cSFP>!U$;3B$2t`qXRm(*}A(v{)A;q~XuDqjUzX3A@cl#DclaWkwENB<;A$&sSkv z`fnstngG)goaSZk87RC zF?&RHR=E}hh(FCjX%+YHi|JjLEM+6FEb=VJOn}9GGFO@iH07b^lE$KzWr_7)@|;8p zWLUVKwz|ce9;{R@?Q%sMM4JbpzT8g))I*oh>xA%D)TE!*Ae}hg{RM5FXeIJcuu(i_ zTHGU$uqe~D6(Y6PWW;{{!RDmIA$DcLwVY_-I1)-C( ztK~=ro}KQvxDa4p*+$}Fyb?R%Ebw6YgbgQT>YO zITj5IADfsv0ZpCDfbyl?`i!<;vD6>s)J>&x2e}W8pLPe0r_fAx?@m_~zj=kDl9z!F zk9h;{M;eb8>l+#ye~eY2^sa83#M7HaEjH-=oWggQkf<4QkP=$OT#=dR9y}%x3W(?Q zM+gkaZJi6zU;FSRyt!AMme;0;U$xmjxpc5J70Hc8JxXZh>VQ&1YshiuvP2c%qafkp z(6ZqM=sP_9KU(jf0Wd@k2#5^ zW>xUBTH9?>^^uhK9jWV1FGua{2CCF5+D#+tWQI_Bmjf`cf+Xedb{SyE2_r&EVL(YN zz?+1HqEleAzAP@&qP!W6HB6PSI7hiUfKKv2A4mM>TLPC@+l(nsDOV!_obQeFmah3< zwl(tFZ3TmdG0mv4$nt_~fd`@#hpU_C>9Pl{gml&zweWm>yS9}9yI*ytz)UbMq(2Bb z&Mg!IVZ13Mwt59@FjjU&z>(w#(ix4GH8&p7%<_rlbTumjm(kXkjtPRuiHKcM;eC*E@yU-nKRDC-E^|xA-CTXi`%MGRhlc>9)X?h~$xhe`zPi3@ z$RgyZH5$p*YubWrSy@OdAZ`P!uDPSRjR(4aljqF1S-EmaedG0C`~FL=X6vuPH+&>t zH0kc>tq8sGOsp3!WB%{MRk2WT5sq=kM7+n(qo4Q7bihOrWz`Y(9haVT4@S=J*A-sJ zwHH^;%b=D+_NR8{w}Q&`sJ;*Bf2A#*^zOw+Yg9r089$h~`TMweK&eS(u^?XLuXrwO zI=P6vwS#lNhQ5=T|5_(Wj^mmxHVpgaaRp~&iPEFvp-4$G#j;bv&QlW??aaBwghN*+A6_`aOp0COi0*2o1*+aq|JyXZ$_>W%N6rUTT@iVYPKUos zT;z|J&J*jPu{kP#0Y0h7ZeHwr)8nB=`9csEUoh1r+k3)Bz>K93hpoMKRA{|{$q5#>IZj*qx|vH5HyG7(!Eu1$J8-NigJGEx$ZT+O75 z_Ch+{%LUQFugs_vac2oP^2z46}A8Jk@UDVYR`}Ug2 zl@_mHoA!0f2-FOS>^N7Zkh79_jpOLSEql5cRSTeZ{17sra^VwJdaTO!dS|LjPT2F9 zAMVyd2b$FPKU`lc%JUf@3;B8j?XmA6!gCR14ab<(g#%7P1A;S}q?`Pi@#V#33WrP2Kd1Z6g_`A+(pv4-} zZ0&#SQB?{Ps6CI}RH)krzR?{2F?p}?LCc*FdsMRZa4#Mz9gfJV7 zOl2BzTAbtR24Q9*on-IRX{3W_F=uzEI z^Vh*B0w^OY*a(cUpJ}?8c~c&UAf3I|X?(rBapoM()xOb@EWT8D+idbl<^m?hbo(Ar zkB-#h=ZQP)G1N4M=@QkwVL4J&$sDFzN1xn#AHbkDOyN-o`^+f+DOG;Y;U6uK`^#n_ z`oo^>+^ij0eT!wOl=;(MF3j(aE({eB&)ij50b>Gh7LzD%;2$UUHk$NC9E<#Bw*BJ5 zs|m0d&Qp(PrjUPhTPg+-#hzTP+}@z^x{{6*bKD|_EXn&5s_JJp=Z2=G#r`K`HEU%i z7m&38`N#C)4S#4GAMTatgZR5E;q-ATN4Bk7MJ|uYPrxgjq@@*Wq44{|;B-H0^zG%K zo`SRDLwQwNWJn|vp751*g;K! z-1w$ctZN7LN`rKsHHn*Y9753?OiyebP!Aairc=Z3M;>p66Q2i}V!}U)WQ+{oT^O+o?Pz)L6q{s`IKmVM!4d(pq647)CQ*gBU+ly5gaPEMNW!TvTqD5i==XU zSBB=(;jXR7YPKV#mxV&mz&$tKe{-?K90eP>=71U2C)T%TmInG^-vgiY&R(pqAtO5O+8OOKgoJsyL6m|D z@#MdE4%xF=K#3De_dKA^R+>bJ+YHWO29XZ}ncDDmcO5&3tC6Ai$u?M#*>(mS|QVI2?WJYuh zdTqFu_d=CkvSx9!+-T$|itSZCAp?B_Fh%sE^H_!Y{6vTcdoIY!o$?_v4ueB30JoX& z7Bk}N_NQn;;L_F<8aHCiR`N;GMzDMZ%j;b+OfB0p;_bl@Qy_^+ZNa*W=~y>g-dNB@ zE{V+=vAt3VS9~+N8z>}Pw5xh4(?q=)tyPh^h*c=PEi~frTSfW-`DfzCO@Z`D8mKB7IOd&0} z6R|lhJb8AfPW9WjBfmkoU72(goGH!~S?dc^9&lc{wkW`dN_VeHD}xH^bi*E8=6shB`Mw+Y-J0IsVyC>D{A}LrgC9UefQ-it^ZXsSR||tJ z)HEIlBtSM`74yRffmkj>J;|ya)=RlgxDPyVQD6`_DV0EpwVh0@s$W+?C~VD`aVj&@sB1O)Zz@r=E4P6;L%LMRKK;RLi0z_hI5c}fv7`BJgp23^OaA-y zg&Sez+3rK^<~!;W{fhWNGar@{2TllR3x?3&8;zjQcSm8HA^ZeUNrr*gT5d^I6O(Lc zoiK^yD0&(K^(guo&Ot&lPHE=Bi_vGBV0m!3;NpMX`2IfMv~TOyRYJqe%n1(ae9}DB zL|Jn>)jr14o#X8$yKkmn8~>}!q-d+@*;53VXr>Ii9{44oo>mrD{^e8p{Xq_J){9H( zOJE8L;|2({-T6bO6CgJg_G zJ2g8GZKcNNGt?!F&5K1gHWDa_7GNC~{PZ`@0|OuYxie;g>52bAK}ooJc7rG!LAppv z-lkZ-gy}AWt#ICW++<3lAeKb;?m-!*_DoOrE)hXnd8>ICahoz*V6(9~uDh-9U!R!U z6~oTU;c38h!-YGqS&K%;@}_Ccjc_obl)U1Zxi4(WV*yOY^%&) z3k#hcb?HY$BcY3#IGW^^${Qq^T1LBqrJHH`=Nh-ZK1RIA6{E-RT$)c+dFl& z?dy>*9^+Z)0v6tD&1~QwG5SLpsSF%KAhkLcL=bHB%B}Z5&330{ zOKD1!7U3nQ#Sz&tMSfhAeHgA>T;Ug2k%$9^E$nhGd3RryUVtwMc7HGiTsfjhETX_Y z6qq-DZ?Gu5aOxRxMSOWsnbu24nwBmt>j;nKmEWJ{0|!q6yRH26v0w{|iGlTu4h)Kv zor$=6xJ#%Wf3g3$jINzCQqdUNtF|sRA*f1CB0Y<#c5uAo7L=5+?szyUOmtu7^ZxB5 zdg!_wHSp)xLIKpX{m!CcB^6KvgqC_3SivJO`ilKfP_b(juG~0s{K&7@acf%UJQSiD zWoD6LV~XI~>hYMq;^>nMs-zSDju|m%2mLcL8zqG|MAVVP#A#geI`V9((mKhMiJr<|-MxF7D!BU=5Vybg%`wJCwg7thz&bcVu7sp6?`<{GHF#2? z19QcCl0y(cF!PuV>T38=q#IAc4)_S^t=Kn=({2=x|DA!rZcP+9U^vYU+@~ng6Ot7J zs97=@%lG?+JOyZSbF!Tr409B3^vs1u71sr*9_o5Qr;cT|9Xv?VMs0KHy&=>mhmQ5Pl>XiAC6D#uB_)$w+Xc9|VGp%Ha9@jPbCI;2o?6#danJ|hc;u*R@ z41mQ?+EDPXclNIMqa6E>pCtjGEHQQ^K^h3~MZgFgM~n%Ax~l#wWcP^BVLB;ww%;6Y z+_2%ilYYd1&2M_smN3Nn>1I|b3y!6SK~KCNgR*E*=YCl3cw&^G3RwG3n>U{9_QhEu6{y^Oy!ka~%s(0+zlL#>LK|^s*2gKx z-~jW$=(C5C2$gDe4&xf`em~v-KR7xJvVUhijtN%S@%?WdqA>l=oM+>( zP8-s+fiZ!@<&}igW8)DjKTOfX+w$zDrWW;dp1|zvWFI8893>(d-q~rPvs<&u%ek;j zb}Jl1772Q`SrqgTm()9Sd2&1?{ANbWkN`ISTj5&zD1;eT!NtX@7U=|f$cZ|6w-4MH z+2RQb9|d(32w)d}IScwJu0{tJdH8TC%ls3S%1JnH$7y7Y2%SQoisks@QrYR$k!MYxUp1(sBeA*!bfS)r91MH61={ zNPIdSkwJt`8E8^|8?LOz<>6h-e;wvc+739&SgB9VQbW)L4>76l4S%1j zzU2ZizD8dMT8ew7zQe3hxQFBO)U^$ouAno>K=lj*SQsb$(W8H7yWP37fq$SP1?+le zNLg{w_EdG_Y}xUxF)f2wUw7K5-7rPkjv7ota0;}!tm|whG3wZ-mZ@yAo0un_kIZx( zO+P%ybk}BUoXO!`Ye}IiR}_FEP)cg)jz)W#E;nTl#2Eg|B7G z7d9|^kPcJVE_y3!j|rgHF5Yi$ovM=>y06>~SN_nQ!q0AAOH?|IVl5GJ{D>Jl$|j?p z4xTuxTqiPe^Lf~hmP~(C46onv3ZRgB{-X@}IXom+v5Oo@IgNRa96Y>YNE*Vyb8fkKNzC03m_ib%VZ;=zgynW|#3L6!b$3-z z&sZzzaf^Nzyka_Sp#rvVe$QHbUm({Rom^|pk)BrHh*sbl{AFo{2AU&%2+H)fl=kMUZc1Gug^GrDw9lKCgcjHaA{EJqhXg3N`eMcyY13 zMrxkLf_kfW2)(p;7XDMO($c`m02HsOkZ^f*1S7)w$^q^omQZ0g>|&52UO;5%!Q zL5l^QP(FrCYNeH}gRp+E=!vY%Yu$ubL0zH(y45l{PPn!dBd2UfjF~z zCHyIZLs-lqe==A&<4;VmQ^%qfw9==_9{|N&`(<`iwM89gHmSqhsVj2I20`lWj9%T| zT;@Tb50msWBR6FC*VTfZ(09u42Z7>V)+nB~-SYGwZTUdPrXCdeX;O<6CjV3-NZpET zQVV&giuAa@Fv|ZA04G4$zk^>VtU+hEQ}~jfbOOa``!N~qz2MB#V~Ul4)>4NAp9r`Y z#om^)fBCf?lBZTzo2H{L>GHoZuS`YZ~Whwso6TXv@+~$v_X4pGajjTv-x1wGXttvU8c)O ze-tU7+tJ$a5V{oBH<~W6m+Ac2qe;8ar6bpz0>3}a`15w#cfh~%cF^3ob^IS7`-bQn zlD1$#VU#mK&P>{dCE)4-y2!Q#7TzF85t|fn_I86R$p$fn!ir{xSIRAyC$rs{0C}YC z>1O2i`vOsD`655=SdlPg76x=k5nXC6e>1E0R$6XO&d#=hub#{ftJXoa7Q>+%+)k~k z@4woJe4DnPq9kbgApn)J8v^x)>Dt6Cld=fH#*Afx!V#p7G;qy4I53j5pmqd;ELbY5 zeH;xAY!(=ty7Rh|G?x>KQAR7z^&@UQ7#s}jjoG!UAM7q%cjzvN-S!F>by|jFe`>94 z#F@Te1?j<3FX7fVlTz?fc_>ffzk1xjmk0fPe`w-|sIXo=-X4hc{UJdR_|%VLuTS)N zA}4-d#AKt;EMNTS&`4hXC?k0_S3Pm_@wz64Zn=mB%MuLh>LeDB<-y8DAc_WU9*CDL z14wojk`vZ88fC-+UKk8DmX-~SkeW2XYD6zXSxUU}bCfA2oIKL!~Y!(&S(P#;Zflx{8{pV!&+=M;%2e8!M)3CkyqVGH^{eiz8i?Sz+XE(`}X(`K|1}lka9%6hTC`_7eIs}f;vsOw^ z_zke0Zn4!V5lKsTv!7geciIm@w=G_1+BW3&kv=X3GH=hRiE$dY4Jkhq5lu*M-emEWlOt)}q99pTjqNgHenRULTT?G$2)15NWQfVMK z+UnX-*X4|)&c_j8))^r^x)WihAkFhz2@`5Z#13qRDndtyi14xhp;)$G)vYmGmla+Ccile~sREV>M>=tEV%;ID^8X zKv7UIqfAU7jz9*-K)OI+(*(MauAZ}LHDw3KbJt%T%RFMbQ?(yyMMUPKH5;qbLff+b zio6i)^=glDZCFm0^tG5%{A8b8W`~yLpT}{3p7+c4^eS6BM<5Qw8MCc#wv5(32N@@DAzy>Peg?(iCJ?j387`<{<%9 zLEvC#;Y@?0B@sVC+<0I(Rmn*G=|0IH83TeyG}>hWk&nJ7gim!Q!lKUx2JeC zb#Sq-`e-)pnLVx2SJkO`Le0ZGcBLsd0 z@CBHYcPYfXF8CcsP&IeK+c8um4~avymjPx!Fir-jnN8lNO>hc4Mj|F*F((A8;n9J6 z!?sc4m{3h~=1IUP8PtQvvZdr#mgkle%Ncdjp?#iZmv!z~OPrA>-At#)lYtkRl;W`^ zg`INRe;$@QBL|vzv7GGxy)Jk@2kD=50dCq*@uMl0%&ts{|0OqYmvdzQel zFG=&ofts}sYk9Tu*x{6HtIonMHxViNqn2{sf5j*J?6nLkZVR__zZ#aoHhr=%3!L4rRWdutU6ygsTpII_&D+H$DQHnN`VLV^lQ7x<6ej-y5y^>wU}9mLMp5 zV9o~aLbNPPG+~uQrhr%xl-nFBa71;g5i*#Dsp8MjV74g(bPPNK>UDA`*qgPqCgrSy zf5*eqINCTKbCINp%<@Q@93acz5>tEBHrHL^AnxT|$?lw$zZk~*;fNogefy#5vHd)C zUW)&Zw)a|6U0u3F?@z>ehaG)OuSVWPobLDmIgmhr5Jq>hATMN*qNAU^Qg*MJPNb@tRT}zC=E(77=8)j{pnUief0+I7FydFcSAag>yp=t^9h-6-+F@wC=guq} zLuiL3Kp_MAFBfqM0;4I{@*rgY9wXc!_9wx>fxfAxXJoIQEq0WM0X1g%5iet2j~IZn%AM)4-U-UN|OQ7e-Ohx z;w(sRK41RR5{x%nJ;2uwPsJBO5J52x#*(1cAu!iQAcKifHsxX%g4mE6>bp)r+TevS zf^Xt|t_H0#n4B*2Q!J8EvSa7V5;do;!8h`0)um(I*=&&o-c`+xGY;FCS#q_3scpB^ zYiBwFdH2LEL)=c=xo0Pjfp@DzfAKpM_TAVW0r>QMB7g#E5=cS%To}X*kO6~CB(VN= zUw4OK3A=Z}2;#-6iKwG-SWLzIBFl_Sgl)15S9FVZX_c%l%fV!qw05*@0tS_LcpWK` zs9#8$lSO+uR3yl|h}}6U%4C_^0!l3|1#-A`+WEfz8c_8Obe7e;6%&M|vTW4*7bVWzE<59ME zR;}k|a@5{?Prod^@l0Lae^Mr1@mC!7bqPO8yZ-5r`((8T@zbrRLD(Ni1a=i7RRpym zdIj$Yh9S#9L;!!F6pMqh0)*Kwq+GS;uwJeM)3%*pYvbT4xG))G8Ga--m&B{X?9XjV$j75LzC;f_=C_&RI?e+tTWy(;?4>(@8p zz1TfORHrcoY~KuCVST%LZZbw9kZ{3Bki?Q86NZq}0TmcV zGqi0XAeKSde*1XUP*+uvOu{0WGLe&!j2yEfr)4KCr&Oj#^^^|g+vK9J)@4Jajes>F z6RDbMl_EFUED70A!c^ga6~8y8w3NdmPf8g@Udkl%_?fbo^|% z-|dki53_KyqH8nFKpfPX{4_lyUR(;>i&~y6#-3c<%^<@;f4=F2;c#s<)=?y^d`*ts z9sj2a6!&g0*9Gp;R0dR7X20aYBR!;WAIk8)Y%Tw@CGXi}kLC0AlN)08$vW1-T@$xi z@I)Az=nLyY{)q$zwLwXnxxuEDK@e+n_RY@`LUSxgjbtPUFHys7>8 z#D(=h(F%}G9nhM8^vV5Dn)&Wi{r8Urn}6pN>j#r}u->kpLN(e1h_0PE&x?AL^Ro1af)H#=C4yR|G1-Xi+Qx@RXQQYr;k4RTUXLaLx{hbYc(sqL z&HPj@f2PN97wXb^5FBEomOYf&w~$2d@4(nV`}P`SJMR7j{6NI4M% ze?>tYwBd=!T7n1;?EEATw}N9Dv(b+0sIjGBs0^Hod=WGuJ2R?A9=Cr~?SI3AUAKI2 zs1h^&Si=7L#1C(d`U)uZ9|8L2$UR;Cbv1RH)3C|f;8nmfhr1RF+#};KIE3vmlOe4R zi7eW3Kyvjxpw-+`#L*JhFq2ayo%5XZe_%UPcd1Xjwy;JHG99J6tzo&MK1>%Y#w?_* zR-6=WrZ0CFuM3#2n27Xn?@CK)Q>G1){HadNqj>Xkmf;RD{an=kbxrZUaAki~%Xz$- z59dU4$IY)?hw0p*`mA`!syOq#TYCDvBj9%-GWzt@I0bU8%uPS)EB+Qh<~-LVe|*Y` zJc^J%e!FM3`rc>z!@-(cFmQd|rswtgl5%}M;7hBk9~KyTw)hx3_shSo#%^wf2?3K! z5#X0$;HLpW&43#L*=I=Sxugw}Jpzaz=LKKgsm4(hd1)C&#v(9QrUAla)TagP(C~v& zBMm9%PS$u5;zik*r-ZCQX&}Vof0-er2d665)Ec!EZ4ZO19ga_S*~neN@(? zALCw~|I_#Xc?1O&B!)rz34!$ej5#{551(Dq~!W; zumAX_vSmPL=~+yFAi^`5K0Jn9p9M0Oa8Zh+8P_3*msMyIVU2W3relYRf4ROi>10+b zlwMCHY$mkAc3L+Z1qg5q9aT~^FTxReI)S@AP@==ERHH-5)|68h9fys@^?9re{FTi9 zVUvH4qP`qY^CJIvdgwYHME5(z_26w|Kk?rw@%J_4sfqXB=oD~!NoMp{oH|u>JG=kS zL&lFb@9*mU##7)(IW&!Ue~4>A=m=~W1Ik#3#;o3dH5mpxG>U|H$$jC)7IK&IA%s|B zrV3Sq7+uiCB{3#+qX|@71Rrm?taI;lu@%8OBTZHuGxdDQF6Bk=CnCX>B8$(d{d#K& zSSmVhOK!6BhH9!b?XYYiRU6S+5(l}_HUbkKBY^*8G`xj-k4qASRy8vTG zK2q<;;#@*UnKoKTC=p=AbX}e&e0!vpUQsP+K2mw^wNnULf0R6g$@_5-KQ~#pQ7m8R z^B)%B`CzgK?fLo|)ZGU$37#KfgXatoIUZy@oxW;rU-cAWDcIrrHqQ3FgxVMIj_D4y z1`c~3O4G*L9*oYQv|^JJ(<49FjR<0di1Bi|D#}XDkA+}w=q*1Zm?X|w(Oj2{3fXUD z(-ssl881h3e`@5V)$2X{anSz0R^Pp!cV_Rd-GN>5`}@^jH(NKNkDwjU>me{a2^&ZmU`}b!`_QKAK`=+#I7K_ONxkr#*l~L*iZ$jf zx5dH;2%0(Tx+QzDf(%M>%x&91JC&_rD85V^+-Q^we}b20t-1-2IYKr(R?e1wF(Uj; zlI$bwkS=TW5!O`^@Xe8buPF98y!~Nm;)k^!iTlTE`^tO&2pe&525~WvD`CKPk}g35 zD+Sy;$XHRvgIqA$7odINKX&3cB0VWZcv;&QQWq2%(0AlSUAV_d%<#ENu1<*F30;V_ zL^-cJe`R+{xilPcmYI9TTEQ|gTW54zQb%vLC$bYg`m>Pns#^TK>Y2HH`Yc$zDP4<) zw(+^`+H2k8hl0F!!PNV|dsO-StZ#iNL_gKe?D2lwefEn=H;0|9d^*&7tpKtKvg zG8cU7!Yuv5^ZOv}E`NGXq}NQJuI>?fFX!>Ef5Cvf-s_#_`+5u5+}4Uu%k1^mPY3v8 za9{uNy%R7_k!W9I8$?i4-?j_^ArIt8aLAZ@Bq+@+1Ty9?+%c!-3yjt#Mv3|0PqCN7 ze=$y)W^ynt&gHZk4isS*S)(1((m_cv%8(*KHK=s>U?R7OS`)ci3>N%4=FapXGEDBQ zPybL{;5oRv%gG)C@-b(xFZvzO3M}NM8Gh**So=wP&#*j#n;Y17ZS*g=#5ZGi$Zxvn zw{|qJf)Wlv0te~Z7I*^;3fWLtTtUxce?uaH!Z6nJUiDQv#nggH@)$oLOtAM|f(eQV zNxBoGW8=gkR6ieSB_Cprdv@E?UdJbBT5{Xdz_!bBUfF0d_Nn!rGG;V}oCP(&CQ< zm6uVRXdvOWj`5gL)M+lytiwSVYgV!}XYOS#m;O>^PO-ZV)*ZHS2KT-Gt(E7k0o|7b zJly&z7!NM{?en$y+${?Q&+UA5kSt5Of3FIM9y5qB zsel3DrwO8F^5A;|$UWF7y}6iNe5%^*QESRX8J-zk-?ZA1nZq(LU?v{S)1#7dG{;Fa zX{FFZinIeNaCdrWf z2|XLe8>qYc(yWLJf*BK}e|8`+ebwS-I^KtbxG9u_v!d5^IS|+5T+p_B7+0#^61j`) z1BVS~n!d`CO}<+b!BC`F;morw~6T^zGtWX8v}xre7A!5zgb9#y{cwnlN_pKzrM?lp0W7V;r0oO_W=hvD8!<0&$Tg>pkOmFDcE3X z$fJ@J#yEYyJ=b$ze+m}3gE66q>I`fXXbt$$ekjz2zixL*Hk#n|Az4(3zSfga+-|f% zJVlClTkOnb>#WBGj~@qVNS{~=2_`3%i3NKXN#-95#(jHE;k{z%Lo9oR^4E5VJ9zIq z0uAzRZ~;9V5~e0BghXFi!U1=Ma1j)R6%YvY{tWW>s6m3de^!yLPN{A{ufyF;%-vI9 zb@NdmWaMxwFEg^-WV`8>m`Rc$qr>sV64s?REc_9s?KU9Kv0=sBmWM;PDDup1f(87adbOXg}W%EvMAJpO~!^H3F{w3*(9*o-$UtY zalGS6%h<@+e^Aou6u9o&8Qw1g4gXo2Z!mOycK>>A_txASG&4Z=VWb6Fc7*b9 ze}blHlK{rg#aYPEu%?GGu$;Yk?AdnMR>v(?bvx3ZuQlHowOqM!2Faz=lfYF<&_OSp zhGjxo$?IypZO05!7HeMR>9!WPM>9GZ)OxX>#Jm*h@>ssOZUIMdHLf^2Ev;V@jB@ z)pU~3cB^z#d>~!&kDIScM@qXqxXWu++EWMJ&VxBHAu{B!#J z$HGFTdTre!BLCKTDXf3TfqFA{1>*ks*4T1G!fVf1Csp z_dLgX;Rsxg1-6jb5l>N-t(^&bA)?7i6ON~xj40TdP;wa#f{383I0gaGF*Ogvk!kN+ zlk1YvITjU`-S~>OI;z9H*$J9_xD|E>Al}oQzXZj*!5)nFt0y=>(&VD13tlvedKd+A zGaBynJrZdg63+x<;s^lr0uD#rf2C(Hs_oVptxcRl#JWZq&KMrol_dMvLLW9dxknA5 za}J(_u}SDJj6%TUj8JE|M6@Y8zc8a=H4+zH)-4w}sI>p&P3CR{bY%U_;j6Fdu^Xgz z-#Zof-_LEbK4l%Qw|zkcBw&D{39{!ANYTR6b(Ft8v&RPMSSe?&64$Cwb+ z&=%-}80Q7%E;^p0=Y+H7YY~qkOlKWUM)bKv4CN0* zKT^E<%ol{X8}OGgiVdSsK7n;JKE;@|WZcoY$N4eM_W+MmGsG_xtz#y}1UDK*rC z>@bBg2uS!K4bNJADIJeue`tmxU%(oZr$pL>_O@7h=LDGqF!)ir5}$D>b6+?jTc&egIwNVafBfazc#IknO+IvVnSYNuLUO{?74? zCxdqY?^jO;Gl0%vSq3%(*cM`>bk;;uh6{IMDvigk zNi2^fBoor0X)Y_E7k%$&$>9{CRyCpo$6)Y!G~FNJD%R_f`IzeNpYg3xJ!s^HTo_Yq}Nvq2%+U(HkaDH~MOd59O!n^i@DzoB{1N3?&c_ z*(^Avz|i)6f1qs=l2;yr5-*gW>veF6YK03q^e}5UD^JJL+#1*w@bn?KTeQ-J=J0ee zCNFGmk?GM6i}{3XqzOdk`!uEK<2D}-a8YQr6DSXe&ZqJ}RMz{T*uH|-H}v|lkN#8k z@2lM#hM#Uev4IGPtgaGBhH)_)QY09IxipKzG$nxxf3tB9d=>~BzlU+qupC)MS~^}t zal@)og6mjKqFS3y9OUEM--O&!6`4YOWFkbU^KP41G2zI7Z27G#_cJ z;&Skh_5S$N{qqZyzqEJ$EhyjjOwj3o2ZCd$gSfQmI0(+N2!TNU6#fTUC#zrmK_u}# zl!3M0f48U*m!otNtio+P-2#(ZojF0bOx5KA;E>Q#6_BaH5p9ffjmmZqC)LPNf1dD~a5zsAo;aO{M2Bx2J*q;!B};aK z9M)%AQu1O!VvCV|-peLHG~tkBFh=0l--@{O=VIYsy{CIV<&g&XI#fO-Ts}6M`t}W6 z#};rKU+@0Y)5(8+FYnqkcn2g)6ObXLD5O89>oKr#_hrW+LV*O02h18nxi4aV%=HU$ ze|KJqTRL;olxvlE!7ueZE7*ay--9!mDfopS4+xi)60zb;Iv&%ZbdefjVx2WML^s$; zmGIbCn1tDt{$X4G2k+%mbo2GSJb%N-nen#BycY_*&y4GP`F!__m-)jJaUV?H-pl*- zbFW|wVoXpTLE46(!I5HscmUOvNue}If8T(HK>Fkk^MdLl$8%j-q!wBqg+0XwtA_Nu z9e2rHdndD_IgRDjagie%A#&!bk9Yw!3kRJmPfO$?287LftLdyf5e=@&J9S2QgOTv= z7d(UVf>QrQP~P24lO|x-XI%oLXdLJW)Pn!JC`ytTMYy<$lL#y=)(e*ae&Bw7f7yVd zJC#!yd5Yo0(W0F>9Ot!Ijd=S&h~hLP20l|oLkcu3+oQ``r#Vfi*&S>LC~? zf@zzkOw?k*AEklSU~q`B?H8qse>F?CMvHJkA^6rO0^X*sY4 zo|ZE<_7`VXYv!I)`&2ZZ*$(9jm)bM^dUY}-T!Y`-^Q+3Kg`{+3HNI4?JEZAoAS?qp zUj@55UIx2-{n{tJLkjad%@k{H{an{Wu(LndG%82nr$!qA%nR z|5+@>VxXv?2?qRlaPD6ne_qvvjN|gkF1z{j$tPvXR14BrBVZbt=E=4*d@~ZXY#f>zxf0ZPhGLAfL>`swS zXFHrYEv!Yvs6kE2+c=zY#A)nsczI$rUdYx5vry)Pc)wGPlMo&a?{ZSKByZL^0rs@x z-v{fBLwr7c^lLNr+2{?t=R40rFvy2l;9fc=WB1%FaJ3{&!kR`?HV7M0#B*Jodev9n z?)KYlGFbW(J{>ADPU#rIahd15KFm34`-`ElI$!0R^(UVe|)d$~&l!6-=V zd1PP0p9bEc&!obXqX-HpKZ*u%EUfq53#CY|g^@j)Mjoohg42%9Rb5d4RN6e;u~xy)UfE*ink(VPP&^rZQ7XuUYj^EBZGrDZfB?4Q0O`-bH>F!mG)f1(G?f!q);VlUbG0Ji3ToYe|@rVVVY=GoR9Wo$}ey2*sjn#@@v1g z%{>g>AbDIpZExV6TYcRkQ0dyF(>nzWY;7cAv5<|m!JUVY5u=b72?)6vu3Z`N&yDO> z$b7m{gepJ+YdMN}UoEChJKY0|?3vWcix+GL`;$jvV37 ze`hCUWr=@`fIyq|I8FS){e0a2HRK)!Z^%8ap2<5J2e2Rq0m5(=Br}+elbGoM-wwJC zSlK`wiDCAu)J>d=+15e4g5K>EZ(C?3MAj7Wn~4>0f^lMpZhTsEwz%6k)y7*$4m*)t zy^-+aVH!AAlM-q|ovI}4%0@Lu4bn!@e{1sY?e~Awa_=MHw{5X1J?574y2Xv}*T0Yh z>y6z(gip^!$t=Wyr5}8Ggm6#`2Pq7JxR5pMTi^gyTDpuHa_ObxVNvAt=|E(P2Vqw}BIiSQly@e$zuS1@FQ((gJW$0PRU0}M|FX;ZZt@1l`}NbP!dMGLeV#`Hhwfqy;oxXLEg`G{X%+zDg4nii z5A;1Kqm#c@*W-Q?oqg^tP zvNNvgq#Wk!2}`LXdyOyGvtcGyRLpGF$yi#lPPkufi_LJNZl`bXT+_R^e;V^WG`GwD z^E-p*YU~Qi?VR2FfUzuCy&Zxf0S8#VAzgq_3{J2ht04&!#6>g;p8LJ@+t>X}Ii9Aw z#hl`mRhQCT6Wd2*5pTBbPCf+n)SWYU8)Qhc<~FgOY*MLYzO;S}1R zUWP0jNX)>Ap)eZrfOoe+TmUi`7kNqT4piL{XVEcG#|GzJ5-vC#M5@amtI{Deaj`n% z_F;86k{)@I*Mp*!=7rgno#@8VkO)PQBqv%XYuRpd7z79LSV+q8PkZ=v1i#OMXRPks ziay@>vs0q|5f~IFOV$_}8FN2L+4GIH+w~wg;Rs%{VW@wB2dU zc9XE8d2tgArPXTPk*2=lbvIoZ5@zk}s9f{8nziwau+jrhH43}2atw#%WvLm13E7<& zTCO#NiA@)VL0EKsk4}Pf<$|ohOY^voSn;nB>krQ+KN$opf1a)&YJHqgrX5&C`!?b1L=2r{*rk%x;DE2uCfSL?xfAdM+pk`(b)YWCZ)bbEw<{kQ-1 zKl{dTH+Sa#e^_x^6>f8K-RQsm*Z=Gv?vvo`TKVKhOxqX3?-;({yHb_+nvS4&MR2?q zvOw&QgQy4CBMhOeo;pEr`&zk#a$lX!6!#}B@YH3?x$zu9$isw}>MrL;%1P!xSzcZ= zNn2wsArFg6+Ro(J<+7fL9bSaXU~vg%!OCPuTTK)re^|)TIlfh<%a0@L>VTNnqYhP) zT4i1p*Vv;!N{oK#4%XlM5Agc_hrDC={nr7iMu37(lLm2N#Hg6 zCb|UXf=tLU9maeyL&K$i5l>sYGE2HP_Q_EcJZ%~lEwPO{!o_ddAJ&!!+CVf=*pW(9g8QjR{i@S2_TYhr-Z*e>TSrPx02FdzWQIc zFaGzh|L!UwV!s~IfqOrycJ;;Zx9{U-_uj{b2A2X9>ZSwkId~Z?4O^^D5U}Aoxb4ss ztdqY|L-S*(nKT-AXs+ zl3G*1tZGx~%%CEF$d(I35(oReRCrqK;>jf&o)Smq?cxD`0mGyyAC=(zHuAUA0I2^i^uxTCR)a_H>-zO>B>sQTLt|UXTL#H0 zkQ$GxZLfB)BqYy89Ym-06KtsiabcVht5{nK@$zAJxF*X+T8e-Ip0Sdeps zh#Vt&nHGziF5uuoJZe)fnAL^4V^^#FJT=7QFg+*RMY`B*rUF0p9TcLO-Nf_s@r-xo zm%}JK)1V8YCs|k7)1^HyR!59np4@<*&a`-spVUEWMQZuSqp>&X?EQdezkNPo`5OtM zuUNe&hcJZci%;Q@GQ)tsf43kti_;9`8cl*kD9SUzRdgKk#T>(keKEPjytQt4&gzC| z@cPQ5pD>$EXP~^cCMk73Ss+z#I1cJ{RW3AN4OmO+TjY_PeB2+a+^mjUvJk4;;s{|k zJT?C*R#$HQX`J=fpS(xdEdMEXR}=Tc#Nd~qK#nmaZP6xyvVFW}f0~e5V@R8@A?ha? zn42%gnaJ~bB2fZX>(!n+4b%wej2%5}REYJ~l4;P}U3s2#r6=Y7a4O4^`lL|vj-N1B5FklnM4Dwj9-yonqL2}iFeJ*bM!%Y8INUkPsp$2XDF$G~#Hc&qv z_zR$s@Iby~!dm6Pe?kQ*H#um&JJK0XzFha4j)K|t@&_q4KU)~0C;WkCkYf{>QLe=XMn^^r-wNHprh?WNB4 z#A28W^|H(HvqPwBPrcVkZ0dbI=R`$|K zQCw0Uwv$s#imw--d*Rc*%}{?T?AG%0xww>DP=7V98U7WUkGfO06k23-!69}S+{0>7{-N|A=_M=Gt;u%+Bn8hGh(L~{*tFmURW>UX(|klkYRXT3gSzv zt2OXsg&}(lB;Q+f{L?_=qs{&;f4K1!YFwuRNh6FyGO&1n z{Md#RJlad?N!G(rn`I&8VZTUf*ez{1i}k)=1H=6R_AY|W%G1`}3st^uEp~7k4IQI% za|6l5&4s|aK|3gl%h=p*v4}=WG_KC%f7Fpr389yED(VMz^n)%#4`6S#Kl%s!R7~$) zPX2H8CGEf1NAcNTR{B`V@9R|RnEgpj_>sWOd}0^wH-GkidVAOR(tr5tZsN9P(JaZL zHb}SZYpLD-#5PIT9%A)AJdN161Fk#zs!b^ta=c5@k!x?N$mFKgVzX@VbxRx-e~>O4 zsEXG-8s^8nvB-&#`iBB}8eC;<}#m^0t#Lf87bkhjx+{mUNsALQ~Z*$hp&e&FoifPH2ybpKq3j zWIo51q;te73EkEAlxu8;?q9GpUt0_OjxY4VB!KbZ`pF}LG(ChFIOLs826iuCLQN7F zX~ZLYF{BGq6vcrpcmYaw@vHp_@wfb$-p*-xK0OuW@ltq~Np->Wbyn&te{-J_zG2KR z<59O+stS*dt61$Bhwb4!JdJ0?qyJ5O{FR)ffK|; zj91lWwRP4qYt@{RT?!N_#K`0GE#v@N7DB`0?BAsTo{~a6+kZ_#-I2eyw|i6Ee7f@~ zP<*t&`vL5Cb614#pRc-`+k^&B$g~{9a{5$?!$Phcr66>&h`s^^e~7?rmN5|+XWxU# zv_p3bOpP(|+XU6Je6Qt`_&i%6?P5LJxPzt2fF$Xh*SY1al@ab9W&+ZhYvf?I$}XH+ z#Y&TR8oR)bOIze^LNAQ_YS#a@wO{zZbTH%1+#QJP=jX#0wqwKeMIqTqKpF}0P>ZyH z;RBkpuT{f3EaZJHf93@cL`zp<%~%e$bLMQFtqOm&NC{L)&_#W!xplQIkr101tAX1s zu*zJy1sxf#F<7m1NmW*(k~7D%0o_b2e_&ceSttgtC-FUTeSL-x4*R1v@$V=t9@egq z-9A3)E$qIC52#CEd@v5^kt`h258#V3mStO5-$R}zL5T9=e{i`X9JiJ!O{MvHvaTjZ z>rF~sJ+nh4=}tavAhMwIn0MkxVlZ1^fpWr669ii;;n}QaxK0$QPD$ttFTG$mZbMp3 z`QWu{^3mnQe$W>BQ>kdkCfH%$&8DwE)kA^ak$3asd%xXZLI25O{|25epWXtbLowjx zf%XDQ2SIGMe{Y3hLH>fE9h-u+5>zjcE`8x3npQnLt9G^YLR?=jJ+6xl9aZGGYM5{{ zK$59c%ej0M^2Ya4kZGnn+ZhqYx!A23evu1u=uq_B%hI8e*49)ntP;PoJ@3HY=w|{J zw-2{&NxIMXK1rx=-}WQi-VFArywJN4^)AIO zc^;)>iWqU$#$&1xQ?JkGvg9^uZ2zHwEJ$Sja{Ox<^5=HuH|^K0Ez&iNc`tr$^`rAv zDg9BzfA-2TL2&g}>iAO^j9Z-c7d&AUrOne(iTf9yIx;=x$HxY<*I(hi7WP*+<9cY! zOx~tiUpbq7(E|LvsM}Sd`d5;EuBl!mX6C>za1AJs|G_-Bk$T8l-%ooykFghZ&&l5y zVpl`AG%ZN1fY^Y<5M+gD*jpGD_7=>ez(rM_f5;-Qq%+*S9q?P751VBTTUcS|0Ik0kNC8+6>Hv z^LlZ78!yi<9bU%UyLybH9?5&dp!)>=I$3|_o;=K5alC)N&eVIn!Gf?8v>l#<0}aG@ ze-OW#FnLj+xN!z@Ne~YMbM%VEozWSEpVs~;XwU`6Hx0U@eViVQ+i9-uRC2#sjXDG0 zsJ~Uc4PH5V8|SU9)0!t>x`KRpPojkV*4AUa3>5`7?}vU0coE;CNyYV*dh8 ztmF1u^R>^`*9v<-1nyz)irnMkT5s-f+K0cmW+X1!}h?d zA*mN5aJNpmWH^lXV}FK91d^Xkyq1tMb(f7+h>%6_r^znbw3<24D+1`*gRWgntVZSY z$XCib%C*kqFJ}!smLW@x*skVBf3HdQV+4LUsQsasSe*6?&x@)t82dA=#m!g`f8+JT zUpEW4P{XlY1a?@Mye@5{7SL)SEB5+=VKj|n3`-G^2S;9T-J~*MHT4o`HYN#Ftzwh5 z+HecM=AE>|rgb};i2=1|xEbOKtygqBvhsOn;P2yctuOJNbkPDq8rIWdgzyX4+>bf) z*j$VM`V}9e7gxu{vp)gUA|z-Xf6wm4B@_f#eJudeV;Ksi8OCuDhh%B{#UpRBj6#;w zRG)F1N<9xrgRz|=>}FNqHD^!Vgn2V`{2XdM*k8@?jhSl{w+KAkm{8m}NGCe-bY4vJ^rP z7Q_Y^j=xZZgq+>%*Thl-t<*TH)`!Db?^u89U-S?+6BUw^>Ot_Q%SIkzNImJ~iPXwz z6e}Zz+rYRRvttQH{uTG<5#^zW?NHQx_L|#n-KD*e{oa6?F znnki`SIwWY=pX|_*4WE0~@HE)7#CG3JDI%8z z=`fA=TJ1EVIEfqeJQ@9>yZ8@0!$10fUn)Uje{>H2|8oLwn??dp@>dDgU#6dbHfbK_ z`cd=v{KVY%-B(<H{nK`6u$1ki@0`(pk~_Kxn)+}J7>LA6O& z^~G$LhQMymr;n;UWb$usVm-=CrKt?eG7Z@+M*f0pkA42Xj)0Ik=*AfPz& zApXKJAf>JaI)R=-U;!q~7aPxzoXi(E%rauX2?)*>P4|)x^3>2A4FoO7NL4p$H4iS` zL`0i>x97o$S<7x6L{nv8a6C~M(JUuHGJDXY#C(P=?s2!w8f&X}d(v zST=WP$!@drIbIhmI;4g^HWABRGnGLDpsMptJnZ(?al`MV27j#<*}@Or!o zKjr`bee>b3fc{1Wg?|U=do2aTu_0pwy9f?kHrp5fbr6;Yi3Nz+fn38G216+jG`)~m zx<)}N1->gmF)HmcR>MTSWt?-Ei9RvjY8@_`XP>9suIkxcjMutyuQ&Rbnov{OT7?H} znOMV^BX);0n18GryHV~QSCTe=^=&gF7?qGydEs#WaGX7vyrS}SeRV@`qYMO;pxI$S z#6?pCgwY^swk?VQG!U01JOa0E3kALN_n^pPy+Z6Ujf_^_5k=^IT?_@Q8aQHXq?`3D z!#3s;9&{DsLwZ@ddb_~JlVixpwCl5HtkMhJb!K?Lf&Z{qpZIAJH_a4e8Y$0 zIKShpelXbs_k8{2u)@%>C=&cL zGpv#1`{zJej{Ql5QVy@7-IS2BuDdi8sF?>*Dh!G-H+6E35(Nbq zO@cy#K|#z+xGc-O7)La#91?0fvM9Vemhq@`x9Tosw@yH#21su3rB%3t?fJrG{F1@< zRTa#0@hnZ7(SAlwhvppVblRD=)6vQIwwqVJ^Cxh>Z_g7ECJJcp<4};t={6TxTg*ql^Qc#Mf9hlI-J@hBx zDdbhn*=odVx~k9fXu4NDN$xnx%9a)I3nhN3gN3u6t_Fg;L8664$joj{BNLOmoT|mK z(tohMI1q!doi}P%EJ!0Pr?Gc>EN9PIli!(?&lcYSc~33f5br&YpL6>j5pitJn`X3?*|W7;;F|5Eh}zc2<&KW9PNnok&4@}IrZKm$7xmgtc5!N%}#^!&y z`(;Y^w|>OMd@%Wj=>58vVcdzCzIu!eDJCGdz#r)wA0ifHE@59Fa8Py% z6pb&k2Ldz3s@p)Dl=9&~6l<6D%XNq^XW6-$sewBUJBA@Ac4tqCX+4{93dHePntwKx zb{b^ki!Q9yY(LoOgTd)?GX5~FA#!@}AM_sZe4Nnm{ddOj;YL0+)O#xb`;`CdXWoaN zM0dFEa?(d1thYDyeE**ZK%b1hzpcler(g(}6Aw0X949OSp&b`;EshDB3J^-9?LfAk zz)261E-z$ELm7#ip@5U3F8JdxfFTA^il+Yj_%uEl1j>JGXe z@jQg;6GW}{2SU>2U^A=fi*=dK&(0}w$G29va!a!$Mxf@5L&2r#xRhOojBTvmWKSHb`~>r^jKRQ+dz^JelLy4&^B5T#&4Bp44fZ5s5_9wcT>3PVBZNPn`BC!;`PZUGN# zzVKQTQ#oBOna*q0B3z$gQ%F}>VH?`4awT!K(7icO06I=jj|-~gG3Utbj(BtO1`9s& zTU;2f+9Fp8W-sgAFcFvTV6^(hA$mWchF{0#+Xec3fxTb+^A1G4r5^0tskKMnA(H7! zVngDBWGU3?yUgIGjequD8Hre?>-F+$3h1d9x~YXZ1KAX|BK7rZ9NIQ7OPiItG=ZqP zB!;(lgvNL<9@UWuzkGoRPD&@djs_4>TuKaa0ewBnt$@(574f_u!EEg=#D{U@M8K3 zjkDg%lk}v4`1{?rMW|gls3$x*lVHJW=`RaP?)Gyo(U;@#~xF`&y7Jy>k4Iy5|qbd);_XKYdA? zzbnaq1b=sL?+xm!>i%lz7OeG6W(WiV3D;u~8uo35pkNPTJ;;4RCd?yAlK@%d_b{*4 zLs2y4NqA~P)LpI?2W~AN3_Nahw#^FpG)DHVkSHrBja&X4;x5x zwn39~IykaG{AaMwoL3=Is-+}s_rShxYHw>R|J}r|j&`^*; zhnz9u!oJ=YEu-+hSvm>KJ`Ix}p@EcQUj)ARL5fs!I6F$zJjrr|43@0Ri5N-f8taA_ zskGCJ5pmNp!~9v^V^w=W`kgTDL1DOvmO8hcFDOLiXTc7#5MruYBAN~^&1#d4SUI@AR$yN z&7`5Njiu31M+&0$vT;ILSmH6IzgBAVD09r(+GJ-;kT>HaZAWYb6wBM_fM3|Xz=IXP zQ^f4a-~*4_)l(@m#B(ipbizYCn}0+Z2V_hnh+Ih*^sSgpBN#?gs7Jh5KH5!GR&sSJ z7p^dqO?2t6J5L$ueQ%gE+7i4)>?bpPIX<@?&xIpn-Hmfu9@`~^8xeR9?szMCY~>u3 z1-WnrGCF3*ub1MNr55~D z=Y^+tf^PDKmuZrpuRZTZAE>w*d%5%pnoBBZ4g_+1f($= zAs~4|y~-Ym(TvIs?zA!l9^sZ-`2^XzAT~(1FaEy?GYEFpT(yj5du!C3E_Q@D)5TIB z6@lWo!P!)biF;(si>(Axs~!gnB70te`rrAtwx_$f4{*G1POM3o{b4q6RZ)ob92!<( z#AHbi#}Ed$8PGq`z<=4lU~^WAy>yQo2^dTB5_oAao~B%Tj5UnM6>q={f+^Lg+jy~c zlU&wPJQf^H^ruHhlVDZp8oXJS(RRKvg>3`T3O$}Vf9PEF>3u%sjqbRWZT3qiSKrJ% zaO*!m5xr!e>Hsl-OR$jmp%KD?d>iS&8Uws9&I*7Rx}6#REP#=e>toVZWjzR<}#S!dWuZ7{4!jnd_4t+k=xBqOLOg@UNmE+ zy>UMNC+Agva4Z!ten_Qn8k#R!jE4yS?_&Hg*JJ$ne67iJ8=JTV{vwX|Lz3vLzJoNH zWl5HxY#<#-lYgQ;aI9fzdm)O}@zRwxiy-E)Eo8U5>cH^(Zo+LF{yfG^#w(_EV``;z z8trDhyLHeMg*6J9=+wY)`2Ai}EUl=NW)_5#@$S4{>Dz}}eXa2It$*-C#eZ{BAlOMWnI~Uz2mJ7Jo~CYRTd-8z5$f;y?sILGS@M zIze&G3kNnXk7HlB*K(|t!`kk-QL!@J(dwW}Thz>w4Qn3z)(%-!$nsd9Mu&aRWyujD zFR^uhEA^LyW8`g5s2GeQ$E-X9AG1ESS{S-1+%vb+Bo8isY#+2qcB6x_LkJw*{N?li zXUpj8$$uLQef`eUV-UlE1_M8wv}n^~ag#6^P~v#5X#wflw2x(**xr2Mf?wAAUEd}> zSR}iGomxRTx~z8Nbs{HM&YLAeW-ajB3%)>0WahbRU!M0)QCSa#IP9C|)Iv%;;(amD zwPA7IQuC{)P46bl+@h%e_&}U~6Qun}2mEfz#(zA|$F2W(lLND${)YV(I7^d)`wT=R zJfOcW=7IjrwLl@wVT9|xc*Ze|FD--&VTma8g4H1$_Hl%wCkK6Xsy4kz%|wY^0`POD zivDQGFZqdoK5OG-LX8n*Z9{a25ZPs3V9Sxl>=$-cxY&LF&4N5Sw9q*5sR$*E@ju*z zyMO6gQ?#%CbaQlGH1G#BfMHw%?9dGp?=mE7StghR1F{j&GY~f1%EW$FXkAeJ%rPg_ zO(i=jT$Y|G*)Ulnq0XiK)U3*$RZX``-OO0=${n&|gt%n2V`)6amYm3oPA@x~!de*& zuHqhD*;5I>yNX%Tv~m2?sB#;Q&dm1rsFQ}S6n|NcfB?k88Jxgun+D>GH(^U^Vl@n2 zIF`vcAgO#|Mlvb2d8+!wKC|W~&Q4jRyv*0>WWC#(;{}WM{A5WYJp{#FK0jtxHyj73 zqhE)+y0R{%H5@V9m;h+fUQ2;A9f5euyx(DE^g56DXO@AP8cV=GPiKx3Bw!ql!?={~ zv41oHt_+AeEQmO0+XbBvj{!Xm$m`coAhH-je45wfijpH$h0PJ`*q)%?igNOrG7*nih(pazSab|U6r+`x<3zL z)|342hFZgk-fEqapL=}MKR4dZ8R}laO@G+bzw7$m(l}|k1jT?Tm!-kM#!Zr?%*KE~ z?t8#DHx)@<@KA{m8WWNgt5TazFDpsP1e~=DUMMkR=MQ`1MZVB#UJ7L`s(44ziG*dB zT66+gmwuRBtaCj+@2=KW#b<<+bNM7Qoo|Yqm1zhVPwQB>HFEDNiP(4HXLb3i4}XnI zbGGlCgqDi~tNba`->D+|G$B~`>F8ZWSOzF5K&#=o2V^t^!8Ge(7$_@S+!nVOiUfE2 z#qGHr@bWrTiV00m&O2>Iuz~3Fg+%U>$;Jn~i>oDnmab3RA_`fOFLj$&w(Ingh)2)x zNMvvngj`Q9JcVwyMjVtz#C)IR4u3!YQ>mlw#NKgP_rc$Z3h%Q$oAD770<7ejChayt zA7D)(o`%@jvQ5@u!5?ER3)n!?BVH)`+5Y&v6i)?}qvggb>%?^r%b41M&U9x4qmTl= z+114m5C$@zDEzz8r`Dz8oi;3b9{~e?1S} z#Gl9i*^YmX{9A8%j#*QjS0E#4#jbR%Q=uyg71M_JjcPE2^Ek_%&v05Ab85DT%7~(u>*AYCYdgu@KV=bw0Mq{Czq)=fpSHn&K5v6>Ei&GH z_$#O4_J?oTCZ^}Um1_NG^TfEz*t$yC|IcxoF0{>?4;}D7{?Yz8_$OAyq1xl7C zfFB`VV6^yDL%9>O*^i9+a?Ym6YBQPVJ|flU?KpLEQdysZV<4pi+1Re^sJE-7$^LYl zBfVv%Y^R>?>P!53xqq^zIHF2Qs70nye}E(1ir;^#F7j5(;*~6;%OAK^r~9ibPWLhX zyVtAxw+-D+*4nv!^{1Vp6Rpt%AiBV+SSB!#G)sZs#o3^)r5P8*v;d1^E=j)X3M-Ce zE;|}XKwh&ALe12}S;e-9d*uNNPvx;pidv>%)PWRE*TwuA@_%u(!08>g)0K!*#c_o~ zcsbt;4<|p`rpM(5Q+nSCS)Qx&bp@2(QUl+#t{+DJZX2q%>00~UUO#bmKtQ>Tw*_&q zg;@*`cLc>Y&@tu$mrFYw@GIclzJR2r%xZAZ_JfOhpp`O@=Y=!649*IQh}-(OnnIVaz)Yk&MQw5io{Bx-tfS*M^Y+?gAxckq@ogSUm#iYa1}_{NLiGjHH^hsUrm_6alt?9J3^`8|Kzl}G2@1F8x-`V$3$oGo^5kFMAe46&Xec#IZ z-gPe+?cpZPlTC*j*abkY%406jgS_K{B7xyyuLUaaRY{z4u%C129OHD+;&zK`IvA`G zHClqmYJbaAv(v>h^$6eTemwHX-f=an58jv@4@Y}SwvA)7pRrOU9O#me?CY^wEf~cU zU$5g&3*|!@(Ra_j|NAI7{*QkYewLJbpLhy3-Y&uCEWx+tcHe&D?@Q@lPXD-QpWl1( zux$eTX_qhw*lipTc!SUe2u-&^ISGmf;+JH3hktuj5)buP$POz>bM8%s>%a_xOdFjC z{lPWT7u6g&^gL-D6k5EWEUu1ZGX^$GMh6)cBziHU1jLojV&aEl&tgPuGxDNHyEB>@ zTs*V*yh_a6SFAA$^EsS_q5r@v-INcjbjN?% z>AGh=a3wCqf<)EkIMcF0d4vHu;8AAF7Jo26+qF>M3lZi9bFRW}0G0{xgD|kB*L2Gs z6lJi4Qy!y-32hguJ(dd84vhh_vllC}o`lTGQu4Z?soVN|z4M z8YS#X==@TC*3*QYLGDM-)jNSW;epb|C=)c5H0^-*Ls6hj!a-`{v4GFf7KSq~xPOy+ zK=(z#WlyEB@25VM$tr?L$H`JUZw26w<~p9@;hkw?jj~B7JH-kF2IFYD@n%k;uXb;aS>aLOF?0~7_ zhMUFHEp|;$>5yHnj+wk#CMGiMC+41G?9gMky?sZRyhzFKetw#SHH7Zrhuodliq!9O z#2;?ZsSF@^gRgLHc(eYUy!%hnwio2X*i-gB2YRR`gU12cifQ3C&oWI}1bvbS5&pkOyf}tz#Pu%{R%mj3yX6!Ow z4p!@#wnr_aX8;Vp-b{|7&7jnBB4uTOyzOY+ua25x+zoc}P|y8+pze#QpA7YG{29Ch zlK`U0@bDaLE6aO;G6RDJ5q~A;d5&XZt(f-(Q8PKMv|_$lP{-WC1=KyzS9j>6{mFtb z52rNdZ2E$ncz$02F^a0dkCqOdnVWcs4$cl%n*3Vd4U&P4Er+zJb6G34O(EvbnsU-q(DNxzk*AaY}|oB z@Rt*7rKn)q#&EgId%UIZ9NdWPX*dEqXGTS*Yl~9G?CRju(je9ijxq(RN{Eul6=~AL zXF`d-cC9NjEa4=wKVBKzw@xIF%&^ zV3T9WMlNicz!8CZm~#n?CSE+DjdDcO{zg+x)4uNKlk;hNJr3<*;6&j7y@V8X!8IfH z=eoTsM+&iGkj%cMV?@9ea+P4`N|}&@XgU$JkyjF{i{Fp#U0H9xw_8#z82WU~zCV7x z$6sXI5dWF+o_`G2&CywnwJpMJ?qQF|fv=}{@cGQ9zmx?I9#GV<>TH~S;pWBtv@Cb! zjy{a?FhHl198W^$%y@HE=m$ySgDPZ?5`JLLYfGPd1r;W7#nI(pF6oZPWqvK;AO^c= zv^}sTRFRI{_1mseEi~HQzwNz!=c;djdMo0*-Pi0r%#(w(}9Y^LC6h}hz;_`ug$$)hr857<};*{Wo1lImsO~ahf}hTF0VsR3uku0TJ#vL z3$sGbi!2R=bR&<-^HsNwu072xX0l80U}Rw{zG`3+D!MJwr(n40$MtFNYij%dXxTkY z2zGcn`qNI;!GB_|>G6#+ps|MI07lld4dguDb^yO+EO4tqB={=PAxoP(kCkjEiX>}X z?M>yPuBI7ljW?^!kzVn`6Fx%H)LJGihU{E(a5k#iEVpA?kL66dM zS4Bbx*St4J3yZ^T`DyIKw$=<0zh$Dk)|PMD)`M?C@PCYpkvQ4 zDo~_DQGW~&gE-B?@&PRgX?d?|iJMd14m|1-n~HX=v{In=wnZ_?dc|I=J#|RsbzGi` zY`6%QWHrjD^inwMvpK@moE*l7m=`6)2+t~bvnG4RR`q$(wV8Z@J{7==bbCp=x8#64 z*aguQ#=t)`Au4OiGlC+CB^sQE zqF$^TeCqZ&HfItAT?6Q>?u2SZ4@ZewR~yFN$%cXT+#Ure^kBDD$bN5ZaB-U9tkxen zj)sN%UO|djeb7mrLEYp0fY*mxxZ3^Lmk`g-?w@w9Hw&~YrMqiDuSe3DX#;!3f!qPd zfLFo*=bmwG999hQ^EeKwkyi@!`8i#$=3dQQRymHOXIsfCY}uFR*9pnbQu3rq+Iq3s zES3ksQA~O&qRC-3JZ@W! z&K<{iK-V#X1C*Ts_~T`ZJf%j1dVXE4Oirfd8O2O`7c$Uorts$ZP9v67PY(z!6^{&N zWc&KWxTnPdy##Y_g=NbS4FVO-oau3MIHR=fXtfZ3QyVF7PO9xs+f{+=>Jt9X|M6el z`Tq5(sNTmNoc-ZLu792OVb6AgE)kcfDUT;{)3r<*;~)|T)td*JTL_#m8-tjf!ErF% z*JjJj(j0i`!f-bGY_?W*;<89}6AzYw1h||PNGjf+I;k3NMIsa`_o6yFP3Q4qR7B=h#mA%9{o+Ek)W)qcfg=4$TFH222{lYtHNn!+~}u-G>I>ou=fV6$!0!LXMF%rByipIt#= zxbt#{dA^Y7X)V!ogz5{?^yZO7Y1;uC5yAwg#e?~CPvJPIG=m0 zx36QL-)~pvf1e(FnB#Lb?uQQfRTH+mgdtDE;EqGTD}OlhsNdRV5Wl!0KSb0%Oxj$R z_ajee8Uq0kcv%2s;uLtQ7%0JM26jacNJS8Jf!?{PKuEs0I&*>zsf#J^3Us+r={5Kk z=~n3VX~{zE>%=~3qdAZyl((~Iv1MpBzBnG%J^7G$MB3k)tMz%VIm}5D?a_EMKCtHG z9KXIgpMUGW{fk;dt?eJ@-Y7d>nZJ3j<8?n(^#AD%@qW_x=5NI%?UbD`jHeljy_Ad9)aFn^eo4b7udU}+CNV1 zude>^$Iz1dq1*E|-+Q~Y6Ll+=0v(LY+B5^Kgo{&+e8X(2x;PBaP$2qrh$g}Hh5Iuq z>Uq3X(6b<}H~L&YSE~wix5zP}t8F+L447-8P1)I&t9-=h3!LhNhss?p5Ia+{qJIvO zp?|imQOc1EtAFTGL864O9c9aGLw2~_kFCOSt#bdN3E=mY4Zq!$K9-Ys6Eh@b2AoFM z__1lq!F+n-&qGhreBl0L%3HPFJMjPc5B};t|M6PWKg%}wJa2Q&KMnqAC%!eqz&M7n zKyCu~4G9!I2WTy85-#AjHiI!1O=CPPhJP1go#Kit<6Pe!X=Fj<;f0?1q{=XruO4tA z3?uAX#paIZ5M^{h1{EQUP>-IY1$RLtQ*kn9(#x|_xh6g;rGXh*r`|Wa6%Z(0! zT_-pLa4%>bxg-X%_CpnrCjjt6G4UtM+~0gOWr8W+XFb0EbaTNz!EMdZ&vv$VbAP_S zSRG*5D8E{N$n+S7!Dti0c#}2>0N`v72Pcs;;gJuFD@TGY=ojFJy$D8gAY7zsI-2aM zm9$yeH5G)5#g@rNdwK7b#&iM7#8S@5SinU~)@r+-OwTNP8BJ2=ifdDKI`=M&z>j5- z!v?|n?hn2FUOVP#?@U>pt(k5h+$e_a!&AasK;)ub5C zg5?XLto;HPn^{>joy*$F8E!5UsdDV;RTYp}^<8eH8R}YBYX+IHbbeI!F*#3EY+&@b zT|6?`eaaQ5Vn#{}4?ji;wxkD1FLhUM-ZDUnM<5G+hibmh*4W|p^0_K6#D58mIIL;H zVuPm6wK1D^!54IKo}w`ZxMmE3_ZL=hRH*lDJ(6)1+L19Xy;n@L2k$J0YtItC_g z>L~JeBgR#FG`ZN!{8&3;*LbzFL~gR{ms3X=B6wIX3F4s4WK(tSDz&<3|lmRhu0-R-+e_@fM!aGx| zitClA%_d>Tz<4WuNqi*>3O1hxM*JMYgUZp+v9o zFxCok%wCm~|HC|g;vn%bF$_>5h9g0L>QW{J_U1?$Vi5vo$QOPCTCB6(TwoWA2_9>` z{e`4_Ej{UFJsl&1wK!eJ6Kyu8vO&EMs7r|!-ab0vpfH&%&&%uC*e8@St5*S%1@`P{ z9M4p6Z|m}uIf$v9SolX z*IRT10K%t1;%_#4f1a_m)#LD~?K{wU7!R5S(&PYtvZGmy1}O+YohCzpuR%hfN;JJ` zUIa_ZRoVE{!44o#ce4os4i!sgAbA5~j3}8ZhAVV~p7s^Xki%W+Y|cYlR+WoGgg%08 zGOb_h3YtuhA-&J${%%{T+AjD3lJKiTDX^g(VtHUEA4J!Wjo_c;2~&D9mA zXciWK*0gJK0kR{2gaYUod=ZlX*%$AEqQ-$|@vBDa()eonHk+23biCGbflN+4Hw7t- zVo3|+NX(+MU&6(R@Ls-N9nC>mTxiA|2niz223HRq5KMm}uBTfiSdVe3Hw{$b&bAbQ z(Aqa}ghBb)BGp7pXE z8A}X#q@39VD;IDRr?Ob^8(9e;7N5y^G_d-W$wil~CLGro>#eTCvAlx=OyBO9FvSkc z5(oy$o|4hFG%8{~By;R_H2Hm$_*DM?eI(Eco!yIXmU;0zMH}DG+1mGc;JIj{?U*)y z=YX)<^?(b8Cn7v&!S}O0#wJ0?juV(mgXZvS16%0HJfY*TFVPqCgx8tGqt}sLFIQ{j z64}OiG#jthV=U75Mu<`dGu{UvQq||xj#Wr^SdEswF>W0P%PT!xj91lSr*?%I-t3b5 zf%i*d%jX#%Hfax^JYk2$8dejhX}-ySSp`>*0N8@JFb+s9lZ3?xTfO*mqD`KRPwS$sajYLN4&o~ZctJtk5^k;uX@HBBy&E87n6+0IDb3@?Lg&#s|W5f4GWjV zfZcEbaD$zZf_>BUFbG{=Gx8+ISTxxR7mf2u9Zm$vJr;i+%gLaTlJJ z4yLnnGFxMQfrr%Y+!w5XOQ*fc9S)uNDAtR5y+EVu(mTK29Y3f0JxthH_U7GnYx;TU zZ$rLs^WCi39e+GI)Qm}Tv}bXEr8_(gH#jh5w1c^v2`Z5mwFHTm^Q!#+#xJAQ%Icp6 z>jjq*#!Na;n0Dw38w#m7OIr<7&7!2ka=$(DsdXBUC|Jh_MjD#?z_ADqm6_gEz=qMN z9w=k;%+G~y=>7J$-}9gz>F3>vS;;ST_kNr1&1OwD%VvX9V+fo#IT|SbCPk0OJ(6ZQ z*b^+EDk#?Ed7A|p&8s#l$8)CRHEUl}e8})I2v)5zLr0T@cTUw5;mp3O&&Qj~3Dj*? zt~(={nVm@1ne}#Lbd0rgR&s)83zj#Z&CtD^AYMSelPJm}e<{;7NtSUa+a__#W?2%n z1|;vksz;F&*f!Qzytj9b`-$x?TxKaMM||7kkf>aM>Uec6W$cOX_wj5!B$s%~ ziWPRnjk;%ZIkTxMZZN609*D){UV+`8)er8wG218X`Ob#_`(}Gg*qG>X)Yg``AqKX` zfy|`odp7=Bt;r%9ry5yKLl%*pE&p3guI?qyaDM6KQqqlQgN% z(E7aW)pl;rlAU&scJHZijgr3jtu)UMlYfF;K8!r2cmn(9f|AGa2oiKngw28T15XIr zY6`^g;5;`?@d)}wGV;M(9wx;0qL5pB!=WSD09DtduLqX`^gHBAUFj6M8&84-xt}r4 zVM}qF#5nQA;N%M1oRrtxZbzRj^cn`-X3ORA4*#aj>LZcxUDkaYVZqqF_3Fc{Z+{Ae z_XFh9z^gJuKT@aOXL~kvJISq}7uXTDF^k0Ewze(Sfpy3;O;dG(1R0q{fD)0gU*UjJ zwoDxEa!Py1L|o14v7iz;w_1pSFc`Y(bmgY_;WXR1LrnWdOIj3&Tw$Z+SQn5) z`-Pjnp9yX+%j%k_mG$zv9!r+d$ZLuNLmiF=&H4xW3KXzjx{Nv6JIo@gHpQ?GG!5}9 z4XfA_#wDAI%Q&~fie+ zqkT|-bPNty9!Mg!nNyBI(%fQ6CWFC=+BhMOId)2KapbPDK3~YstR7 zP8U`hPBnV%9w>`ClfKO@e|K;bBo0nf;o7D^dcuIM+PoXH=_`)8O^r3`Rob=EX9h>S z$6p{4mXq;GpoNVd;{>_i)`d&p^julfik8*I2C3O`A?kAm3n(`5 zM={7DmW#tuK6OwtSR{GWk#4eUUb?+Mihe)N+F0hpP`g{*qF{hJe?5=_^DavPLICuk z#e*9{gM8ffJlMND*5;^JwOz8}Jk!+SdCeKFq+0c8S|?F|xzp<*&S>;TDr?LuE;CsI zIUa-w$9cY|GyW(#W?60qR<1acej=cvQ21%!n2|ctci(l+dzE3>H0gBrX4^3sPVik` z0-XH~y6T#WG(`qKe<7kjB!=G4*_rrh006){Eky7v4N(Ok?k?<9rVWrN20Ir^cpPox z9>w#Zzy{9xYXkGqR&?U=vh>L$PHa=WmPY{54gXqYOc8ituSTcKk#0|QY<<{!+a8}D z`GON<>l*ck)YLoET&i2gcwh93)9!LrhTk}O?^|4Ul~V4Vf4=V;+b?;wA0hF2Y8qd3$Css^1StQNvxF^~aN+?!m*q8)>@7L)Hdk}OY)a+Z zAgyZ}`+>N8f0rlTuFWp-{IhYJ(BM;M1opeeZ71w*eum;~2*ym1J8=%rac1M7;GFBg z@}waw0oR2m+!yX3Loe9i%II`G%y9c`?<@6US(7uX9m)N?rk#mX7(iH7?(F1)40(af z0#v*(MJ-{<&_al@P{*zyPlNF(>kWjJa^$`#8}@8mfA;z2zNJyz$fNfIpNONMZ>IOG ziZ?5^licLpHjo;;MUo6n6CT-g$n;2{k4zW0D0se@EUeg9#Q{g#A_Or(VW3h#oQjis zAOw9qH|x2`TjD?+A;4U2(rrD^57zF|qjpy=81zZ}s?YmcI2T1Ja0URzY_hdhsq!M~ zkNZCne>XlJE&rl!&0AHT5A8Ky)UyFg-TdO;0dgMmb(i6G@C4;}HcvE;tO@#3&^uZ- zW-*}GvoMkY_tC_8kZl2$_=06Y)X9}(XEkfuGBuQ)GqG4IB*)KVSEdn%qo^Xtj^mVa z7SeS>&xb6r;pe$EN)chQn+{Chpm1Y@(Y{jHe~X@~^&%d9y^y~wkWwTjoOidoQlEF% zA64(@=4x%#yl8jRu3AUaYQS9M7BLM>RDJ5&1^r7;62D_!k2?FGQ0gCwXl^C;Z`Jkhq8X0jnkIcbFiM_Dx-dOF3f)1=Wi#C>0MVz-QZ8`*6b>Q@+#x|W(G)Q;Sq^lC z0GyB*`zo^+H6c_Vo5i>?i2me=h|$cW0#BHZ&XqJ$EFPV@#zHPbZ$APOJ?7Ps-Sg=2 zoa>{}+0_oK#0ppRB*yHme@eX^f29}dP0LfpcIRO}wJ#z5CYSwwPO!=QfhRWGWl0B2 z(a1+YAniIJE4NG=_SvS6GG_yg#XB_istUfV&!{+>uGvILk47#U+I*UDzO9pED-Q;9 z6H`lm1Y!#>;G8w7m#a;ZZcaUW7;LU9NfKEt8599Qo)w)04&q{O>3ffxe-bv2tT2xd z`rXg*cR1HCCT=bCY4nMKrJFW4CJC-S1-<}bx-8079DJ@^b`jgGljfGigiw z=x^QLq1?CaRDI3vS_xa~H8>IZ~n#ZT9?qA@+qxw(iR-oVV3pe=K`!;Oe&dT^>VeI$) zz(4%ayI#N_-uq$&zl)m7xH*Me9@p>ONN*FiYvt|eS;T8Gp37RGmNZ?^buhTifQH$j zJdCh$pf5n(f${MCfBkx~6jM)+F0#Ab#r9R$avj`4r2xb%f z0Lr#p^M!brh; ze;`TTi6TH-fBMK_{0$QIX~Nd#k37Z)Im&_m#jzw{Zh%VCILmt;xM7S3A_xe`F~Bc5 z(*nffYl|=J9#Q1wcs1f}&}`4d^=#!6r%Vl|EEdH`hK$4Or6Sf_z`rl~MG$DBKM0Lv zA>>zfwRZSaVTXoW9JfZlR~;#PZ+uf}-Z%5N_1a)vfB5ShIWXtFnJ@mgo%VLB#)P-l zy>D*2$1sj%10rOCYu0GOT#CZDrj{`feYP#PnhISUx3UK&)F<(V9Su90{n)!Ff zBnw`5f0_H)xx-A&slz|5OV*vaWAY^Hv7n#8<(?12qs*qO)BVglk@=?+zca-DfBuQLl5+TetJS@U+-S^(fYoMsi0+$& zAIu|w9q|C^w|KaV8u2Lx8uJ$d^7C-D(Ze}eW+A`ZhNCUI?(uf+3q!vs*@-koQ#wzk z=zg3Y*vhI#S#O8BlOR!bXgW>P?!2}?}d5*^_QDtayL-pU6_ihwbe_syye$K`i zfA0pKRBaSQY)$iI5BNq0+;xIw2(J-$QxMki9H6DV*@z>*w##rapig+I*Q3ic6|z|@ z*mx|)C&2SeW?=LayEh3Y#M)d5J$55Zacv6w`d+wBj=GX-J8ytHri7xi^-$$5!NkhM z!oInl71yXiS_M4uw=-aFlYu2}ub%Q=f0~SV7x+QPb3jr8hJZkhrGPjDO(X_q@42v7 zFt2jMB9U{8V1JUmV7zr)JvGhK*vpxI?9}O{%tg_zh|@}}jpKNDjRgli^>ksoU0&Vf zT+G1H1sU|Q7|jK0LD$GJZfES^f#=RD7 z|1JpHNTBdMSa!FZlFvF0r{5<=*|t&z6y&MJFiy8+mxjG1M0+IYIV$mZvO5B+MHqo^}C$Mf}4Q!}c#u;|qxnDvp~x~q*56#Mw~ zjSjy&I<_qs-ntPyhhr@*fBW`MQ%Lyjoe!-K-jSZ|4f>Jt?Bd01{pA;hp!oPYOf+H9 z@8jEdP)|LA?#?s$mJ0AyX9e=D8pXe=9sa3EdOQ2)6y;l;#}6Uz2l)JL_>C9%@WyxL z7Tfomh4t}o+Qrso+uo!2JG=4Wz27N1^kLGs_5L>Uq=*5kgKIK6e@T%1f@0bP4VQ)E z4rh@VW;zt$`=mv>_>1S85(JjKFPP1AJdNrzTNPK|E(W$I**@h`F~9D+$uwPse?)q;vFsJ~xt}f)pK$JKDV-Y)RFAD?V^6A9> zCKVw}V)ui^+p+f-8GH9ulOC0S^-jBs+_#e-m5qLc@=sOA-$7VsKd}8-c>56v@NY0*#T$fm)5?c%Jfr83uJTgK<3gr96Xy43#jc7e4riLALwYHUc!74l*-} ztaT~6_z7FmfBsyr(5P<)N{?6z${PG^vCMUBg9y|3!0T)77|>x%XhvN-&R{Qk!nMxk zA}ilwllBMSklzn1^r1^7m8u>U* zplc%%FBi=#r>BL!nn!FgsLdRkuO{D#3f#;4M!DzAyk~CwhDPmey2euX*H7v+hXa7e zA-G0s0nj+*x!}^UuzCRhbZ`)e6BI}cxEI>Ks%H+(fy`6P-cnMLPG=isiBvk_7fg)x z3v#TVe>Z)+SN2XulFutq8IcS2JcxZxnjIlh*LSvGXp`FWpQ5rfyikq|s*Qhm4w zKcyFS5lnN+Y5mvVjeomoZYE6Yr+C+*!4n1}l7M`eCJF3y)3O_*K?305K>xcWW?BsY z;$91>Rf-OlxtnDCdBzN@4S}pnHD*XhJ}wRhf10Pfe%$-(p|#cb;cI&-Z-q`@P?{zO~j~`}}eCk^6qeBVfpfsn?}-R^(7T zv#u!qqN{P&vg*;11Gzbp_fI56?2WHpom;nRbog3VKA&j5dRMxforx)*nt>)z3ZHo* zNasbg-sinbQ%hDpalf0AW%ax;(c?gDWUP>j{hPtU(|clD|7NXO21|BrS$uSQ=$R-T zqb`e1rhrPaWBCi+6$AaVj~iE@qCyzUaskUsKmb>`25>iI21?8!!{R&g1*XU#?$%V82?8s{f`V?Lj zq z-!8X%bT;7e;2%+$DM`Xt95gNzZr_x4dHa%uv5XHjzNW7|-sztFH{WFGOl3d)+PHe9 zl^*w0mP$SF|9UZLNA#)_S(0;JH4SO^WE@Uh(XwN+U)AnmPWM|?)?7o*W*wfL@j~6Y z`5LKz>D~8Us2Zxk8%jG-`%pCWf}w?qr_<}R^Hv1sM=>}nUETF-pPGFRpS_w5>`$i7 zd{dHXy<)4%jg-8{GS|`rM26c$x*MCXebDX=39~621GNKWFx{MT=f~tgYWULwQ=}eS>({goFzg zhwctHRk3Tnz}{(*IJIxk;r$G*F<%XXTwAPtTkmt`%0vWfZN*8(8R2`08|C#A8l+ z{`%-Sp;BwMrEJ%5-4>r6{A{$O{bP=KlIKoF&8@`Wdb~njN*$t(KSP%TERzH}9EG+r z-1WvbL0;10w0FG2uG-FE9&G7%i2@8-bSGn1S+_EeG%-tWi{BpZ0!UGSMsp)Yp`cQ?X_eU^9-bY`?eh1LCxhoWoLJ0M|7l z1w1LTmkh|E%zoK%uiF$5M0wB4gT+|wsY7S?d!+UXS2F4Y1fjno=)#%{lz1oo8Ec{+%~ za&plD3k6Z@DxtMDSO6tv0Be@esg8<&0v;8&GcsQMT=wIdLQqgv*U`@juglwIUu8WE z28Keu|8rh$qg#BfU3m-R*h_K0u8gC85e~_bR;d+QC;4ZlYMoV2zY$WCRl7RI>|{^< zC;dmKBV&vc8)`a&@=a?Eq_gSu`*UUEnq6!nGW+^my!%{Aci75ZEwo}5$p+`mm|q|g zrfI*S>PxQjU~`&#YE`}ZfX%=_$cVvrk65$#HwFCW#~&^Ev9ZVJy6(%yZD}rSW>)O# z0ju;1sTyPb1mj%U`sFTat%Wy(3u)YU!6FlFu!-tIz78&`?7Z^~cl0KNlhv&lC z5Ge9X5G$;+E%{&|>iT9Hw9y8$pu0Yx!vbRvNfP076VQW06y^gamWMH>;2w5bn}I!) z^N~52$0y;g=?{f000T$6S^y)yM3e<4TY!bw_hj7Cv;;2Lw;ugW16wtgU^TYpTY*?? z6hp6VR{?P$HE~dY-F4M@d_d9JkUjRh%@$7MS3UW!NH>mTB1i&KAg#3J=3K zT%2D@qs2Z0G$XEB=BQz+jUAYR>j<<%3MEajR|sfwwzddE5qls3^X-5HDK%33q)r}< zDUP2;Gvks|=WK-%bVP}B2t1w3*zIV6qG z>7Ow@2T!AfUxjHjC$5Ay+s2~gVS)otBtZS1Z=ZlD4~oPfuy-z&9jSho8Nnx`YE(g3d1 zCy9VnLc|IpPA~Yc6OiXA{Y;2E!`aS2hFpOb=smZ6D6S1@gmJ|yz))wfo+N$l-!46X zKsF+obCGt#Ugxo`!B~K*Z~TVmR&@c8fkzeqNj!w}1ZMk##Lyw81VvrO)}XQrf(9vQ zQU6r9bsS<7(Eb73CUllb!xk5`O^G2vx+}sohQ=|xS2WVDMh-Uxavg(IrH$Ap>*x1kJnACm!slV;GL zo|a5(fKQX!QzwhVE-a#&t|-uXI1yVNqo$Hys-u8O`gP=(9oBf#K=>Y4#SAlj+D3;#acS9?-d=0z>mIT zO+()-=sXXVF=nQMu%(N~uyu4^n@casdIW(#pldXs(q8zOyX1=X6Z+@{I+ zh|oESq%$4Y2Lh=2#-G3t)fwqdd@{8#RcHnfgGm8n-Ps?2x+AQOu@3>%IiP1)JEa^+ zIHE&y@q`Alw&@U5ZT!qKssj{YOdz$D*8QUcZla)RD2V$GeqHzXpy9x=8>(awD&V8u zIAO+w;OSG!UinDuZ%G=>ovRAE;V*pR=1lJ8iRY@{2XAaV&ZooB;IY#>E*Rzh{www} z7|7wx-a}v=CcnhFG10RedCQJxBFx1UW4D>W6uXBAw~QI##)p5L8E}NDOMsNXabkVZ F{sZ$mmS+F} delta 53956 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 AYXATM diff --git a/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip b/source-code/Volo.Blogging.SourceCode/Volo.Blogging.SourceCode.zip index 98bf1fc655edceb9d9bd561756df2c25e98745f1..2155ccfa13c48ac3ef93b78514b095063771099d 100644 GIT binary patch delta 79434 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%0Da$N!IFN1E#} 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

N|l|SK6nHE6$i4UAe<_>618Z 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 delta 79376 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 D9f^8E diff --git a/source-code/Volo.ClientSimulation.SourceCode/Volo.ClientSimulation.SourceCode.zip b/source-code/Volo.ClientSimulation.SourceCode/Volo.ClientSimulation.SourceCode.zip index 2ab25dc27ee01148e1df081ccc4dc9eb838d9eee..8eb5032dd76c4686e2b06afd2e7797f8701a0fe2 100644 GIT binary patch delta 52476 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

EfCRJq0!7F6?U^^(4oPfy>fOaHGC@}QV=%N zT5a^W=lJCpL+;scOJYUzrI3o99Tdw&GrU{M6qoiK16g0s7V?<9tj zAnrxGoZHukNCRV9*ZsA^oy^6I&@4Ma)uuYkH%vrCM`Jw=Sh8HH`zWu&Evlpi z>=gi$Ky1IO!gHCliQ6KX5p+)xGK_CLk)zvhn3ylyOx;{_BhUQ!16@y_1)jN#pld}@EF_f-D(DgW2aymvi`KD2^= zD*^h&{eK<+eK7iXTlYIp!4NPfE^OumL7F7W*bd}cYy&nGAe1P}hHO1aP%b20UdWhw z3L4iv5yL{#7WBb%!yb*TUJgp{yd1g`vq2iMVFk+%^j@aLMyu*Jw(Sc7gz7_7Ew?*T z)|Fs2u9$zbc^*wq_Bs1Df`(Apfr$1~tJ_Ok+s-Hd5Q%pDW%7kK?e$!O9Q1FlL7lzF z8|V_;kM+lLSpviokb`i+kAisAC2#)wv~0*grzCB_QH`KcV_6#^1kvA= z8X11$v44%^JL%24jQ103aAVfrhWq{ACppxETlg8qoxuml-PMI}zYcNsQfSyBEew1t z5CS+Lhju9--yu4pF%S}fK*eUr7bq7eqo+@s-Vn&II6!3TWTDKd(k7gJvhv<$FU3Le%a$*{8a70db#cRDKrih=V%DH>43v%(2YE6YH0CDou*M6o^=M4I^EuT8 z&76hH6Ko2}0?)0zHZC1mTFi8J3KW1&Fr$CNj4lM+KJc3ZQF|^j6C%GM#NMLGGnHhw zir)5)(%eD%i(ed~w*zX#Wo*7(V9yu$@Lj%zS#!O$D$2bU4a^T;p6UMsnCKm zkx>@9A26mhK8+5e<(4wfOQug6T3dgOOyg{$$tv6ohH9d?r6l`GK%+x>tsf59+>5DZ zx^D+|!ER5>oFS$^Jp*wAHvbbP;Gg`~z`L94AiRHm8iF`XZ5LyVuIIf?kQ8WzZ09mA z2^&~H4&r+YbSy8pqxo{h?A2vlm-ti=3$o`{!~%&0cSg2Op`1&1k%gMK!xMk0(&L=V z*rX^a*|nRID2KakpfZs$%agSfPw{Dg=9a5I`&xI=9p`vAkFO%;PN4lLF80Mq<{#y8 z-`fP(-rsntc4TzD0lIQ^gkiXZjZrK^yYL5SS76vdN(OYtpfY$deZ|^dZk1u;X(0YS z)x|D3?pNEwl*USSMC4hs;dg&)E2Wxp969-_p2=jE$ICq;WlDcOrp!sYJPX>?(U4_? zu7~on8sOiasJwT$`m{{mM2NTe^-cACDM*%FIR1Ox^E>37ZoH$PKBdhcO7b7U-PwDC z`l7nO7`g^)U6UCSg+Rh_S(Jf&nQd=(Z7$lZBncjc^JHhpp2Mv8Ki;%eLlOA&-={!j7i|IdDMy zr?Ag>uVHqw4ECZ+p5x;BJYjb1Doo#i`kkfnv)wlgpKm@blMc{OkU@u>G3vm+-W4sQ ziLO~X1`F!BX zrc4g97$ik=9AV-FxZNDiUiAZvGPKYBPpR3>5UwLj<1urLnMdA z+A{KAYDMs{cR}NR@zjI>k~$EUz#f32G`M@N)79}NZQQSEb&)lMyRem#Gk(WokngAHUMq(n6(EJ4ooVwDa!&>e4kgJ3(&?F~lk`FU1~-fnk9 z`x1`V==rdi))6tgi7PH^k?m(kBYy1%|8SXqSiIozxO`gTA^i*cAZde7;lPSxP{93z z(21Ze+97b0!)TO7Ip>9zvp;EP^R$_rxc+H79RyAjj{<*@?}vR+M(J1{%RNgQ$o+$k z=49ojgClL?N0%-9<)ktW3ePUhReHijWi>c3R>Va>vAm5A_=TM_JXroaMa-TI-to9z zJ(V&;UB`q+CtcLFD2%m1#zcY0m2yDeidzhd;|z_to zlfK^dhB<#>4Jnx9b~q;HgHzKAeAwSF+d-x%1FL{=BLeTi8LVZOEA8E6M$K$Q!3Nym z^-}!u)Y1*SztU3jhZF3*)jNzIn@iqUS%x&b{y_{uL1w^pO^X4sT33IHFsQBzqS>`$ zp=%Ml>Xve9O1vT1+N zNSlA87gD>Oy*s2kyoU?9nuqx~J28lXa>>+{S-;Qh*C7t5oY5SOGAHgsN0*|cd7JML-R?CaTnqLRgCZEI*jk1FEyF2W0Nq!UnGcbNRnOEcaTPN9L15e1*8LI z(2NU?H7so}MA14?IPz*1!~(vC>~>r3SYg`^`E@Ov2Drhx`KYQ5t&qL`W-Na=Ya2^2 zSfkLPP9u9;*lx9nspaLQ9tYuYusJOk`ugrxUn+ck=^y-%aqTQ!9^Y-As!=&M5UB=j zz%m576OwZbiiN*eNb*_+Yhn;rz=DIm$mW*zA@A=HcXg~PCLA$_aW+r&W@e(0>K>q{ zfy#38y)qAzRV=9o+stHM;SqmyfNvqe=8k*f3R|LF#vN99pa-)t&kB;Bb zO1!suLF4(xlUf4D2wWcnyMyDiUScaiNy^P~5Npo*wm5Xso^y7nAtKWyx*BYh z!IBSScXR5=z8Kp^FL?j%rzYgkx z{>?E#Au;8H4GjNudekmEWn_nYy!Ide`tpna z{VNOA7nU#heZKv)XfZ4fuD6NN7>-&N1t}lSfXUcJDJXofO@p>UO!#6OBa%{A(}h0)ox=*bEen#k|lxkksju7d6>0MB>8_md)o@TrZUf^DTwsuhyy8S ztrTAwiy&Jv?qjQrU!S1;88Tq0LjwMKdU6aWAiB40+955Mp>Wv5LC#=;uT5DFC}cPk z60^WLe*NTGIiJp!;f$EdbIjU|El%BJ$f|ed=V;(wJ&Q@ zR$JPgFh+<@j4+=F%Hx2EGOg%N+IgOfDKQ5gzcOUxh`(x?pxw6+UO zYh8=u4FePLzCI=xp)AzNqcBVHvErcW|Go)CXMHM;DVG)vBP*`qtZ|IZ2v^tvL zLu^fCGkJ(EXCwcd;qw!_qxZZB4-u4I818sRZMC616Ibr3Dc1Wn-}O|3=*5&@%lCh8 zsiBW5KevGJlfhg3Ezz8r`Dz8oj&+NfWSe?1S}#Gl9i zeI5TC_pm=*PpwIB%c?bUjfU9f4#hA4idhg4nr7Wtm1W`11a^UPX^>u`IAa0D0+8L; ztBZ}%u6iW3S${WnPD>B<*+G2BI)i_8xbZ|rj{4)lNJWMHfa&PfmhEF>Y0E@*LHUbx zsEu|EHpM7$#471LC<2mNtnzPijIAhj{uH_A13>w&|Iu_p`LqrGyS)v5G>3Tl@K;X7 z?GHclEDYEAC{p_G`iXHDa5Xic|DWyD{a5QZ9}3ui{p6zR0)xVIQRXY`2SBzq}HVH<#N1Vi%;_K#@@f{NG_Yh~L0Fasi5SfQ+PYUj9 zwxO?+UG02*_2)W8BiEvEz%qePFb&||D24>Ti?u*kO3@C;NC6N=9fEk*4^?RR_KVyl39acXZ1B0v*0X`rldlBq#c)BzTgvRPmjz`1<` z#!TpC|Df*rXXQZ2MHbF-dwA}jWTYc(s^fwMfzZjyCrn@`d#kFj^S~mPi=m)u<#`o@ zqHb%f#qPmfOm)uUlO>&p1pbW|`&|~}b;Gzrr*{{iw(vE1$c%r2+ivnZnL(eXz1sI> ztd$>R;iii@pc{u3YZEvLyE_4U0<2C80}8{!Eu5G2dC7y2fhH)%0HnB?C@jX1y zk(IQX;^Cm`ii`3RVVgYEdp<@jg=(-*`2t7IqCctBp(uF5&eg_Mv88voJu@eh%F=#T zO8YimcYJGQh(3SW_ff+3i_!=`)OdWF_SwE41#Rz&50r8-gW`y~Hw)|nAk^eg(2zq+ z?*JE1bFkL}iS@1+%*or$SY(E>nqacq`6cf6R~;o-fV^l!m(%3z8d`vDwS72riSBVZ ztq$&p7!8IyQnK`8u$wYs$sec!7p=>&T+V6P72dDoPYZwLrGVzsv+w^tN^Sq^U->?b zirpS>1sfli;B$W5M_adVKk?5+G!3F##&isqsCW z6;PCI2uz;(5-i ziP{5KyWHA@IIt1JhQY#?Yyu<%?t>bKXD<)1fE33u{?0qDVNU zRBdMke<_J6hORbD#bYBJ=`3^UAhKI}o!GcEVp4wu9)jdFf9ELgp{5XOq00W zAcG~cxef6?HmvhdViu8zKDFD1K8s=9e;)S`#(~xgWLbRsvn;>KZfv@Y*4)Zo`kQe4_WYpdH z=D3IDp|Uf)Dl=IDulS1HD2#6nP730zI>+e&RfIJ=4JRA)5-0J1SuBsKv|L0+XV8C( zj2%l`zRPU7yM`)wlZ@W{{5bL}2;Kdctd;j#%yBjjQ% zriIt}*wLC_9n@v0YwYBq8~f)#-4|204D~eL2JgTmfN0VjJO{5e)m=cDfxCf-l676% zHqfh#^$kTaPL^suThGa3W@9|!9H@&k*dx9195)V09I_U5?j#(yD}fS36kvY_3!6%f zbvQu!CmSscZl!JeQQtxr18Uz}+7}#GZ`k_n#Oq7k3S3^s{<+ycCcGN!`=+J*Wu((xGWC!n(a~!rk9G_6fh3jC8jxQlt^<5eDxXzLX zgu;HUh+S9aGyFdRATyxcenH-v6OZD$rNl3#{k=@uvhQuAo%RRF6d;@&Ajmc-sz60# zaRdVdH9UDh2Mj7$+OV;A)ssLxy}N)*7OkB=k8|gQF=K=`EPb%pW?g^I)V4OJ2iC+N zf}K;nq~euH$|GiZuq&}2YC20AJXuC~L1(f!?qXBEK;FC7rQsKF66qhe2(4QWjz`+w z{UnRj|DA5wtqEH;grinhY}^8G1lA;D)oqhp8#XzbsD-kI0UQzNW?2VEDg4b7S}%qa zwO^}>VOW>lYU-Gb zFkq@l4tzeN?yO{jg9qd+tU3#0-ne;TFD{C0v84{f%=eJVIKzJ;-#*dqOyPT86zxF| zu|x2^XUr;7o4GmZM`6iQMSmu0w#%mbO2j}0byg{>Z;6O39@)#c{gkfIXmkHw?``fm zDdH+$yxrH#J2x)ar>y|1on|D$Esnh@;JI{I^+s)5BE!{vYKWQW=swhb6r-7t@JIm-t8 zmNvny26@~&iGLc`cOD~Jb`Xf>sN5OySy@g}#vHAe>m#+~1_?Io#Id=E7__r>jQ;s} zqWU%~&*jdjPn(Bu8{q3=UhrBF7uz!68@T4#99LKzZp%+&FWXu@g#VU_?kZERZrBdK z3C__DN??D$+cGu<27?XGgolDfP%em;*f%QEk&UZ*Z_+<%{+1b;le3!*SR^dPqdHKr z5dp%K%#&$lP8-~O#YutCV@DzI{L4U^ETbViosH9+Eo=ltmeHZg$PwLXub7+m_BS4u zkNNJ#Xpq#$BeG8ZplQw}K(oi#pj99Vn zf-bAmxM{HX27Stb7ispA>)w(9@?hn7QxXDuX+_(N{m5L+bhWLTSJ#TV_ZG^wS)-t~ z3)_EsT~FkiY7J3YU6>HGI1FCnJS6#M)nF5+$1)im$;b*oXJyNmOKLETl&W0Q&Q{WO zwCi+9K%x8FjZE~qBb^Q76l2uh(6&|7-*t0BK&yjBXf)y+X9ui0+``qSu-Bg*0E@Yk z0q|htUgmmr{-_b|oL^c>-+#%~X5W6IU7KhQSS1UmDF8t@n!_x!RyboQ2k0`2vw$+w z5dObyjwV-#SIsWVrNK&+G$rYA_e^-2Md$7;+p742>}npa#=?kMyw3Eya$l05@ zOEg{hi03ItYEO>q!wI1*Tdnx;o2ocjeNxwxoVFT&*J&U2yiU-hU~&}cas*~Lra_@B zM52sox}dg%zyY;Th)HP-1JiwNw#+DuzKhItd%a7iD|ss{@>nx4Z{dl6OPQXiV4(Ak z6@Me(K3_U##nvb)3+Ka1WRy!>*on!H(L@`%Gb0o1O71s33}R zp7Cmbi^pNBS}Y1=GY3yJ8^ypX9I!tqVcRwYPbS=w9BvXe%c1Wq0=lc-lI@0@(V&`M zA{X$}Qar`>{E~PTMo&w{6^W`u+_k{;4j6%)d}6X(V3SVj?iK?sVb1DAB$INtWK&}~ zbEc|u?=@Ke;HyXfp*MIL`GjBmFvk3t?q;2TCVY5^ybMsx)ID>74Rh;~CnT`A7X0hh zuNYu+EyG69x23Dkf`y$NUZ&a8VvD+aKGNb!q^JPV=7QnQ0+CcVeI~&9F-DFgYgolO zc|y>Ryrx`4m&^(u(o6hw>N4)G3isS@vpoHMdhB72&vlp|3e{EhkYu4 zHSwt2dCeVtb47lLD7{QtUzg{R7Mesu003SF0C^Y*o*D`oV2Xxa(FIZsL`|S{t!vK_ zZ?4V^XMFN(NZTA)EEQ@6&(?UucYBm*BGzSWCF*bnBmwDet!ZfLs)fyuhgDZPL@plp zHpX&wnyEIOsDd>dtw#sO7@xxTSLbto<*)xxW#(%8$GO+ahIi(#-)nfyPqo~CdP6)< z`fUEIxZ*lxBaGrGnq)W}Qw~W1YXSJ)*X9pQ@hI7fm>o2- z*PW8)V!Jxvm}Af2u96u|u(#@D;B@qmw zq94N~5dClJH?>Qv-IJ^zr}kGUthF&Cw)?9&Nl%ZG7YY4D)IhZe--d3#+v@lTPKb1l?)p7*XZMANTw8B~mBMbiZU?STguJep-Xy^?7w#uP2(D}!sUK!6}Dp*yO;KF z-`BMJc2{~WB=AAzM@0&le$(==ZpT1>dgISSPf>s1{$q+;oz*+={rM06YCivZt*M{s z%sU{@=juKtkW(lm`y286K&W#9lnSuO@nB5S}S9~eiL z09#ORf`4o74QD_&h~;EB-jPdjy|gOQ^XKyooep=>&MoxG9F%#5lo27138ti0Rxg^I z80I`2$MgkLC(2~zo@t&NNdk-Zz17_x`uNGsB7PAn)eJjGiIplDDOgI7Aa_7@3Px)XfV5&&69jeh;tV^1`)cT`cXG_mLJ|SKx#(-%YTPz zz0X$L;r6m!j}_v7gjyU`x8JZpQ|4HxMLFOLIv7{CcL%N&h2Zs#73}2! z#D0)&ceZp`ZHpwZG_B){)C%)MH77>QMb1uv{+<-Lo&&HiV1a9KlRFsu!V zmY^UO!7-Y6<2NArD&5X_Wa z1qlWUi}B*LxSaG|M9R}@>2*@injZDziS+IbJ-)Pm?OToA5AVq@rhb^|dA#M9S}ucv z@)PiE$8qcChYn#mD1@~DGLZ(r+75*NH1kF_W0{FigqgAlC-Q(6_v@vUNsd4X$dntz zRbXC{l|mHLlgv+bOd(k;+8B|W2uwJm*C=!LwbPcK?-g6Y$Bw-@Bf3a_1B^Uh^V>7` z@2|>#)|>CG{xi?!W!k&NTSJYp8@GnRSRi2;(gLCtf@KC+0^s&ZP_hHALQ+nh2L%t1 zH&SQq*za6UUZM%!ai|9XIw8zt$!lGXRjIy7c84~l0eRoyR5=d?hU(~?c+TUkH_^`o z9jN{F>?E*6>@!u#J1Om)qYfpcF_UOajmr5_}B;0#&^3O7bRHk}vXlKk0AdljW?}p2s3WLH9+skB>TXstEoP zStH4=WN2crE$sDaU`dL6wsC*oLD#9;t27yjCP$yzrL+BZQ!47#`vH>BT6B-riGMYJ zofBVukXtv!zi+?CjJ5e5M}L~Rnvw+d!b0mtJq|#2IFK+H3NA>U%nCf61BwzGp2hE4 zXp5tZvA3AGP{re=lJd?t={hk;L1a^$caHcpIPD9#7y;JJR?DN&FY+@*8+|_N2-E(> zMfy118w;z+M)p=COzciPg}<{6IUuxu)(u>FTi4=eab$bS#wL&BR-q3X=wr?TX5MsN z2r1yXfYYuG8g3IrgDz3`J$22ug{T;Oz;%kLg)>qPH*qWpIk%Q%4`T7Dlm&gWR~l?^ z-l+U>g);8)G8jo)I6$?{miA-xKraAbC#?w)Yzn=^X9FTb-$#?*M~SV%@6VBcKqK^Z z&U>TC^4}@f_dMs-zU_f_xjxG_EY=2LvEu?43Qt6M&Vuh}xwJ)qkQ>8MhXT#r*9JC` z#7K~l-xH~`kziFSa>!+9Rg2|HJ_nY58cs*c)d&r=o$e!~PLFmTh%~iXxn*R+8I;3C zcZ8Y8{^CLn=A&gf-zrT?{)b(Evc2d2lGw04;Q(83 zCdvY-V-Tvp34|m5^ zl5%LJts-)|)o66$ce1fRmj%HdEl&}ObxTuJm+N~x(CoM;&;BUu2)q4%r@?=kP|=>T zG1JFkJFNnPhn`EBtYuqNy-6_+gW5QTIVj`cCTemf26*xtT@tEg>sXnFYhDv3ZZ*i* zoCjqgDA!VIE{d6wA6GaxJ{55|Umfy!pb+O3LRS1@Fy!{z;~F6(;&`#t)v~LvKr*&x zvHbmRe+}#72!6(&8#~i~#w9^XSlza~2+YpTmZteT{FSnM`OE;f_V zkc4%7pv8f)^K27;cM*y1UU+m646D98GEUr#|AyYa{`Pww&?Ei2IWaT(rM}J|(|y>i z&gOVe=xIVQ_O!btf@7$Ep3;KlU5hu}*>sBRq^RS1 z#CwxH=k?s|^}RUhchubf;Y(`Ue*cMfRZgdlI&2UV!()ge4aXoD+9oZFz)Xu_2n+)x z%XwFiA1seMu$U1_ z^n&SC*J3k&dR>-me_U-`5KBqj9KAoQAKZ6swolmeoelr{W_wIno9JGv6He9rb8;6r7T6-|u~7WAcq>Vx@zwqqOG1VDv7QWmGxcgom|ZdYAz zGX(WpP5+F025PfBPmYrtK6sL#TLFIJQ_?n!F+W7~A5+#=eH{I1=DOt+V1|u@z8EDS za;xhP0wfChCyIloj0I{I5*$Vtd?R32WyG!4%bqUhTXK;iN`4NRT$V$B(KXe*a$YH1 zF^kZD^I94Uy&y?Qgo}-W0=%q;$K|m{P=q!`s?(xdS(!DBw(33Fy{CrNO7i@-(i~qV z1-rbAv{D>_{c{+Wwq2Y6T@P-t;QYW7f->s@DI7S@bvrbidXtQMFcya~zB$Xp23xbp zP|`uwH128MIrox`SSm}6M7E=`Hz#&e+CFT5NOm3R377X1hu>s`v|_hg>SQ7p-(%Ms zHVe1dHw`u)iF8j{=hp}e#_mlwA7=efAUqEct$}xCcz&eLywBD)^>vb4DJQTaY-1*Y z!EJ4sj1B9Mqw99sH~}&$69*+8ZoR_+gLDzu>^X_Mow2Z-RwG`)Gj=%_Jib40l*!V6 ziLpa6-8uu6_h-Wqu4MZTIaKKpw|0_P4@VnhS+G-OWRY7j^r&>Zd=G7XN)d00D|}(< z=AOP*Xo6U`uG{k)Wj!AA)yDidXi2E*wse#MsuzF@;aSb$n2CYll`u&VdBR4?G7cb# z)*Cl{H|3pfnpPEF$*aX>H4;s|me=He2bw$_b&A;^s0&cQTH(;faA(u=pj_vJ%2USA9VlvUk!%{=87Kma_d}*w@%)VV!hW{YXiOvUGL3X%m=`p3&Ky%VMvIFfh;pQ zc<53f7Ped$?o^ktSn^#Zk2F7jO;u%ZTCut#DrPmDR8i1dY_)2D(JHkTiwbq~^HdT+ zdp{kmorY6SoEc?z)p8ILA=nLj%6-zlH9l6GB>o8nN6#B7sz z;}PomMt1pw8XYyQKhlP=?(8Syqn;!j*0a>2Q`N~Z=4^Rnls*o)~ITbV%EvpmCD&P$0tTT z61!PN*<(A`fu1X!X|e~=?YuMf5aCScm59m%vxATLDs*^h;*FBD+vk_^k^QDfRNJ^r z`{urh=5JKV^S~#X{7w!@*1v@H2yf z75lCf+;EfoK%M70B6@g|C(Z%qwbjh1W&&pleP!4Io^Bm)s=jtGx92Xoy|7-tM_?Ci z)>HkNAc&sb2k2p)uGCVI=0R`N`-znAZ}(b%?SlRvs+WMJZeHN;z!s1Bn#*uIe`o<0 zuEpWC+h%~864ZUBg_<;|(@d10!C5je4n#_ToW0=`I?DJ$Fw=@LEQuUQ_6eUaWP;^p zp(9Zpnyn0fR71K*c-~OLxnlj?S>Hi@nL~m14Xgp3*X%n z#BqIQLv$StJzI=>n7v+4yD~EDn7j2XnN5;eI0(~yjN`cF_o$dCRlncCly2zWD7)s& zaqxg&Hnr=}fA!3-f801Ke}FszEeTvN&YGB0H^ZX{3e+(!gV(J=T-tHLEN{--zWAjt z`#Ig!RA$gyx^XwNDqCT8TCWq&N7+1dC!rpD@}$>4Fk=HWRen$3j_iR)E;u2W+r1Lk zg3W~9s(G|B7(d|eVFmn9`&yB$cHYp>0x}r->G?PF-K@|YT$x+Ce^~_}akLoH0fw8z zKoWr21c(Ick`)HSf{G4c0s>{;<#8eg1g0Y+AC)@Z8y`DDFm*}KdU1~IAdq{9{)Wb3|{UtRHQERhLVmCvmxpGsk6rt64n5{Mq_&;QB zpXUUdJP)+ETZbWRe=tQYmH;`hV}pp=G%VO>>#Dh|1*8pUQ|P;D-;OpV!(g&vB0fIq znV_q)NyP3gjTo7k*Pj`vQgB0%7Pua3uL!MJuA_LJbghB6zAQyiVAQCedpL2DH3AU# zv$dh_y*vuoJks1a0=RQO$KPQXznJ)Hp--bNz7bU9Ch&^jf9jLq3*d%Bu^=@wL2&|* zn*lCAi&GXz^1e2cy1Nb-9-Eq9bS#m2g$_ww+_gX(fT z!Istm4NUH&81quqIR#_1WJ9mU#@yOZj+L9-Zl%ZXZYo}V+C+aC2R-I{Hp-(pDM16~ z2>U4J0^>@Ne>TN%m`%gpYQaqf@-G?$IJAwuao~}KcJinIkqSbf$AU6CorsZ~V{=*a zO@}Wme~2sF1x8L0oEPR7qCeD+WslnHsEjD;5zt<~%S%)Ipsl^JGEgjBntnsWq-l-N z=im!{ZoqpJcDIo?^Uh-rf0JVzTT|V?z=cQkAKxiKt+dY_ z@3qILU%#Ce;cFS>=f1};fArMz^yR%TR`65QT!i&0+_IK_=SKRN@VZt$j@pt{lXe}( z1Z|+xe-wD#4r@EG~Oo?f*s5R-GZ#>1ibTGiAH`o?}?7C$4 z$;8vJ)`VA^KeF~7R3Hof7t0WUx#0vsVGQTG zf8d7EE>QjukfSz`{)P#N$JZ90TU|WQiqUe&S)fp!3ajaIk0+_(O&Bx?J85U+U(O}I z+5p;n&dxkf;k~}EM{_>AFw2$A#WFL{o&31bd)@L#T08xly5e<%`1^XTu`cYpzT?Hc zX({%Po%ZWgwFz%6NnIl2;4?@=8STdkr8rOk_R_YkNP=Et8%hi&j(iOQ!+5t zJ0V*JQ%NWUnw;+Mj!Ejh@22&$bBCGgQ-^=9E?INtw!smM%Ya_Q!7wwFdv!5#j~l5OZ_1> zL=7q~z0#=LRAiA&9TTmAVF2JQ|f5+tDE~=%LC@8Am$fZw%$g0a( z*`6Ql^MV&)(Qfh1|Nio+VprAFg_D{2%9g+$IA{++MY^JnH;!2iP#%wLw4uhJZkh zA%P|X1t1D%?>ewo(C;##e*%GZa&MPNt~c7)jusn6GIBGz7ur>PE;2!|N<3K#m3|xz zE+KCtNmt`Ho5jV6PWcoZT@d{q^Wlsq=Ty}>`mD`P{!10~z+{FGqzGK!Fb+Pd-`^DN zZ)H?Jf{MQThT6E_ynV$%$vgapxwHxLAQKP-3xwh>cn7#e)j8)5f5cUXkZYUB9DP_%v-}`{%KiY5}ugjl)yT zq&OgvfEOX_2Bju!fBz21w+Nu{Tv&Fu42sXH1-sY7hv}wNcm%|l`8ctrnPe!t!`?RO z9+Mw2Nvc+&5l81vuIQ${n3KiyTp*JznlrBH_IXtb3&+03+wf7u8Xb7ExkwacXs3Dz27OZ^D^njdjA+{ z=|6z#VC(!v0tBw04>mxtWMY`jngog(HVODXVG<7Z=J_Ujo+<5edOaCUg6hPS`DJhA zeajWCJ?W4kx9U03#`jW_8A>}2!Dc0Q>~tx8(aozOYQUGuLh=2rf5h4Y-q|%x z7{3mZ<9euFnf*Z@Sy2cU175V9H~-KTe%0fF{-P;N-dyoVFdarG5ChwP0LZz1XZypsmuN%{e_efTX|AvDHgklu`IDHRZR%KYo#`x>NPbC}jthe_CD|WjXLmIT{7g zC2o*!eDERN+3Z3~_mE)HPmLfjSB2nU3A&*6Gp$5|p5e(|e8tNv@Uw*?)6jK?pM(ca zTd_xv@On`+f9N=tFdBEi1373NtOxGN>*{25&g7Z zjC5?X_0RofuI8e;pBa;2k6}2n(gWdqR^4Kf%(dk#VDf%tWaw-;{!UcjoSz$lo>JqU zr|=uy=0B#ZEp>n0>NIb&0Pxs2TWc)<8Yf)`Tp9*e58$6Re+F`BoCJvh`$oxDc8!72 zmpGE%nQ|;p@pLUOI;Dp1b2>zOIWf{s>mJrEx``fTvr>?U#GETw0#6u>NC5I- z7zD7_b!%dje*y`BjRF1d5U63&+?#vNCzmnOUt~^{a;GUhDA#yrRVX1%*wS%+(2*?W zwBv5S8klQN^yf?LtY$hIX8Yq3@o9dw-oqIhKoO=DwHR8W_RI)$_W`fUOH(q2g7pQtL z24UDZf6AGF0x>Sm(%c)52sRW!I||``h-!}0o$o@?otK!o6T91LT?XSXtXNo!SmIkdC14QOsf8re;dWwyb(zc#$AGEWV&Le)M&do$Z z=UO@8_Fhjai^*;rmJx~g-PuaNsBzj&PZ*QnGi;7`M#A3gr5KBN%IPqrbgq}U-!y15 z0>`(Sx=qBlamn2Wzn=A9AOrj4dDlZfTT!=`v5g_Gf8J!~5C&>cHi=_!55ZjpRwPh@ ze?b|tt{Us0APfMs*?uF8)dz)?h8( z$^!WpETmQ&#{0Wb_6JnrkXv#cf0RLLLACJw@6aWAK2ms|?lUI}G*w+N*UXxd|!P!v) z1m#|nSCbapR0QQ-lUK8D+}Z&Nz0;znh%?wj#?OUK{uY34F-<1yNL2gw3SC95>2+&{cv}e7% zphfv;4SzT~nSSIHepuyqp2!_^-RTyp=0E7y5Q!rq%`b#O*O29l%(lBBe@$C~( zO9KQH000080OekjSHg82>O=tm0Ivc706G8w0JEUqhyeuUUXxdoEa8^~OUZkIhblsJrJZQ>h2;n*(hPVmt2gQq%`2M?4c|Eeg{fa z5>aKC2~uDpVrkRwA-ZVp4@PVC1M244_e}Kp4c<5CL=F``$1-nRDJb_uTuxzwdtc+c^An z0OCIE&KVi|+Nw&`knfzy%1=!=r_7fB7^^xaQM(S$ShcXW@k--J-ACoGFLAT4Uj3pv zwRqmnPu_i@ck4mLiN%so(}LVHz4N__cFcTww^=e#7L^y{@ZXh@yVZZHFK8_(@b`Y~ zdi#W}D&d=bj)8AIIe*Vb)%CeqfpqP^)-8McV9uTke)rrfGR99|Tm5mnQCVN)rSEQ~ zw^hDfap%(2i@Wx`X_(&T^~Zxj&Otj$iXNK{rDvIjZ@jucxcOnB6qJ`u=3ve z9nR`Uv9)1e89X@G)|$7$BBHv~Ci`6SD~HtWnepGQn!E8^RsO>_7OB2J^pkww4>qq^ z9ZA`&9I3AwZ13yXJEPldYum)K^|dZBCBugk>zmB~^8Ziw$L6j54mK*&pin!ClVVZXl@pK0OR@X^)a_pYqbEbhON=98bvHuS{!Mfx^*wqM!Vx-{WgTU_$b z-@Idxlbhe!9X)bV)45Q*aV`}1n+Ut&)IcTO0!f40sp~?^kN$!MnjC7K*flJ;c0Vx( zey0pO&6J(RO}7ciK_hS?r6J(Nc8y%8w0}I!HsCGRb+nGU9*oKahQV`hYOz6M$7t}* z*mZs0x^xoG(_qc7^+4FpHGTRZ)KnukgbjkA&7VTnS65Z_}i8P6?v1w5?d2hLLBJLVstnAlEzaf5XB&pS)_xZb=Z#MkpwqT zPRo+~*(*oUhlm`(|PSDmUxD%(s_m`7$hDaRE!7KeZ9TBEF)FlPlPgE<5tsJT0k?BV|v9TuCn0&y)CP5D8~++G0}j z_ga#KEoGXjtau~KN|Rlj-;u;MlbKtWXu6yJfmsb zF2&*6=y}AMBRWciJ>Jjl0rq;od|Hz3N@AEWQBu_azj3m>!IfXQ_M07n4v78)4}*AW z>jrt{ZEx`8n{d~+XG=G-zCg8@d6Ou7AeJudn?Be?6Ad>hB|BduC#RjkoX;=Ith#;_ z^9S%-CaP%<8TNrxnji0r`5!*v_Dm?-{A8Bb%ZFEY^)pPY2vb6Od?AHmBIYCJ+*8u) z3jyq$aT6b(j6b|g8Z%DborZ)0{1%Hy-b6hgR`OLJJMvj^69y-6){8`(aY#G{sx5t+fhIvf{ z?BS&$q*M>A$=Cj1Md$k;f1K|bhHMLfSh64hqyMu0#6K9UzfFq79S9zFgl9gEM#Z>eY!YO_hbGe6%NH;um4x(N#<+>wuWkf-JuBl+?EqW zkWpK(o_5kpFNS2)Vu8`f=B`cM?}8nd7D>*A!5q4xH^Pv1+kVn*O#H&ZfyP##r6-Y1 ziJc7xCEttEvW%#U$hF2H5_NpE5*?@Lk2-?&w9{%a!(ww1PT73gqnS;zA|Tx;jB5(> E3js81NdN!< diff --git a/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip b/source-code/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip index 13e400afa85ac3a0b98a5c9eb8dd1e6ad41983a6..130552acb13ada3fe213d303fcd38c58802bf453 100644 GIT binary patch delta 204804 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

~;HRA>4K3*KKC6o+MYRSauz@h+3C3tU=# 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

+ /// Default value: 2048 + /// + public static int MaxValueLength { get; set; } = 2048; - public static int MaxProvidersLength { get; set; } = 128; + public static int MaxDefaultValueLength { get; set; } = MaxValueLength; + + public static int MaxProvidersLength { get; set; } = 1024; } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230713030359_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20240108025955_Initial.Designer.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230713030359_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20240108025955_Initial.Designer.cs index f9551bd313..8ebb1c8139 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230713030359_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20240108025955_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20230713030359_Initial")] + [Migration("20240108025955_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1082,6 +1094,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1113,6 +1126,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1170,6 +1184,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1194,6 +1209,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1244,6 +1260,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1277,6 +1294,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1325,6 +1343,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1352,6 +1371,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1560,8 +1580,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1591,8 +1611,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1610,6 +1630,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1634,6 +1655,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230713030359_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20240108025955_Initial.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230713030359_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20240108025955_Initial.cs index c06a4f0ae5..a01bf3a378 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20230713030359_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20240108025955_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -387,8 +387,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -414,8 +414,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -673,8 +673,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -732,8 +732,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index a4bed9e946..0ad5e1c027 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1079,6 +1091,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1110,6 +1123,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1167,6 +1181,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1191,6 +1206,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1241,6 +1257,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1274,6 +1291,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1322,6 +1340,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1349,6 +1368,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1557,8 +1577,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1588,8 +1608,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1607,6 +1627,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1631,6 +1652,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230713030712_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20240108025957_Initial.Designer.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230713030712_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20240108025957_Initial.Designer.cs index 3e93b9fd7f..da08407a3b 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230713030712_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20240108025957_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20230713030712_Initial")] + [Migration("20240108025957_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1082,6 +1094,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1113,6 +1126,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1170,6 +1184,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1194,6 +1209,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1244,6 +1260,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1277,6 +1294,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1325,6 +1343,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1352,6 +1371,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1560,8 +1580,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1591,8 +1611,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1610,6 +1630,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1634,6 +1655,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230713030712_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20240108025957_Initial.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230713030712_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20240108025957_Initial.cs index d88b3c07fb..27afdde446 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20230713030712_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20240108025957_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -387,8 +387,8 @@ namespace MyCompanyName.MyProjectName.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -414,8 +414,8 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -673,8 +673,8 @@ namespace MyCompanyName.MyProjectName.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -732,8 +732,8 @@ namespace MyCompanyName.MyProjectName.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index e29d4af404..655470b70a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1079,6 +1091,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1110,6 +1123,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1167,6 +1181,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1191,6 +1206,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1241,6 +1257,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1274,6 +1291,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1322,6 +1340,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1349,6 +1368,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1557,8 +1577,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1588,8 +1608,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1607,6 +1627,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1631,6 +1652,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230713030357_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20240108025535_Initial.Designer.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230713030357_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20240108025535_Initial.Designer.cs index bb43b782a7..8b95b557c8 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230713030357_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20240108025535_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Host.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20230713030357_Initial")] + [Migration("20240108025535_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1082,6 +1094,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1113,6 +1126,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1170,6 +1184,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1194,6 +1209,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1244,6 +1260,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1277,6 +1294,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1325,6 +1343,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1352,6 +1371,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1560,8 +1580,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1591,8 +1611,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1610,6 +1630,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1634,6 +1655,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230713030357_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20240108025535_Initial.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230713030357_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20240108025535_Initial.cs index 0195bcde14..6351b721a7 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20230713030357_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20240108025535_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -387,8 +387,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -414,8 +414,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -673,8 +673,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -732,8 +732,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs index d7fe266165..ad24611c00 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1079,6 +1091,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1110,6 +1123,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1167,6 +1181,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1191,6 +1206,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1241,6 +1257,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1274,6 +1291,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1322,6 +1340,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1349,6 +1368,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1557,8 +1577,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1588,8 +1608,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1607,6 +1627,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1631,6 +1652,7 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230713030711_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20240108025941_Initial.Designer.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230713030711_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20240108025941_Initial.Designer.cs index b23b9f11e4..d6c4577d4b 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230713030711_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20240108025941_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Mvc.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20230713030711_Initial")] + [Migration("20240108025941_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1082,6 +1094,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1113,6 +1126,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1170,6 +1184,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1194,6 +1209,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1244,6 +1260,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1277,6 +1294,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1325,6 +1343,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1352,6 +1371,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1560,8 +1580,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1591,8 +1611,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1610,6 +1630,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1634,6 +1655,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230713030711_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20240108025941_Initial.cs similarity index 98% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230713030711_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20240108025941_Initial.cs index 968c45491a..af8c0ceb6a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20230713030711_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20240108025941_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -387,8 +387,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -414,8 +414,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -673,8 +673,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -732,8 +732,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs index ac24c1061b..c77db1e07c 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1079,6 +1091,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1110,6 +1123,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1167,6 +1181,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1191,6 +1206,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1241,6 +1257,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1274,6 +1291,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1322,6 +1340,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1349,6 +1368,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1557,8 +1577,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1588,8 +1608,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1607,6 +1627,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1631,6 +1652,7 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230713030629_Initial.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240108025905_Initial.Designer.cs similarity index 98% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230713030629_Initial.Designer.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240108025905_Initial.Designer.cs index f4cbd69543..b641f66901 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230713030629_Initial.Designer.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240108025905_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20230713030629_Initial")] + [Migration("20240108025905_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -297,6 +299,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -306,6 +309,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("CreationTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -476,6 +480,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -485,6 +490,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -548,6 +554,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -556,6 +563,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -647,6 +655,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -659,6 +668,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -707,6 +717,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -743,6 +754,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1025,6 +1037,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1055,6 +1068,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1133,6 +1147,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1164,6 +1179,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1221,6 +1237,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1245,6 +1262,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1295,6 +1313,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1328,6 +1347,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1376,6 +1396,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1403,6 +1424,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1611,8 +1633,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1642,8 +1664,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1660,6 +1682,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1684,6 +1707,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230713030629_Initial.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240108025905_Initial.cs similarity index 98% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230713030629_Initial.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240108025905_Initial.cs index 4524bf8c2f..5271825eaa 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20230713030629_Initial.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240108025905_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -58,8 +58,8 @@ namespace MyCompanyName.MyProjectName.Migrations LastTryTime = table.Column(type: "datetime2", nullable: true), IsAbandoned = table.Column(type: "bit", nullable: false, defaultValue: false), Priority = table.Column(type: "tinyint", nullable: false, defaultValue: (byte)15), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -78,8 +78,8 @@ namespace MyCompanyName.MyProjectName.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -162,8 +162,8 @@ namespace MyCompanyName.MyProjectName.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -243,8 +243,8 @@ namespace MyCompanyName.MyProjectName.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -268,8 +268,8 @@ namespace MyCompanyName.MyProjectName.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -284,9 +284,9 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -318,8 +318,8 @@ namespace MyCompanyName.MyProjectName.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -375,8 +375,8 @@ namespace MyCompanyName.MyProjectName.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -408,8 +408,8 @@ namespace MyCompanyName.MyProjectName.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -435,8 +435,8 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -694,8 +694,8 @@ namespace MyCompanyName.MyProjectName.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -753,8 +753,8 @@ namespace MyCompanyName.MyProjectName.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs index f84447a737..7f609b1214 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -294,6 +296,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -303,6 +306,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("CreationTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -473,6 +477,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -482,6 +487,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -545,6 +551,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -553,6 +560,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -644,6 +652,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -656,6 +665,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -704,6 +714,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -740,6 +751,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1022,6 +1034,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1052,6 +1065,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1130,6 +1144,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1161,6 +1176,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1218,6 +1234,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1242,6 +1259,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1292,6 +1310,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1325,6 +1344,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1373,6 +1393,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1400,6 +1421,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1608,8 +1630,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1639,8 +1661,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1657,6 +1679,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1681,6 +1704,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230713030452_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240108025948_Initial.Designer.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230713030452_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240108025948_Initial.Designer.cs index 56a4696b2e..2cc795d380 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230713030452_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240108025948_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(AuthServerDbContext))] - [Migration("20230713030452_Initial")] + [Migration("20240108025948_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1082,6 +1094,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1113,6 +1126,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1170,6 +1184,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1194,6 +1209,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1244,6 +1260,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1277,6 +1294,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1325,6 +1343,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1352,6 +1371,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1560,8 +1580,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1591,8 +1611,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1610,6 +1630,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1634,6 +1655,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230713030452_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240108025948_Initial.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230713030452_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240108025948_Initial.cs index d88b3c07fb..27afdde446 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20230713030452_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240108025948_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -387,8 +387,8 @@ namespace MyCompanyName.MyProjectName.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -414,8 +414,8 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -673,8 +673,8 @@ namespace MyCompanyName.MyProjectName.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -732,8 +732,8 @@ namespace MyCompanyName.MyProjectName.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs index 5bcd64f6b1..dfd3cfed40 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1079,6 +1091,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1110,6 +1123,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1167,6 +1181,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1191,6 +1206,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1241,6 +1257,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1274,6 +1291,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1322,6 +1340,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1349,6 +1368,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1557,8 +1577,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1588,8 +1608,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1607,6 +1627,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1631,6 +1652,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230713030436_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240108025955_Initial.Designer.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230713030436_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240108025955_Initial.Designer.cs index ca9395cb6f..d7bfdd9172 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230713030436_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240108025955_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20230713030436_Initial")] + [Migration("20240108025955_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1219,8 +1231,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1250,8 +1262,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1269,6 +1281,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1293,6 +1306,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230713030436_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240108025955_Initial.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230713030436_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240108025955_Initial.cs index abfadce476..706d9ef599 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20230713030436_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240108025955_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs index 8b57fa37da..791871c4cd 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1216,8 +1228,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1247,8 +1259,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1266,6 +1278,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1290,6 +1303,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230713030513_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240108025302_Initial.Designer.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230713030513_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240108025302_Initial.Designer.cs index 092c36263e..a6c975c24b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230713030513_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240108025302_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20230713030513_Initial")] + [Migration("20240108025302_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -65,6 +65,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -85,6 +86,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -419,6 +421,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +431,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -493,6 +497,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -501,6 +506,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -593,6 +599,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -605,6 +612,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -654,6 +662,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -690,6 +699,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -974,6 +984,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1004,6 +1015,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1219,8 +1231,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1250,8 +1262,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1269,6 +1281,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1293,6 +1306,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230713030513_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240108025302_Initial.cs similarity index 98% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230713030513_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240108025302_Initial.cs index 6bd515e10c..56c73e0c92 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20230713030513_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240108025302_Initial.cs @@ -37,8 +37,8 @@ namespace MyCompanyName.MyProjectName.Migrations Exceptions = table.Column(type: "nvarchar(max)", nullable: true), Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -57,8 +57,8 @@ namespace MyCompanyName.MyProjectName.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -141,8 +141,8 @@ namespace MyCompanyName.MyProjectName.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -222,8 +222,8 @@ namespace MyCompanyName.MyProjectName.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -247,8 +247,8 @@ namespace MyCompanyName.MyProjectName.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -263,9 +263,9 @@ namespace MyCompanyName.MyProjectName.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -297,8 +297,8 @@ namespace MyCompanyName.MyProjectName.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -354,8 +354,8 @@ namespace MyCompanyName.MyProjectName.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs index d1b8b575e2..9d9e828559 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -62,6 +62,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -82,6 +83,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -416,6 +418,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +428,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -490,6 +494,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -498,6 +503,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +596,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -602,6 +609,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -651,6 +659,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -687,6 +696,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -971,6 +981,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1001,6 +1012,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1216,8 +1228,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -1247,8 +1259,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); @@ -1266,6 +1278,7 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1290,6 +1303,7 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); From c2e8021bd106f4312518abe1f30fbabc8b3ed08b Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 8 Jan 2024 11:17:33 +0800 Subject: [PATCH 56/88] Update SettingDefinitionRecordConsts.cs --- .../Abp/SettingManagement/SettingDefinitionRecordConsts.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs index e61193697a..65dde011ba 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs @@ -8,12 +8,7 @@ public class SettingDefinitionRecordConsts public static int MaxDescriptionLength { get; set; } = 512; - /// - /// Default value: 2048 - /// - public static int MaxValueLength { get; set; } = 2048; - - public static int MaxDefaultValueLength { get; set; } = MaxValueLength; + public static int MaxDefaultValueLength { get; set; } = SettingConsts.MaxValueLengthValue; public static int MaxProvidersLength { get; set; } = 1024; } From 6025ce60daf6df6417630659a01aad331ad3f94f Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 8 Jan 2024 13:00:24 +0800 Subject: [PATCH 57/88] Remove `Logs.txt`. --- .../MyCompanyName.MyProjectName.Blazor.Server/Logs/logs.txt | 0 .../Server/Logs/logs.txt | 0 .../aspnet-core/MyCompanyName.MyProjectName.Host/Logs/logs.txt | 0 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Logs/logs.txt delete mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Logs/logs.txt delete mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Logs/logs.txt diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Logs/logs.txt b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Logs/logs.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Logs/logs.txt b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Logs/logs.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Logs/logs.txt b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Logs/logs.txt deleted file mode 100644 index e69de29bb2..0000000000 From 155b7449b7e7844f640429d0b80f8fd52ec53cd0 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 8 Jan 2024 16:49:44 +0800 Subject: [PATCH 58/88] Add `SaveEntityHistoryWhenNavigationChanges` to `AbpAuditingOptions `. Resolve #18701 --- docs/en/Audit-Logging.md | 1 + .../Volo/Abp/Auditing/AbpAuditingOptions.cs | 6 + .../EntityHistory/EntityHistoryHelper.cs | 6 +- .../Volo/Abp/Auditing/Auditing_Tests.cs | 255 +++++++++++++++++- 4 files changed, 251 insertions(+), 17 deletions(-) diff --git a/docs/en/Audit-Logging.md b/docs/en/Audit-Logging.md index e2d577c756..ffacc1b10f 100644 --- a/docs/en/Audit-Logging.md +++ b/docs/en/Audit-Logging.md @@ -46,6 +46,7 @@ Here, a list of the options you can configure: * `ApplicationName`: If multiple applications are saving audit logs into a single database, set this property to your application name, so you can distinguish the logs of different applications. If you don't set, it will set from the `IApplicationInfoAccessor.ApplicationName` value, which is the entry assembly name by default. * `IgnoredTypes`: A list of `Type`s to be ignored for audit logging. If this is an entity type, changes for this type of entities will not be saved. This list is also used while serializing the action parameters. * `EntityHistorySelectors`: A list of selectors those are used to determine if an entity type is selected for saving the entity change. See the section below for details. +* `SaveEntityHistoryWhenNavigationChanges` (default: `true`): If you set to true, it will save entity changes to audit log when any navigation property changes. * `Contributors`: A list of `AuditLogContributor` implementations. A contributor is a way of extending the audit log system. See the "Audit Log Contributors" section below. * `AlwaysLogSelectors`: A list of selectors to save the audit logs for the matched criteria. diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs index 30b32c3587..f9f5284b29 100644 --- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs +++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs @@ -53,6 +53,12 @@ public class AbpAuditingOptions public IEntityHistorySelectorList EntityHistorySelectors { get; } + /// + /// Default: true. + /// Save entity changes to audit log when any navigation property changes. + /// + public bool SaveEntityHistoryWhenNavigationChanges { get; set; } = true; + //TODO: Move this to asp.net core layer or convert it to a more dynamic strategy? /// /// Default: false. diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs index dc3754be3b..a664971057 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs @@ -85,7 +85,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency case EntityState.Modified: changeType = IsDeleted(entityEntry) ? EntityChangeType.Deleted : EntityChangeType.Updated; break; - case EntityState.Unchanged: + case EntityState.Unchanged when Options.SaveEntityHistoryWhenNavigationChanges: changeType = EntityChangeType.Updated; // Navigation property changes. break; case EntityState.Detached: @@ -186,7 +186,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency } } - if (entityEntry.State == EntityState.Unchanged) + if (Options.SaveEntityHistoryWhenNavigationChanges && entityEntry.State == EntityState.Unchanged) { foreach (var navigation in entityEntry.Navigations) { @@ -227,7 +227,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency return false; } - if (entityEntry.State == EntityState.Unchanged) + if (Options.SaveEntityHistoryWhenNavigationChanges && entityEntry.State == EntityState.Unchanged) { if (entityEntry.Navigations.Any(navigationEntry => navigationEntry.IsModified)) { diff --git a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs index 7154fd805c..a5060dc595 100644 --- a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs +++ b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/Auditing_Tests.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using NSubstitute; @@ -392,6 +391,7 @@ public class Auditing_Tests : AbpAuditingTestBase x.EntityChanges[1].EntityTypeFullName == typeof(AppEntityWithValueObject).FullName && x.EntityChanges[2].ChangeType == EntityChangeType.Deleted && x.EntityChanges[2].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName)); + AuditingStore.ClearReceivedCalls(); #pragma warning restore 4014 using (var scope = _auditingManager.BeginScope()) @@ -421,7 +421,7 @@ public class Auditing_Tests : AbpAuditingTestBase x.EntityChanges[1].EntityTypeFullName == typeof(AppEntityWithValueObject).FullName && x.EntityChanges[1].PropertyChanges.Count == 1 && x.EntityChanges[1].PropertyChanges[0].PropertyName == nameof(AppEntityWithValueObject.AppEntityWithValueObjectAddress))); - + AuditingStore.ClearReceivedCalls(); #pragma warning restore 4014 using (var scope = _auditingManager.BeginScope()) @@ -439,22 +439,16 @@ public class Auditing_Tests : AbpAuditingTestBase } #pragma warning disable 4014 - AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 2 && - x.EntityChanges[0].ChangeType == EntityChangeType.Updated && + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Deleted && x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName && - x.EntityChanges[0].PropertyChanges.Count == 1 && - x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithValueObjectAddress.Country) && - x.EntityChanges[0].PropertyChanges[0].OriginalValue == "\"England\"" && - x.EntityChanges[0].PropertyChanges[0].NewValue == "\"Germany\"" && - - x.EntityChanges[1].ChangeType == EntityChangeType.Updated && - x.EntityChanges[1].EntityTypeFullName == typeof(AppEntityWithValueObject).FullName)); - + x.EntityChanges[0].PropertyChanges.Count == 2 && + x.EntityChanges[0].PropertyChanges.All(p => p.NewValue == null))); #pragma warning restore 4014 } [Fact] - public virtual async Task Should_Write_AuditLog_For_Navigations_Changes() + public virtual async Task Should_Write_AuditLog_For_Navigation_Changes() { var entityId = Guid.NewGuid(); var repository = ServiceProvider.GetRequiredService>(); @@ -484,6 +478,7 @@ public class Auditing_Tests : AbpAuditingTestBase x.EntityChanges[0].PropertyChanges[0].NewValue == "\"test full name\"" && x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigations.FullName) && x.EntityChanges[0].PropertyChanges[0].PropertyTypeFullName == typeof(string).FullName)); + AuditingStore.ClearReceivedCalls(); #pragma warning restore 4014 using (var scope = _auditingManager.BeginScope()) @@ -513,6 +508,7 @@ public class Auditing_Tests : AbpAuditingTestBase x.EntityChanges[1].PropertyChanges.Count == 1 && x.EntityChanges[1].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigations.OneToOne) && x.EntityChanges[1].PropertyChanges[0].PropertyTypeFullName == typeof(AppEntityWithNavigationChildOneToOne).FullName)); + AuditingStore.ClearReceivedCalls(); #pragma warning restore 4014 using (var scope = _auditingManager.BeginScope()) @@ -545,7 +541,7 @@ public class Auditing_Tests : AbpAuditingTestBase x.EntityChanges[1].PropertyChanges.Count == 1 && x.EntityChanges[1].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigations.OneToMany) && x.EntityChanges[1].PropertyChanges[0].PropertyTypeFullName == typeof(List).FullName)); - + AuditingStore.ClearReceivedCalls(); #pragma warning restore 4014 using (var scope = _auditingManager.BeginScope()) @@ -604,3 +600,234 @@ public class Auditing_DisableLogActionInfo_Tests : Auditing_Tests await AuditingStore.Received().SaveAsync(Arg.Is(x => x.Actions.IsNullOrEmpty())); } } + +public class Auditing_SaveEntityHistoryWhenNavigationChanges_Tests : AbpAuditingTestBase +{ + protected IAuditingStore AuditingStore; + private IAuditingManager _auditingManager; + private IUnitOfWorkManager _unitOfWorkManager; + + public Auditing_SaveEntityHistoryWhenNavigationChanges_Tests() + { + _auditingManager = GetRequiredService(); + _unitOfWorkManager = GetRequiredService(); + } + + protected override void AfterAddApplication(IServiceCollection services) + { + AuditingStore = Substitute.For(); + services.Replace(ServiceDescriptor.Singleton(AuditingStore)); + + services.Configure(options => + { + options.SaveEntityHistoryWhenNavigationChanges = false; + }); + } + + [Fact] + public virtual async Task Should_Write_AuditLog_For_ValueObject_Entity() + { + var entityId = Guid.NewGuid(); + var repository = ServiceProvider.GetRequiredService>(); + await repository.InsertAsync(new AppEntityWithValueObject(entityId, "test name", new AppEntityWithValueObjectAddress("USA"))); + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + entity.Name = "test name 2"; + entity.AppEntityWithValueObjectAddress = new AppEntityWithValueObjectAddress("England"); + + await repository.UpdateAsync(entity); + + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 3 && + x.EntityChanges[0].ChangeType == EntityChangeType.Created && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName && + x.EntityChanges[1].ChangeType == EntityChangeType.Updated && + x.EntityChanges[1].EntityTypeFullName == typeof(AppEntityWithValueObject).FullName && + x.EntityChanges[2].ChangeType == EntityChangeType.Deleted && + x.EntityChanges[2].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName)); + AuditingStore.ClearReceivedCalls(); +#pragma warning restore 4014 + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + + entity.AppEntityWithValueObjectAddress.Country = "Germany"; + + await repository.UpdateAsync(entity); + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Updated && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName && + x.EntityChanges[0].PropertyChanges.Count == 1 && + x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithValueObjectAddress.Country) && + x.EntityChanges[0].PropertyChanges[0].OriginalValue == "\"England\"" && + x.EntityChanges[0].PropertyChanges[0].NewValue == "\"Germany\"")); + AuditingStore.ClearReceivedCalls(); +#pragma warning restore 4014 + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + + entity.AppEntityWithValueObjectAddress = null; + + await repository.UpdateAsync(entity); + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Deleted && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithValueObjectAddress).FullName && + x.EntityChanges[0].PropertyChanges.Count == 2 && + x.EntityChanges[0].PropertyChanges.All(p => p.NewValue == null))); +#pragma warning restore 4014 + } + + [Fact] + public virtual async Task Should_Not_Write_AuditLog_For_Navigation_Changes() + { + var entityId = Guid.NewGuid(); + var repository = ServiceProvider.GetRequiredService>(); + await repository.InsertAsync(new AppEntityWithNavigations(entityId, "test name")); + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + + entity.FullName = "test full name"; + + await repository.UpdateAsync(entity); + + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Updated && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithNavigations).FullName && + x.EntityChanges[0].PropertyChanges.Count == 1 && + x.EntityChanges[0].PropertyChanges[0].OriginalValue == "\"test name\"" && + x.EntityChanges[0].PropertyChanges[0].NewValue == "\"test full name\"" && + x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigations.FullName) && + x.EntityChanges[0].PropertyChanges[0].PropertyTypeFullName == typeof(string).FullName)); + AuditingStore.ClearReceivedCalls(); +#pragma warning restore 4014 + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + + entity.OneToOne = new AppEntityWithNavigationChildOneToOne + { + ChildName = "ChildName" + }; + + await repository.UpdateAsync(entity); + + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Created && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithNavigationChildOneToOne).FullName && + x.EntityChanges[0].PropertyChanges.Count == 1 && + x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigationChildOneToOne.ChildName) && + x.EntityChanges[0].PropertyChanges[0].PropertyTypeFullName == typeof(string).FullName)); + AuditingStore.ClearReceivedCalls(); +#pragma warning restore 4014 + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + + entity.OneToMany = new List() + { + new AppEntityWithNavigationChildOneToMany + { + AppEntityWithNavigationId = entity.Id, + ChildName = "ChildName1" + } + }; + + await repository.UpdateAsync(entity); + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Created && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithNavigationChildOneToMany).FullName && + x.EntityChanges[0].PropertyChanges.Count == 2 && + x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigationChildOneToMany.AppEntityWithNavigationId) && + x.EntityChanges[0].PropertyChanges[0].PropertyTypeFullName == typeof(Guid).FullName && + x.EntityChanges[0].PropertyChanges[1].PropertyName == nameof(AppEntityWithNavigationChildOneToMany.ChildName) && + x.EntityChanges[0].PropertyChanges[1].PropertyTypeFullName == typeof(string).FullName)); + AuditingStore.ClearReceivedCalls(); +#pragma warning restore 4014 + + using (var scope = _auditingManager.BeginScope()) + { + using (var uow = _unitOfWorkManager.Begin()) + { + var entity = await repository.GetAsync(entityId); + + entity.ManyToMany = new List() + { + new AppEntityWithNavigationChildManyToMany + { + ChildName = "ChildName1" + } + }; + + await repository.UpdateAsync(entity); + await uow.CompleteAsync(); + await scope.SaveAsync(); + } + } + +#pragma warning disable 4014 + AuditingStore.Received().SaveAsync(Arg.Is(x => x.EntityChanges.Count == 1 && + x.EntityChanges[0].ChangeType == EntityChangeType.Created && + x.EntityChanges[0].EntityTypeFullName == typeof(AppEntityWithNavigationChildManyToMany).FullName && + x.EntityChanges[0].PropertyChanges.Count == 1 && + x.EntityChanges[0].PropertyChanges[0].PropertyName == nameof(AppEntityWithNavigationChildManyToMany.ChildName) && + x.EntityChanges[0].PropertyChanges[0].PropertyTypeFullName == typeof(string).FullName)); + +#pragma warning restore 4014 + } +} From bee6450f15acf772ad1a12952e070f49eee681b7 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 8 Jan 2024 19:48:54 +0800 Subject: [PATCH 59/88] Refactor `EntityHistoryHelper `. Related to https://github.com/abpframework/abp/pull/18715 --- .../EntityHistory/EntityHistoryHelper.cs | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs index a664971057..5229e9aab6 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EntityHistory/EntityHistoryHelper.cs @@ -85,7 +85,7 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency case EntityState.Modified: changeType = IsDeleted(entityEntry) ? EntityChangeType.Deleted : EntityChangeType.Updated; break; - case EntityState.Unchanged when Options.SaveEntityHistoryWhenNavigationChanges: + case EntityState.Unchanged when HasNavigationPropertiesChanged(entityEntry): changeType = EntityChangeType.Updated; // Navigation property changes. break; case EntityState.Detached: @@ -227,21 +227,6 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency return false; } - if (Options.SaveEntityHistoryWhenNavigationChanges && entityEntry.State == EntityState.Unchanged) - { - if (entityEntry.Navigations.Any(navigationEntry => navigationEntry.IsModified)) - { - return true; - } - - if (entityEntry.Navigations.Where(x => x is ReferenceEntry).Cast().Any(x => x.TargetEntry != null && x.TargetEntry.State == EntityState.Modified)) - { - return true; - } - - return false; - } - var entityType = entityEntry.Metadata.ClrType; if (!EntityHelper.IsEntity(entityType) && !EntityHelper.IsValueObject(entityType)) @@ -249,12 +234,20 @@ public class EntityHistoryHelper : IEntityHistoryHelper, ITransientDependency return false; } - if (AuditingHelper.IsEntityHistoryEnabled(entityType)) + var isEntityHistoryEnabled = AuditingHelper.IsEntityHistoryEnabled(entityType); + if (isEntityHistoryEnabled && HasNavigationPropertiesChanged(entityEntry)) { return true; } - return defaultValue; + return isEntityHistoryEnabled || defaultValue; + } + + protected virtual bool HasNavigationPropertiesChanged(EntityEntry entityEntry) + { + return Options.SaveEntityHistoryWhenNavigationChanges && entityEntry.State == EntityState.Unchanged && + (entityEntry.Navigations.Any(navigationEntry => navigationEntry.IsModified) || + entityEntry.Navigations.Where(x => x is ReferenceEntry).Cast().Any(x => x.TargetEntry != null && x.TargetEntry.State == EntityState.Modified)); } protected virtual bool ShouldSavePropertyHistory(PropertyEntry propertyEntry, bool defaultValue) From 1093d8a92c9e1ea13f6e9ccc7e7532a07dfb865b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 9 Jan 2024 15:01:05 +0800 Subject: [PATCH 60/88] Add CommunityIndexPagePoll localized text --- .../AbpIoLocalization/Base/Localization/Resources/ar.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/cs.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/de.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/en-GB.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/en.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/es.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/fi.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/fr.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/hi.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/hr.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/hu.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/is.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/it.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/nl.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/pl-PL.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/pt-BR.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/ro-RO.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/ru.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/sk.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/sl.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/tr.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/vi.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/zh-Hans.json | 3 ++- .../AbpIoLocalization/Base/Localization/Resources/zh-Hant.json | 3 ++- 24 files changed, 48 insertions(+), 24 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ar.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ar.json index 4af2cafcd3..1179ab777e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ar.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ar.json @@ -229,6 +229,7 @@ "ManageAccount": "إدارة الحساب", "CommunityProfile": "ملف تعريف المجتمع", "BlogProfile": "الملف الشخصي للمدونة", - "Tickets": "التذاكر" + "Tickets": "التذاكر", + "DisplayName:CommunityIndexPagePoll": "استطلاع" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/cs.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/cs.json index 902595d229..d03b1e3e45 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/cs.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/cs.json @@ -229,6 +229,7 @@ "ManageAccount": "Spravovat účet", "CommunityProfile": "Profil komunity", "BlogProfile": "Profil blogu", - "Tickets": "Vstupenky" + "Tickets": "Vstupenky", + "DisplayName:CommunityIndexPagePoll": "Anketa na stránce s indexem komunity" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de.json index a3f8c11cb1..5532767582 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de.json @@ -228,6 +228,7 @@ "ManageAccount": "Konto verwalten", "CommunityProfile": "Community-Profil", "BlogProfile": "Blog-Profil", - "Tickets": "Tickets" + "Tickets": "Tickets", + "DisplayName:CommunityIndexPagePoll": "Community-Indexseite-Umfrage" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en-GB.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en-GB.json index 2ad2dc0584..6398c703d2 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en-GB.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en-GB.json @@ -33,6 +33,7 @@ "Samples": "Samples", "FreeDDDBook": "Free DDD E-book", "New": "New", - "Volo.AbpIo.Domain:020005": "License extend year can not be lower than {MinExtendLicenseYear} year and greater than {MaxExtendLicenseYear} years " + "Volo.AbpIo.Domain:020005": "License extend year can not be lower than {MinExtendLicenseYear} year and greater than {MaxExtendLicenseYear} years ", + "DisplayName:CommunityIndexPagePoll": "Community Index Page Poll" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json index eafcd1b458..0dae45eee8 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json @@ -235,6 +235,7 @@ "Resources": "Resources", "Video Courses": "Video Courses", "Packages": "Packages", - "Trainings": "Trainings" + "Trainings": "Trainings", + "DisplayName:CommunityIndexPagePoll": "Community Index Page Poll" } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json index c58289aa69..7f4c5f5188 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json @@ -228,6 +228,7 @@ "ManageAccount": "Administrar cuenta", "CommunityProfile": "Perfil de la comunidad", "BlogProfile": "Perfil del blog", - "Tickets": "Entradas" + "Tickets": "Entradas", + "DisplayName:CommunityIndexPagePoll": "Encuesta de la página de índice de la comunidad" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fi.json index 49830c2902..ead97aeb6d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fi.json @@ -229,6 +229,7 @@ "ManageAccount": "Hallitse tiliä", "CommunityProfile": "Yhteisön profiili", "BlogProfile": "Blogin profiili", - "Tickets": "Liput" + "Tickets": "Liput", + "DisplayName:CommunityIndexPagePoll": "Yhteisön indeksointisivun kysely" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fr.json index f7d130264c..e8b4455f2b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/fr.json @@ -229,6 +229,7 @@ "ManageAccount": "Gérer son compte", "CommunityProfile": "Profil de la communauté", "BlogProfile": "Profil du blog", - "Tickets": "Des billets" + "Tickets": "Des billets", + "DisplayName:CommunityIndexPagePoll": "Sondage de la page d'accueil de la communauté" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hi.json index 494202b8c9..2bb5c57aa3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hi.json @@ -229,6 +229,7 @@ "ManageAccount": "खाते का प्रबंधन करें", "CommunityProfile": "सामुदायिक प्रोफ़ाइल", "BlogProfile": "ब्लॉग प्रोफ़ाइल", - "Tickets": "टिकट" + "Tickets": "टिकट", + "DisplayName:CommunityIndexPagePoll": "सामुदायिक अनुभाग मतदान" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hr.json index 218aa822b4..280d15c560 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hr.json @@ -229,6 +229,7 @@ "ManageAccount": "Upravljaj računom", "CommunityProfile": "Profil zajednice", "BlogProfile": "Blog profil", - "Tickets": "Ulaznice" + "Tickets": "Ulaznice", + "DisplayName:CommunityIndexPagePoll": "Anketa na stranici indeksa zajednice" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hu.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hu.json index ff8849ea1f..ac4ec54dfa 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hu.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/hu.json @@ -229,6 +229,7 @@ "ManageAccount": "Fiók kezelése", "CommunityProfile": "Közösségi profil", "BlogProfile": "Blog profil", - "Tickets": "Jegyek" + "Tickets": "Jegyek", + "DisplayName:CommunityIndexPagePoll": "Közösségi Indexoldal Szavazás" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/is.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/is.json index a356b7bbeb..4c4901ceee 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/is.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/is.json @@ -229,6 +229,7 @@ "ManageAccount": "Stjórna reikningi", "CommunityProfile": "Samfélagssnið", "BlogProfile": "Bloggprófíll", - "Tickets": "Miðar" + "Tickets": "Miðar", + "DisplayName:CommunityIndexPagePoll": "Samfélagssnið" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/it.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/it.json index 0c8eb10bf4..3de10e37d7 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/it.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/it.json @@ -229,6 +229,7 @@ "ManageAccount": "Gestisci profilo", "CommunityProfile": "Profilo della comunità", "BlogProfile": "Profilo del blog", - "Tickets": "Biglietti" + "Tickets": "Biglietti", + "DisplayName:CommunityIndexPagePoll": "Sondaggio della pagina indice della comunità" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/nl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/nl.json index c0d0d1393e..27bca54bbc 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/nl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/nl.json @@ -229,6 +229,7 @@ "ManageAccount": "Beheer account", "CommunityProfile": "Gemeenschapsprofiel", "BlogProfile": "Blogprofiel", - "Tickets": "Kaartjes" + "Tickets": "Kaartjes", + "DisplayName:CommunityIndexPagePoll": "Gemeenschapsindexpagina-enquête" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pl-PL.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pl-PL.json index bab3babe13..ef0d4aca7d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pl-PL.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pl-PL.json @@ -229,6 +229,7 @@ "ManageAccount": "Zarządzać kontem", "CommunityProfile": "Profil społeczności", "BlogProfile": "Profil bloga", - "Tickets": "Bilety" + "Tickets": "Bilety", + "DisplayName:CommunityIndexPagePoll": "Ankieta na stronie głównej społeczności" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pt-BR.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pt-BR.json index a27599eb31..c35131c17f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pt-BR.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/pt-BR.json @@ -229,6 +229,7 @@ "ManageAccount": "Gerenciar conta", "CommunityProfile": "Perfil da comunidade", "BlogProfile": "Perfil do blog", - "Tickets": "Ingressos" + "Tickets": "Ingressos", + "DisplayName:CommunityIndexPagePoll": "Enquete da página inicial da comunidade" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ro-RO.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ro-RO.json index 0b18093488..ee8e7261cf 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ro-RO.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ro-RO.json @@ -229,6 +229,7 @@ "ManageAccount": "Gestionează contul", "CommunityProfile": "Profilul comunității", "BlogProfile": "Profil blog", - "Tickets": "bilete" + "Tickets": "bilete", + "DisplayName:CommunityIndexPagePoll": "Sondajul de pe pagina de index a comunității" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ru.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ru.json index ac00ebf48f..7dea13a688 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ru.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/ru.json @@ -235,6 +235,7 @@ "Resources": "Ресурсы", "Video Courses": "Видео курсы", "Packages": "Пакеты", - "Trainings": "Тренинги" + "Trainings": "Тренинги", + "DisplayName:CommunityIndexPagePoll": "Опрос на главной странице сообщества" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sk.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sk.json index 0c275469a1..e00092fde7 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sk.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sk.json @@ -229,6 +229,7 @@ "ManageAccount": "Spravovať účet", "CommunityProfile": "Profil komunity", "BlogProfile": "Profil blogu", - "Tickets": "Vstupenky" + "Tickets": "Vstupenky", + "DisplayName:CommunityIndexPagePoll": "Anketa na stránke indexu komunity" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sl.json index 1e54be3324..3617576a18 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/sl.json @@ -229,6 +229,7 @@ "ManageAccount": "Upravljanje računa", "CommunityProfile": "Profil skupnosti", "BlogProfile": "Blog profil", - "Tickets": "Vstopnice" + "Tickets": "Vstopnice", + "DisplayName:CommunityIndexPagePoll": "Anketa na strani z indeksom skupnosti" } } \ 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 0e47312764..5244b111df 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json @@ -170,6 +170,7 @@ "ExploreTheEBook": "E-Kitabı Keşfedin", "LatestVideos": "Son Videolar", "Videos": "Videolar", - "More": "Daha Fazla" + "More": "Daha Fazla", + "DisplayName:CommunityIndexPagePoll": "Topluluk Anasayfası Anketi" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/vi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/vi.json index d821a56fa5..28ee0f2e11 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/vi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/vi.json @@ -228,6 +228,7 @@ "ManageAccount": "Quản lý tài khoản", "CommunityProfile": "Hồ sơ cộng đồng", "BlogProfile": "Hồ sơ blog", - "Tickets": "Vé" + "Tickets": "Vé", + "DisplayName:CommunityIndexPagePoll": "Bình chọn trang chủ cộng đồng" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json index 0e83ef8682..e68cd46198 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hans.json @@ -229,6 +229,7 @@ "ManageAccount": "管理账户", "CommunityProfile": "社区概况", "BlogProfile": "博客简介", - "Tickets": "门票" + "Tickets": "门票", + "DisplayName:CommunityIndexPagePoll": "社区首页投票" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json index 04aea30db4..b069473f81 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/zh-Hant.json @@ -229,6 +229,7 @@ "ManageAccount": "管理帳號", "CommunityProfile": "社區簡介", "BlogProfile": "部落格簡介", - "Tickets": "門票" + "Tickets": "門票", + "DisplayName:CommunityIndexPagePoll": "社區首頁調查" } } \ No newline at end of file From 66f2728c6271f307eabc33cdf91ee1107bcf009a Mon Sep 17 00:00:00 2001 From: masumulu28 Date: Tue, 9 Jan 2024 11:10:50 +0300 Subject: [PATCH 61/88] upd: lerna script in publish-mvc.ps1 file --- npm/publish-mvc.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/publish-mvc.ps1 b/npm/publish-mvc.ps1 index ee12fc67c3..c9737baeda 100644 --- a/npm/publish-mvc.ps1 +++ b/npm/publish-mvc.ps1 @@ -25,7 +25,7 @@ if ($IsPrerelease) { } $commands = ( - "npm run lerna -- version $Version --yes --no-commit-hooks --skip-git --force-publish", + "npm run lerna -- version $Version --yes --no-commit-hooks --no-git-tag-version --no-push --force-publish", "yarn replace-with-tilde", "cd scripts", "yarn install", From 76e9ab804d7fee119206d6013a9502685596b84b Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 9 Jan 2024 16:26:13 +0800 Subject: [PATCH 62/88] Move UseComponent extension methods to Framework --- docs/en/UI/Blazor/Basic-Theme.md | 4 +-- .../Navigation/ApplicationMenuExtensions.cs | 19 +++++++++++++- .../BasicThemeNavigationExtensions.cs | 26 ------------------- .../Themes/Basic/FirstLevelNavMenuItem.razor | 3 +-- .../Themes/Basic/SecondLevelNavMenuItem.razor | 3 +-- 5 files changed, 22 insertions(+), 33 deletions(-) delete mode 100644 modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index e4124d9a2c..0c3fc83bd0 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -86,10 +86,10 @@ You can simply override the styles in the Global Styles file of your application See the [Customization / Overriding Components](Customization-Overriding-Components.md) to learn how you can replace components, customize and extend the user interface. ### Overriding the Menu Item -Basic theme supports overriding a single menu item with a custom component. You can create a custom component and call `UseComponent` extension method of Basic Theme in the **MenuContributor**. +Basic theme supports overriding a single menu item with a custom component. You can create a custom component and call `UseComponent` extension method in the **MenuContributor**. ```csharp -using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Navigation; +using Volo.Abp.UI.Navigation; //... diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs index 59814ff3be..48d16d1251 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs @@ -1,11 +1,13 @@ +using System; using JetBrains.Annotations; using System.Linq; -using Volo.Abp.UI.Navigation; namespace Volo.Abp.UI.Navigation; public static class ApplicationMenuExtensions { + public const string CustomDataComponentKey = "ApplicationMenuCustomComponent"; + [NotNull] public static ApplicationMenuItem GetAdministration( [NotNull] this ApplicationMenu applicationMenu) @@ -112,4 +114,19 @@ public static class ApplicationMenuExtensions return menuWithGroups; } + + public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem, Type componentType) + { + return applicationMenuItem.WithCustomData(CustomDataComponentKey, componentType); + } + + public static Type? GetComponentTypeOrDefault(this ApplicationMenuItem applicationMenuItem) + { + if (applicationMenuItem.CustomData.TryGetValue(CustomDataComponentKey, out var value)) + { + return value as Type; + } + + return default; + } } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs deleted file mode 100644 index 020709f56c..0000000000 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using JetBrains.Annotations; -using Volo.Abp.UI.Navigation; - -namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Navigation; - -public static class BasicThemeNavigationExtensions -{ - public const string CustomDataComponentKey = "BasicTheme.CustomComponent"; - - public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem, Type componentType) - { - return applicationMenuItem.WithCustomData(CustomDataComponentKey, componentType); - } - - [CanBeNull] - public static Type GetComponentTypeOrDefault(this ApplicationMenuItem applicationMenuItem) - { - if (applicationMenuItem.CustomData.TryGetValue(CustomDataComponentKey, out object componentType)) - { - return componentType as Type; - } - - return default; - } -} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor index 1f469a809a..070d514cb6 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor @@ -1,5 +1,4 @@ -@using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Navigation; -@using Volo.Abp.UI.Navigation +@using Volo.Abp.UI.Navigation @{ var elementId = MenuItem.ElementId ?? "MenuItem_" + MenuItem.Name.Replace(".", "_"); var cssClass = string.IsNullOrEmpty(MenuItem.CssClass) ? string.Empty : MenuItem.CssClass; diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor index 6d9ffb1fea..2a93e5459e 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/SecondLevelNavMenuItem.razor @@ -1,5 +1,4 @@ -@using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Navigation; -@using Volo.Abp.UI.Navigation +@using Volo.Abp.UI.Navigation @{ var elementId = MenuItem.ElementId ?? "MenuItem_" + MenuItem.Name.Replace(".", "_"); var cssClass = string.IsNullOrEmpty(MenuItem.CssClass) ? string.Empty : MenuItem.CssClass; From 3154128dd08df9fe1c897b378a77e68f8ab36ab8 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 9 Jan 2024 16:26:55 +0800 Subject: [PATCH 63/88] Update ApplicationMenuExtensions.cs --- .../Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs index 48d16d1251..5a755f187a 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.UI.Navigation; public static class ApplicationMenuExtensions { - public const string CustomDataComponentKey = "ApplicationMenuCustomComponent"; + public const string CustomDataComponentKey = "ApplicationMenu.CustomComponent"; [NotNull] public static ApplicationMenuItem GetAdministration( From 3031794021f19040e0b89a10c0a1143bceecb614 Mon Sep 17 00:00:00 2001 From: Salih Date: Tue, 9 Jan 2024 15:17:47 +0300 Subject: [PATCH 64/88] Fix DateRangePicker Max/Min Date Problem --- .../AbpDatePickerBaseTagHelperService.cs | 4 ++-- .../date-range-picker-extensions.js | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs index 9e03ec800c..69ebf0feff 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs @@ -270,12 +270,12 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp if (options.MinDate != null) { - attrList.Add("data-min-date", options.MinDate); + attrList.Add("data-min-date", options.MinDate?.ToString("O")); } if (options.MaxDate != null) { - attrList.Add("data-max-date", options.MaxDate); + attrList.Add("data-max-date", options.MaxDate?.ToString("O")); } if (options.MaxSpan != null) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js index b5d2dec80d..a67ec1401b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js @@ -205,7 +205,7 @@ var today = moment(); $dateRangePicker.setStartDate(today); $dateRangePicker.setEndDate(today); - + if(options.singleDatePicker && options.autoApply){ $dateRangePicker.clickApply(); }else{ @@ -366,6 +366,14 @@ }); } + if (options.maxDate){ + options.maxDate = convertToMoment(options.maxDate, options); + } + + if (options.minDate){ + options.minDate = convertToMoment(options.minDate, options); + } + if (typeof options.template !== 'string' && !(options.template instanceof $)) options.template = '
' + @@ -433,13 +441,13 @@ return ''; } - + function createInitialAbpDate(date, options) { date = convertToMoment(date, options, undefined, options.isUtc); if (options.isUtc) { date = date.local(); } - + return AbpDate(date, options); } @@ -468,8 +476,9 @@ var singleOpenAndClearButton = options.singleOpenAndClearButton && $clearButton.length > 0 && $openButton.length > 0; var startDate = createInitialAbpDate(options.startDate || options.date || (options.autoUpdateInput ? new Date() : undefined), options); + var oldStartDate = AbpDate(undefined, options); - + var endDate = createInitialAbpDate(options.endDate || (options.autoUpdateInput ? new Date() : undefined), options); var oldEndDate = AbpDate(undefined, options); @@ -583,7 +592,7 @@ }else{ picker.setStartDate(convertToMoment(startDate, options, options.inputDateFormat)); } - + if(singleDatePicker){ picker.setEndDate(picker.startDate); }else if(isEmptyDate(endDate, options)){ From 1020d92f92324c28af96351a428d3ccdf3d56ef6 Mon Sep 17 00:00:00 2001 From: Salih Date: Tue, 9 Jan 2024 17:05:01 +0300 Subject: [PATCH 65/88] Update en.json --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 49d3753a98..bd795bb48c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -564,6 +564,7 @@ "AllowAbpStudioBetaAccess": "Allow ABP Studio Beta Access", "TotalQuestionCanNotBeNullMessage": "Total Question can not be null", "Permission:EditWinners": "Edit Winners", - "Permission:ChangeDrawingStatus": "Change Drawing Status" + "Permission:ChangeDrawingStatus": "Change Drawing Status", + "RemoveAllWinnersConfirmationMessage": "Are you sure you want to remove all winners?" } } From 77cf59168fe99a31bcdfcfeebd848d4081be133d Mon Sep 17 00:00:00 2001 From: Salih Date: Tue, 9 Jan 2024 17:05:04 +0300 Subject: [PATCH 66/88] Update en.json --- .../Community/Localization/Resources/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json index efbdd38748..bb1b089444 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json @@ -193,7 +193,7 @@ "AbpCommunityTitleContent": "ABP Community - Open Source ABP Framework", "CommunitySlogan": "A unique community platform for ABP Lovers", "RaffleIsNotActive": "Raffle is not active", - "YouAreAlreadyJoinedToThisRaffle": "You are already joined to this raffle", + "YouAreAlreadyJoinedToThisRaffle": "You already joined to this raffle!", "InvalidSubscriptionCode": "Invalid subscription code", "Raffle:{0}": "Raffle: {0}", "Join": "Join", @@ -216,7 +216,7 @@ "RaffleSubscriptionCodeInputErrorMessage": "The registration code is incorrect. Please try again.", "GoodJob!": "Good Job!", "RaffleJoinSuccessMessage": "You are successfully registered for the raffle. You will be informed via email if you win the prize!", - "RaffleLoginAndRegisterMessage": "You should sign in to join a raffle. You can create an account for free if you haven't registered yet.", + "RaffleLoginAndRegisterMessage": "You must sign in to join this raffle! If you haven't registered yet, create an account for free now.", "Ok": "Ok", "SeeDetails": "See Details", "WaitingForTheDraw": "Waiting for the draw", From 21c63c0ae6d5dc2a4c005e4eee7d88517d4232d3 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 9 Jan 2024 21:13:23 +0300 Subject: [PATCH 67/88] CLI: Fix theme selection for blazor-server nolayer template. --- .../Building/Steps/ChangeThemeStep.cs | 35 ++++++++++--------- .../Templates/App/AppNoLayersTemplateBase.cs | 1 + 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index b6408fb3e2..4a88ada34a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -372,7 +372,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep return; } - lines[lineIndex] = lines[lineIndex].Replace(lines[lineIndex], $"\t"); + lines[lineIndex] = lines[lineIndex].Replace(lines[lineIndex], $"\t\t\n"); file.SetLines(lines); } @@ -568,7 +568,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep private static void ChangeThemeToBasicForMvcProjects(ProjectBuildContext context, string defaultThemeName) { var projectNames = new[] -{ + { ".Web", ".HttpApi.Host", ".AuthServer", ".Web.Public", ".Web.Public.Host", "" //for app-nolayers-mvc }; @@ -608,45 +608,46 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { var projects = new Dictionary { - {"Blazor", "MyProjectNameBlazorModule"}, - {"Blazor.Server.Tiered", "MyProjectNameBlazorModule"}, - {"Blazor.Server", "MyProjectNameModule"}, - {"Blazor.Server.Mongo", "MyProjectNameModule"} + {".Blazor", "MyProjectNameBlazorModule"}, + {".Blazor.Server.Tiered", "MyProjectNameBlazorModule"}, + {".Blazor.Server", "MyProjectNameModule"}, + {"Blazor.Server.Mongo", "MyProjectNameModule"}, + {"", ""} //for app-nolayers blazor-server }; foreach (var project in projects) { ReplacePackageReferenceWithProjectReference( context, - $"/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + $"/MyCompanyName.MyProjectName{project.Key}/MyCompanyName.MyProjectName{project.Key}.csproj", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" ); ReplacePackageReferenceWithProjectReference( context, - $"/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", + $"/MyCompanyName.MyProjectName{project.Key}/MyCompanyName.MyProjectName{project.Key}.csproj", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ReplaceAllKeywords( context, - $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", + $"/Pages/_Host.cshtml", $"{defaultThemeName}Theme.Components", Basic ); ReplaceAllKeywords( context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", defaultThemeName, - Basic + Basic + "Theme" ); ReplaceAllKeywords( context, - $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", + $"/Pages/_Host.cshtml", defaultThemeName, Basic ); @@ -682,7 +683,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, - $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/Pages/_Host.cshtml", LeptonX, Lepton ); @@ -731,7 +732,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, - $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/Pages/_Host.cshtml", LeptonX, Lepton ); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs index 7bbba5c733..8b9df09ca5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs @@ -346,6 +346,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo var blazorServerUiPackageName = isProTemplate ? "@volo/aspnetcore.components.server.leptonxtheme" : "@abp/aspnetcore.components.server.leptonxlitetheme"; var blazorServerPackageJsonFilePaths = new List { + "/MyCompanyName.MyProjectName/package.json", "/MyCompanyName.MyProjectName.Blazor/package.json", "/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json" }; From 8776cf4eaf262e939c02a9ab2191e05059550309 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 10 Jan 2024 09:52:16 +0800 Subject: [PATCH 68/88] Custom menu component MVC UI --- .../Basic/Components/Menu/Default.cshtml | 41 +++++++++++------ .../Basic/Components/Menu/_MenuItem.cshtml | 45 ++++++++++++------- 2 files changed, 56 insertions(+), 30 deletions(-) diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml index f146878b0f..764cdddcd2 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml @@ -6,9 +6,15 @@ var cssClass = string.IsNullOrEmpty(menuItem.CssClass) ? string.Empty : menuItem.CssClass; var disabled = menuItem.IsDisabled ? "disabled" : string.Empty; var url = string.IsNullOrEmpty(menuItem.Url) ? "#" : Url.IsLocalUrl(menuItem.Url) ? Url.Content(menuItem.Url.EnsureStartsWith('~')) : menuItem.Url; + var customComponentType = menuItem.GetComponentTypeOrDefault(); + if (menuItem.IsLeaf) { - if (menuItem.Url != null) + if (customComponentType != null) + { + @Component.InvokeAsync(customComponentType) + } + else if (menuItem.Url != null) { } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml index 2dc72b8e58..9df7f8cc63 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml @@ -5,10 +5,16 @@ var cssClass = string.IsNullOrEmpty(Model.CssClass) ? string.Empty : Model.CssClass; var disabled = Model.IsDisabled ? "disabled" : string.Empty; var url = string.IsNullOrEmpty(Model.Url) ? "#" : Url.IsLocalUrl(Model.Url) ? Url.Content(Model.Url.EnsureStartsWith('~')) : Model.Url; + var customComponentType = Model.GetComponentTypeOrDefault(); + } @if (Model.IsLeaf) { - if (Model.Url != null) + if (customComponentType != null) + { + @Component.InvokeAsync(customComponentType) + } + else if (Model.Url != null) { @if (Model.Icon != null) @@ -25,20 +31,27 @@ else { } From 95c3b75eeea3b7cd83930bee84bec9208d9895b3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 10 Jan 2024 09:56:20 +0800 Subject: [PATCH 69/88] Update ApplicationMenuExtensions.cs --- .../Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs index 5a755f187a..c8ba277ccc 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs @@ -115,6 +115,11 @@ public static class ApplicationMenuExtensions return menuWithGroups; } + public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem) + { + return applicationMenuItem.UseComponent(typeof(TComponent)); + } + public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem, Type componentType) { return applicationMenuItem.WithCustomData(CustomDataComponentKey, componentType); From 14e22a4fe9533e81d89d3d9d4746d43b91371b38 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 10 Jan 2024 11:55:10 +0800 Subject: [PATCH 70/88] Update _MenuItem.cshtml --- .../Themes/Basic/Components/Menu/Default.cshtml | 4 ++-- .../Themes/Basic/Components/Menu/_MenuItem.cshtml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml index 764cdddcd2..19471fecfd 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml @@ -12,7 +12,7 @@ { if (customComponentType != null) { - @Component.InvokeAsync(customComponentType) + @(await Component.InvokeAsync(customComponentType)) } else if (menuItem.Url != null) { @@ -36,7 +36,7 @@

`yaiM?T-p(5kj$&cxH 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∾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 BU9|uJ diff --git a/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip b/source-code/Volo.Docs.SourceCode/Volo.Docs.SourceCode.zip index 76f1ea14415ab4de1c4b3ea285a089d05a9fcbf5..6d35abf37b79d46785bb960a2e93be6441d13ebd 100644 GIT binary patch delta 80426 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 delta 80736 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 NAz!Z%JD?kS{0}kE?&JUf diff --git a/templates/app-nolayers/angular/package.json b/templates/app-nolayers/angular/package.json index cb6deafece..36732316c0 100644 --- a/templates/app-nolayers/angular/package.json +++ b/templates/app-nolayers/angular/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~8.0.0", - "@abp/ng.components": "~8.0.0", - "@abp/ng.core": "~8.0.0", - "@abp/ng.oauth": "~8.0.0", - "@abp/ng.identity": "~8.0.0", - "@abp/ng.setting-management": "~8.0.0", - "@abp/ng.tenant-management": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.account": "~8.0.1", + "@abp/ng.components": "~8.0.1", + "@abp/ng.core": "~8.0.1", + "@abp/ng.oauth": "~8.0.1", + "@abp/ng.identity": "~8.0.1", + "@abp/ng.setting-management": "~8.0.1", + "@abp/ng.tenant-management": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "@abp/ng.theme.lepton-x": "~3.0.0", "@angular/animations": "~17.0.0", "@angular/common": "~17.0.0", @@ -42,7 +42,7 @@ "@angular-eslint/eslint-plugin-template": "~17.0.0", "@angular-eslint/schematics": "~17.0.0", "@angular-eslint/template-parser": "~17.0.0", - "@abp/ng.schematics": "~8.0.0", + "@abp/ng.schematics": "~8.0.1", "@angular/cli": "~17.0.0", "@angular/compiler-cli": "~17.0.0", "@angular/language-service": "~17.0.0", diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 7eefe37bdb..16a1686c92 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,15 +12,15 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~8.0.0", - "@abp/ng.components": "~8.0.0", - "@abp/ng.core": "~8.0.0", - "@abp/ng.identity": "~8.0.0", - "@abp/ng.oauth": "~8.0.0", - "@abp/ng.setting-management": "~8.0.0", - "@abp/ng.tenant-management": "~8.0.0", + "@abp/ng.account": "~8.0.1", + "@abp/ng.components": "~8.0.1", + "@abp/ng.core": "~8.0.1", + "@abp/ng.identity": "~8.0.1", + "@abp/ng.oauth": "~8.0.1", + "@abp/ng.setting-management": "~8.0.1", + "@abp/ng.tenant-management": "~8.0.1", "@abp/ng.theme.lepton-x": "~3.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.theme.shared": "~8.0.1", "@angular/animations": "~17.0.0", "@angular/common": "~17.0.0", "@angular/compiler": "~17.0.0", @@ -36,7 +36,7 @@ "zone.js": "~0.14.0" }, "devDependencies": { - "@abp/ng.schematics": "~8.0.0", + "@abp/ng.schematics": "~8.0.1", "@angular-devkit/build-angular": "~17.0.0", "@angular-eslint/builder": "~17.0.0", "@angular-eslint/eslint-plugin": "~17.0.0", diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index d438df44be..a68f8b5a83 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -12,15 +12,15 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~8.0.0", - "@abp/ng.components": "~8.0.0", - "@abp/ng.core": "~8.0.0", - "@abp/ng.identity": "~8.0.0", - "@abp/ng.oauth": "~8.0.0", - "@abp/ng.setting-management": "~8.0.0", - "@abp/ng.tenant-management": "~8.0.0", - "@abp/ng.theme.basic": "~8.0.0", - "@abp/ng.theme.shared": "~8.0.0", + "@abp/ng.account": "~8.0.1", + "@abp/ng.components": "~8.0.1", + "@abp/ng.core": "~8.0.1", + "@abp/ng.identity": "~8.0.1", + "@abp/ng.oauth": "~8.0.1", + "@abp/ng.setting-management": "~8.0.1", + "@abp/ng.tenant-management": "~8.0.1", + "@abp/ng.theme.basic": "~8.0.1", + "@abp/ng.theme.shared": "~8.0.1", "@angular/animations": "~17.0.0", "@angular/common": "~17.0.0", "@angular/compiler": "~17.0.0", @@ -35,7 +35,7 @@ "zone.js": "~0.14.0" }, "devDependencies": { - "@abp/ng.schematics": "~8.0.0", + "@abp/ng.schematics": "~8.0.1", "@angular-devkit/build-angular": "~17.0.0", "@angular-eslint/builder": "~17.0.0", "@angular-eslint/eslint-plugin": "~17.0.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index 11eb369261..e904535b32 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": ">=14", "@angular/core": ">=14", - "@abp/ng.core": ">=8.0.0", - "@abp/ng.theme.shared": ">=8.0.0" + "@abp/ng.core": ">=8.0.1", + "@abp/ng.theme.shared": ">=8.0.1" }, "dependencies": { "tslib": "^2.1.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json index 359a0e7f59..fecffa4aac 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-authserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json index 7da2113940..703e8fb1bb 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0", - "@abp/aspnetcore.components.server.basictheme": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1", + "@abp/aspnetcore.components.server.basictheme": "~8.0.1" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index 389a89a36f..a4ee1fd707 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index 389a89a36f..a4ee1fd707 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.0.1" } } From a5f6d31a2b79e4cedc5fd8b453e527c4db410ed3 Mon Sep 17 00:00:00 2001 From: Volosoft Agent <43883821+voloagent@users.noreply.github.com> Date: Wed, 3 Jan 2024 11:53:40 +0300 Subject: [PATCH 31/88] Update latest-versions.json to version 8.0.1 --- latest-versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/latest-versions.json b/latest-versions.json index fc41690d54..90644f1ac5 100644 --- a/latest-versions.json +++ b/latest-versions.json @@ -1,6 +1,6 @@ [ { - "version": "8.0.0", + "version": "8.0.1", "releaseDate": "", "type": "stable", "message": "" From b727d17c94a2fdf8572cff969b4227bd736a52e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Wed, 3 Jan 2024 12:16:49 +0300 Subject: [PATCH 32/88] Update Multi-Lingual-Entities.md Fix multi lingual issue number --- docs/en/Multi-Lingual-Entities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Multi-Lingual-Entities.md b/docs/en/Multi-Lingual-Entities.md index 8a707b24d0..b0419fe2a1 100644 --- a/docs/en/Multi-Lingual-Entities.md +++ b/docs/en/Multi-Lingual-Entities.md @@ -3,4 +3,4 @@ This feature is still under development. Follow the below link to get information about the development status -https://github.com/abpframework/abp/issues/1169 +https://github.com/abpframework/abp/issues/11698 From df9d17109be808990e2096b06fa2011c98e487e8 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 3 Jan 2024 21:12:42 +0800 Subject: [PATCH 33/88] Add GetPermissionDepthOrDefault method --- .../Components/PermissionManagementModal.razor | 2 +- .../Components/PermissionManagementModal.razor.cs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor index a0cd8335c6..8c1f5871db 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor @@ -62,7 +62,7 @@ @foreach (var permission in group.Permissions) { - + Date: Wed, 3 Jan 2024 15:40:59 +0100 Subject: [PATCH 34/88] Update Testing.md Fix Open method Issue --- docs/en/Testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Testing.md b/docs/en/Testing.md index 619aaa2160..0b4543051b 100644 --- a/docs/en/Testing.md +++ b/docs/en/Testing.md @@ -122,7 +122,7 @@ namespace MyProject.Issues throw new IssueStateException("You can not open a locked issue!"); } - IsClosed = true; + IsClosed = false; CloseDate = null; } } From c570ef71b0b3bf28d7c56651e1c2e062a78cc5ac Mon Sep 17 00:00:00 2001 From: Mark Cilia Vincenti Date: Wed, 3 Jan 2024 17:17:12 +0100 Subject: [PATCH 35/88] Bump AsyncKeyedLock to 6.2.6 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 4365925adc..145c809f3e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,7 +6,7 @@ - + From 1eb5d8db7b669a69a460719f75aa204436dd8959 Mon Sep 17 00:00:00 2001 From: Salih Date: Thu, 4 Jan 2024 15:49:53 +0300 Subject: [PATCH 36/88] Fix date picker problem --- .../date-range-picker-extensions.js | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js index b9e5321e28..c1ce697e1a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js @@ -176,30 +176,20 @@ for(var format of formats) { var date = moment(value, format); if(date.isValid()) { - return maybeUtc(date, options); + return date; } } } if (value.isAbpDate) { - return maybeUtc(value._moment.clone(), options); + return value._moment.clone(); } if(value.isLuxonDateTime) { - return maybeUtc(moment(value.toISO()), options); + return moment(value.toISO()); } - return maybeUtc(moment(value), options); - } - - function maybeUtc(date, options) { - if (options.isUtc) { - date = date.utc(); - }else{ - date = date.local(); - } - - return date; + return moment(value); } function getTodayButton(options, $dateRangePicker) { @@ -430,6 +420,11 @@ function formatHiddenDate(date, options) { date = convertToMoment(date, options, options.inputDateFormat); if (date.isValid()) { + if (options.isUtc) { + date = date.utc(); + }else{ + date = date.local(); + } if (options.isIso) { return date.toISOString(); } @@ -705,6 +700,10 @@ }); } + abp.dom.onNodeAdded(function (args) { + abp.dom.initializers.initializeDateRangePickers(args.$el); + }); + $(function () { abp.dom.initializers.initializeDateRangePickers($('body')); }); From 98adf582b2d85e91557b540340151af59ac4be56 Mon Sep 17 00:00:00 2001 From: Salih Date: Thu, 4 Jan 2024 16:37:04 +0300 Subject: [PATCH 37/88] Update date-range-picker-extensions.js --- .../date-range-picker-extensions.js | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js index c1ce697e1a..b5d2dec80d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-extensions.js @@ -163,10 +163,10 @@ } } - function convertToMoment(value, options, dateFormat) { + function convertToMoment(value, options, dateFormat, isUtc) { if(!value) { // invalid date - return moment(''); + return moment.invalid(); } options = options || {}; @@ -174,7 +174,7 @@ if (typeof value === 'string') { for(var format of formats) { - var date = moment(value, format); + var date = isUtc ? moment.utc(value, format) : moment(value, format); if(date.isValid()) { return date; } @@ -186,10 +186,10 @@ } if(value.isLuxonDateTime) { - return moment(value.toISO()); + return isUtc ? moment.utc(value.toISO()) : moment(value.toISO()); } - return moment(value); + return isUtc ? moment.utc(value) : moment(value); } function getTodayButton(options, $dateRangePicker) { @@ -433,6 +433,15 @@ return ''; } + + function createInitialAbpDate(date, options) { + date = convertToMoment(date, options, undefined, options.isUtc); + if (options.isUtc) { + date = date.local(); + } + + return AbpDate(date, options); + } abp.dom.initializers.initializeDateRangePickers = function ($rootElement) { $rootElement @@ -458,10 +467,10 @@ var singleOpenAndClearButton = options.singleOpenAndClearButton && $clearButton.length > 0 && $openButton.length > 0; - var startDate = AbpDate(options.startDate || options.date || (options.autoUpdateInput ? new Date() : undefined), options); + var startDate = createInitialAbpDate(options.startDate || options.date || (options.autoUpdateInput ? new Date() : undefined), options); var oldStartDate = AbpDate(undefined, options); - - var endDate = AbpDate(options.endDate || undefined, options); + + var endDate = createInitialAbpDate(options.endDate || (options.autoUpdateInput ? new Date() : undefined), options); var oldEndDate = AbpDate(undefined, options); options.startDate = convertToMoment(startDate, options); From e6e4792ad789310748753f705466062f328c7016 Mon Sep 17 00:00:00 2001 From: honurbu Date: Thu, 4 Jan 2024 16:40:44 +0300 Subject: [PATCH 38/88] Update all language for Testimonials --- .../Www/Localization/Resources/ar.json | 27 ++++++++++++++- .../Www/Localization/Resources/cs.json | 27 ++++++++++++++- .../Www/Localization/Resources/de.json | 27 ++++++++++++++- .../Www/Localization/Resources/es.json | 27 ++++++++++++++- .../Www/Localization/Resources/fi.json | 27 ++++++++++++++- .../Www/Localization/Resources/fr.json | 27 ++++++++++++++- .../Www/Localization/Resources/hi.json | 33 ++++++++++++++++++- .../Www/Localization/Resources/hr.json | 27 ++++++++++++++- .../Www/Localization/Resources/hu.json | 27 ++++++++++++++- .../Www/Localization/Resources/is.json | 28 +++++++++++++++- 10 files changed, 267 insertions(+), 10 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json index 3033e49713..47fe8ac6bc 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "إطار عمل ABP ليس مجرد إطار عمل، بل هو أيضًا دليل لتطوير/إدارة المشروع، لأنه يوفر تدريبات DDD وGenericRepository وDI وMicroservice وModularity. حتى لو كنت لن تستخدم إطار العمل نفسه، يمكنك تطوير نفسك باستخدام docs.abp.io الذي تم إعداده جيدًا واحترافيًا. (OpenIddict، وRedis، وQuartz، وما إلى ذلك) \n نظرًا لأن العديد من الأشياء تم إنشاؤها مسبقًا، فإنها تقلل من وقت تطوير المشروع بشكل كبير. (مثل صفحة تسجيل الدخول، ومعالجة الاستثناءات، وتصفية البيانات، وتسجيل التدقيق، والترجمة، ووحدة التحكم التلقائية في API وما إلى ذلك) \n كمثال من تطبيقنا، استخدمت ناقل الأحداث المحلي للتحكم في المخزون. لذلك، أنا قادر على إدارة حركات الطلب عن طريق كتابة معالج الأسهم. \n إنه لأمر رائع ألا نضيع الوقت في CreationTime، CreatorId. يتم ملؤها تلقائيًا.", "VideosLoginAndRegisterMessage": "يجب عليك تسجيل الدخول لمشاهدة مقاطع الفيديو. يمكنك إنشاء حساب للمشاهدة إذا لم تقم بذلك.", "Filter": "منقي", - "VideoCourses": "دورات الفيديو" + "VideoCourses": "دورات الفيديو", + "TestimonialText": "شهادتك", + "Position": "الوظيفة", + "ExperienceYear": "سنوات الخبرة", + "FullName": "الاسم الكامل", + "CompanySize": "حجم الشركة", + "Image": "صورتك الشخصية", + "TestimonialTitle": "لنسمع شهادتك", + "TestimonialInfo": "رأي عملائنا يهم! أخبرنا عن تجربتك مع منتجنا وخدمتنا.", + "Country": "البلد", + "TestimonialTextPlaceholder": "اكتب قصة موجزة حول كيف ساعدك ABP في بناء وتسليم مشروعك.", + "PositionPlaceholder": "وظيفتك في شركتك.", + "SelectExperienceYearPlaceholder": "كم عدد سنوات خبرتك في مجال البرمجيات؟", + "FullNamePlaceholder": "اسمك الكامل.", + "CompanyNamePlaceholder": "اسم شركتك.", + "SelectCompanySizePlaceholder": "عدد الموظفين", + "ImagePlaceholder": "صورتك.", + "SelectCountryPlaceholder": "بلدك.", + "YouAreNotAuthorizedToWriteTestimonial": "لا يُسمح لك بكتابة الشهادة إلا إذا قمت بتسجيل الدخول.", + "UnAuthorizeTestimonialInfo": "إذا كنت ترغب في مشاركة رأيك، يجب أن تكون قد قمت بتسجيل الدخول.", + "TheFileIsTooLargeForImage": "لا يمكن أن تكون صورتك الشخصية أكبر من 1 ميغابايت.", + "ThisExtensionIsNotAllowedForImage": "هذا الامتداد غير مسموح به.", + "FileUploadError": "خطأ في تحميل الملف", + "TestimonialSend": "شكرًا لك! لقد تلقينا شهادتك. سنقوم بمراجعتها واتخاذ الخطوة التالية قريبًا.", + "Title": "العنوان", + "TitlePlaceholder": "مطور برامج، مدير تكنولوجيا المعلومات، إلخ." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json index 6079191fdb..38fa8fa187 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework není jen rámec, je to také návod pro vývoj/řízení projektů, protože poskytuje školení DDD, GenericRepository, DI, Microservice, Modularity. I když se nechystáte používat samotný framework, můžete se vyvíjet s docs.abp.io, který je dobře a profesionálně připraven. (OpenIddict, Redis, Quartz atd.) \n Protože je mnoho věcí předpřipravených, výrazně to zkracuje dobu vývoje projektu. (Jako přihlašovací stránka, zpracování výjimek, filtrování dat-seedování, protokolování auditu, lokalizace, automatický api řadič atd.) \n Jako příklad z naší aplikace jsem pro řízení zásob použil místní sběrnici událostí. Takže jsem schopen řídit pohyby objednávek psaním skladového manipulátoru. \n Je skvělé neztrácet čas pro CreationTime, CreatorId. Vyplňují se automaticky.", "VideosLoginAndRegisterMessage": "Chcete-li sledovat videa, musíte se přihlásit. Můžete si vytvořit účet pro hodinky, pokud ještě nemáte.", "Filter": "Filtr", - "VideoCourses": "Video kurzy" + "VideoCourses": "Video kurzy", + "TestimonialText": "Vaše hodnocení", + "Position": "Pozice", + "ExperienceYear": "Roky zkušeností", + "FullName": "Celé jméno", + "CompanySize": "Velikost společnosti", + "Image": "Vaše profilová fotografie", + "TestimonialTitle": "Pojďme slyšet vaše hodnocení", + "TestimonialInfo": "To, co naši zákazníci říkají, má význam! Dejte nám vědět o své zkušenosti s naším produktem a servisem.", + "Country": "Země", + "TestimonialTextPlaceholder": "Napište stručný příběh o tom, jak vám ABP pomohlo stavět a dodávat váš projekt.", + "PositionPlaceholder": "Vaše pozice ve vaší společnosti.", + "SelectExperienceYearPlaceholder": "Kolik let jste ve softwarovém odvětví?", + "FullNamePlaceholder": "Vaše celé jméno.", + "CompanyNamePlaceholder": "Název vaší společnosti.", + "SelectCompanySizePlaceholder": "Počet zaměstnanců", + "ImagePlaceholder": "Vaše fotka.", + "SelectCountryPlaceholder": "Vaše země.", + "YouAreNotAuthorizedToWriteTestimonial": "Chcete-li napsat svědectví, musíte se přihlásit.", + "UnAuthorizeTestimonialInfo": "Chcete-li sdílet svůj názor, musíte být přihlášeni.", + "TheFileIsTooLargeForImage": "Vaše profilová fotografie nesmí být větší než 1 MB", + "ThisExtensionIsNotAllowedForImage": "Tento typ souboru není povolen.", + "FileUploadError": "Chyba při nahrávání souboru", + "TestimonialSend": "Děkujeme! Obdrželi jsme vaše svědectví. Brzy to zkontrolujeme a přijmeme další kroky.", + "Title": "Titul", + "TitlePlaceholder": "Vývojář softwaru, CTO atd." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json index 915e680400..9f009fd08d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework ist nicht nur ein Framework, sondern auch eine Anleitung für die Projektentwicklung/-verwaltung, da es DDD-, GenericRepository-, DI-, Microservice- und Modularitätsschulungen bereitstellt. Auch wenn Sie das Framework selbst nicht verwenden, können Sie sich mit docs.abp.io selbst entwickeln, das gut und professionell vorbereitet ist. (OpenIddict, Redis, Quartz usw.) \n Da viele Dinge vorgefertigt sind, verkürzt es die Projektentwicklungszeit erheblich. (Zum Beispiel Anmeldeseite, Ausnahmebehandlung, Datenfilterung/Seeding, Audit-Protokollierung, Lokalisierung, automatischer API-Controller usw.) \n Als Beispiel aus unserer App habe ich Local Event Bus für die Bestandskontrolle verwendet. Daher bin ich in der Lage, Auftragsbewegungen zu verwalten, indem ich „Stock Handler“ schreibe. \n Es ist wunderbar, keine Zeit für CreationTime und CreatorId zu verlieren. Sie werden automatisch ausgefüllt.", "VideosLoginAndRegisterMessage": "Sie müssen sich anmelden, um Videos anzusehen. Sie können ein Konto für die Uhr erstellen, wenn Sie noch kein Konto haben.", "Filter": "Filter", - "VideoCourses": "Videokurse" + "VideoCourses": "Videokurse", + "TestimonialText": "Ihre Bewertung", + "Position": "Position", + "ExperienceYear": "Jahre Erfahrung", + "FullName": "Vollständiger Name", + "CompanySize": "Firmengröße", + "Image": "Ihr Profilbild", + "TestimonialTitle": "Lassen Sie uns Ihre Bewertung hören", + "TestimonialInfo": "Was unsere Kunden sagen, ist wichtig! Erzählen Sie uns von Ihrer Erfahrung mit unserem Produkt und Service.", + "Country": "Land", + "TestimonialTextPlaceholder": "Schreiben Sie eine kurze Geschichte darüber, wie Ihnen ABP geholfen hat, Ihr Projekt zu entwickeln und zu liefern.", + "PositionPlaceholder": "Ihre Position in Ihrem Unternehmen.", + "SelectExperienceYearPlaceholder": "Wie viele Jahre haben Sie Erfahrung in der Softwarebranche?", + "FullNamePlaceholder": "Ihr vollständiger Name.", + "CompanyNamePlaceholder": "Der Name Ihres Unternehmens.", + "SelectCompanySizePlaceholder": "Anzahl der Mitarbeiter", + "ImagePlaceholder": "Ihr Bild.", + "SelectCountryPlaceholder": "Ihr Land.", + "YouAreNotAuthorizedToWriteTestimonial": "Um eine Bewertung zu schreiben, müssen Sie angemeldet sein.", + "UnAuthorizeTestimonialInfo": "Wenn Sie Ihre Meinung teilen möchten, müssen Sie sich anmelden.", + "TheFileIsTooLargeForImage": "Ihr Profilbild darf nicht größer als 1 MB sein.", + "ThisExtensionIsNotAllowedForImage": "Diese Erweiterung ist nicht erlaubt.", + "FileUploadError": "Fehler beim Hochladen der Datei", + "TestimonialSend": "Vielen Dank! Wir haben Ihre Bewertung erhalten. Wir werden sie bald überprüfen und den nächsten Schritt unternehmen.", + "Title": "Titel", + "TitlePlaceholder": "Softwareentwickler, CTO usw." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json index 6e67bf1aee..14bd956288 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework no es solo un marco, también es una guía para el desarrollo/gestión de proyectos, porque proporciona capacitaciones sobre DDD, GenericRepository, DI, Microservice y Modularity. Incluso si no va a utilizar el marco en sí, puede desarrollarlo usted mismo con docs.abp.io, que está bien preparado y profesionalmente. (OpenIddict, Redis, Quartz, etc.) \n Debido a que muchos elementos están prediseñados, acorta significativamente el tiempo de desarrollo del proyecto. (Como página de inicio de sesión, manejo de excepciones, filtrado y siembra de datos, registro de auditoría, localización, controlador de API automático, etc.) \n Como ejemplo de nuestra aplicación, he utilizado Local Event Bus para el control de existencias. Por lo tanto, puedo gestionar los movimientos de pedidos escribiendo el controlador de stock. \n Es maravilloso no perder tiempo con CreationTime, CreatorId. Se llenan automáticamente.", "VideosLoginAndRegisterMessage": "Debes iniciar sesión para ver videos. Puedes crear una cuenta para ver si aún no lo has hecho.", "Filter": "Filtrar", - "VideoCourses": "Cursos en vídeo" + "VideoCourses": "Cursos en vídeo", + "TestimonialText": "Tu testimonio", + "Position": "Cargo", + "ExperienceYear": "Años de experiencia", + "FullName": "Nombre completo", + "CompanySize": "Tamaño de la empresa", + "Image": "Tu foto de perfil", + "TestimonialTitle": "Escuchemos tu testimonio", + "TestimonialInfo": "¡Lo que dicen nuestros clientes es importante! Cuéntanos tu experiencia con nuestro producto y servicio.", + "Country": "País", + "TestimonialTextPlaceholder": "Escribe una breve historia sobre cómo ABP te ayudó a construir y entregar tu proyecto.", + "PositionPlaceholder": "Tu posición en tu empresa.", + "SelectExperienceYearPlaceholder": "¿Cuántos años llevas en el campo del software?", + "FullNamePlaceholder": "Tu nombre completo.", + "CompanyNamePlaceholder": "Nombre de tu empresa.", + "SelectCompanySizePlaceholder": "Cantidad de empleados", + "ImagePlaceholder": "Tu imagen.", + "SelectCountryPlaceholder": "Tu país.", + "YouAreNotAuthorizedToWriteTestimonial": "Para poder escribir un testimonio, debes iniciar sesión.", + "UnAuthorizeTestimonialInfo": "Si deseas compartir tu opinión, debes iniciar sesión.", + "TheFileIsTooLargeForImage": "Tu foto de perfil no puede superar 1 MB.", + "ThisExtensionIsNotAllowedForImage": "Esta extensión no está permitida.", + "FileUploadError": "Error al cargar el archivo", + "TestimonialSend": "¡Gracias! Hemos recibido tu testimonio. Lo revisaremos y daremos el próximo paso pronto.", + "Title": "Título", + "TitlePlaceholder": "Desarrollador de software, CTO, etc." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json index 255700516e..4129dc20fe 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework ei ole vain viitekehys, se on myös opastus projektien kehittämiseen/hallintaan, koska se tarjoaa DDD-, GenericRepository-, DI-, Microservice- ja Modularity-koulutuksia. Vaikka et itse käyttäisikään kehystä, voit kehittää itseäsi docs.abp.io:lla, joka on hyvin ja ammattimaisesti valmisteltu. (OpenIddict, Redis, Quartz jne.) \n Koska monet asiat on rakennettu valmiiksi, se lyhentää projektin kehitysaikaa merkittävästi. (Kuten kirjautumissivu, poikkeusten käsittely, tietojen suodatus-kylvö, tarkastusloki, lokalisointi, automaattinen api-ohjain jne.) \n Esimerkkinä sovelluksestamme, olen käyttänyt Local Event Busia varaston hallintaan. Pystyn siis hallitsemaan tilausliikkeitä kirjoittamalla varastokäsittelijäksi. \n On hienoa olla hukkaamatta aikaa CreationTime, CreatorId. Ne täytetään automaattisesti.", "VideosLoginAndRegisterMessage": "Sinun on kirjauduttava sisään katsoaksesi videoita. Voit luoda tilin kellolle, jos et ole vielä tehnyt sitä.", "Filter": "Suodattaa", - "VideoCourses": "Videokurssit" + "VideoCourses": "Videokurssit", + "TestimonialText": "Arvostelusi", + "Position": "Asema", + "ExperienceYear": "Vuoden kokemus", + "FullName": "Koko nimi", + "CompanySize": "Yrityksen koko", + "Image": "Profiilikuvasi", + "TestimonialTitle": "Kuunnellaan arvosteluasi", + "TestimonialInfo": "Mitä asiakkaamme sanovat, on tärkeää! Kerro meille kokemuksestasi tuotteemme ja palvelumme parissa.", + "Country": "Maa", + "TestimonialTextPlaceholder": "Kirjoita lyhyt tarina siitä, miten ABP auttoi sinua rakentamaan ja toimittamaan projektisi.", + "PositionPlaceholder": "Asemasi yrityksessäsi.", + "SelectExperienceYearPlaceholder": "Kuinka monta vuotta olet työskennellyt ohjelmistoteollisuudessa?", + "FullNamePlaceholder": "Koko nimesi.", + "CompanyNamePlaceholder": "Yrityksesi nimi.", + "SelectCompanySizePlaceholder": "Työntekijöiden määrä", + "ImagePlaceholder": "Kuvasi.", + "SelectCountryPlaceholder": "Maasi.", + "YouAreNotAuthorizedToWriteTestimonial": "Voit kirjoittaa arvostelun vain kirjautuneena sisään.", + "UnAuthorizeTestimonialInfo": "Jos haluat jakaa mielipiteesi, sinun on oltava kirjautunut sisään.", + "TheFileIsTooLargeForImage": "Profiilikuvasi ei saa olla yli 1 Mt.", + "ThisExtensionIsNotAllowedForImage": "Tätä tiedostotyyppiä ei sallita.", + "FileUploadError": "Tiedoston latausvirhe", + "TestimonialSend": "Kiitos! Olemme vastaanottaneet arvostelusi. Käymme sen läpi ja otamme seuraavan askeleen pian.", + "Title": "Titteli", + "TitlePlaceholder": "Ohjelmistokehittäjä, CTO, jne." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json index 00016d687d..2b6de34bf6 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework n'est pas seulement un framework, c'est aussi un guide pour le développement/gestion de projets, car il propose des formations DDD, GenericRepository, DI, Microservice, Modularité. Même si vous n'utilisez pas le framework lui-même, vous pouvez vous développer avec docs.abp.io qui est bien préparé de manière professionnelle. (OpenIddict, Redis, Quartz, etc.) \n Parce que de nombreux éléments sont pré-construits, cela réduit considérablement le temps de développement du projet. (Tels que la page de connexion, la gestion des exceptions, le filtrage-ensemencement des données, la journalisation d'audit, la localisation, le contrôleur API automatique, etc.) \n À titre d'exemple de notre application, j'ai utilisé Local Event Bus pour le contrôle des stocks. Ainsi, je suis capable de gérer les mouvements de commandes en écrivant stock handler. \n C'est merveilleux de ne pas perdre de temps pour CreationTime, CreatorId. Ils sont remplis automatiquement.", "VideosLoginAndRegisterMessage": "Vous devez vous connecter pour regarder des vidéos. Vous pouvez créer un compte pour regarder si vous ne l'avez pas encore fait.", "Filter": "Filtre", - "VideoCourses": "Cours vidéo" + "VideoCourses": "Cours vidéo", + "TestimonialText": "Votre témoignage", + "Position": "Poste", + "ExperienceYear": "Années d'expérience", + "FullName": "Nom complet", + "CompanySize": "Taille de l'entreprise", + "Image": "Votre photo de profil", + "TestimonialTitle": "Écoutons votre témoignage", + "TestimonialInfo": "Ce que disent nos clients est important ! Parlez-nous de votre expérience avec notre produit et notre service.", + "Country": "Pays", + "TestimonialTextPlaceholder": "Rédigez une brève histoire sur la manière dont ABP vous a aidé à construire et livrer votre projet.", + "PositionPlaceholder": "Votre poste dans votre entreprise.", + "SelectExperienceYearPlaceholder": "Combien d'années avez-vous d'expérience dans le domaine du logiciel ?", + "FullNamePlaceholder": "Votre nom complet.", + "CompanyNamePlaceholder": "Nom de votre entreprise.", + "SelectCompanySizePlaceholder": "Nombre d'employés", + "ImagePlaceholder": "Votre image.", + "SelectCountryPlaceholder": "Votre pays.", + "YouAreNotAuthorizedToWriteTestimonial": "Pour pouvoir écrire un témoignage, vous devez être connecté(e).", + "UnAuthorizeTestimonialInfo": "Si vous souhaitez partager votre avis, vous devez être connecté(e).", + "TheFileIsTooLargeForImage": "Votre photo de profil ne peut pas dépasser 1 Mo.", + "ThisExtensionIsNotAllowedForImage": "Cette extension n'est pas autorisée.", + "FileUploadError": "Erreur lors du téléchargement du fichier", + "TestimonialSend": "Merci ! Nous avons bien reçu votre témoignage. Nous le passerons en revue et prendrons la prochaine étape bientôt.", + "Title": "Titre", + "TitlePlaceholder": "Développeur de logiciels, CTO, etc." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json index 69a8679150..f5135ac09e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json @@ -440,6 +440,37 @@ "Index_Page_Testimonial_2": "एबीपी फ्रेमवर्क न केवल एक ढांचा है, यह परियोजना विकास/प्रबंधन के लिए एक मार्गदर्शन भी है, क्योंकि यह डीडीडी, जेनेरिक रिपोजिटरी, डीआई, माइक्रोसर्विस, मॉड्यूलरिटी प्रशिक्षण प्रदान करता है। भले ही आप स्वयं फ्रेमवर्क का उपयोग नहीं करने जा रहे हैं, आप docs.abp.io के साथ स्वयं को विकसित कर सकते हैं जो अच्छी तरह से और पेशेवर रूप से तैयार है। (OpenIddict, Redis, Quartz आदि) \n चूंकि कई चीजें पहले से निर्मित होती हैं, इसलिए यह परियोजना के विकास के समय को काफी कम कर देता है। (जैसे लॉगिन पेज, अपवाद हैंडलिंग, डेटा फ़िल्टरिंग-सीडिंग, ऑडिट लॉगिंग, स्थानीयकरण, ऑटो एपीआई नियंत्रक इत्यादि) \n हमारे ऐप से एक उदाहरण के रूप में, मैंने स्टॉक नियंत्रण के लिए स्थानीय इवेंट बस का उपयोग किया है। इसलिए, मैं स्टॉक हैंडलर लिखकर ऑर्डर मूवमेंट को प्रबंधित करने में सक्षम हूं। \n CreationTime, CreatorId के लिए समय न बर्बाद करना अद्भुत है। वे स्वचालित रूप से भर जाते हैं.", "VideosLoginAndRegisterMessage": "वीडियो देखने के लिए आपको साइन इन करना होगा. यदि आपने नहीं बनाया है तो आप घड़ी के लिए एक खाता बना सकते हैं।", "Filter": "फ़िल्टर", - "VideoCourses": "वीडियो पाठ्यक्रम" + "VideoCourses": "वीडियो पाठ्यक्रम", + "TestimonialText": "आपका साक्षात्कार", + "Position": "पद", + "ExperienceYear": "अनुभव के वर्ष", + "FullName": "पूरा नाम", + "CompanySize": "कंपनी का आकार", + "Image": "आपकी प्रोफ़ाइल तस्वीर", + "TestimonialTitle": "हम आपका साक्षात्कार सुनें", + "TestimonialInfo": "हमारे ग्राहकों की कहानियाँ महत्वपूर्ण हैं! हमें अपने उत्पाद और सेवा के साथ अपने अनुभव के बारे में बताएं।", + "Country": "देश", + "TestimonialTextPlaceholder": "एक संक्षेप कहानी लिखें कि ABP ने आपको अपने परियोजना को बनाने और पहुंचाने में कैसे मदद की।", + "PositionPlaceholder": "आपका पद आपकी कंपनी में।", + "SelectExperienceYearPlaceholder": "आप सॉफ़्टवेयर क्षेत्र में कितने वर्षों से हैं?", + "FullNamePlaceholder": "आपका पूरा नाम।", + "CompanyNamePlaceholder": "आपकी कंपनी का नाम।", + "SelectCompanySizePlaceholder": "कर्मचारी संख्या", + "ImagePlaceholder": "आपकी छवि।", + "SelectCountryPlaceholder": "आपका देश।", + "YouAreNotAuthorizedToWriteTestimonial": "एक साक्षात्कार लिखने के लिए, आपको लॉग इन करना होगा।", + "UnAuthorizeTestimonialInfo": "अगर आप अपनी राय साझा करना चाहते हैं, तो आपको लॉग इन होना चाहिए।", + "TheFileIsTooLargeForImage": "आपकी प्रोफ़ाइल तस्वीर 1 MB से अधिक नहीं हो सकती।", + "ThisExtensionIsNotAllowedForImage": "यह एक्सटेंशन अनुमति नहीं है।", + "FileUploadError": "फ़ाइल अपलोड की गई में त्रुटि", + "TestimonialSend": "धन्यवाद! हमने आपका साक्षात्कार प्राप्त किया है। हम इसे समीक्षा करेंगे और शीघ्र अगला कदम उठाएंगे।", + "Title": "शीर्षक", + "TitlePlaceholder": "सॉफ़्टवेयर डेवेलपर, सीटीओ, आदि।" + + + + + + } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json index d389a32c90..c1cd6839d1 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework nije samo okvir, već je i smjernica za razvoj/upravljanje projektom, jer pruža DDD, GenericRepository, DI, Microservice, Modularity treninge. Čak i ako nećete koristiti sam framework, možete se razvijati s docs.abp.io koji je dobro i profesionalno pripremljen. (OpenIddict, Redis, Quartz itd.) \n Budući da su mnoge stvari unaprijed izgrađene, značajno skraćuje vrijeme razvoja projekta. (Kao što je stranica za prijavu, rukovanje iznimkama, filtriranje-sijanje podataka, bilježenje revizije, lokalizacija, automatski API kontroler itd.) \n Kao primjer iz naše aplikacije, koristio sam lokalnu sabirnicu događaja za kontrolu zaliha. Dakle, mogu upravljati kretanjem narudžbi pisanjem rukovatelja zalihama. \n Divno je ne gubiti vrijeme za CreationTime, CreatorId. Pune se automatski.", "VideosLoginAndRegisterMessage": "Morate se prijaviti za gledanje videa. Možete stvoriti račun za sat ako niste.", "Filter": "filtar", - "VideoCourses": "Video tečajevi" + "VideoCourses": "Video tečajevi", + "TestimonialText": "Vaša preporuka", + "Position": "Pozicija", + "ExperienceYear": "Godine iskustva", + "FullName": "Puno ime", + "CompanySize": "Veličina tvrtke", + "Image": "Vaša profilna slika", + "TestimonialTitle": "Poslušajmo vašu preporuku", + "TestimonialInfo": "Ono što naši klijenti kažu važno je! Podijelite s nama svoje iskustvo s našim proizvodom i uslugom.", + "Country": "Država", + "TestimonialTextPlaceholder": "Napišite kratku priču o tome kako vam je ABP pomogao izgraditi i isporučiti vaš projekt.", + "PositionPlaceholder": "Vaša pozicija u tvrtki.", + "SelectExperienceYearPlaceholder": "Koliko godina imate iskustva u području softvera?", + "FullNamePlaceholder": "Vaše puno ime.", + "CompanyNamePlaceholder": "Naziv vaše tvrtke.", + "SelectCompanySizePlaceholder": "Broj zaposlenika", + "ImagePlaceholder": "Vaša slika.", + "SelectCountryPlaceholder": "Vaša država.", + "YouAreNotAuthorizedToWriteTestimonial": "Da biste mogli napisati preporuku, morate biti prijavljeni.", + "UnAuthorizeTestimonialInfo": "Ako želite podijeliti svoje mišljenje, morate biti prijavljeni.", + "TheFileIsTooLargeForImage": "Vaša profilna slika ne smije biti veća od 1 MB.", + "ThisExtensionIsNotAllowedForImage": "Ovo proširenje nije dopušteno.", + "FileUploadError": "Pogreška prilikom prijenosa datoteke", + "TestimonialSend": "Hvala vam! Primili smo vašu preporuku. Provjerit ćemo je i uskoro poduzeti sljedeći korak.", + "Title": "Naslov", + "TitlePlaceholder": "Razvojni inženjer, CTO, itd." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json index c4aa000b23..096e1da58a 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "Az ABP Framework nem csak keretrendszer, hanem útmutató is a projektfejlesztéshez/menedzsmenthez, mert DDD, GenericRepository, DI, Microservice, Modularity képzéseket biztosít. Még ha nem is magát a keretrendszert használja, fejlesztheti magát a docs.abp.io segítségével, amely jól és szakmailag felkészült. (OpenIddict, Redis, Quartz stb.) \n Mivel sok minden előre be van építve, jelentősen lerövidíti a projektfejlesztési időt. (Például bejelentkezési oldal, kivételkezelés, adatszűrés-seeding, audit naplózás, lokalizáció, automatikus api-vezérlő stb.) \n Alkalmazásunkból példaként a Local Event Bus-t használtam készletkezelésre. Így a rendelési mozgásokat készletkezelő írással tudom kezelni. \n Csodálatos, hogy nem veszít időt a CreationTime, CreatorId használatára. Automatikusan kitöltődnek.", "VideosLoginAndRegisterMessage": "A videók megtekintéséhez be kell jelentkeznie. Ha még nem tette meg, létrehozhat fiókot az órához.", "Filter": "Szűrő", - "VideoCourses": "Videó tanfolyamok" + "VideoCourses": "Videó tanfolyamok", + "TestimonialText": "Ajánlásod", + "Position": "Pozíció", + "ExperienceYear": "Tapasztalati év", + "FullName": "Teljes név", + "CompanySize": "Cég mérete", + "Image": "Profilképed", + "TestimonialTitle": "Halljuk ajánlásod", + "TestimonialInfo": "Ami ügyfeleinktől származik, az fontos! Mesélj nekünk tapasztalataidról a termékünkkel és szolgáltatásunkkal kapcsolatban.", + "Country": "Ország", + "TestimonialTextPlaceholder": "Írj rövid történetet arról, hogyan segített neked az ABP projektépítésben és szállításban.", + "PositionPlaceholder": "Pozíciód a vállalatodban.", + "SelectExperienceYearPlaceholder": "Mennyi éves tapasztalatod van a szoftverek területén?", + "FullNamePlaceholder": "Teljes neved.", + "CompanyNamePlaceholder": "Céged neve.", + "SelectCompanySizePlaceholder": "Alkalmazottak száma", + "ImagePlaceholder": "Profilképed.", + "SelectCountryPlaceholder": "Országod.", + "YouAreNotAuthorizedToWriteTestimonial": "Ahhoz, hogy ajánlást írhass, be kell jelentkezned.", + "UnAuthorizeTestimonialInfo": "Ha meg szeretnéd osztani a véleményedet, be kell jelentkezned.", + "TheFileIsTooLargeForImage": "A profilképed nem lehet nagyobb, mint 1 MB.", + "ThisExtensionIsNotAllowedForImage": "Ez a kiterjesztés nem engedélyezett.", + "FileUploadError": "Hiba történt a fájl feltöltése közben", + "TestimonialSend": "Köszönjük! Megkaptuk az ajánlásod. Hamarosan átnézzük és következő lépéseket teszünk.", + "Title": "Cím", + "TitlePlaceholder": "Szoftvertervező, CTO, stb." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json index 816cd1133e..21317eff9f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json @@ -440,6 +440,32 @@ "Index_Page_Testimonial_2": "ABP Framework er ekki aðeins rammi, það er líka leiðsögn fyrir þróun/stjórnun verkefna, vegna þess að það veitir DDD, GenericRepository, DI, Microservice, Modularity þjálfun. Jafnvel þó þú ætlir ekki að nota ramma sjálfan þig geturðu þróað sjálfan þig með docs.abp.io sem er vel og faglega undirbúið. (OpenIddict, Redis, Quartz o.s.frv.) \n Þar sem margt er forsmíðað styttir það þróunartíma verkefna verulega. (Svo sem innskráningarsíðu, undantekningarmeðferð, gagnasíun-sáningu, endurskoðunarskráningu, staðfærslu, sjálfvirkan API stjórnandi o.s.frv.) \n Sem dæmi úr appinu okkar hef ég notað Local Event Bus fyrir lagerstýringu. Þannig að ég get stjórnað pöntunarhreyfingum með því að skrifa lager meðhöndlun. \n Það er dásamlegt að missa ekki tíma fyrir CreationTime, CreatorId. Þau fyllast sjálfkrafa.", "VideosLoginAndRegisterMessage": "Þú verður að skrá þig inn til að horfa á myndbönd. Þú getur búið til reikning fyrir úrið ef þú hefur ekki gert það.", "Filter": "Sía", - "VideoCourses": "Vídeónámskeið" + "VideoCourses": "Vídeónámskeið", + "TestimonialText": "Viðmiðun þín", + "Position": "Staða", + "ExperienceYear": "Reynsluár", + "FullName": "Fullt Nafn", + "CompanySize": "Fyrirtækisstærð", + "Image": "Prófílmynd þín", + "TestimonialTitle": "Hlýtur að heyra viðmiðu þína", + "TestimonialInfo": "Það sem viðskiptavinir okkar segja skiptir máli! Segið okkur frá reynslu þinni með vörum okkar og þjónustu.", + "Country": "Land", + "TestimonialTextPlaceholder": "Skrifið stutta sögu um hvernig ABP hjálpaði yður að byggja og afhenda verkefnið ykkar.", + "PositionPlaceholder": "Staða þín í fyrirtækinu þínu.", + "SelectExperienceYearPlaceholder": "Hversu mörg ár hefur þú starfað í hugbúnaðarverkfræði?", + "FullNamePlaceholder": "Fullt nafn þitt.", + "CompanyNamePlaceholder": "Nafn fyrirtækisins þíns.", + "SelectCompanySizePlaceholder": "Fjöldi starfsmanna", + "ImagePlaceholder": "Prófílmynd þín.", + "SelectCountryPlaceholder": "Landið þitt.", + "YouAreNotAuthorizedToWriteTestimonial": "Til að geta skrifað viðmiðun, verður þú að skrá þig inn.", + "UnAuthorizeTestimonialInfo": "Ef þú vilt deila skoðun þinni, verður þú að skrá þig inn.", + "TheFileIsTooLargeForImage": "Prófílmynd þín má ekki vera stærri en 1 MB.", + "ThisExtensionIsNotAllowedForImage": "Þessi viðbót er ekki leyfð.", + "FileUploadError": "Villa við upphleðslu skráar", + "TestimonialSend": "Þakka þér! Við höfum fengið viðmiðuna þína. Við munum fara yfir hana fljótt og taka næsta skref.", + "Title": "Titill", + "TitlePlaceholder": "Hugbúnaðarþróunarmiðill, CTO o.s.frv." + } } \ No newline at end of file From 123255105b187aa7694cd92fc278ff3e976b8a56 Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Thu, 4 Jan 2024 16:50:35 +0300 Subject: [PATCH 39/88] Localization update --- .../Www/Localization/Resources/it.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/nl.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/pl-PL.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/pt-BR.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/ro-RO.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/ru.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/sk.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/sl.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/tr.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/vi.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/zh-Hans.json | 27 ++++++++++++++++++- .../Www/Localization/Resources/zh-Hant.json | 27 ++++++++++++++++++- 12 files changed, 312 insertions(+), 12 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json index 4714cb4f9b..8c1258841c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework non è solo un framework, è anche una guida per lo sviluppo/gestione del progetto, poiché fornisce corsi di formazione su DDD, GenericRepository, DI, Microservice e Modularità. Anche se non utilizzerai il framework stesso, puoi svilupparti con docs.abp.io che è ben preparato e professionalmente. (OpenIddict, Redis, Quartz ecc.) \n Poiché molte cose sono precostruite, riduce significativamente i tempi di sviluppo del progetto. (Come pagina di accesso, gestione delle eccezioni, seeding del filtraggio dei dati, registrazione di controllo, localizzazione, controller API automatico ecc.) \n Come esempio tratto dalla nostra app, ho utilizzato Local Event Bus per il controllo delle scorte. Quindi, sono in grado di gestire i movimenti degli ordini scrivendo stock handler. \n È meraviglioso non perdere tempo con CreationTime, CreatorId. Si riempiono automaticamente.", "VideosLoginAndRegisterMessage": "Devi accedere per guardare i video. Se non lo hai già fatto, puoi creare un account per Watch.", "Filter": "Filtro", - "VideoCourses": "Videocorsi" + "VideoCourses": "Videocorsi", + "TestimonialText": "La tua testimonianza", + "Position": "Posizione", + "ExperienceYear": "Anni di esperienza", + "FullName": "Nome e cognome", + "CompanySize": "Dimensione aziendale", + "Image": "La tua immagine del profilo", + "TestimonialTitle": "Ascoltiamo la tua testimonianza", + "TestimonialInfo": "Ciò che dicono i nostri clienti è importante! ", + "Country": "Paese", + "TestimonialTextPlaceholder": "Scrivi una breve storia su come ABP ti ha aiutato a costruire e realizzare il tuo progetto. ", + "PositionPlaceholder": "La tua posizione nella tua azienda.", + "SelectExperienceYearPlaceholder": "Da quanti anni ti occupi di software?", + "FullNamePlaceholder": "Il tuo nome completo.", + "CompanyNamePlaceholder": "Il nome della tua azienda.", + "SelectCompanySizePlaceholder": "Conteggio dei dipendenti", + "ImagePlaceholder": "La tua immagine.", + "SelectCountryPlaceholder": "Il tuo paese.", + "YouAreNotAuthorizedToWriteTestimonial": "Per poter scrivere una lettera di testimonianza, devi effettuare l'accesso.", + "UnAuthorizeTestimonialInfo": "Se vuoi condividere la tua opinione, devi esserlo registrazione", + "TheFileIsTooLargeForImage": "La tua immagine del profilo non può essere più di 1 MB", + "ThisExtensionIsNotAllowedForImage": "Questa estensione non è consentita.", + "FileUploadError": "Errore nel caricamento del file", + "TestimonialSend": "Grazie! ", + "Title": "Titolo", + "TitlePlaceholder": "Sviluppatore di software, CTO ecc." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json index b009c9d347..48851a5e74 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework is niet alleen een raamwerk, het is ook een leidraad voor projectontwikkeling/management, omdat het DDD, GenericRepository, DI, Microservice, Modularity trainingen biedt. Zelfs als je het framework zelf niet gaat gebruiken, kun je jezelf ontwikkelen met docs.abp.io dat goed en professioneel is voorbereid. (OpenIddict, Redis, Quartz etc.) \n Omdat veel dingen vooraf zijn gebouwd, verkort dit de projectontwikkelingstijd aanzienlijk. (Zoals inlogpagina, afhandeling van uitzonderingen, gegevensfiltering-zaaien, auditlogboekregistratie, lokalisatie, automatische API-controller enz.) \n Als voorbeeld uit onze app heb ik Local Event Bus gebruikt voor voorraadbeheer. Ik kan dus orderbewegingen beheren door voorraadbeheer te schrijven. \n Het is geweldig om geen tijd te verliezen voor CreationTime, CreatorId. Ze worden automatisch gevuld.", "VideosLoginAndRegisterMessage": "Je moet inloggen om video's te bekijken. Als u dat nog niet heeft gedaan, kunt u een account voor Watch aanmaken.", "Filter": "Filter", - "VideoCourses": "Videocursussen" + "VideoCourses": "Videocursussen", + "TestimonialText": "Jouw getuigenis", + "Position": "Positie", + "ExperienceYear": "Jarenlange ervaring", + "FullName": "Voor-en achternaam", + "CompanySize": "Bedrijfsomvang", + "Image": "Jouw profiel foto", + "TestimonialTitle": "Laten we uw getuigenis horen", + "TestimonialInfo": "Wat onze klanten zeggen, doet ertoe! ", + "Country": "Land", + "TestimonialTextPlaceholder": "Schrijf een kort verhaal over hoe ABP u heeft geholpen bij het opzetten en opleveren van uw project. ", + "PositionPlaceholder": "Jouw functie binnen jouw bedrijf.", + "SelectExperienceYearPlaceholder": "Hoeveel jaar ben je al bezig met softwaredingen?", + "FullNamePlaceholder": "Je volledige naam.", + "CompanyNamePlaceholder": "Je bedrijfsnaam.", + "SelectCompanySizePlaceholder": "Aantal medewerkers", + "ImagePlaceholder": "Jou foto.", + "SelectCountryPlaceholder": "Jouw land.", + "YouAreNotAuthorizedToWriteTestimonial": "Om een getuigenisbrief te kunnen schrijven, moet u ingelogd zijn.", + "UnAuthorizeTestimonialInfo": "Als u uw mening wilt delen, moet u dat doen Inloggen", + "TheFileIsTooLargeForImage": "Je profielfoto mag niet groter zijn dan 1 MB", + "ThisExtensionIsNotAllowedForImage": "Deze verlenging is niet toegestaan.", + "FileUploadError": "Fout bij het uploaden van bestanden", + "TestimonialSend": "Bedankt! ", + "Title": "Titel", + "TitlePlaceholder": "Softwareontwikkelaar, CTO enz." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json index 648f4ab022..1219af6824 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework to nie tylko framework, to także wytyczne dotyczące opracowywania/zarządzania projektami, ponieważ zapewnia szkolenia z DDD, GenericRepository, DI, Microservice, Modularity. Nawet jeśli nie będziesz korzystał z samego frameworka, możesz rozwijać się dzięki dobrze i profesjonalnie przygotowanemu docs.abp.io. (OpenIddict, Redis, Quartz itp.) \n Ponieważ wiele rzeczy jest gotowych, znacznie skraca to czas opracowywania projektu. (Takie jak strona logowania, obsługa wyjątków, filtrowanie danych, rejestrowanie audytu, lokalizacja, automatyczny kontroler API itp.) \n Jako przykład z naszej aplikacji użyłem lokalnej magistrali zdarzeń do kontroli zapasów. Mogę więc zarządzać ruchami zamówień, pisząc moduł obsługi zapasów. \n Wspaniale jest nie tracić czasu na CreationTime, CreatorId. Są one wypełniane automatycznie.", "VideosLoginAndRegisterMessage": "Aby oglądać filmy, musisz się zalogować. Jeśli jeszcze tego nie zrobiłeś, możesz utworzyć konto na zegarku.", "Filter": "Filtr", - "VideoCourses": "Kursy wideo" + "VideoCourses": "Kursy wideo", + "TestimonialText": "Twoje świadectwo", + "Position": "Pozycja", + "ExperienceYear": "lata doświadczenia", + "FullName": "Pełne imię i nazwisko", + "CompanySize": "Rozmiar firmy", + "Image": "Twoje zdjęcie profilowe", + "TestimonialTitle": "Posłuchajmy Twojej opinii", + "TestimonialInfo": "To, co mówią nasi klienci, ma znaczenie! ", + "Country": "Kraj", + "TestimonialTextPlaceholder": "Napisz krótką historię o tym, jak firma ABP pomogła Ci w budowie i realizacji projektu. ", + "PositionPlaceholder": "Twoje stanowisko w Twojej firmie.", + "SelectExperienceYearPlaceholder": "Ile lat zajmujesz się oprogramowaniem?", + "FullNamePlaceholder": "Twoje pełne imię.", + "CompanyNamePlaceholder": "Nazwa Twojej firmy.", + "SelectCompanySizePlaceholder": "Liczba pracowników", + "ImagePlaceholder": "Twój obraz.", + "SelectCountryPlaceholder": "Twój kraj.", + "YouAreNotAuthorizedToWriteTestimonial": "Aby móc napisać list referencyjny, musisz się zalogować.", + "UnAuthorizeTestimonialInfo": "Jeśli chcesz podzielić się swoją opinią, musisz to zrobić zalogować się", + "TheFileIsTooLargeForImage": "Twoje zdjęcie profilowe nie może przekraczać 1 MB", + "ThisExtensionIsNotAllowedForImage": "To rozszerzenie jest niedozwolone.", + "FileUploadError": "Błąd przesyłania pliku", + "TestimonialSend": "Dziękuję! ", + "Title": "Tytuł", + "TitlePlaceholder": "Programista, CTO itp." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json index 6a9d2f4de1..eb2dbe0853 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "O ABP Framework não é apenas um framework, é também uma orientação para desenvolvimento/gerenciamento de projetos, pois fornece treinamentos em DDD, GenericRepository, DI, Microservice, Modularidade. Mesmo que você não vá usar o framework em si, você pode se desenvolver com o docs.abp.io que está bem preparado e profissionalmente. (OpenIddict, Redis, Quartz etc.) \n Como muitas coisas são pré-construídas, ele reduz significativamente o tempo de desenvolvimento do projeto. (Como página de login, tratamento de exceções, propagação de filtragem de dados, registro de auditoria, localização, controlador automático de API, etc.) \n Como exemplo de nosso aplicativo, usei o Local Event Bus para controle de estoque. Portanto, sou capaz de gerenciar os movimentos dos pedidos escrevendo o gerenciador de estoque. \n É maravilhoso não perder tempo com CreationTime, CreatorId. Eles são preenchidos automaticamente.", "VideosLoginAndRegisterMessage": "Você deve fazer login para assistir aos vídeos. Você pode criar uma conta para assistir, caso ainda não o tenha feito.", "Filter": "Filtro", - "VideoCourses": "Cursos em vídeo" + "VideoCourses": "Cursos em vídeo", + "TestimonialText": "Seu depoimento", + "Position": "Posição", + "ExperienceYear": "anos de experiência", + "FullName": "Nome completo", + "CompanySize": "Tamanho da empresa", + "Image": "Sua foto de perfil", + "TestimonialTitle": "Vamos ouvir seu depoimento", + "TestimonialInfo": "O que nossos clientes dizem é importante! ", + "Country": "País", + "TestimonialTextPlaceholder": "Escreva uma breve história sobre como a ABP ajudou você a construir e entregar seu projeto. ", + "PositionPlaceholder": "Sua posição na sua empresa.", + "SelectExperienceYearPlaceholder": "Há quantos anos você trabalha com software", + "FullNamePlaceholder": "Seu nome completo.", + "CompanyNamePlaceholder": "O nome da sua empresa.", + "SelectCompanySizePlaceholder": "Contagem de funcionários", + "ImagePlaceholder": "Sua imagem.", + "SelectCountryPlaceholder": "Seu país.", + "YouAreNotAuthorizedToWriteTestimonial": "Para poder escrever uma carta de depoimento, você deve estar logado.", + "UnAuthorizeTestimonialInfo": "Se você quiser compartilhar sua opinião, você deve estar entrar", + "TheFileIsTooLargeForImage": "Sua foto de perfil não pode ter mais de 1 MB", + "ThisExtensionIsNotAllowedForImage": "Esta extensão não é permitida.", + "FileUploadError": "Erro no upload do arquivo", + "TestimonialSend": "Obrigado! ", + "Title": "Título", + "TitlePlaceholder": "Desenvolvedor de software, CTO etc." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json index aec67baf68..a90ff5d730 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework nu este doar un cadru, este și un ghid pentru dezvoltarea/managementul proiectelor, deoarece oferă cursuri DDD, GenericRepository, DI, Microservice, Modularity. Chiar dacă nu veți folosi framework-ul în sine, vă puteți dezvolta cu docs.abp.io, care este bine și pregătit profesional. (OpenIddict, Redis, Quartz etc.) \n Deoarece multe lucruri pre-construite, scurtează semnificativ timpul de dezvoltare a proiectului. (De exemplu, pagina de autentificare, gestionarea excepțiilor, filtrarea datelor, înregistrarea auditului, localizarea, controlerul auto api etc.) \n Ca exemplu din aplicația noastră, am folosit Local Event Bus pentru controlul stocurilor. Așadar, pot gestiona mișcările comenzilor scriind handler de stoc. \n Este minunat să nu pierzi timp pentru CreationTime, CreatorId. Acestea sunt completate automat.", "VideosLoginAndRegisterMessage": "Trebuie să vă conectați pentru a viziona videoclipuri. Puteți crea un cont pentru ceas dacă nu ați făcut-o.", "Filter": "Filtru", - "VideoCourses": "Cursuri video" + "VideoCourses": "Cursuri video", + "TestimonialText": "Marturia ta", + "Position": "Poziţie", + "ExperienceYear": "Ani de experienta", + "FullName": "Numele complet", + "CompanySize": "Marimea companiei", + "Image": "Fotografia de profil", + "TestimonialTitle": "Să auzim mărturia ta", + "TestimonialInfo": "Ceea ce spun clienții noștri contează! ", + "Country": "Țară", + "TestimonialTextPlaceholder": "Scrieți o scurtă poveste despre modul în care ABP v-a ajutat să vă construiți și să vă livrați proiectul. ", + "PositionPlaceholder": "Poziția ta la compania ta.", + "SelectExperienceYearPlaceholder": "Câți ani ai fost în chestii de software", + "FullNamePlaceholder": "Numele tău complet.", + "CompanyNamePlaceholder": "Numele companiei tale.", + "SelectCompanySizePlaceholder": "Numărul de angajați", + "ImagePlaceholder": "Imaginea ta.", + "SelectCountryPlaceholder": "Tara ta.", + "YouAreNotAuthorizedToWriteTestimonial": "Pentru a putea scrie o scrisoare de mărturie, trebuie să vă conectați.", + "UnAuthorizeTestimonialInfo": "Dacă vrei să-ți împărtășești părerea, trebuie să fii conectare", + "TheFileIsTooLargeForImage": "Fotografia dvs. de profil nu poate depăși 1 MB", + "ThisExtensionIsNotAllowedForImage": "Această extensie nu este permisă.", + "FileUploadError": "Eroare de încărcare a fișierului", + "TestimonialSend": "Mulțumesc! ", + "Title": "Titlu", + "TitlePlaceholder": "Dezvoltator software, CTO etc." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json index 0e612828be..81410b1c70 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json @@ -438,6 +438,31 @@ "Index_Page_Testimonial_2": "ABP Framework — это не только платформа, но и руководство по разработке/управлению проектами, поскольку оно обеспечивает обучение DDD, GenericRepository, DI, Microservice и Modularity. ", "VideosLoginAndRegisterMessage": "Чтобы иметь возможность смотреть видео, вам необходимо войти в систему.", "Filter": "Фильтр", - "VideoCourses": "Видео курсы" + "VideoCourses": "Видео курсы", + "TestimonialText": "Ваш отзыв", + "Position": "Позиция", + "ExperienceYear": "Годы опыта", + "FullName": "Полное имя", + "CompanySize": "Размер компании", + "Image": "Изображение вашего профиля", + "TestimonialTitle": "Давайте послушаем ваше свидетельство", + "TestimonialInfo": "То, что говорят наши клиенты, имеет значение! ", + "Country": "Страна", + "TestimonialTextPlaceholder": "Напишите краткую историю о том, как ABP помогла вам создать и реализовать ваш проект. ", + "PositionPlaceholder": "Ваша должность в вашей компании.", + "SelectExperienceYearPlaceholder": "Сколько лет вы занимаетесь программным обеспечением?", + "FullNamePlaceholder": "Ваше полное имя.", + "CompanyNamePlaceholder": "Название вашей компании.", + "SelectCompanySizePlaceholder": "Количество сотрудников", + "ImagePlaceholder": "Ваш имидж.", + "SelectCountryPlaceholder": "Твоя страна.", + "YouAreNotAuthorizedToWriteTestimonial": "Чтобы иметь возможность написать рекомендательное письмо, вам необходимо войти в систему.", + "UnAuthorizeTestimonialInfo": "Если вы хотите поделиться своим мнением, вам необходимо быть войти", + "TheFileIsTooLargeForImage": "Размер изображения вашего профиля не может превышать 1 МБ.", + "ThisExtensionIsNotAllowedForImage": "Это расширение не разрешено.", + "FileUploadError": "Ошибка загрузки файла", + "TestimonialSend": "Спасибо! ", + "Title": "Заголовок", + "TitlePlaceholder": "Разработчик программного обеспечения, технический директор и т. д." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json index d16e7a4ae2..85e7e143c2 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework nie je len rámec, je to aj návod na vývoj/riadenie projektov, pretože poskytuje školenia DDD, GenericRepository, DI, Microservice, Modularity. Aj keď samotný framework nebudete používať, môžete sa rozvíjať pomocou docs.abp.io, ktoré je dobre a profesionálne pripravené. (OpenIddict, Redis, Quartz atď.) \n Pretože je veľa vecí vopred vytvorených, výrazne to skracuje čas vývoja projektu. (Ako prihlasovacia stránka, spracovanie výnimiek, filtrovanie údajov, zaznamenávanie auditov, lokalizácia, automatický api ovládač atď.) \n Ako príklad z našej aplikácie som použil lokálnu zbernicu udalostí na riadenie zásob. Takže som schopný riadiť pohyby objednávok napísaním skladového manipulátora. \n Je úžasné nestrácať čas pre CreationTime, CreatorId. Plnia sa automaticky.", "VideosLoginAndRegisterMessage": "Ak chcete pozerať videá, musíte sa prihlásiť. Ak ešte nemáte účet pre hodinky, môžete si ho vytvoriť.", "Filter": "Filter", - "VideoCourses": "Video kurzy" + "VideoCourses": "Video kurzy", + "TestimonialText": "Tvoje svedectvo", + "Position": "pozícia", + "ExperienceYear": "roky skúseností", + "FullName": "Celé meno", + "CompanySize": "Veľkosť spoločnosti", + "Image": "Váš profilový obrázok", + "TestimonialTitle": "Vypočujme si vaše svedectvo", + "TestimonialInfo": "Záleží na tom, čo hovoria naši zákazníci! ", + "Country": "Krajina", + "TestimonialTextPlaceholder": "Napíšte krátky príbeh o tom, ako vám ABP pomohla vybudovať a zrealizovať váš projekt. ", + "PositionPlaceholder": "Vaša pozícia vo vašej spoločnosti.", + "SelectExperienceYearPlaceholder": "Koľko rokov sa venuješ softvérovým veciam", + "FullNamePlaceholder": "Tvoje celé meno.", + "CompanyNamePlaceholder": "Názov vašej spoločnosti.", + "SelectCompanySizePlaceholder": "Počet zamestnancov", + "ImagePlaceholder": "Váš obraz.", + "SelectCountryPlaceholder": "Tvoja krajina.", + "YouAreNotAuthorizedToWriteTestimonial": "Aby ste mohli napísať posudkový list, musíte sa prihlásiť.", + "UnAuthorizeTestimonialInfo": "Ak sa chcete podeliť o svoj názor, musíte byť Prihlásiť sa", + "TheFileIsTooLargeForImage": "Váš profilový obrázok nemôže byť väčší ako 1 MB", + "ThisExtensionIsNotAllowedForImage": "Toto rozšírenie nie je povolené.", + "FileUploadError": "Chyba pri nahrávaní súboru", + "TestimonialSend": "Ďakujem! ", + "Title": "Názov", + "TitlePlaceholder": "Vývojár softvéru, CTO atď." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json index 68622a3fbc..7aea82f83e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "Ogrodje ABP ni le ogrodje, je tudi vodilo za razvoj/upravljanje projektov, saj zagotavlja usposabljanja DDD, GenericRepository, DI, Microservice, Modularity. Tudi če ne boste uporabljali samega ogrodja, se lahko razvijate z docs.abp.io, ki je dobro in strokovno pripravljen. (OpenIddict, Redis, Quartz itd.) \n Ker je veliko stvari vnaprej zgrajenih, znatno skrajša čas razvoja projekta. (Kot so prijavna stran, obravnavanje izjem, filtriranje-sejanje podatkov, revizijsko beleženje, lokalizacija, samodejni krmilnik api itd.) \n Kot primer iz naše aplikacije sem za nadzor zalog uporabil lokalno vodilo dogodkov. Tako lahko upravljam premike naročil s pisanjem programa za obdelavo zalog. \n Čudovito je ne izgubljati časa za CreationTime, CreatorId. Polnijo se samodejno.", "VideosLoginAndRegisterMessage": "Za ogled videoposnetkov se morate prijaviti. Če ga še niste, lahko ustvarite račun za uro.", "Filter": "Filter", - "VideoCourses": "Video tečaji" + "VideoCourses": "Video tečaji", + "TestimonialText": "Vaše pričevanje", + "Position": "Položaj", + "ExperienceYear": "leta izkušenj", + "FullName": "Polno ime", + "CompanySize": "Velikost podjetja", + "Image": "Vaša profilna slika", + "TestimonialTitle": "Slišimo vaše pričevanje", + "TestimonialInfo": "Pomembno je, kaj pravijo naše stranke! ", + "Country": "Država", + "TestimonialTextPlaceholder": "Napišite kratko zgodbo o tem, kako vam je ABP pomagal zgraditi in izvesti vaš projekt. ", + "PositionPlaceholder": "Vaš položaj v vašem podjetju.", + "SelectExperienceYearPlaceholder": "Koliko let se že ukvarjate s programsko opremo", + "FullNamePlaceholder": "Tvoje polno ime.", + "CompanyNamePlaceholder": "Ime vašega podjetja.", + "SelectCompanySizePlaceholder": "Število zaposlenih", + "ImagePlaceholder": "Vaša slika.", + "SelectCountryPlaceholder": "Tvoja država.", + "YouAreNotAuthorizedToWriteTestimonial": "Če želite napisati izjavno pismo, se morate prijaviti.", + "UnAuthorizeTestimonialInfo": "Če želite deliti svoje mnenje, morate biti Prijava", + "TheFileIsTooLargeForImage": "Vaša profilna slika ne sme biti večja od 1 MB", + "ThisExtensionIsNotAllowedForImage": "Ta razširitev ni dovoljena.", + "FileUploadError": "Napaka pri nalaganju datoteke", + "TestimonialSend": "Hvala vam! ", + "Title": "Naslov", + "TitlePlaceholder": "Razvijalec programske opreme, tehnični direktor itd." } } \ 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 ebd0ab62ad..3c3793f24f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json @@ -386,6 +386,31 @@ "ApplicationModuleExplanation2": "Modüler uygulamanız için modüller oluşturmak üzere bu seçeneği kullanabilirsiniz.", "LeptonXLiteThemeInfo": " Modern ve şık bir Bootstrap UI teması. Üretime hazır bir UI temasına sahip olmak istiyorsanız idealdir. Bu en yeni temadır ve varsayılandır.", "BasicThemeInfo": "Sade Bootstrap renkleri ve stilleri ile minimalist UI teması. Kendi UI temanızı oluşturacaksanız idealdir.", - "Details": "Detaylar" + "Details": "Detaylar", + "TestimonialText": "Referans yazısı", + "Position": "Ünvan", + "ExperienceYear": "Sektörel deneyim", + "FullName": "Ad Soyad", + "CompanySize": "Şirket büyüklüğü", + "Image": "Profil resmi", + "TestimonialTitle": "Referanslarınızı paylaşın", + "TestimonialInfo": "Müşterilerimizin ne dediği önemlidir!", + "Country": "Ülke", + "TestimonialTextPlaceholder": "ABP'nin projenizi oluşturmanıza nasıl yardımcı olduğu hakkında kısa bir hikaye yazın.", + "PositionPlaceholder": "Şirketinizdeki pozisyonunuz.", + "SelectExperienceYearPlaceholder": "Yazılım sektöründe kaç yıllık tecrübeye sahipsiniz?", + "FullNamePlaceholder": "Tam adınız.", + "CompanyNamePlaceholder": "Şirketinizin ismi.", + "SelectCompanySizePlaceholder": "Şirketinizin çalışan sayısı.", + "ImagePlaceholder": "Profil resminiz.", + "SelectCountryPlaceholder": "Ülkeniz.", + "YouAreNotAuthorizedToWriteTestimonial": "Referans mektubu yazabilmek için giriş yapmalısınız.", + "UnAuthorizeTestimonialInfo": "Fikrinizi paylaşmak istiyorsanız, giriş yapmalısınız", + "TheFileIsTooLargeForImage": "Profil resminiz 1 MB'tan fazla olamaz.", + "ThisExtensionIsNotAllowedForImage": "Bu dosya uzantısınız izin verilmiyor.", + "FileUploadError": "Dosya yükleme hatası", + "TestimonialSend": "Referansınızı paylaştığınız için teşekkürler!", + "Title": "Başlık", + "TitlePlaceholder": "Yazılım Geliştiricisi, CTO vb." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json index 2fa0e5681d..f3c3140515 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework không chỉ là một framework mà còn là một hướng dẫn để phát triển/quản lý dự án vì nó cung cấp các khóa đào tạo về DDD, GenericRepository, DI, Microservice, moduleity. Ngay cả khi bạn không sử dụng framework, bạn vẫn có thể tự phát triển với docs.abp.io được chuẩn bị kỹ lưỡng và chuyên nghiệp. (OpenIddict, Redis, Quartz, v.v.) \n Bởi vì có nhiều thứ được xây dựng sẵn nên nó rút ngắn đáng kể thời gian phát triển dự án. (Chẳng hạn như trang đăng nhập, xử lý ngoại lệ, lọc dữ liệu, ghi nhật ký kiểm tra, bản địa hóa, bộ điều khiển api tự động, v.v.) \n Là một ví dụ từ ứng dụng của chúng tôi, tôi đã sử dụng Local Event Bus để kiểm soát hàng tồn kho. Vì vậy, tôi có thể quản lý việc di chuyển đơn hàng bằng cách viết trình xử lý hàng tồn kho. \n Thật tuyệt vời khi không lãng phí thời gian cho CreationTime, CreatorId. Chúng được điền tự động.", "VideosLoginAndRegisterMessage": "Bạn phải đăng nhập để xem video. Bạn có thể tạo một tài khoản để xem nếu chưa có.", "Filter": "Lọc", - "VideoCourses": "Khóa học video" + "VideoCourses": "Khóa học video", + "TestimonialText": "Lời chứng thực của bạn", + "Position": "Chức vụ", + "ExperienceYear": "Số năm kinh nghiệm", + "FullName": "Họ và tên", + "CompanySize": "Quy mô công ty", + "Image": "Hình ảnh cá nhân của bạn", + "TestimonialTitle": "Hãy nghe lời chứng thực của bạn", + "TestimonialInfo": "Những gì khách hàng của chúng tôi nói là quan trọng! ", + "Country": "Quốc gia", + "TestimonialTextPlaceholder": "Viết một câu chuyện ngắn gọn về cách ABP đã giúp bạn xây dựng và thực hiện dự án của mình. ", + "PositionPlaceholder": "Vị trí của bạn tại công ty của bạn.", + "SelectExperienceYearPlaceholder": "Bạn đã làm việc trong lĩnh vực phần mềm được bao nhiêu năm", + "FullNamePlaceholder": "Tên đầy đủ của bạn.", + "CompanyNamePlaceholder": "Tên công ty của bạn.", + "SelectCompanySizePlaceholder": "Số nhân viên", + "ImagePlaceholder": "Hình ảnh của bạn.", + "SelectCountryPlaceholder": "Quốc gia của bạn.", + "YouAreNotAuthorizedToWriteTestimonial": "Để có thể viết thư chứng thực, bạn phải đăng nhập.", + "UnAuthorizeTestimonialInfo": "Nếu muốn chia sẻ quan điểm của mình, bạn phải đăng nhập", + "TheFileIsTooLargeForImage": "Ảnh hồ sơ của bạn không thể lớn hơn 1 MB", + "ThisExtensionIsNotAllowedForImage": "Phần mở rộng này không được phép.", + "FileUploadError": "Lỗi tải tập tin lên", + "TestimonialSend": "Cảm ơn! ", + "Title": "Tiêu đề", + "TitlePlaceholder": "Nhà phát triển phần mềm, CTO, v.v." } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json index f76f60eada..9e25dc66d4 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework 不仅仅是一个框架,它还是项目开发/管理的指南,因为它提供了 DDD、GenericRepository、DI、Microservice、Modularity 培训。即使你不打算使用框架本身,你也可以通过 docs.abp.io 进行自我开发,它为你提供了精心准备的专业培训。(OpenIddict、Redis、Quartz 等)。\n因为很多东西都是预置的,所以大大缩短了项目开发时间。(如登录页面、异常处理、数据过滤-播种、审计日志、本地化、自动 api 控制器等)。\n以我们的应用程序为例,我将本地事件总线用于库存控制。因此,我可以通过编写库存处理程序来管理订单的变动。\n创建时间、CreatorId 不会浪费时间,它们会自动填入。它们会自动填充。", "VideosLoginAndRegisterMessage": "您必须登录后才能观看视频。如果您还没有注册,可以创建一个账户进行观看。", "Filter": "筛选", - "VideoCourses": "视频课程" + "VideoCourses": "视频课程", + "TestimonialText": "您的感言", + "Position": "位置", + "ExperienceYear": "多年经验", + "FullName": "全名", + "CompanySize": "公司规模", + "Image": "你的头像", + "TestimonialTitle": "让我们听听您的感言", + "TestimonialInfo": "客户的评价很重要!", + "Country": "国家", + "TestimonialTextPlaceholder": "写一个关于 ABP 如何帮助您构建和交付项目的简短故事。 ", + "PositionPlaceholder": "您在公司的职位。", + "SelectExperienceYearPlaceholder": "你从事软件工作多少年了", + "FullNamePlaceholder": "你的全名。", + "CompanyNamePlaceholder": "你的公司名称。", + "SelectCompanySizePlaceholder": "员工人数", + "ImagePlaceholder": "你的形象。", + "SelectCountryPlaceholder": "你的国家。", + "YouAreNotAuthorizedToWriteTestimonial": "为了能够撰写推荐信,您必须登录。", + "UnAuthorizeTestimonialInfo": "如果您想分享您的意见,您必须 登入", + "TheFileIsTooLargeForImage": "您的个人资料图片不能超过 1 MB", + "ThisExtensionIsNotAllowedForImage": "不允许此扩展。", + "FileUploadError": "文件上传错误", + "TestimonialSend": "谢谢你!", + "Title": "标题", + "TitlePlaceholder": "软件开发人员、CTO等" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json index 19d109f8b4..39f9ad78a3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json @@ -440,6 +440,31 @@ "Index_Page_Testimonial_2": "ABP Framework不只是一個框架,它也是專案開發/管理的指南,因為它提供了DDD、GenericRepository、DI、Microservice、Modularity培訓。即使您不打算使用框架本身,您也可以使用經過充分專業準備的 docs.abp.io 進行開發。 (OpenIddict、Redis、Quartz 等) \n由於許多東西是預先建造的,因此它大大縮短了專案開發時間。 (例如登入頁面、異常處理、資料過濾播種、審核日誌記錄、本地化、自動 api 控制器等) \n作為我們應用程式的範例,我使用本地事件總線進行庫存控制。因此,我可以透過編寫庫存處理程序來管理訂單變更。 \n不浪費時間給CreationTime、CreatorId真是太好了。它們會自動填充。", "VideosLoginAndRegisterMessage": "您必須登入才能觀看影片。如果您還沒有,您可以建立手錶帳戶。", "Filter": "篩選", - "VideoCourses": "視訊課程" + "VideoCourses": "視訊課程", + "TestimonialText": "您的感言", + "Position": "位置", + "ExperienceYear": "多年经验", + "FullName": "全名", + "CompanySize": "公司规模", + "Image": "你的头像", + "TestimonialTitle": "让我们听听您的感言", + "TestimonialInfo": "客户的评价很重要!", + "Country": "国家", + "TestimonialTextPlaceholder": "写一个关于 ABP 如何帮助您构建和交付项目的简短故事。 ", + "PositionPlaceholder": "您在公司的职位。", + "SelectExperienceYearPlaceholder": "你从事软件工作多少年了", + "FullNamePlaceholder": "你的全名。", + "CompanyNamePlaceholder": "你的公司名称。", + "SelectCompanySizePlaceholder": "员工人数", + "ImagePlaceholder": "你的形象。", + "SelectCountryPlaceholder": "你的国家。", + "YouAreNotAuthorizedToWriteTestimonial": "为了能够撰写推荐信,您必须登录。", + "UnAuthorizeTestimonialInfo": "如果您想分享您的意见,您必须 登入", + "TheFileIsTooLargeForImage": "您的个人资料图片不能超过 1 MB", + "ThisExtensionIsNotAllowedForImage": "不允许此扩展。", + "FileUploadError": "文件上传错误", + "TestimonialSend": "谢谢你!", + "Title": "标题", + "TitlePlaceholder": "软件开发人员、CTO等" } } \ No newline at end of file From ea2a3e184ed7c09e7f72387748dcb2c176e959fb Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 5 Jan 2024 16:24:27 +0800 Subject: [PATCH 40/88] Update `fontawesome-free` to `6.5.1`. --- npm/packs/font-awesome/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index af4d0795ea..5fa268e58c 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@abp/core": "~8.0.1", - "@fortawesome/fontawesome-free": "^5.15.4" + "@fortawesome/fontawesome-free": "^6.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431", "homepage": "https://abp.io", From 7834bbcc20ad626237e4bc61a036bfa686bbf810 Mon Sep 17 00:00:00 2001 From: honurbu Date: Fri, 5 Jan 2024 11:25:56 +0300 Subject: [PATCH 41/88] characters added localization --- .../AbpIoLocalization/Www/Localization/Resources/ar.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/cs.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/de.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/en.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/es.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/fi.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/fr.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/hi.json | 9 ++------- .../AbpIoLocalization/Www/Localization/Resources/hr.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/hu.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/is.json | 4 ++-- .../AbpIoLocalization/Www/Localization/Resources/it.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/nl.json | 3 ++- .../Www/Localization/Resources/pl-PL.json | 3 ++- .../Www/Localization/Resources/pt-BR.json | 3 ++- .../Www/Localization/Resources/ro-RO.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/ru.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/sk.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/sl.json | 3 ++- .../AbpIoLocalization/Www/Localization/Resources/tr.json | 5 +++-- .../AbpIoLocalization/Www/Localization/Resources/vi.json | 3 ++- .../Www/Localization/Resources/zh-Hans.json | 3 ++- .../Www/Localization/Resources/zh-Hant.json | 3 ++- 23 files changed, 47 insertions(+), 31 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json index 47fe8ac6bc..a2d2b8cf8f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json @@ -465,6 +465,7 @@ "FileUploadError": "خطأ في تحميل الملف", "TestimonialSend": "شكرًا لك! لقد تلقينا شهادتك. سنقوم بمراجعتها واتخاذ الخطوة التالية قريبًا.", "Title": "العنوان", - "TitlePlaceholder": "مطور برامج، مدير تكنولوجيا المعلومات، إلخ." + "TitlePlaceholder": "مطور برامج، مدير تكنولوجيا المعلومات، إلخ.", + "Characters": "الأحرف" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json index 38fa8fa187..1a1a6889bd 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json @@ -465,6 +465,7 @@ "FileUploadError": "Chyba při nahrávání souboru", "TestimonialSend": "Děkujeme! Obdrželi jsme vaše svědectví. Brzy to zkontrolujeme a přijmeme další kroky.", "Title": "Titul", - "TitlePlaceholder": "Vývojář softwaru, CTO atd." + "TitlePlaceholder": "Vývojář softwaru, CTO atd.", + "Characters": "znaky" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json index 9f009fd08d..b688e305b8 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json @@ -465,6 +465,7 @@ "FileUploadError": "Fehler beim Hochladen der Datei", "TestimonialSend": "Vielen Dank! Wir haben Ihre Bewertung erhalten. Wir werden sie bald überprüfen und den nächsten Schritt unternehmen.", "Title": "Titel", - "TitlePlaceholder": "Softwareentwickler, CTO usw." + "TitlePlaceholder": "Softwareentwickler, CTO usw.", + "Characters": "zeichen" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index 48f516a014..64f168025f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -465,7 +465,8 @@ "FileUploadError": "File upload error", "TestimonialSend": "Thank you! We've received your testimonial. We'll review and take the next step soon.", "Title": "Title", - "TitlePlaceholder": "Software Developer, CTO etc." + "TitlePlaceholder": "Software Developer, CTO etc.", + "Characters": "characters" } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json index 14bd956288..296f0f3fca 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json @@ -465,6 +465,7 @@ "FileUploadError": "Error al cargar el archivo", "TestimonialSend": "¡Gracias! Hemos recibido tu testimonio. Lo revisaremos y daremos el próximo paso pronto.", "Title": "Título", - "TitlePlaceholder": "Desarrollador de software, CTO, etc." + "TitlePlaceholder": "Desarrollador de software, CTO, etc.", + "Characters": "caracteres" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json index 4129dc20fe..7fb1933492 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json @@ -465,6 +465,7 @@ "FileUploadError": "Tiedoston latausvirhe", "TestimonialSend": "Kiitos! Olemme vastaanottaneet arvostelusi. Käymme sen läpi ja otamme seuraavan askeleen pian.", "Title": "Titteli", - "TitlePlaceholder": "Ohjelmistokehittäjä, CTO, jne." + "TitlePlaceholder": "Ohjelmistokehittäjä, CTO, jne.", + "Characters": "hahmot" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json index 2b6de34bf6..3f7094f7c3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json @@ -465,6 +465,7 @@ "FileUploadError": "Erreur lors du téléchargement du fichier", "TestimonialSend": "Merci ! Nous avons bien reçu votre témoignage. Nous le passerons en revue et prendrons la prochaine étape bientôt.", "Title": "Titre", - "TitlePlaceholder": "Développeur de logiciels, CTO, etc." + "TitlePlaceholder": "Développeur de logiciels, CTO, etc.", + "Characters": "caractères" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json index f5135ac09e..0583b964fe 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json @@ -465,12 +465,7 @@ "FileUploadError": "फ़ाइल अपलोड की गई में त्रुटि", "TestimonialSend": "धन्यवाद! हमने आपका साक्षात्कार प्राप्त किया है। हम इसे समीक्षा करेंगे और शीघ्र अगला कदम उठाएंगे।", "Title": "शीर्षक", - "TitlePlaceholder": "सॉफ़्टवेयर डेवेलपर, सीटीओ, आदि।" - - - - - - + "TitlePlaceholder": "सॉफ़्टवेयर डेवेलपर, सीटीओ, आदि।", + "Characters": "अक्षर" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json index c1cd6839d1..22b68e666e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json @@ -465,6 +465,7 @@ "FileUploadError": "Pogreška prilikom prijenosa datoteke", "TestimonialSend": "Hvala vam! Primili smo vašu preporuku. Provjerit ćemo je i uskoro poduzeti sljedeći korak.", "Title": "Naslov", - "TitlePlaceholder": "Razvojni inženjer, CTO, itd." + "TitlePlaceholder": "Razvojni inženjer, CTO, itd.", + "Characters": "znakovi" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json index 096e1da58a..034d7a1586 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json @@ -465,6 +465,7 @@ "FileUploadError": "Hiba történt a fájl feltöltése közben", "TestimonialSend": "Köszönjük! Megkaptuk az ajánlásod. Hamarosan átnézzük és következő lépéseket teszünk.", "Title": "Cím", - "TitlePlaceholder": "Szoftvertervező, CTO, stb." + "TitlePlaceholder": "Szoftvertervező, CTO, stb.", + "Characters": "karakterek" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json index 21317eff9f..792ee570f3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json @@ -465,7 +465,7 @@ "FileUploadError": "Villa við upphleðslu skráar", "TestimonialSend": "Þakka þér! Við höfum fengið viðmiðuna þína. Við munum fara yfir hana fljótt og taka næsta skref.", "Title": "Titill", - "TitlePlaceholder": "Hugbúnaðarþróunarmiðill, CTO o.s.frv." - + "TitlePlaceholder": "Hugbúnaðarþróunarmiðill, CTO o.s.frv.", + "Characters": "stafir" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json index 8c1258841c..9837795811 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json @@ -465,6 +465,7 @@ "FileUploadError": "Errore nel caricamento del file", "TestimonialSend": "Grazie! ", "Title": "Titolo", - "TitlePlaceholder": "Sviluppatore di software, CTO ecc." + "TitlePlaceholder": "Sviluppatore di software, CTO ecc.", + "Characters": "caratteri" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json index 48851a5e74..561a7ffb77 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json @@ -465,6 +465,7 @@ "FileUploadError": "Fout bij het uploaden van bestanden", "TestimonialSend": "Bedankt! ", "Title": "Titel", - "TitlePlaceholder": "Softwareontwikkelaar, CTO enz." + "TitlePlaceholder": "Softwareontwikkelaar, CTO enz.", + "Characters": "tekens" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json index 1219af6824..45b748b3fc 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json @@ -465,6 +465,7 @@ "FileUploadError": "Błąd przesyłania pliku", "TestimonialSend": "Dziękuję! ", "Title": "Tytuł", - "TitlePlaceholder": "Programista, CTO itp." + "TitlePlaceholder": "Programista, CTO itp.", + "Characters": "znaki" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json index eb2dbe0853..d62286808a 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json @@ -465,6 +465,7 @@ "FileUploadError": "Erro no upload do arquivo", "TestimonialSend": "Obrigado! ", "Title": "Título", - "TitlePlaceholder": "Desenvolvedor de software, CTO etc." + "TitlePlaceholder": "Desenvolvedor de software, CTO etc.", + "Characters": "caracteres" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json index a90ff5d730..ba5f957669 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json @@ -465,6 +465,7 @@ "FileUploadError": "Eroare de încărcare a fișierului", "TestimonialSend": "Mulțumesc! ", "Title": "Titlu", - "TitlePlaceholder": "Dezvoltator software, CTO etc." + "TitlePlaceholder": "Dezvoltator software, CTO etc.", + "Characters": "caractere" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json index 81410b1c70..294ee0dc08 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json @@ -463,6 +463,7 @@ "FileUploadError": "Ошибка загрузки файла", "TestimonialSend": "Спасибо! ", "Title": "Заголовок", - "TitlePlaceholder": "Разработчик программного обеспечения, технический директор и т. д." + "TitlePlaceholder": "Разработчик программного обеспечения, технический директор и т. д.", + "Characters": "Символы" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json index 85e7e143c2..e95a37822e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json @@ -465,6 +465,7 @@ "FileUploadError": "Chyba pri nahrávaní súboru", "TestimonialSend": "Ďakujem! ", "Title": "Názov", - "TitlePlaceholder": "Vývojár softvéru, CTO atď." + "TitlePlaceholder": "Vývojár softvéru, CTO atď.", + "Characters": "znaky" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json index 7aea82f83e..ebb5c21bb7 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json @@ -465,6 +465,7 @@ "FileUploadError": "Napaka pri nalaganju datoteke", "TestimonialSend": "Hvala vam! ", "Title": "Naslov", - "TitlePlaceholder": "Razvijalec programske opreme, tehnični direktor itd." + "TitlePlaceholder": "Razvijalec programske opreme, tehnični direktor itd.", + "Characters": "znaki" } } \ 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 3c3793f24f..62ffe46311 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json @@ -303,7 +303,7 @@ "Back": "Geri", "SeeMore": "Daha fazla göster", "DetailsOfTheEBook": "E-kitap detayları", - "JoinOurMarketingNewsletter": "Pazarlama bültenimize katılın", + "JoinOurMarketingNewsletter": "Pazarlama bültenimize katılın", "FrameworkNewsletterConfirmationMessage": "Şartlar ve Koşulları ve Gizlilik Politikasını kabul ediyorum.", "GetYourFreeEBook": "Ücretsiz DDD E-kitabınızı Alın ", "EverythingYouNeedToKnow": "Bilmeniz gereken her şey", @@ -411,6 +411,7 @@ "FileUploadError": "Dosya yükleme hatası", "TestimonialSend": "Referansınızı paylaştığınız için teşekkürler!", "Title": "Başlık", - "TitlePlaceholder": "Yazılım Geliştiricisi, CTO vb." + "TitlePlaceholder": "Yazılım Geliştiricisi, CTO vb.", + "Characters": "karakter" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json index f3c3140515..5aa031264a 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json @@ -465,6 +465,7 @@ "FileUploadError": "Lỗi tải tập tin lên", "TestimonialSend": "Cảm ơn! ", "Title": "Tiêu đề", - "TitlePlaceholder": "Nhà phát triển phần mềm, CTO, v.v." + "TitlePlaceholder": "Nhà phát triển phần mềm, CTO, v.v.", + "Characters": "Ký tự" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json index 9e25dc66d4..f87df01e64 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json @@ -465,6 +465,7 @@ "FileUploadError": "文件上传错误", "TestimonialSend": "谢谢你!", "Title": "标题", - "TitlePlaceholder": "软件开发人员、CTO等" + "TitlePlaceholder": "软件开发人员、CTO等", + "Characters": "字符" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json index 39f9ad78a3..8b1ee79f73 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json @@ -465,6 +465,7 @@ "FileUploadError": "文件上传错误", "TestimonialSend": "谢谢你!", "Title": "标题", - "TitlePlaceholder": "软件开发人员、CTO等" + "TitlePlaceholder": "软件开发人员、CTO等", + "Characters": "字符" } } \ No newline at end of file From f7469dc6674b583c74204e8d9c03ce658f1b28bb Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 5 Jan 2024 17:07:30 +0800 Subject: [PATCH 42/88] Don't return child permission if parent is not enabled --- .../PermissionManagement/PermissionAppService.cs | 5 +++++ .../PermissionAppService_Tests.cs | 16 ++++++++++++++-- .../TestPermissionDefinitionProvider.cs | 13 ++++++++++++- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs index 2e4fe86906..ef056918c8 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs @@ -57,6 +57,11 @@ public class PermissionAppService : ApplicationService, IPermissionAppService foreach (var permission in permissions) { + if(permission.Parent != null && !neededCheckPermissions.Contains(permission.Parent)) + { + continue; + } + if (await SimpleStateCheckerManager.IsEnabledAsync(permission)) { neededCheckPermissions.Add(permission); diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs index c10c17d900..52a68f60d3 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs @@ -42,12 +42,24 @@ public class PermissionAppService_Tests : AbpPermissionManagementApplicationTest permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission4"); permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyPermission5"); + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyPermission5.ChildPermission1"); using (_currentPrincipalAccessor.Change(new Claim(AbpClaimTypes.Role, "super-admin"))) { - (await _permissionAppService.GetAsync(UserPermissionValueProvider.ProviderName, PermissionTestDataBuilder.User1Id.ToString())).Groups.First().Permissions - .ShouldContain(x => x.Name == "MyPermission5"); + var result = await _permissionAppService.GetAsync(UserPermissionValueProvider.ProviderName, PermissionTestDataBuilder.User1Id.ToString()); + result.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission5"); + result.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission5.ChildPermission1"); } + + permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission6"); + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyPermission6.ChildDisabledPermission1"); + permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission6.ChildPermission2"); + + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission1"); + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2"); + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2.ChildPermission1"); + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2.ChildPermission2"); + permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2.ChildPermission2.ChildPermission1"); } [Fact] diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs index bc56df742e..55d034ad61 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs @@ -19,6 +19,17 @@ public class TestPermissionDefinitionProvider : PermissionDefinitionProvider testGroup.AddPermission("MyPermission4", multiTenancySide: MultiTenancySides.Host).WithProviders(UserPermissionValueProvider.ProviderName); - testGroup.AddPermission("MyPermission5").StateCheckers.Add(new TestRequireRolePermissionStateProvider("super-admin")); + var myPermission5 = testGroup.AddPermission("MyPermission5"); + myPermission5.StateCheckers.Add(new TestRequireRolePermissionStateProvider("super-admin")); + myPermission5.AddChild("MyPermission5.ChildPermission1"); + + var myPermission6 = testGroup.AddPermission("MyPermission6"); + myPermission6.AddChild("MyPermission6.ChildDisabledPermission1", isEnabled: false); + myPermission6.AddChild("MyPermission6.ChildPermission2"); + + var myDisabledPermission2 = testGroup.AddPermission("MyDisabledPermission2", isEnabled: false); + myDisabledPermission2.AddChild("MyDisabledPermission2.ChildPermission1"); + var myDisabledPermission2Child2 = myDisabledPermission2.AddChild("MyDisabledPermission2.ChildPermission2"); + myDisabledPermission2Child2.AddChild("MyDisabledPermission2.ChildPermission2.ChildPermission1"); } } From ca29b8837fc7516bf2bb1aca59ee3182c1d5177c Mon Sep 17 00:00:00 2001 From: MorosM Date: Fri, 5 Jan 2024 17:54:17 +0800 Subject: [PATCH 43/88] update cn_s version tutorial --- docs/zh-Hans/Tutorials/Part-10.md | 114 ++++++++++++------------ docs/zh-Hans/Tutorials/Part-4.md | 76 +++++++++++----- docs/zh-Hans/Tutorials/Part-8.md | 139 +++++++++++++++++++----------- 3 files changed, 199 insertions(+), 130 deletions(-) diff --git a/docs/zh-Hans/Tutorials/Part-10.md b/docs/zh-Hans/Tutorials/Part-10.md index da5c23c78f..1ea5f4673f 100644 --- a/docs/zh-Hans/Tutorials/Part-10.md +++ b/docs/zh-Hans/Tutorials/Part-10.md @@ -622,79 +622,79 @@ using System.Threading.Tasks; using Acme.BookStore.Authors; using Shouldly; using Volo.Abp.Application.Dtos; +using Volo.Abp.Modularity; using Volo.Abp.Validation; using Xunit; -namespace Acme.BookStore.Books -{ {{if DB=="Mongo"}} - [Collection(BookStoreTestConsts.CollectionDefinitionName)]{{end}} - public class BookAppService_Tests : BookStoreApplicationTestBase +namespace Acme.BookStore.Books; + +public abstract class BookAppService_Tests : BookStoreApplicationTestBase + where TStartupModule : IAbpModule +{ + private readonly IBookAppService _bookAppService; + private readonly IAuthorAppService _authorAppService; + + protected BookAppService_Tests() { - private readonly IBookAppService _bookAppService; - private readonly IAuthorAppService _authorAppService; + _bookAppService = GetRequiredService(); + _authorAppService = GetRequiredService(); + } - public BookAppService_Tests() - { - _bookAppService = GetRequiredService(); - _authorAppService = GetRequiredService(); - } + [Fact] + public async Task Should_Get_List_Of_Books() + { + //Act + var result = await _bookAppService.GetListAsync( + new PagedAndSortedResultRequestDto() + ); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(b => b.Name == "1984" && + b.AuthorName == "George Orwell"); + } - [Fact] - public async Task Should_Get_List_Of_Books() - { - //Act - var result = await _bookAppService.GetListAsync( - new PagedAndSortedResultRequestDto() - ); + [Fact] + public async Task Should_Create_A_Valid_Book() + { + var authors = await _authorAppService.GetListAsync(new GetAuthorListDto()); + var firstAuthor = authors.Items.First(); - //Assert - result.TotalCount.ShouldBeGreaterThan(0); - result.Items.ShouldContain(b => b.Name == "1984" && - b.AuthorName == "George Orwell"); - } + //Act + var result = await _bookAppService.CreateAsync( + new CreateUpdateBookDto + { + AuthorId = firstAuthor.Id, + Name = "New test book 42", + Price = 10, + PublishDate = System.DateTime.Now, + Type = BookType.ScienceFiction + } + ); - [Fact] - public async Task Should_Create_A_Valid_Book() - { - var authors = await _authorAppService.GetListAsync(new GetAuthorListDto()); - var firstAuthor = authors.Items.First(); + //Assert + result.Id.ShouldNotBe(Guid.Empty); + result.Name.ShouldBe("New test book 42"); + } - //Act - var result = await _bookAppService.CreateAsync( + [Fact] + public async Task Should_Not_Create_A_Book_Without_Name() + { + var exception = await Assert.ThrowsAsync(async () => + { + await _bookAppService.CreateAsync( new CreateUpdateBookDto { - AuthorId = firstAuthor.Id, - Name = "New test book 42", + Name = "", Price = 10, - PublishDate = System.DateTime.Now, + PublishDate = DateTime.Now, Type = BookType.ScienceFiction } ); + }); - //Assert - result.Id.ShouldNotBe(Guid.Empty); - result.Name.ShouldBe("New test book 42"); - } - - [Fact] - public async Task Should_Not_Create_A_Book_Without_Name() - { - var exception = await Assert.ThrowsAsync(async () => - { - await _bookAppService.CreateAsync( - new CreateUpdateBookDto - { - Name = "", - Price = 10, - PublishDate = DateTime.Now, - Type = BookType.ScienceFiction - } - ); - }); - - exception.ValidationErrors - .ShouldContain(err => err.MemberNames.Any(m => m == "Name")); - } + exception.ValidationErrors + .ShouldContain(err => err.MemberNames.Any(m => m == "Name")); } } ``` diff --git a/docs/zh-Hans/Tutorials/Part-4.md b/docs/zh-Hans/Tutorials/Part-4.md index 75b108cf8b..94976c7a23 100644 --- a/docs/zh-Hans/Tutorials/Part-4.md +++ b/docs/zh-Hans/Tutorials/Part-4.md @@ -85,36 +85,70 @@ using System.Linq; using System.Threading.Tasks; using Shouldly; using Volo.Abp.Application.Dtos; +using Volo.Abp.Modularity; using Volo.Abp.Validation; using Xunit; -namespace Acme.BookStore.Books -{ {{if DB=="Mongo"}} - [Collection(BookStoreTestConsts.CollectionDefinitionName)]{{end}} - public class BookAppService_Tests : BookStoreApplicationTestBase - { - private readonly IBookAppService _bookAppService; +namespace Acme.BookStore.Books; - public BookAppService_Tests() - { - _bookAppService = GetRequiredService(); - } +public abstract class BookAppService_Tests : BookStoreApplicationTestBase + where TStartupModule : IAbpModule +{ + private readonly IBookAppService _bookAppService; - [Fact] - public async Task Should_Get_List_Of_Books() - { - //Act - var result = await _bookAppService.GetListAsync( - new PagedAndSortedResultRequestDto() - ); + protected BookAppService_Tests() + { + _bookAppService = GetRequiredService(); + } - //Assert - result.TotalCount.ShouldBeGreaterThan(0); - result.Items.ShouldContain(b => b.Name == "1984"); - } + [Fact] + public async Task Should_Get_List_Of_Books() + { + //Act + var result = await _bookAppService.GetListAsync( + new PagedAndSortedResultRequestDto() + ); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(b => b.Name == "1984"); } } ```` +{{if DB == "EF"}} +添加 `BookAppService_Tests` 的实现类,命名为 `EfCoreBookAppService_Tests` ,并放置在 `EntityFrameworkCore\Applications\Books` 命名空间 (文件夹)下,在 `Acme.BookStore.EntityFrameworkCore.Tests` 项目中: + +````csharp +using Acme.BookStore.Books; +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore.Applications.Books; + +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class EfCoreBookAppService_Tests : BookAppService_Tests +{ + +} +```` +{{end}} + +{{if DB == "Mongo"}} +添加 `BookAppService_Tests` 的实现类,命名为`MongoDBBookAppService_Tests` ,并放置在 `MongoDb\Applications\Books` 命名空间 (文件夹)下,在 `Acme.BookStore.MongoDB.Tests` 项目中: + +````csharp +using Acme.BookStore.MongoDB; +using Acme.BookStore.Books; +using Xunit; + +namespace Acme.BookStore.MongoDb.Applications.Books; + +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class MongoDBBookAppService_Tests : BookAppService_Tests +{ + +} +```` +{{end}} * 测试方法 `Should_Get_List_Of_Books` 直接使用 `BookAppService.GetListAsync` 方法来获取用户列表,并执行检查. * 我们可以安全地检查 "1984" 这本书的名称,因为我们知道这本书可以在数据库中找到,我们已将其添加到种子数据中. diff --git a/docs/zh-Hans/Tutorials/Part-8.md b/docs/zh-Hans/Tutorials/Part-8.md index 5c58d1b524..2c12aa1f78 100644 --- a/docs/zh-Hans/Tutorials/Part-8.md +++ b/docs/zh-Hans/Tutorials/Part-8.md @@ -497,77 +497,112 @@ namespace Acme.BookStore using System; using System.Threading.Tasks; using Shouldly; +using Volo.Abp.Modularity; using Xunit; -namespace Acme.BookStore.Authors -{ {{if DB=="Mongo"}} - [Collection(BookStoreTestConsts.CollectionDefinitionName)]{{end}} - public class AuthorAppService_Tests : BookStoreApplicationTestBase +namespace Acme.BookStore.Authors; + +public abstract class AuthorAppService_Tests : BookStoreApplicationTestBase + where TStartupModule : IAbpModule +{ + private readonly IAuthorAppService _authorAppService; + + protected AuthorAppService_Tests() { - private readonly IAuthorAppService _authorAppService; + _authorAppService = GetRequiredService(); + } - public AuthorAppService_Tests() - { - _authorAppService = GetRequiredService(); - } + [Fact] + public async Task Should_Get_All_Authors_Without_Any_Filter() + { + var result = await _authorAppService.GetListAsync(new GetAuthorListDto()); - [Fact] - public async Task Should_Get_All_Authors_Without_Any_Filter() - { - var result = await _authorAppService.GetListAsync(new GetAuthorListDto()); + result.TotalCount.ShouldBeGreaterThanOrEqualTo(2); + result.Items.ShouldContain(author => author.Name == "George Orwell"); + result.Items.ShouldContain(author => author.Name == "Douglas Adams"); + } - result.TotalCount.ShouldBeGreaterThanOrEqualTo(2); - result.Items.ShouldContain(author => author.Name == "George Orwell"); - result.Items.ShouldContain(author => author.Name == "Douglas Adams"); - } + [Fact] + public async Task Should_Get_Filtered_Authors() + { + var result = await _authorAppService.GetListAsync( + new GetAuthorListDto {Filter = "George"}); - [Fact] - public async Task Should_Get_Filtered_Authors() - { - var result = await _authorAppService.GetListAsync( - new GetAuthorListDto {Filter = "George"}); + result.TotalCount.ShouldBeGreaterThanOrEqualTo(1); + result.Items.ShouldContain(author => author.Name == "George Orwell"); + result.Items.ShouldNotContain(author => author.Name == "Douglas Adams"); + } - result.TotalCount.ShouldBeGreaterThanOrEqualTo(1); - result.Items.ShouldContain(author => author.Name == "George Orwell"); - result.Items.ShouldNotContain(author => author.Name == "Douglas Adams"); - } + [Fact] + public async Task Should_Create_A_New_Author() + { + var authorDto = await _authorAppService.CreateAsync( + new CreateAuthorDto + { + Name = "Edward Bellamy", + BirthDate = new DateTime(1850, 05, 22), + ShortBio = "Edward Bellamy was an American author..." + } + ); + + authorDto.Id.ShouldNotBe(Guid.Empty); + authorDto.Name.ShouldBe("Edward Bellamy"); + } - [Fact] - public async Task Should_Create_A_New_Author() + [Fact] + public async Task Should_Not_Allow_To_Create_Duplicate_Author() + { + await Assert.ThrowsAsync(async () => { - var authorDto = await _authorAppService.CreateAsync( + await _authorAppService.CreateAsync( new CreateAuthorDto { - Name = "Edward Bellamy", - BirthDate = new DateTime(1850, 05, 22), - ShortBio = "Edward Bellamy was an American author..." + Name = "Douglas Adams", + BirthDate = DateTime.Now, + ShortBio = "..." } ); + }); + } - authorDto.Id.ShouldNotBe(Guid.Empty); - authorDto.Name.ShouldBe("Edward Bellamy"); - } + //TODO: Test other methods... +} +```` - [Fact] - public async Task Should_Not_Allow_To_Create_Duplicate_Author() - { - await Assert.ThrowsAsync(async () => - { - await _authorAppService.CreateAsync( - new CreateAuthorDto - { - Name = "Douglas Adams", - BirthDate = DateTime.Now, - ShortBio = "..." - } - ); - }); - } +{{if DB == "EF"}} +添加 `AuthorAppService_Tests` 的实现类,命名为 `EfCoreAuthorAppService_Tests` ,并放置在 `EntityFrameworkCore\Applications\Authors` 命名空间 (文件夹)下,在 `Acme.BookStore.EntityFrameworkCore.Tests` 项目中: + +````csharp +using Acme.BookStore.Authors; +using Xunit; + +namespace Acme.BookStore.EntityFrameworkCore.Applications.Authors; + +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class EfCoreAuthorAppService_Tests : AuthorAppService_Tests +{ - //TODO: Test other methods... - } } ```` +{{end}} + +{{if DB == "Mongo"}} +添加 `AuthorAppService_Tests` 的实现类,命名为 `MongoDBAuthorAppService_Tests` ,并放置在 `MongoDb\Applications\Authors` 命名空间 (文件夹)下,在 `Acme.BookStore.MongoDB.Tests` 项目中: + +````csharp +using Acme.BookStore.MongoDB; +using Acme.BookStore.Authors; +using Xunit; + +namespace Acme.BookStore.MongoDb.Applications.Authors; + +[Collection(BookStoreTestConsts.CollectionDefinitionName)] +public class MongoDBAuthorAppService_Tests : AuthorAppService_Tests +{ + +} +```` +{{end}} 完成应用服务方法的测试, 它们应该很容易理解. From 693d4f95ea80bf384742f731ddf3ba98c770f942 Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 5 Jan 2024 16:12:10 +0300 Subject: [PATCH 44/88] Update localization --- .../Www/Localization/Resources/en.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index 64f168025f..7a0ac8a5cc 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -260,7 +260,7 @@ "TellUsAboutYourself": "Tell us a little bit about yourself", "Name": "Name", "Surname": "Surname", - "CompanyName": "Company Name", + "CompanyName": "Company name", "DoYouAgreePrivacyPolicy": "I agree to the Terms & Conditions and Privacy Policy.", "Free": "Free", "DDDEBook": "DDD E-Book", @@ -443,21 +443,21 @@ "VideoCourses": "Video Courses", "TestimonialText": "Your testimonial", "Position": "Position", - "ExperienceYear": "Years of Experience", - "FullName": "Full Name", - "CompanySize": "Company Size", + "ExperienceYear": "Years of experience", + "FullName": "Full name", + "CompanySize": "Company size", "Image": "Your profile picture", "TestimonialTitle": "Let's hear your testimonial", "TestimonialInfo": "What our customers say matters! Tell us about your experience with our product and service.", "Country": "Country", - "TestimonialTextPlaceholder": "Write a brief story about how ABP helped you build and deliver your project. ", - "PositionPlaceholder": "Your position at your company.", + "TestimonialTextPlaceholder": "Write a brief story about how ABP helped you build and deliver your project.", + "PositionPlaceholder": "Your position at your company", "SelectExperienceYearPlaceholder": "How many years have you been in software stuff", - "FullNamePlaceholder": "Your full name.", - "CompanyNamePlaceholder": "Your company name.", + "FullNamePlaceholder": "Your full name", + "CompanyNamePlaceholder": "Your company name", "SelectCompanySizePlaceholder": "Employee count", - "ImagePlaceholder": "Your image.", - "SelectCountryPlaceholder": "Your country.", + "ImagePlaceholder": "Your image", + "SelectCountryPlaceholder": "Your country", "YouAreNotAuthorizedToWriteTestimonial": "To be able to write testimonial letter, you must be sign in.", "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must be sign in", "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", From a348ecf88e80c59eb15f679a71c7ad0406153e0a Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 5 Jan 2024 17:40:00 +0300 Subject: [PATCH 45/88] Update localization --- .../Www/Localization/Resources/tr.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json index 62ffe46311..e5c0a4fa87 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json @@ -390,20 +390,20 @@ "TestimonialText": "Referans yazısı", "Position": "Ünvan", "ExperienceYear": "Sektörel deneyim", - "FullName": "Ad Soyad", + "FullName": "Ad soyad", "CompanySize": "Şirket büyüklüğü", "Image": "Profil resmi", "TestimonialTitle": "Referanslarınızı paylaşın", "TestimonialInfo": "Müşterilerimizin ne dediği önemlidir!", "Country": "Ülke", "TestimonialTextPlaceholder": "ABP'nin projenizi oluşturmanıza nasıl yardımcı olduğu hakkında kısa bir hikaye yazın.", - "PositionPlaceholder": "Şirketinizdeki pozisyonunuz.", + "PositionPlaceholder": "Şirketinizdeki pozisyonunuz", "SelectExperienceYearPlaceholder": "Yazılım sektöründe kaç yıllık tecrübeye sahipsiniz?", - "FullNamePlaceholder": "Tam adınız.", - "CompanyNamePlaceholder": "Şirketinizin ismi.", - "SelectCompanySizePlaceholder": "Şirketinizin çalışan sayısı.", - "ImagePlaceholder": "Profil resminiz.", - "SelectCountryPlaceholder": "Ülkeniz.", + "FullNamePlaceholder": "Tam adınız", + "CompanyNamePlaceholder": "Şirketinizin ismi", + "SelectCompanySizePlaceholder": "Şirketinizin çalışan sayısı", + "ImagePlaceholder": "Profil resminiz", + "SelectCountryPlaceholder": "Ülkeniz", "YouAreNotAuthorizedToWriteTestimonial": "Referans mektubu yazabilmek için giriş yapmalısınız.", "UnAuthorizeTestimonialInfo": "Fikrinizi paylaşmak istiyorsanız, giriş yapmalısınız", "TheFileIsTooLargeForImage": "Profil resminiz 1 MB'tan fazla olamaz.", From f7ecffa8bf3cb84a999dc8fc4e01f10e379d7969 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Fri, 5 Jan 2024 17:49:55 +0300 Subject: [PATCH 46/88] CLI: Should skip bundling for creating a custom module. --- .../Abp/Cli/ProjectModification/SolutionModuleAdder.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index ba85c48aeb..08152db2f8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -594,10 +594,11 @@ public class SolutionModuleAdder : ITransientDependency { var args = new CommandLineArgs("new", module.Name); - args.Options.Add("t", newProTemplate ? ModuleProTemplate.TemplateName : ModuleTemplate.TemplateName); - args.Options.Add("v", version); - args.Options.Add("o", Path.Combine(modulesFolderInSolution, module.Name)); - args.Options.Add("sib", true.ToString()); + args.Options.Add(ProjectCreationCommandBase.Options.Template.Short, newProTemplate ? ModuleProTemplate.TemplateName : ModuleTemplate.TemplateName); + args.Options.Add(ProjectCreationCommandBase.Options.Version.Short, version); + args.Options.Add(ProjectCreationCommandBase.Options.OutputFolder.Short, Path.Combine(modulesFolderInSolution, module.Name)); + args.Options.Add(ProjectCreationCommandBase.Options.SkipInstallingLibs.Short, true.ToString()); + args.Options.Add(ProjectCreationCommandBase.Options.SkipBundling.Long, true.ToString()); await NewCommand.ExecuteAsync(args); } From feb12239f7a6b7bd20a4f044b038b71c0817cfdf Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 5 Jan 2024 18:26:55 +0300 Subject: [PATCH 47/88] Update en.json --- .../AbpIoLocalization/Www/Localization/Resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index 7a0ac8a5cc..aaf588c3e3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Your image", "SelectCountryPlaceholder": "Your country", "YouAreNotAuthorizedToWriteTestimonial": "To be able to write testimonial letter, you must be sign in.", - "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must be sign in", + "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must login", "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", "ThisExtensionIsNotAllowedForImage": "This extension is not allowed.", "FileUploadError": "File upload error", From 79d364be11ff379290c0f120d6f023fee14f166c Mon Sep 17 00:00:00 2001 From: honurbu Date: Fri, 5 Jan 2024 19:23:25 +0300 Subject: [PATCH 48/88] Update en.json --- .../AbpIoLocalization/Www/Localization/Resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index aaf588c3e3..75afab9761 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -458,7 +458,7 @@ "SelectCompanySizePlaceholder": "Employee count", "ImagePlaceholder": "Your image", "SelectCountryPlaceholder": "Your country", - "YouAreNotAuthorizedToWriteTestimonial": "To be able to write testimonial letter, you must be sign in.", + "YouAreNotAuthorizedToWriteTestimonial": "Your opinion matters! Log in to share it.", "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must login", "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", "ThisExtensionIsNotAllowedForImage": "This extension is not allowed.", From ac920d2c86ec7d51792e18eefb59dde383447ca2 Mon Sep 17 00:00:00 2001 From: honurbu Date: Fri, 5 Jan 2024 19:27:42 +0300 Subject: [PATCH 49/88] Revert "Update en.json" This reverts commit 79d364be11ff379290c0f120d6f023fee14f166c. --- .../AbpIoLocalization/Www/Localization/Resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index 75afab9761..aaf588c3e3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -458,7 +458,7 @@ "SelectCompanySizePlaceholder": "Employee count", "ImagePlaceholder": "Your image", "SelectCountryPlaceholder": "Your country", - "YouAreNotAuthorizedToWriteTestimonial": "Your opinion matters! Log in to share it.", + "YouAreNotAuthorizedToWriteTestimonial": "To be able to write testimonial letter, you must be sign in.", "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must login", "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", "ThisExtensionIsNotAllowedForImage": "This extension is not allowed.", From 2eb7fa99cd6b10b7ed74a979ca708df3c4e830c9 Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 5 Jan 2024 19:30:25 +0300 Subject: [PATCH 50/88] Update en.json --- .../AbpIoLocalization/Www/Localization/Resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index aaf588c3e3..04e75f8614 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Your image", "SelectCountryPlaceholder": "Your country", "YouAreNotAuthorizedToWriteTestimonial": "To be able to write testimonial letter, you must be sign in.", - "UnAuthorizeTestimonialInfo": "If you want to share your opinion, you must login", + "UnAuthorizeTestimonialInfo": "Your opinion matters! Log in to share it.", "TheFileIsTooLargeForImage": "Your profile picture cannot be more than 1 MB", "ThisExtensionIsNotAllowedForImage": "This extension is not allowed.", "FileUploadError": "File upload error", From 477c0cb4ec6553bab1b5274b4985059ebf62e1ac Mon Sep 17 00:00:00 2001 From: honurbu Date: Fri, 5 Jan 2024 19:36:04 +0300 Subject: [PATCH 51/88] UnAuthorizeTestimonialInfo text changed --- .../AbpIoLocalization/Www/Localization/Resources/ar.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/cs.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/de.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/es.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/fi.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/fr.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/hi.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/hr.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/hu.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/is.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/it.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/nl.json | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json index a2d2b8cf8f..4cc00b6f2d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "صورتك.", "SelectCountryPlaceholder": "بلدك.", "YouAreNotAuthorizedToWriteTestimonial": "لا يُسمح لك بكتابة الشهادة إلا إذا قمت بتسجيل الدخول.", - "UnAuthorizeTestimonialInfo": "إذا كنت ترغب في مشاركة رأيك، يجب أن تكون قد قمت بتسجيل الدخول.", + "UnAuthorizeTestimonialInfo": "رأيك مهم! قم بتسجيل الدخول لمشاركته.", "TheFileIsTooLargeForImage": "لا يمكن أن تكون صورتك الشخصية أكبر من 1 ميغابايت.", "ThisExtensionIsNotAllowedForImage": "هذا الامتداد غير مسموح به.", "FileUploadError": "خطأ في تحميل الملف", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json index 1a1a6889bd..8ff0f3d0c9 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Vaše fotka.", "SelectCountryPlaceholder": "Vaše země.", "YouAreNotAuthorizedToWriteTestimonial": "Chcete-li napsat svědectví, musíte se přihlásit.", - "UnAuthorizeTestimonialInfo": "Chcete-li sdílet svůj názor, musíte být přihlášeni.", + "UnAuthorizeTestimonialInfo": "Vaše názor je důležitý! Přihlaste se pro sdílení.", "TheFileIsTooLargeForImage": "Vaše profilová fotografie nesmí být větší než 1 MB", "ThisExtensionIsNotAllowedForImage": "Tento typ souboru není povolen.", "FileUploadError": "Chyba při nahrávání souboru", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json index b688e305b8..fdeefe8878 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Ihr Bild.", "SelectCountryPlaceholder": "Ihr Land.", "YouAreNotAuthorizedToWriteTestimonial": "Um eine Bewertung zu schreiben, müssen Sie angemeldet sein.", - "UnAuthorizeTestimonialInfo": "Wenn Sie Ihre Meinung teilen möchten, müssen Sie sich anmelden.", + "UnAuthorizeTestimonialInfo": "Ihre Meinung ist wichtig! Melden Sie sich an, um sie zu teilen.", "TheFileIsTooLargeForImage": "Ihr Profilbild darf nicht größer als 1 MB sein.", "ThisExtensionIsNotAllowedForImage": "Diese Erweiterung ist nicht erlaubt.", "FileUploadError": "Fehler beim Hochladen der Datei", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json index 296f0f3fca..132a55f0ad 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Tu imagen.", "SelectCountryPlaceholder": "Tu país.", "YouAreNotAuthorizedToWriteTestimonial": "Para poder escribir un testimonio, debes iniciar sesión.", - "UnAuthorizeTestimonialInfo": "Si deseas compartir tu opinión, debes iniciar sesión.", + "UnAuthorizeTestimonialInfo": "¡Tu opinión es importante! Inicia sesión para compartirla.", "TheFileIsTooLargeForImage": "Tu foto de perfil no puede superar 1 MB.", "ThisExtensionIsNotAllowedForImage": "Esta extensión no está permitida.", "FileUploadError": "Error al cargar el archivo", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json index 7fb1933492..2332329155 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Kuvasi.", "SelectCountryPlaceholder": "Maasi.", "YouAreNotAuthorizedToWriteTestimonial": "Voit kirjoittaa arvostelun vain kirjautuneena sisään.", - "UnAuthorizeTestimonialInfo": "Jos haluat jakaa mielipiteesi, sinun on oltava kirjautunut sisään.", + "UnAuthorizeTestimonialInfo": "Mielipiteesi on tärkeä! Kirjaudu sisään jakaaaksesi sen.", "TheFileIsTooLargeForImage": "Profiilikuvasi ei saa olla yli 1 Mt.", "ThisExtensionIsNotAllowedForImage": "Tätä tiedostotyyppiä ei sallita.", "FileUploadError": "Tiedoston latausvirhe", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json index 3f7094f7c3..6d4378ea0b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Votre image.", "SelectCountryPlaceholder": "Votre pays.", "YouAreNotAuthorizedToWriteTestimonial": "Pour pouvoir écrire un témoignage, vous devez être connecté(e).", - "UnAuthorizeTestimonialInfo": "Si vous souhaitez partager votre avis, vous devez être connecté(e).", + "UnAuthorizeTestimonialInfo": "Votre avis compte ! Connectez-vous pour le partager.", "TheFileIsTooLargeForImage": "Votre photo de profil ne peut pas dépasser 1 Mo.", "ThisExtensionIsNotAllowedForImage": "Cette extension n'est pas autorisée.", "FileUploadError": "Erreur lors du téléchargement du fichier", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json index 0583b964fe..4cef58db12 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "आपकी छवि।", "SelectCountryPlaceholder": "आपका देश।", "YouAreNotAuthorizedToWriteTestimonial": "एक साक्षात्कार लिखने के लिए, आपको लॉग इन करना होगा।", - "UnAuthorizeTestimonialInfo": "अगर आप अपनी राय साझा करना चाहते हैं, तो आपको लॉग इन होना चाहिए।", + "UnAuthorizeTestimonialInfo": "आपकी राय महत्वपूर्ण है! इसे साझा करने के लिए लॉग इन करें।", "TheFileIsTooLargeForImage": "आपकी प्रोफ़ाइल तस्वीर 1 MB से अधिक नहीं हो सकती।", "ThisExtensionIsNotAllowedForImage": "यह एक्सटेंशन अनुमति नहीं है।", "FileUploadError": "फ़ाइल अपलोड की गई में त्रुटि", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json index 22b68e666e..6415bbd9eb 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Vaša slika.", "SelectCountryPlaceholder": "Vaša država.", "YouAreNotAuthorizedToWriteTestimonial": "Da biste mogli napisati preporuku, morate biti prijavljeni.", - "UnAuthorizeTestimonialInfo": "Ako želite podijeliti svoje mišljenje, morate biti prijavljeni.", + "UnAuthorizeTestimonialInfo": "Vaše mišljenje je važno! Prijavite se kako biste ga podijelili." "TheFileIsTooLargeForImage": "Vaša profilna slika ne smije biti veća od 1 MB.", "ThisExtensionIsNotAllowedForImage": "Ovo proširenje nije dopušteno.", "FileUploadError": "Pogreška prilikom prijenosa datoteke", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json index 034d7a1586..87d0f0c2fd 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Profilképed.", "SelectCountryPlaceholder": "Országod.", "YouAreNotAuthorizedToWriteTestimonial": "Ahhoz, hogy ajánlást írhass, be kell jelentkezned.", - "UnAuthorizeTestimonialInfo": "Ha meg szeretnéd osztani a véleményedet, be kell jelentkezned.", + "UnAuthorizeTestimonialInfo": "A véleménye számít! Jelentkezzen be, hogy megossza.", "TheFileIsTooLargeForImage": "A profilképed nem lehet nagyobb, mint 1 MB.", "ThisExtensionIsNotAllowedForImage": "Ez a kiterjesztés nem engedélyezett.", "FileUploadError": "Hiba történt a fájl feltöltése közben", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json index 792ee570f3..8f9d3ead04 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Prófílmynd þín.", "SelectCountryPlaceholder": "Landið þitt.", "YouAreNotAuthorizedToWriteTestimonial": "Til að geta skrifað viðmiðun, verður þú að skrá þig inn.", - "UnAuthorizeTestimonialInfo": "Ef þú vilt deila skoðun þinni, verður þú að skrá þig inn.", + "UnAuthorizeTestimonialInfo": "Þín skoðun er mikilvæg! Skráðu þig inn til að deila henni.", "TheFileIsTooLargeForImage": "Prófílmynd þín má ekki vera stærri en 1 MB.", "ThisExtensionIsNotAllowedForImage": "Þessi viðbót er ekki leyfð.", "FileUploadError": "Villa við upphleðslu skráar", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json index 9837795811..d1396d59fc 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "La tua immagine.", "SelectCountryPlaceholder": "Il tuo paese.", "YouAreNotAuthorizedToWriteTestimonial": "Per poter scrivere una lettera di testimonianza, devi effettuare l'accesso.", - "UnAuthorizeTestimonialInfo": "Se vuoi condividere la tua opinione, devi esserlo registrazione", + "UnAuthorizeTestimonialInfo": "La tua opinione conta! Accedi per condividerla.", "TheFileIsTooLargeForImage": "La tua immagine del profilo non può essere più di 1 MB", "ThisExtensionIsNotAllowedForImage": "Questa estensione non è consentita.", "FileUploadError": "Errore nel caricamento del file", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json index 561a7ffb77..4d50f0b0e2 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Jou foto.", "SelectCountryPlaceholder": "Jouw land.", "YouAreNotAuthorizedToWriteTestimonial": "Om een getuigenisbrief te kunnen schrijven, moet u ingelogd zijn.", - "UnAuthorizeTestimonialInfo": "Als u uw mening wilt delen, moet u dat doen Inloggen", + "UnAuthorizeTestimonialInfo": "Jouw mening is belangrijk! Log in om het te delen.", "TheFileIsTooLargeForImage": "Je profielfoto mag niet groter zijn dan 1 MB", "ThisExtensionIsNotAllowedForImage": "Deze verlenging is niet toegestaan.", "FileUploadError": "Fout bij het uploaden van bestanden", From 63eb04115d3a29760abe201689834b7a208125ba Mon Sep 17 00:00:00 2001 From: denizdemirkan Date: Fri, 5 Jan 2024 19:37:34 +0300 Subject: [PATCH 52/88] Update Localization --- .../AbpIoLocalization/Www/Localization/Resources/pl-PL.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/pt-BR.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/ro-RO.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/ru.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/sk.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/sl.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/tr.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/vi.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/zh-Hans.json | 2 +- .../AbpIoLocalization/Www/Localization/Resources/zh-Hant.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json index 45b748b3fc..ae3280373c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Twój obraz.", "SelectCountryPlaceholder": "Twój kraj.", "YouAreNotAuthorizedToWriteTestimonial": "Aby móc napisać list referencyjny, musisz się zalogować.", - "UnAuthorizeTestimonialInfo": "Jeśli chcesz podzielić się swoją opinią, musisz to zrobić zalogować się", + "UnAuthorizeTestimonialInfo": "Twoja opinia ma znaczenie. Zaloguj się, aby ją udostępnić.", "TheFileIsTooLargeForImage": "Twoje zdjęcie profilowe nie może przekraczać 1 MB", "ThisExtensionIsNotAllowedForImage": "To rozszerzenie jest niedozwolone.", "FileUploadError": "Błąd przesyłania pliku", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json index d62286808a..7cc714dd75 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Sua imagem.", "SelectCountryPlaceholder": "Seu país.", "YouAreNotAuthorizedToWriteTestimonial": "Para poder escrever uma carta de depoimento, você deve estar logado.", - "UnAuthorizeTestimonialInfo": "Se você quiser compartilhar sua opinião, você deve estar entrar", + "UnAuthorizeTestimonialInfo": "Sua opinião é importante, faça login para compartilhá-la.", "TheFileIsTooLargeForImage": "Sua foto de perfil não pode ter mais de 1 MB", "ThisExtensionIsNotAllowedForImage": "Esta extensão não é permitida.", "FileUploadError": "Erro no upload do arquivo", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json index ba5f957669..c0dd55092f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Imaginea ta.", "SelectCountryPlaceholder": "Tara ta.", "YouAreNotAuthorizedToWriteTestimonial": "Pentru a putea scrie o scrisoare de mărturie, trebuie să vă conectați.", - "UnAuthorizeTestimonialInfo": "Dacă vrei să-ți împărtășești părerea, trebuie să fii conectare", + "UnAuthorizeTestimonialInfo": "Părerea ta contează, conectează-te pentru a o împărtăși.", "TheFileIsTooLargeForImage": "Fotografia dvs. de profil nu poate depăși 1 MB", "ThisExtensionIsNotAllowedForImage": "Această extensie nu este permisă.", "FileUploadError": "Eroare de încărcare a fișierului", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json index 294ee0dc08..c2c325a12a 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json @@ -457,7 +457,7 @@ "ImagePlaceholder": "Ваш имидж.", "SelectCountryPlaceholder": "Твоя страна.", "YouAreNotAuthorizedToWriteTestimonial": "Чтобы иметь возможность написать рекомендательное письмо, вам необходимо войти в систему.", - "UnAuthorizeTestimonialInfo": "Если вы хотите поделиться своим мнением, вам необходимо быть войти", + "UnAuthorizeTestimonialInfo": "Ваше мнение имеет значение. Войдите, чтобы поделиться им.", "TheFileIsTooLargeForImage": "Размер изображения вашего профиля не может превышать 1 МБ.", "ThisExtensionIsNotAllowedForImage": "Это расширение не разрешено.", "FileUploadError": "Ошибка загрузки файла", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json index e95a37822e..2a94075c32 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Váš obraz.", "SelectCountryPlaceholder": "Tvoja krajina.", "YouAreNotAuthorizedToWriteTestimonial": "Aby ste mohli napísať posudkový list, musíte sa prihlásiť.", - "UnAuthorizeTestimonialInfo": "Ak sa chcete podeliť o svoj názor, musíte byť Prihlásiť sa", + "UnAuthorizeTestimonialInfo": "Váš názor je dôležitý! ", "TheFileIsTooLargeForImage": "Váš profilový obrázok nemôže byť väčší ako 1 MB", "ThisExtensionIsNotAllowedForImage": "Toto rozšírenie nie je povolené.", "FileUploadError": "Chyba pri nahrávaní súboru", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json index ebb5c21bb7..180099a255 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Vaša slika.", "SelectCountryPlaceholder": "Tvoja država.", "YouAreNotAuthorizedToWriteTestimonial": "Če želite napisati izjavno pismo, se morate prijaviti.", - "UnAuthorizeTestimonialInfo": "Če želite deliti svoje mnenje, morate biti Prijava", + "UnAuthorizeTestimonialInfo": "Vaše mnenje je pomembno! ", "TheFileIsTooLargeForImage": "Vaša profilna slika ne sme biti večja od 1 MB", "ThisExtensionIsNotAllowedForImage": "Ta razširitev ni dovoljena.", "FileUploadError": "Napaka pri nalaganju datoteke", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json index e5c0a4fa87..dda86e5931 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json @@ -405,7 +405,7 @@ "ImagePlaceholder": "Profil resminiz", "SelectCountryPlaceholder": "Ülkeniz", "YouAreNotAuthorizedToWriteTestimonial": "Referans mektubu yazabilmek için giriş yapmalısınız.", - "UnAuthorizeTestimonialInfo": "Fikrinizi paylaşmak istiyorsanız, giriş yapmalısınız", + "UnAuthorizeTestimonialInfo": "Fikriniz bizim için önemli! Paylaşmak için giriş yapınız.", "TheFileIsTooLargeForImage": "Profil resminiz 1 MB'tan fazla olamaz.", "ThisExtensionIsNotAllowedForImage": "Bu dosya uzantısınız izin verilmiyor.", "FileUploadError": "Dosya yükleme hatası", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json index 5aa031264a..f997c4d0c9 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Hình ảnh của bạn.", "SelectCountryPlaceholder": "Quốc gia của bạn.", "YouAreNotAuthorizedToWriteTestimonial": "Để có thể viết thư chứng thực, bạn phải đăng nhập.", - "UnAuthorizeTestimonialInfo": "Nếu muốn chia sẻ quan điểm của mình, bạn phải đăng nhập", + "UnAuthorizeTestimonialInfo": "Ý kiến của bạn rất quan trọng! ", "TheFileIsTooLargeForImage": "Ảnh hồ sơ của bạn không thể lớn hơn 1 MB", "ThisExtensionIsNotAllowedForImage": "Phần mở rộng này không được phép.", "FileUploadError": "Lỗi tải tập tin lên", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json index f87df01e64..163308d9cb 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "你的形象。", "SelectCountryPlaceholder": "你的国家。", "YouAreNotAuthorizedToWriteTestimonial": "为了能够撰写推荐信,您必须登录。", - "UnAuthorizeTestimonialInfo": "如果您想分享您的意见,您必须 登入", + "UnAuthorizeTestimonialInfo": "您的意见很重要,登录即可分享。", "TheFileIsTooLargeForImage": "您的个人资料图片不能超过 1 MB", "ThisExtensionIsNotAllowedForImage": "不允许此扩展。", "FileUploadError": "文件上传错误", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json index 8b1ee79f73..80a7132080 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "你的形象。", "SelectCountryPlaceholder": "你的国家。", "YouAreNotAuthorizedToWriteTestimonial": "为了能够撰写推荐信,您必须登录。", - "UnAuthorizeTestimonialInfo": "如果您想分享您的意见,您必须 登入", + "UnAuthorizeTestimonialInfo": "您的意见很重要,登录即可分享。", "TheFileIsTooLargeForImage": "您的个人资料图片不能超过 1 MB", "ThisExtensionIsNotAllowedForImage": "不允许此扩展。", "FileUploadError": "文件上传错误", From c36456f0a730efa96f060011d1f8d0a6c7d17a97 Mon Sep 17 00:00:00 2001 From: honurbu Date: Fri, 5 Jan 2024 19:39:31 +0300 Subject: [PATCH 53/88] Fixed hr.json --- .../AbpIoLocalization/Www/Localization/Resources/hr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json index 6415bbd9eb..a7ac8ad080 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json @@ -459,7 +459,7 @@ "ImagePlaceholder": "Vaša slika.", "SelectCountryPlaceholder": "Vaša država.", "YouAreNotAuthorizedToWriteTestimonial": "Da biste mogli napisati preporuku, morate biti prijavljeni.", - "UnAuthorizeTestimonialInfo": "Vaše mišljenje je važno! Prijavite se kako biste ga podijelili." + "UnAuthorizeTestimonialInfo": "Vaše mišljenje je važno! Prijavite se kako biste ga podijelili.", "TheFileIsTooLargeForImage": "Vaša profilna slika ne smije biti veća od 1 MB.", "ThisExtensionIsNotAllowedForImage": "Ovo proširenje nije dopušteno.", "FileUploadError": "Pogreška prilikom prijenosa datoteke", From b44c9e7f5a9cb7962c904c1fbebdaf5f85b9eb3d Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 8 Jan 2024 09:57:28 +0800 Subject: [PATCH 54/88] Make AbpDynamicFormTagHelperService methods virtual --- .../Form/AbpDynamicformTagHelperService.cs | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs index 5fc90eebd9..50e911074f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs @@ -22,11 +22,11 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; public class AbpDynamicFormTagHelperService : AbpTagHelperService { - private readonly HtmlEncoder _htmlEncoder; - private readonly IHtmlGenerator _htmlGenerator; - private readonly IServiceProvider _serviceProvider; - private readonly IStringLocalizer _localizer; - private List _models = new(); + protected HtmlEncoder HtmlEncoder { get; } + protected IHtmlGenerator HtmlGenerator { get; } + protected IServiceProvider _serviceProvider { get; } + protected IStringLocalizer Localizer { get; } + protected List Models = new(); public AbpDynamicFormTagHelperService( HtmlEncoder htmlEncoder, @@ -34,15 +34,15 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService localizer) { - _htmlEncoder = htmlEncoder; - _htmlGenerator = htmlGenerator; + HtmlEncoder = htmlEncoder; + HtmlGenerator = htmlGenerator; _serviceProvider = serviceProvider; - _localizer = localizer; + Localizer = localizer; } public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - _models = GetModels(context, output); + Models = GetModels(context, output); var list = InitilizeFormGroupContentsContext(context, output); NormalizeTagMode(context, output); @@ -64,7 +64,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService(); abpDateInputTagHelper.AspFor = model; @@ -199,7 +199,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService()!; @@ -223,13 +223,13 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService x.ModelExplorer).SingleOrDefault(x => x != model.ModelExplorer && x.GetAttribute()?.PickerId == pickerId); + otherModel = Models.Select(x => x.ModelExplorer).SingleOrDefault(x => x != model.ModelExplorer && x.GetAttribute()?.PickerId == pickerId); return otherModel != null; } - private static bool IsDateRangeGroup(ModelExplorer modelModelExplorer) + protected virtual bool IsDateRangeGroup(ModelExplorer modelModelExplorer) { return modelModelExplorer.GetAttribute() != null; } @@ -245,7 +245,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService(); var attributes = new TagHelperAttributeList { new TagHelperAttribute("type", "submit") }; - abpButtonTagHelper.Text = _localizer["Submit"]; + abpButtonTagHelper.Text = Localizer["Submit"]; abpButtonTagHelper.ButtonType = AbpButtonType.Primary; - return await abpButtonTagHelper.RenderAsync(attributes, context, _htmlEncoder, "button", TagMode.StartTagAndEndTag); + return await abpButtonTagHelper.RenderAsync(attributes, context, HtmlEncoder, "button", TagMode.StartTagAndEndTag); } protected virtual async Task ProcessInputGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model) @@ -293,7 +293,7 @@ public class AbpDynamicFormTagHelperService : AbpTagHelperService GetModels(TagHelperContext context, TagHelperOutput output) From c87dbebacf8d5cd50608ae4c1bbecc9c002b82cd Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 8 Jan 2024 11:02:27 +0800 Subject: [PATCH 55/88] Update `MaxDefaultValueLength` to 2048. https://support.abp.io/QA/Questions/6461 --- .../20230504122708_Initial.Designer.cs | 2352 ----------------- .../Migrations/20230504122708_Initial.cs | 1334 ---------- .../UnifiedDbContextModelSnapshot.cs | 2349 ---------------- ....cs => 20240108025651_Initial.Designer.cs} | 100 +- ...5_Initial.cs => 20240108025651_Initial.cs} | 88 +- .../ServerDbContextModelSnapshot.cs | 98 +- ....cs => 20240108025904_Initial.Designer.cs} | 22 +- ...0_Initial.cs => 20240108025904_Initial.cs} | 24 +- .../DemoAppDbContextModelSnapshot.cs | 20 +- .../SettingDefinitionRecordConsts.cs | 9 +- ....cs => 20240108025955_Initial.Designer.cs} | 34 +- ...9_Initial.cs => 20240108025955_Initial.cs} | 48 +- .../MyProjectNameDbContextModelSnapshot.cs | 32 +- ....cs => 20240108025957_Initial.Designer.cs} | 34 +- ...2_Initial.cs => 20240108025957_Initial.cs} | 48 +- .../MyProjectNameDbContextModelSnapshot.cs | 32 +- ....cs => 20240108025535_Initial.Designer.cs} | 34 +- ...7_Initial.cs => 20240108025535_Initial.cs} | 48 +- .../MyProjectNameDbContextModelSnapshot.cs | 32 +- ....cs => 20240108025941_Initial.Designer.cs} | 34 +- ...1_Initial.cs => 20240108025941_Initial.cs} | 48 +- .../MyProjectNameDbContextModelSnapshot.cs | 32 +- ....cs => 20240108025905_Initial.Designer.cs} | 36 +- ...9_Initial.cs => 20240108025905_Initial.cs} | 52 +- .../MyProjectNameDbContextModelSnapshot.cs | 34 +- ....cs => 20240108025948_Initial.Designer.cs} | 34 +- ...2_Initial.cs => 20240108025948_Initial.cs} | 48 +- .../AuthServerDbContextModelSnapshot.cs | 32 +- ....cs => 20240108025955_Initial.Designer.cs} | 26 +- ...6_Initial.cs => 20240108025955_Initial.cs} | 32 +- .../UnifiedDbContextModelSnapshot.cs | 24 +- ....cs => 20240108025302_Initial.Designer.cs} | 26 +- ...3_Initial.cs => 20240108025302_Initial.cs} | 32 +- .../UnifiedDbContextModelSnapshot.cs | 24 +- 34 files changed, 903 insertions(+), 6349 deletions(-) delete mode 100644 modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.Designer.cs delete mode 100644 modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.cs delete mode 100644 modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs rename modules/openiddict/app/OpenIddict.Demo.Server/Migrations/{20230404033745_Initial.Designer.cs => 20240108025651_Initial.Designer.cs} (94%) rename modules/openiddict/app/OpenIddict.Demo.Server/Migrations/{20230404033745_Initial.cs => 20240108025651_Initial.cs} (93%) rename modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/{20230713030300_Initial.Designer.cs => 20240108025904_Initial.Designer.cs} (98%) rename modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/{20230713030300_Initial.cs => 20240108025904_Initial.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20230713030359_Initial.Designer.cs => 20240108025955_Initial.Designer.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20230713030359_Initial.cs => 20240108025955_Initial.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/{20230713030712_Initial.Designer.cs => 20240108025957_Initial.Designer.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/{20230713030712_Initial.cs => 20240108025957_Initial.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/{20230713030357_Initial.Designer.cs => 20240108025535_Initial.Designer.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/{20230713030357_Initial.cs => 20240108025535_Initial.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/{20230713030711_Initial.Designer.cs => 20240108025941_Initial.Designer.cs} (98%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/{20230713030711_Initial.cs => 20240108025941_Initial.cs} (98%) rename templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/{20230713030629_Initial.Designer.cs => 20240108025905_Initial.Designer.cs} (98%) rename templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/{20230713030629_Initial.cs => 20240108025905_Initial.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/{20230713030452_Initial.Designer.cs => 20240108025948_Initial.Designer.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/{20230713030452_Initial.cs => 20240108025948_Initial.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/{20230713030436_Initial.Designer.cs => 20240108025955_Initial.Designer.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/{20230713030436_Initial.cs => 20240108025955_Initial.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/{20230713030513_Initial.Designer.cs => 20240108025302_Initial.Designer.cs} (98%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/{20230713030513_Initial.cs => 20240108025302_Initial.cs} (98%) diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.Designer.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.Designer.cs deleted file mode 100644 index e36098e684..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.Designer.cs +++ /dev/null @@ -1,2352 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Volo.Abp.EntityFrameworkCore; -using Volo.CmsKit.EntityFrameworkCore; - -#nullable disable - -namespace Volo.CmsKit.Migrations -{ - [DbContext(typeof(UnifiedDbContext))] - [Migration("20230504122708_Initial")] - partial class Initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ApplicationName") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)") - .HasColumnName("ApplicationName"); - - b.Property("BrowserInfo") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)") - .HasColumnName("BrowserInfo"); - - b.Property("ClientId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("ClientId"); - - b.Property("ClientIpAddress") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("ClientIpAddress"); - - b.Property("ClientName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("ClientName"); - - b.Property("Comments") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Comments"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CorrelationId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("CorrelationId"); - - b.Property("Exceptions") - .HasColumnType("nvarchar(max)"); - - b.Property("ExecutionDuration") - .HasColumnType("int") - .HasColumnName("ExecutionDuration"); - - b.Property("ExecutionTime") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("HttpMethod") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("HttpMethod"); - - b.Property("HttpStatusCode") - .HasColumnType("int") - .HasColumnName("HttpStatusCode"); - - b.Property("ImpersonatorTenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("ImpersonatorTenantId"); - - b.Property("ImpersonatorTenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("ImpersonatorTenantName"); - - b.Property("ImpersonatorUserId") - .HasColumnType("uniqueidentifier") - .HasColumnName("ImpersonatorUserId"); - - b.Property("ImpersonatorUserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("ImpersonatorUserName"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("TenantName"); - - b.Property("Url") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Url"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier") - .HasColumnName("UserId"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "ExecutionTime"); - - b.HasIndex("TenantId", "UserId", "ExecutionTime"); - - b.ToTable("AbpAuditLogs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AuditLogId") - .HasColumnType("uniqueidentifier") - .HasColumnName("AuditLogId"); - - b.Property("ExecutionDuration") - .HasColumnType("int") - .HasColumnName("ExecutionDuration"); - - b.Property("ExecutionTime") - .HasColumnType("datetime2") - .HasColumnName("ExecutionTime"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("MethodName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("MethodName"); - - b.Property("Parameters") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)") - .HasColumnName("Parameters"); - - b.Property("ServiceName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("ServiceName"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("AuditLogId"); - - b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); - - b.ToTable("AbpAuditLogActions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AuditLogId") - .HasColumnType("uniqueidentifier") - .HasColumnName("AuditLogId"); - - b.Property("ChangeTime") - .HasColumnType("datetime2") - .HasColumnName("ChangeTime"); - - b.Property("ChangeType") - .HasColumnType("tinyint") - .HasColumnName("ChangeType"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("EntityId"); - - b.Property("EntityTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("EntityTypeFullName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("EntityTypeFullName"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("AuditLogId"); - - b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); - - b.ToTable("AbpEntityChanges", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("EntityChangeId") - .HasColumnType("uniqueidentifier"); - - b.Property("NewValue") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)") - .HasColumnName("NewValue"); - - b.Property("OriginalValue") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)") - .HasColumnName("OriginalValue"); - - b.Property("PropertyName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("PropertyName"); - - b.Property("PropertyTypeFullName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("PropertyTypeFullName"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("EntityChangeId"); - - b.ToTable("AbpEntityPropertyChanges", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ContainerId") - .HasColumnType("uniqueidentifier"); - - b.Property("Content") - .HasMaxLength(2147483647) - .HasColumnType("varbinary(max)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("ContainerId"); - - b.HasIndex("TenantId", "ContainerId", "Name"); - - b.ToTable("AbpBlobs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name"); - - b.ToTable("AbpBlobContainers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AllowedProviders") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Description") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("GroupName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("IsAvailableToHost") - .HasColumnType("bit"); - - b.Property("IsVisibleToClients") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ParentName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ValueType") - .HasMaxLength(2048) - .HasColumnType("nvarchar(2048)"); - - b.HasKey("Id"); - - b.HasIndex("GroupName"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpFeatures", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpFeatureGroups", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - b.ToTable("AbpFeatureValues", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Description") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsStatic") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Regex") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("RegexDescription") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ValueType") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("AbpClaimTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("SourceTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("SourceUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("TargetTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("TargetUserId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") - .IsUnique() - .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); - - b.ToTable("AbpLinkUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDefault") - .HasColumnType("bit") - .HasColumnName("IsDefault"); - - b.Property("IsPublic") - .HasColumnType("bit") - .HasColumnName("IsPublic"); - - b.Property("IsStatic") - .HasColumnType("bit") - .HasColumnName("IsStatic"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("NormalizedName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName"); - - b.ToTable("AbpRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("ClaimType") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ClaimValue") - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AbpRoleClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Action") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("ApplicationName") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("BrowserInfo") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("ClientId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ClientIpAddress") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CorrelationId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("CreationTime") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Identity") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Action"); - - b.HasIndex("TenantId", "ApplicationName"); - - b.HasIndex("TenantId", "Identity"); - - b.HasIndex("TenantId", "UserId"); - - b.ToTable("AbpSecurityLogs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AccessFailedCount") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(0) - .HasColumnName("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Email"); - - b.Property("EmailConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("EmailConfirmed"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsActive") - .HasColumnType("bit") - .HasColumnName("IsActive"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsExternal") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsExternal"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("LastPasswordChangeTime") - .HasColumnType("datetimeoffset"); - - b.Property("LockoutEnabled") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("LockoutEnabled"); - - b.Property("LockoutEnd") - .HasColumnType("datetimeoffset"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Name"); - - b.Property("NormalizedEmail") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("NormalizedEmail"); - - b.Property("NormalizedUserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("NormalizedUserName"); - - b.Property("PasswordHash") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("PasswordHash"); - - b.Property("PhoneNumber") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("PhoneNumber"); - - b.Property("PhoneNumberConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("PhoneNumberConfirmed"); - - b.Property("SecurityStamp") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("SecurityStamp"); - - b.Property("ShouldChangePasswordOnNextLogin") - .HasColumnType("bit"); - - b.Property("Surname") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Surname"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TwoFactorEnabled") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("TwoFactorEnabled"); - - b.Property("UserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("Email"); - - b.HasIndex("NormalizedEmail"); - - b.HasIndex("NormalizedUserName"); - - b.HasIndex("UserName"); - - b.ToTable("AbpUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("ClaimType") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ClaimValue") - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AbpUserClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("EndTime") - .HasColumnType("datetime2"); - - b.Property("SourceUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("StartTime") - .HasColumnType("datetime2"); - - b.Property("TargetUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("AbpUserDelegations", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("LoginProvider") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderDisplayName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .IsRequired() - .HasMaxLength(196) - .HasColumnType("nvarchar(196)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("UserId", "LoginProvider"); - - b.HasIndex("LoginProvider", "ProviderKey"); - - b.ToTable("AbpUserLogins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => - { - b.Property("OrganizationUnitId") - .HasColumnType("uniqueidentifier"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("OrganizationUnitId", "UserId"); - - b.HasIndex("UserId", "OrganizationUnitId"); - - b.ToTable("AbpUserOrganizationUnits", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId", "UserId"); - - b.ToTable("AbpUserRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("LoginProvider") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Name") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Value") - .HasColumnType("nvarchar(max)"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AbpUserTokens", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Code") - .IsRequired() - .HasMaxLength(95) - .HasColumnType("nvarchar(95)") - .HasColumnName("Code"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("DisplayName"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("ParentId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("Code"); - - b.HasIndex("ParentId"); - - b.ToTable("AbpOrganizationUnits", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => - { - b.Property("OrganizationUnitId") - .HasColumnType("uniqueidentifier"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("OrganizationUnitId", "RoleId"); - - b.HasIndex("RoleId", "OrganizationUnitId"); - - b.ToTable("AbpOrganizationUnitRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("GroupName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("IsEnabled") - .HasColumnType("bit"); - - b.Property("MultiTenancySide") - .HasColumnType("tinyint"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ParentName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("StateCheckers") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("GroupName"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpPermissions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[TenantId] IS NOT NULL"); - - b.ToTable("AbpPermissionGrants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpPermissionGroups", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(2048) - .HasColumnType("nvarchar(2048)"); - - b.HasKey("Id"); - - b.HasIndex("Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - b.ToTable("AbpSettings", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.HasKey("Id"); - - b.HasIndex("Name"); - - b.ToTable("AbpTenants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => - { - b.Property("TenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.HasKey("TenantId", "Name"); - - b.ToTable("AbpTenantConnectionStrings", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.Blog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("CmsBlogs", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.BlogFeature", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("BlogId") - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("FeatureName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsEnabled") - .HasColumnType("bit"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.HasKey("Id"); - - b.ToTable("CmsBlogFeatures", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.BlogPost", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AuthorId") - .HasColumnType("uniqueidentifier"); - - b.Property("BlogId") - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Content") - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.Property("CoverImageMediaId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("ShortDescription") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.HasKey("Id"); - - b.HasIndex("AuthorId"); - - b.HasIndex("Slug", "BlogId"); - - b.ToTable("CmsBlogPosts", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Comments.Comment", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("RepliedCommentId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Text") - .IsRequired() - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("Url") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "RepliedCommentId"); - - b.HasIndex("TenantId", "EntityType", "EntityId"); - - b.ToTable("CmsComments", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.GlobalResources.GlobalResource", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("CmsGlobalResources", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.MediaDescriptors.MediaDescriptor", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("nvarchar(255)"); - - b.Property("Size") - .HasMaxLength(2147483647) - .HasColumnType("bigint"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("CmsMediaDescriptors", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("CssClass") - .HasColumnType("nvarchar(max)"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ElementId") - .HasColumnType("nvarchar(max)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Icon") - .HasColumnType("nvarchar(max)"); - - b.Property("IsActive") - .HasColumnType("bit"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Order") - .HasColumnType("int"); - - b.Property("PageId") - .HasColumnType("uniqueidentifier"); - - b.Property("ParentId") - .HasColumnType("uniqueidentifier"); - - b.Property("Target") - .HasColumnType("nvarchar(max)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Url") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.HasKey("Id"); - - b.ToTable("CmsMenuItems", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Pages.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Content") - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsHomePage") - .HasColumnType("bit"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Script") - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Style") - .HasColumnType("nvarchar(max)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Slug"); - - b.ToTable("CmsPages", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Ratings.Rating", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("StarCount") - .HasColumnType("smallint"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "EntityType", "EntityId", "CreatorId"); - - b.ToTable("CmsRatings", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Reactions.UserReaction", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ReactionName") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("nvarchar(32)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "EntityType", "EntityId", "ReactionName"); - - b.HasIndex("TenantId", "CreatorId", "EntityType", "EntityId", "ReactionName"); - - b.ToTable("CmsUserReactions", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Tags.EntityTag", b => - { - b.Property("EntityId") - .HasColumnType("nvarchar(450)"); - - b.Property("TagId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("EntityId", "TagId"); - - b.HasIndex("TenantId", "EntityId", "TagId"); - - b.ToTable("CmsEntityTags", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Tags.Tag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("nvarchar(32)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name"); - - b.ToTable("CmsTags", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Users.CmsUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Email"); - - b.Property("EmailConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("EmailConfirmed"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsActive") - .HasColumnType("bit") - .HasColumnName("IsActive"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Name"); - - b.Property("PhoneNumber") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("PhoneNumber"); - - b.Property("PhoneNumberConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("PhoneNumberConfirmed"); - - b.Property("Surname") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Surname"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Email"); - - b.HasIndex("TenantId", "UserName"); - - b.ToTable("CmsUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => - { - b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) - .WithMany("Actions") - .HasForeignKey("AuditLogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => - { - b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) - .WithMany("EntityChanges") - .HasForeignKey("AuditLogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => - { - b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) - .WithMany("PropertyChanges") - .HasForeignKey("EntityChangeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => - { - b.HasOne("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", null) - .WithMany() - .HasForeignKey("ContainerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => - { - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany("Claims") - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Claims") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Logins") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany() - .HasForeignKey("OrganizationUnitId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("OrganizationUnits") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => - { - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Roles") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Tokens") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany() - .HasForeignKey("ParentId"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany("Roles") - .HasForeignKey("OrganizationUnitId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => - { - b.HasOne("Volo.Abp.TenantManagement.Tenant", null) - .WithMany("ConnectionStrings") - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.BlogPost", b => - { - b.HasOne("Volo.CmsKit.Users.CmsUser", "Author") - .WithMany() - .HasForeignKey("AuthorId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Author"); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => - { - b.Navigation("Actions"); - - b.Navigation("EntityChanges"); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => - { - b.Navigation("PropertyChanges"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => - { - b.Navigation("Claims"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => - { - b.Navigation("Claims"); - - b.Navigation("Logins"); - - b.Navigation("OrganizationUnits"); - - b.Navigation("Roles"); - - b.Navigation("Tokens"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => - { - b.Navigation("ConnectionStrings"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.cs deleted file mode 100644 index 052650df63..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20230504122708_Initial.cs +++ /dev/null @@ -1,1334 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Volo.CmsKit.Migrations -{ - /// - public partial class Initial : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AbpAuditLogs", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), - UserId = table.Column(type: "uniqueidentifier", nullable: true), - UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ImpersonatorUserId = table.Column(type: "uniqueidentifier", nullable: true), - ImpersonatorUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - ImpersonatorTenantId = table.Column(type: "uniqueidentifier", nullable: true), - ImpersonatorTenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ExecutionTime = table.Column(type: "datetime2", nullable: false), - ExecutionDuration = table.Column(type: "int", nullable: false), - ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ClientName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), - ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - HttpMethod = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), - Url = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - Exceptions = table.Column(type: "nvarchar(max)", nullable: true), - Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - HttpStatusCode = table.Column(type: "int", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpBlobContainers", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpBlobContainers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpClaimTypes", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Required = table.Column(type: "bit", nullable: false), - IsStatic = table.Column(type: "bit", nullable: false), - Regex = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), - Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpFeatureGroups", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpFeatureGroups", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpFeatures", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), - DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - IsVisibleToClients = table.Column(type: "bit", nullable: false), - IsAvailableToHost = table.Column(type: "bit", nullable: false), - AllowedProviders = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - ValueType = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpFeatures", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpFeatureValues", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - Value = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpLinkUsers", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), - SourceTenantId = table.Column(type: "uniqueidentifier", nullable: true), - TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), - TargetTenantId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpLinkUsers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpOrganizationUnits", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ParentId = table.Column(type: "uniqueidentifier", nullable: true), - Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), - DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpOrganizationUnits", x => x.Id); - table.ForeignKey( - name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId", - column: x => x.ParentId, - principalTable: "AbpOrganizationUnits", - principalColumn: "Id"); - }); - - migrationBuilder.CreateTable( - name: "AbpPermissionGrants", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpPermissionGroups", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpPermissionGroups", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpPermissions", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), - DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - IsEnabled = table.Column(type: "bit", nullable: false), - MultiTenancySide = table.Column(type: "tinyint", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), - StateCheckers = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpPermissions", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpRoles", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - IsDefault = table.Column(type: "bit", nullable: false), - IsStatic = table.Column(type: "bit", nullable: false), - IsPublic = table.Column(type: "bit", nullable: false), - EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpRoles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpSecurityLogs", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), - Identity = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), - Action = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), - UserId = table.Column(type: "uniqueidentifier", nullable: true), - UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpSettings", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - Value = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: false), - ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpSettings", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpTenants", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpTenants", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpUserDelegations", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), - TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), - StartTime = table.Column(type: "datetime2", nullable: false), - EndTime = table.Column(type: "datetime2", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUserDelegations", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpUsers", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - Surname = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - EmailConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), - PasswordHash = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - SecurityStamp = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - IsExternal = table.Column(type: "bit", nullable: false, defaultValue: false), - PhoneNumber = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), - PhoneNumberConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), - IsActive = table.Column(type: "bit", nullable: false), - TwoFactorEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), - LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), - LockoutEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), - AccessFailedCount = table.Column(type: "int", nullable: false, defaultValue: 0), - ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), - EntityVersion = table.Column(type: "int", nullable: false), - LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUsers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsBlogFeatures", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - BlogId = table.Column(type: "uniqueidentifier", nullable: false), - FeatureName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - IsEnabled = table.Column(type: "bit", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsBlogFeatures", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsBlogs", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Slug = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsBlogs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsComments", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - EntityId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Text = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: false), - RepliedCommentId = table.Column(type: "uniqueidentifier", nullable: true), - CreatorId = table.Column(type: "uniqueidentifier", nullable: false), - CreationTime = table.Column(type: "datetime2", nullable: false), - Url = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsComments", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsEntityTags", - columns: table => new - { - TagId = table.Column(type: "uniqueidentifier", nullable: false), - EntityId = table.Column(type: "nvarchar(450)", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsEntityTags", x => new { x.EntityId, x.TagId }); - }); - - migrationBuilder.CreateTable( - name: "CmsGlobalResources", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - Value = table.Column(type: "nvarchar(max)", maxLength: 2147483647, nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsGlobalResources", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsMediaDescriptors", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Name = table.Column(type: "nvarchar(255)", maxLength: 255, nullable: false), - MimeType = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - Size = table.Column(type: "bigint", maxLength: 2147483647, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsMediaDescriptors", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsMenuItems", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ParentId = table.Column(type: "uniqueidentifier", nullable: true), - DisplayName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - IsActive = table.Column(type: "bit", nullable: false), - Url = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: false), - Icon = table.Column(type: "nvarchar(max)", nullable: true), - Order = table.Column(type: "int", nullable: false), - Target = table.Column(type: "nvarchar(max)", nullable: true), - ElementId = table.Column(type: "nvarchar(max)", nullable: true), - CssClass = table.Column(type: "nvarchar(max)", nullable: true), - PageId = table.Column(type: "uniqueidentifier", nullable: true), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsMenuItems", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsPages", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - Title = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Slug = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Content = table.Column(type: "nvarchar(max)", maxLength: 2147483647, nullable: true), - Script = table.Column(type: "nvarchar(max)", nullable: true), - Style = table.Column(type: "nvarchar(max)", nullable: true), - IsHomePage = table.Column(type: "bit", nullable: false), - EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsPages", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsRatings", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - EntityId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - StarCount = table.Column(type: "smallint", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: false), - CreationTime = table.Column(type: "datetime2", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsRatings", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsTags", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Name = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsTags", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsUserReactions", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityType = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - EntityId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - ReactionName = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: false), - CreationTime = table.Column(type: "datetime2", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsUserReactions", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CmsUsers", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - Surname = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - IsActive = table.Column(type: "bit", nullable: false), - EmailConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), - PhoneNumber = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), - PhoneNumberConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsUsers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "AbpAuditLogActions", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), - ServiceName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - MethodName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), - Parameters = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - ExecutionTime = table.Column(type: "datetime2", nullable: false), - ExecutionDuration = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); - table.ForeignKey( - name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", - column: x => x.AuditLogId, - principalTable: "AbpAuditLogs", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpEntityChanges", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ChangeTime = table.Column(type: "datetime2", nullable: false), - ChangeType = table.Column(type: "tinyint", nullable: false), - EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); - table.ForeignKey( - name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", - column: x => x.AuditLogId, - principalTable: "AbpAuditLogs", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpBlobs", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ContainerId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - Content = table.Column(type: "varbinary(max)", maxLength: 2147483647, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpBlobs", x => x.Id); - table.ForeignKey( - name: "FK_AbpBlobs_AbpBlobContainers_ContainerId", - column: x => x.ContainerId, - principalTable: "AbpBlobContainers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpOrganizationUnitRoles", - columns: table => new - { - RoleId = table.Column(type: "uniqueidentifier", nullable: false), - OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpOrganizationUnitRoles", x => new { x.OrganizationUnitId, x.RoleId }); - table.ForeignKey( - name: "FK_AbpOrganizationUnitRoles_AbpOrganizationUnits_OrganizationUnitId", - column: x => x.OrganizationUnitId, - principalTable: "AbpOrganizationUnits", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_AbpOrganizationUnitRoles_AbpRoles_RoleId", - column: x => x.RoleId, - principalTable: "AbpRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpRoleClaims", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - RoleId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpRoleClaims", x => x.Id); - table.ForeignKey( - name: "FK_AbpRoleClaims_AbpRoles_RoleId", - column: x => x.RoleId, - principalTable: "AbpRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpTenantConnectionStrings", - columns: table => new - { - TenantId = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Value = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpTenantConnectionStrings", x => new { x.TenantId, x.Name }); - table.ForeignKey( - name: "FK_AbpTenantConnectionStrings_AbpTenants_TenantId", - column: x => x.TenantId, - principalTable: "AbpTenants", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpUserClaims", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - UserId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUserClaims", x => x.Id); - table.ForeignKey( - name: "FK_AbpUserClaims_AbpUsers_UserId", - column: x => x.UserId, - principalTable: "AbpUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpUserLogins", - columns: table => new - { - UserId = table.Column(type: "uniqueidentifier", nullable: false), - LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - ProviderKey = table.Column(type: "nvarchar(196)", maxLength: 196, nullable: false), - ProviderDisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUserLogins", x => new { x.UserId, x.LoginProvider }); - table.ForeignKey( - name: "FK_AbpUserLogins_AbpUsers_UserId", - column: x => x.UserId, - principalTable: "AbpUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpUserOrganizationUnits", - columns: table => new - { - UserId = table.Column(type: "uniqueidentifier", nullable: false), - OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUserOrganizationUnits", x => new { x.OrganizationUnitId, x.UserId }); - table.ForeignKey( - name: "FK_AbpUserOrganizationUnits_AbpOrganizationUnits_OrganizationUnitId", - column: x => x.OrganizationUnitId, - principalTable: "AbpOrganizationUnits", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_AbpUserOrganizationUnits_AbpUsers_UserId", - column: x => x.UserId, - principalTable: "AbpUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpUserRoles", - columns: table => new - { - UserId = table.Column(type: "uniqueidentifier", nullable: false), - RoleId = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUserRoles", x => new { x.UserId, x.RoleId }); - table.ForeignKey( - name: "FK_AbpUserRoles_AbpRoles_RoleId", - column: x => x.RoleId, - principalTable: "AbpRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_AbpUserRoles_AbpUsers_UserId", - column: x => x.UserId, - principalTable: "AbpUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpUserTokens", - columns: table => new - { - UserId = table.Column(type: "uniqueidentifier", nullable: false), - LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - Value = table.Column(type: "nvarchar(max)", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); - table.ForeignKey( - name: "FK_AbpUserTokens_AbpUsers_UserId", - column: x => x.UserId, - principalTable: "AbpUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CmsBlogPosts", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - BlogId = table.Column(type: "uniqueidentifier", nullable: false), - Title = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), - Slug = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), - ShortDescription = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), - Content = table.Column(type: "nvarchar(max)", maxLength: 2147483647, nullable: true), - CoverImageMediaId = table.Column(type: "uniqueidentifier", nullable: true), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - AuthorId = table.Column(type: "uniqueidentifier", nullable: false), - Status = table.Column(type: "int", nullable: false), - EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CmsBlogPosts", x => x.Id); - table.ForeignKey( - name: "FK_CmsBlogPosts_CmsUsers_AuthorId", - column: x => x.AuthorId, - principalTable: "CmsUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "AbpEntityPropertyChanges", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - TenantId = table.Column(type: "uniqueidentifier", nullable: true), - EntityChangeId = table.Column(type: "uniqueidentifier", nullable: false), - NewValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - OriginalValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - PropertyName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), - PropertyTypeFullName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); - table.ForeignKey( - name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", - column: x => x.EntityChangeId, - principalTable: "AbpEntityChanges", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_AbpAuditLogActions_AuditLogId", - table: "AbpAuditLogActions", - column: "AuditLogId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_ExecutionTime", - table: "AbpAuditLogActions", - columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpAuditLogs_TenantId_ExecutionTime", - table: "AbpAuditLogs", - columns: new[] { "TenantId", "ExecutionTime" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", - table: "AbpAuditLogs", - columns: new[] { "TenantId", "UserId", "ExecutionTime" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpBlobContainers_TenantId_Name", - table: "AbpBlobContainers", - columns: new[] { "TenantId", "Name" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpBlobs_ContainerId", - table: "AbpBlobs", - column: "ContainerId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpBlobs_TenantId_ContainerId_Name", - table: "AbpBlobs", - columns: new[] { "TenantId", "ContainerId", "Name" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpEntityChanges_AuditLogId", - table: "AbpEntityChanges", - column: "AuditLogId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", - table: "AbpEntityChanges", - columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpEntityPropertyChanges_EntityChangeId", - table: "AbpEntityPropertyChanges", - column: "EntityChangeId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpFeatureGroups_Name", - table: "AbpFeatureGroups", - column: "Name", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AbpFeatures_GroupName", - table: "AbpFeatures", - column: "GroupName"); - - migrationBuilder.CreateIndex( - name: "IX_AbpFeatures_Name", - table: "AbpFeatures", - column: "Name", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", - table: "AbpFeatureValues", - columns: new[] { "Name", "ProviderName", "ProviderKey" }, - unique: true, - filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "IX_AbpLinkUsers_SourceUserId_SourceTenantId_TargetUserId_TargetTenantId", - table: "AbpLinkUsers", - columns: new[] { "SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId" }, - unique: true, - filter: "[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", - table: "AbpOrganizationUnitRoles", - columns: new[] { "RoleId", "OrganizationUnitId" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpOrganizationUnits_Code", - table: "AbpOrganizationUnits", - column: "Code"); - - migrationBuilder.CreateIndex( - name: "IX_AbpOrganizationUnits_ParentId", - table: "AbpOrganizationUnits", - column: "ParentId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpPermissionGrants_TenantId_Name_ProviderName_ProviderKey", - table: "AbpPermissionGrants", - columns: new[] { "TenantId", "Name", "ProviderName", "ProviderKey" }, - unique: true, - filter: "[TenantId] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "IX_AbpPermissionGroups_Name", - table: "AbpPermissionGroups", - column: "Name", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AbpPermissions_GroupName", - table: "AbpPermissions", - column: "GroupName"); - - migrationBuilder.CreateIndex( - name: "IX_AbpPermissions_Name", - table: "AbpPermissions", - column: "Name", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AbpRoleClaims_RoleId", - table: "AbpRoleClaims", - column: "RoleId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpRoles_NormalizedName", - table: "AbpRoles", - column: "NormalizedName"); - - migrationBuilder.CreateIndex( - name: "IX_AbpSecurityLogs_TenantId_Action", - table: "AbpSecurityLogs", - columns: new[] { "TenantId", "Action" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpSecurityLogs_TenantId_ApplicationName", - table: "AbpSecurityLogs", - columns: new[] { "TenantId", "ApplicationName" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpSecurityLogs_TenantId_Identity", - table: "AbpSecurityLogs", - columns: new[] { "TenantId", "Identity" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpSecurityLogs_TenantId_UserId", - table: "AbpSecurityLogs", - columns: new[] { "TenantId", "UserId" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpSettings_Name_ProviderName_ProviderKey", - table: "AbpSettings", - columns: new[] { "Name", "ProviderName", "ProviderKey" }, - unique: true, - filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - migrationBuilder.CreateIndex( - name: "IX_AbpTenants_Name", - table: "AbpTenants", - column: "Name"); - - migrationBuilder.CreateIndex( - name: "IX_AbpUserClaims_UserId", - table: "AbpUserClaims", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_AbpUserLogins_LoginProvider_ProviderKey", - table: "AbpUserLogins", - columns: new[] { "LoginProvider", "ProviderKey" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpUserOrganizationUnits_UserId_OrganizationUnitId", - table: "AbpUserOrganizationUnits", - columns: new[] { "UserId", "OrganizationUnitId" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpUserRoles_RoleId_UserId", - table: "AbpUserRoles", - columns: new[] { "RoleId", "UserId" }); - - migrationBuilder.CreateIndex( - name: "IX_AbpUsers_Email", - table: "AbpUsers", - column: "Email"); - - migrationBuilder.CreateIndex( - name: "IX_AbpUsers_NormalizedEmail", - table: "AbpUsers", - column: "NormalizedEmail"); - - migrationBuilder.CreateIndex( - name: "IX_AbpUsers_NormalizedUserName", - table: "AbpUsers", - column: "NormalizedUserName"); - - migrationBuilder.CreateIndex( - name: "IX_AbpUsers_UserName", - table: "AbpUsers", - column: "UserName"); - - migrationBuilder.CreateIndex( - name: "IX_CmsBlogPosts_AuthorId", - table: "CmsBlogPosts", - column: "AuthorId"); - - migrationBuilder.CreateIndex( - name: "IX_CmsBlogPosts_Slug_BlogId", - table: "CmsBlogPosts", - columns: new[] { "Slug", "BlogId" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsComments_TenantId_EntityType_EntityId", - table: "CmsComments", - columns: new[] { "TenantId", "EntityType", "EntityId" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsComments_TenantId_RepliedCommentId", - table: "CmsComments", - columns: new[] { "TenantId", "RepliedCommentId" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsEntityTags_TenantId_EntityId_TagId", - table: "CmsEntityTags", - columns: new[] { "TenantId", "EntityId", "TagId" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsPages_TenantId_Slug", - table: "CmsPages", - columns: new[] { "TenantId", "Slug" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsRatings_TenantId_EntityType_EntityId_CreatorId", - table: "CmsRatings", - columns: new[] { "TenantId", "EntityType", "EntityId", "CreatorId" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsTags_TenantId_Name", - table: "CmsTags", - columns: new[] { "TenantId", "Name" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsUserReactions_TenantId_CreatorId_EntityType_EntityId_ReactionName", - table: "CmsUserReactions", - columns: new[] { "TenantId", "CreatorId", "EntityType", "EntityId", "ReactionName" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsUserReactions_TenantId_EntityType_EntityId_ReactionName", - table: "CmsUserReactions", - columns: new[] { "TenantId", "EntityType", "EntityId", "ReactionName" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsUsers_TenantId_Email", - table: "CmsUsers", - columns: new[] { "TenantId", "Email" }); - - migrationBuilder.CreateIndex( - name: "IX_CmsUsers_TenantId_UserName", - table: "CmsUsers", - columns: new[] { "TenantId", "UserName" }); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "AbpAuditLogActions"); - - migrationBuilder.DropTable( - name: "AbpBlobs"); - - migrationBuilder.DropTable( - name: "AbpClaimTypes"); - - migrationBuilder.DropTable( - name: "AbpEntityPropertyChanges"); - - migrationBuilder.DropTable( - name: "AbpFeatureGroups"); - - migrationBuilder.DropTable( - name: "AbpFeatures"); - - migrationBuilder.DropTable( - name: "AbpFeatureValues"); - - migrationBuilder.DropTable( - name: "AbpLinkUsers"); - - migrationBuilder.DropTable( - name: "AbpOrganizationUnitRoles"); - - migrationBuilder.DropTable( - name: "AbpPermissionGrants"); - - migrationBuilder.DropTable( - name: "AbpPermissionGroups"); - - migrationBuilder.DropTable( - name: "AbpPermissions"); - - migrationBuilder.DropTable( - name: "AbpRoleClaims"); - - migrationBuilder.DropTable( - name: "AbpSecurityLogs"); - - migrationBuilder.DropTable( - name: "AbpSettings"); - - migrationBuilder.DropTable( - name: "AbpTenantConnectionStrings"); - - migrationBuilder.DropTable( - name: "AbpUserClaims"); - - migrationBuilder.DropTable( - name: "AbpUserDelegations"); - - migrationBuilder.DropTable( - name: "AbpUserLogins"); - - migrationBuilder.DropTable( - name: "AbpUserOrganizationUnits"); - - migrationBuilder.DropTable( - name: "AbpUserRoles"); - - migrationBuilder.DropTable( - name: "AbpUserTokens"); - - migrationBuilder.DropTable( - name: "CmsBlogFeatures"); - - migrationBuilder.DropTable( - name: "CmsBlogPosts"); - - migrationBuilder.DropTable( - name: "CmsBlogs"); - - migrationBuilder.DropTable( - name: "CmsComments"); - - migrationBuilder.DropTable( - name: "CmsEntityTags"); - - migrationBuilder.DropTable( - name: "CmsGlobalResources"); - - migrationBuilder.DropTable( - name: "CmsMediaDescriptors"); - - migrationBuilder.DropTable( - name: "CmsMenuItems"); - - migrationBuilder.DropTable( - name: "CmsPages"); - - migrationBuilder.DropTable( - name: "CmsRatings"); - - migrationBuilder.DropTable( - name: "CmsTags"); - - migrationBuilder.DropTable( - name: "CmsUserReactions"); - - migrationBuilder.DropTable( - name: "AbpBlobContainers"); - - migrationBuilder.DropTable( - name: "AbpEntityChanges"); - - migrationBuilder.DropTable( - name: "AbpTenants"); - - migrationBuilder.DropTable( - name: "AbpOrganizationUnits"); - - migrationBuilder.DropTable( - name: "AbpRoles"); - - migrationBuilder.DropTable( - name: "AbpUsers"); - - migrationBuilder.DropTable( - name: "CmsUsers"); - - migrationBuilder.DropTable( - name: "AbpAuditLogs"); - } - } -} diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs deleted file mode 100644 index b94883ec0b..0000000000 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs +++ /dev/null @@ -1,2349 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Volo.Abp.EntityFrameworkCore; -using Volo.CmsKit.EntityFrameworkCore; - -#nullable disable - -namespace Volo.CmsKit.Migrations -{ - [DbContext(typeof(UnifiedDbContext))] - partial class UnifiedDbContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ApplicationName") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)") - .HasColumnName("ApplicationName"); - - b.Property("BrowserInfo") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)") - .HasColumnName("BrowserInfo"); - - b.Property("ClientId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("ClientId"); - - b.Property("ClientIpAddress") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("ClientIpAddress"); - - b.Property("ClientName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("ClientName"); - - b.Property("Comments") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Comments"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CorrelationId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("CorrelationId"); - - b.Property("Exceptions") - .HasColumnType("nvarchar(max)"); - - b.Property("ExecutionDuration") - .HasColumnType("int") - .HasColumnName("ExecutionDuration"); - - b.Property("ExecutionTime") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("HttpMethod") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("HttpMethod"); - - b.Property("HttpStatusCode") - .HasColumnType("int") - .HasColumnName("HttpStatusCode"); - - b.Property("ImpersonatorTenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("ImpersonatorTenantId"); - - b.Property("ImpersonatorTenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("ImpersonatorTenantName"); - - b.Property("ImpersonatorUserId") - .HasColumnType("uniqueidentifier") - .HasColumnName("ImpersonatorUserId"); - - b.Property("ImpersonatorUserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("ImpersonatorUserName"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("TenantName"); - - b.Property("Url") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Url"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier") - .HasColumnName("UserId"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "ExecutionTime"); - - b.HasIndex("TenantId", "UserId", "ExecutionTime"); - - b.ToTable("AbpAuditLogs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AuditLogId") - .HasColumnType("uniqueidentifier") - .HasColumnName("AuditLogId"); - - b.Property("ExecutionDuration") - .HasColumnType("int") - .HasColumnName("ExecutionDuration"); - - b.Property("ExecutionTime") - .HasColumnType("datetime2") - .HasColumnName("ExecutionTime"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("MethodName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("MethodName"); - - b.Property("Parameters") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)") - .HasColumnName("Parameters"); - - b.Property("ServiceName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("ServiceName"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("AuditLogId"); - - b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); - - b.ToTable("AbpAuditLogActions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AuditLogId") - .HasColumnType("uniqueidentifier") - .HasColumnName("AuditLogId"); - - b.Property("ChangeTime") - .HasColumnType("datetime2") - .HasColumnName("ChangeTime"); - - b.Property("ChangeType") - .HasColumnType("tinyint") - .HasColumnName("ChangeType"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("EntityId"); - - b.Property("EntityTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("EntityTypeFullName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("EntityTypeFullName"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("AuditLogId"); - - b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); - - b.ToTable("AbpEntityChanges", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("EntityChangeId") - .HasColumnType("uniqueidentifier"); - - b.Property("NewValue") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)") - .HasColumnName("NewValue"); - - b.Property("OriginalValue") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)") - .HasColumnName("OriginalValue"); - - b.Property("PropertyName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("PropertyName"); - - b.Property("PropertyTypeFullName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("PropertyTypeFullName"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("EntityChangeId"); - - b.ToTable("AbpEntityPropertyChanges", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ContainerId") - .HasColumnType("uniqueidentifier"); - - b.Property("Content") - .HasMaxLength(2147483647) - .HasColumnType("varbinary(max)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("ContainerId"); - - b.HasIndex("TenantId", "ContainerId", "Name"); - - b.ToTable("AbpBlobs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name"); - - b.ToTable("AbpBlobContainers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AllowedProviders") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Description") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("GroupName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("IsAvailableToHost") - .HasColumnType("bit"); - - b.Property("IsVisibleToClients") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ParentName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ValueType") - .HasMaxLength(2048) - .HasColumnType("nvarchar(2048)"); - - b.HasKey("Id"); - - b.HasIndex("GroupName"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpFeatures", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpFeatureGroups", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - b.ToTable("AbpFeatureValues", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Description") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsStatic") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Regex") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("RegexDescription") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ValueType") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("AbpClaimTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("SourceTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("SourceUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("TargetTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("TargetUserId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") - .IsUnique() - .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); - - b.ToTable("AbpLinkUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDefault") - .HasColumnType("bit") - .HasColumnName("IsDefault"); - - b.Property("IsPublic") - .HasColumnType("bit") - .HasColumnName("IsPublic"); - - b.Property("IsStatic") - .HasColumnType("bit") - .HasColumnName("IsStatic"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("NormalizedName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName"); - - b.ToTable("AbpRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("ClaimType") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ClaimValue") - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AbpRoleClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Action") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("ApplicationName") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("BrowserInfo") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("ClientId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ClientIpAddress") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CorrelationId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("CreationTime") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Identity") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Action"); - - b.HasIndex("TenantId", "ApplicationName"); - - b.HasIndex("TenantId", "Identity"); - - b.HasIndex("TenantId", "UserId"); - - b.ToTable("AbpSecurityLogs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AccessFailedCount") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(0) - .HasColumnName("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Email"); - - b.Property("EmailConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("EmailConfirmed"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsActive") - .HasColumnType("bit") - .HasColumnName("IsActive"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsExternal") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsExternal"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("LastPasswordChangeTime") - .HasColumnType("datetimeoffset"); - - b.Property("LockoutEnabled") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("LockoutEnabled"); - - b.Property("LockoutEnd") - .HasColumnType("datetimeoffset"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Name"); - - b.Property("NormalizedEmail") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("NormalizedEmail"); - - b.Property("NormalizedUserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("NormalizedUserName"); - - b.Property("PasswordHash") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("PasswordHash"); - - b.Property("PhoneNumber") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("PhoneNumber"); - - b.Property("PhoneNumberConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("PhoneNumberConfirmed"); - - b.Property("SecurityStamp") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("SecurityStamp"); - - b.Property("ShouldChangePasswordOnNextLogin") - .HasColumnType("bit"); - - b.Property("Surname") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Surname"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TwoFactorEnabled") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("TwoFactorEnabled"); - - b.Property("UserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("Email"); - - b.HasIndex("NormalizedEmail"); - - b.HasIndex("NormalizedUserName"); - - b.HasIndex("UserName"); - - b.ToTable("AbpUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("ClaimType") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ClaimValue") - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AbpUserClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("EndTime") - .HasColumnType("datetime2"); - - b.Property("SourceUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("StartTime") - .HasColumnType("datetime2"); - - b.Property("TargetUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("AbpUserDelegations", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("LoginProvider") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderDisplayName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .IsRequired() - .HasMaxLength(196) - .HasColumnType("nvarchar(196)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("UserId", "LoginProvider"); - - b.HasIndex("LoginProvider", "ProviderKey"); - - b.ToTable("AbpUserLogins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => - { - b.Property("OrganizationUnitId") - .HasColumnType("uniqueidentifier"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("OrganizationUnitId", "UserId"); - - b.HasIndex("UserId", "OrganizationUnitId"); - - b.ToTable("AbpUserOrganizationUnits", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId", "UserId"); - - b.ToTable("AbpUserRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("LoginProvider") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Name") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Value") - .HasColumnType("nvarchar(max)"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AbpUserTokens", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Code") - .IsRequired() - .HasMaxLength(95) - .HasColumnType("nvarchar(95)") - .HasColumnName("Code"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("DisplayName"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("ParentId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("Code"); - - b.HasIndex("ParentId"); - - b.ToTable("AbpOrganizationUnits", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => - { - b.Property("OrganizationUnitId") - .HasColumnType("uniqueidentifier"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("OrganizationUnitId", "RoleId"); - - b.HasIndex("RoleId", "OrganizationUnitId"); - - b.ToTable("AbpOrganizationUnitRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("GroupName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("IsEnabled") - .HasColumnType("bit"); - - b.Property("MultiTenancySide") - .HasColumnType("tinyint"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ParentName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("StateCheckers") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("GroupName"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpPermissions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[TenantId] IS NOT NULL"); - - b.ToTable("AbpPermissionGrants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpPermissionGroups", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(2048) - .HasColumnType("nvarchar(2048)"); - - b.HasKey("Id"); - - b.HasIndex("Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - b.ToTable("AbpSettings", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.HasKey("Id"); - - b.HasIndex("Name"); - - b.ToTable("AbpTenants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => - { - b.Property("TenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.HasKey("TenantId", "Name"); - - b.ToTable("AbpTenantConnectionStrings", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.Blog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("CmsBlogs", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.BlogFeature", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("BlogId") - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("FeatureName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsEnabled") - .HasColumnType("bit"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.HasKey("Id"); - - b.ToTable("CmsBlogFeatures", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.BlogPost", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AuthorId") - .HasColumnType("uniqueidentifier"); - - b.Property("BlogId") - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Content") - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.Property("CoverImageMediaId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("ShortDescription") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.HasKey("Id"); - - b.HasIndex("AuthorId"); - - b.HasIndex("Slug", "BlogId"); - - b.ToTable("CmsBlogPosts", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Comments.Comment", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("RepliedCommentId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Text") - .IsRequired() - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("Url") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "RepliedCommentId"); - - b.HasIndex("TenantId", "EntityType", "EntityId"); - - b.ToTable("CmsComments", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.GlobalResources.GlobalResource", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("CmsGlobalResources", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.MediaDescriptors.MediaDescriptor", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("MimeType") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(255) - .HasColumnType("nvarchar(255)"); - - b.Property("Size") - .HasMaxLength(2147483647) - .HasColumnType("bigint"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("CmsMediaDescriptors", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("CssClass") - .HasColumnType("nvarchar(max)"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ElementId") - .HasColumnType("nvarchar(max)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Icon") - .HasColumnType("nvarchar(max)"); - - b.Property("IsActive") - .HasColumnType("bit"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Order") - .HasColumnType("int"); - - b.Property("PageId") - .HasColumnType("uniqueidentifier"); - - b.Property("ParentId") - .HasColumnType("uniqueidentifier"); - - b.Property("Target") - .HasColumnType("nvarchar(max)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Url") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.HasKey("Id"); - - b.ToTable("CmsMenuItems", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Pages.Page", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Content") - .HasMaxLength(2147483647) - .HasColumnType("nvarchar(max)"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsHomePage") - .HasColumnType("bit"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Script") - .HasColumnType("nvarchar(max)"); - - b.Property("Slug") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Style") - .HasColumnType("nvarchar(max)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Title") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Slug"); - - b.ToTable("CmsPages", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Ratings.Rating", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("StarCount") - .HasColumnType("smallint"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "EntityType", "EntityId", "CreatorId"); - - b.ToTable("CmsRatings", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Reactions.UserReaction", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("EntityId") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ReactionName") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("nvarchar(32)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "EntityType", "EntityId", "ReactionName"); - - b.HasIndex("TenantId", "CreatorId", "EntityType", "EntityId", "ReactionName"); - - b.ToTable("CmsUserReactions", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Tags.EntityTag", b => - { - b.Property("EntityId") - .HasColumnType("nvarchar(450)"); - - b.Property("TagId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("EntityId", "TagId"); - - b.HasIndex("TenantId", "EntityId", "TagId"); - - b.ToTable("CmsEntityTags", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Tags.Tag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityType") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(32) - .HasColumnType("nvarchar(32)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name"); - - b.ToTable("CmsTags", (string)null); - }); - - modelBuilder.Entity("Volo.CmsKit.Users.CmsUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Email"); - - b.Property("EmailConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("EmailConfirmed"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsActive") - .HasColumnType("bit") - .HasColumnName("IsActive"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Name"); - - b.Property("PhoneNumber") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("PhoneNumber"); - - b.Property("PhoneNumberConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("PhoneNumberConfirmed"); - - b.Property("Surname") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Surname"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Email"); - - b.HasIndex("TenantId", "UserName"); - - b.ToTable("CmsUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => - { - b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) - .WithMany("Actions") - .HasForeignKey("AuditLogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => - { - b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) - .WithMany("EntityChanges") - .HasForeignKey("AuditLogId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => - { - b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) - .WithMany("PropertyChanges") - .HasForeignKey("EntityChangeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => - { - b.HasOne("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", null) - .WithMany() - .HasForeignKey("ContainerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => - { - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany("Claims") - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Claims") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Logins") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany() - .HasForeignKey("OrganizationUnitId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("OrganizationUnits") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => - { - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Roles") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Tokens") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany() - .HasForeignKey("ParentId"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany("Roles") - .HasForeignKey("OrganizationUnitId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => - { - b.HasOne("Volo.Abp.TenantManagement.Tenant", null) - .WithMany("ConnectionStrings") - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.CmsKit.Blogs.BlogPost", b => - { - b.HasOne("Volo.CmsKit.Users.CmsUser", "Author") - .WithMany() - .HasForeignKey("AuthorId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Author"); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => - { - b.Navigation("Actions"); - - b.Navigation("EntityChanges"); - }); - - modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => - { - b.Navigation("PropertyChanges"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => - { - b.Navigation("Claims"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => - { - b.Navigation("Claims"); - - b.Navigation("Logins"); - - b.Navigation("OrganizationUnits"); - - b.Navigation("Roles"); - - b.Navigation("Tokens"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => - { - b.Navigation("ConnectionStrings"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20240108025651_Initial.Designer.cs similarity index 94% rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.Designer.cs rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20240108025651_Initial.Designer.cs index 34487a75a8..95ad5cae44 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.Designer.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20240108025651_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace OpenIddict.Demo.Server.Migrations { [DbContext(typeof(ServerDbContext))] - [Migration("20230404033745_Initial")] + [Migration("20240108025651_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace OpenIddict.Demo.Server.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -157,6 +157,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -166,6 +167,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -231,6 +233,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -239,6 +242,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -331,6 +335,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -343,6 +348,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -392,6 +398,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -428,6 +435,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -571,6 +579,33 @@ namespace OpenIddict.Demo.Server.Migrations b.ToTable("AbpUserClaims", (string)null); }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => { b.Property("UserId") @@ -685,6 +720,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -715,6 +751,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -793,6 +830,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -824,6 +862,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -881,6 +920,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -905,6 +945,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -955,6 +996,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -988,6 +1030,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1036,6 +1079,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1063,6 +1107,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1264,6 +1309,55 @@ namespace OpenIddict.Demo.Server.Migrations b.ToTable("AbpSettings", (string)null); }); + modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultValue") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsEncrypted") + .HasColumnType("bit"); + + b.Property("IsInherited") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpSettingDefinitions", (string)null); + }); + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Property("Id") @@ -1272,6 +1366,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1296,6 +1391,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20240108025651_Initial.cs similarity index 93% rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.cs rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20240108025651_Initial.cs index 611109065a..912a3365b8 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20240108025651_Initial.cs @@ -23,8 +23,8 @@ namespace OpenIddict.Demo.Server.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -107,8 +107,8 @@ namespace OpenIddict.Demo.Server.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -188,8 +188,8 @@ namespace OpenIddict.Demo.Server.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -213,14 +213,34 @@ namespace OpenIddict.Demo.Server.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); }); + migrationBuilder.CreateTable( + name: "AbpSettingDefinitions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), + IsVisibleToClients = table.Column(type: "bit", nullable: false), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), + IsInherited = table.Column(type: "bit", nullable: false), + IsEncrypted = table.Column(type: "bit", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettingDefinitions", x => x.Id); + }); + migrationBuilder.CreateTable( name: "AbpSettings", columns: table => new @@ -243,8 +263,8 @@ namespace OpenIddict.Demo.Server.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -258,6 +278,22 @@ namespace OpenIddict.Demo.Server.Migrations table.PrimaryKey("PK_AbpTenants", x => x.Id); }); + migrationBuilder.CreateTable( + name: "AbpUserDelegations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + StartTime = table.Column(type: "datetime2", nullable: false), + EndTime = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserDelegations", x => x.Id); + }); + migrationBuilder.CreateTable( name: "AbpUsers", columns: table => new @@ -284,8 +320,8 @@ namespace OpenIddict.Demo.Server.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -317,8 +353,8 @@ namespace OpenIddict.Demo.Server.Migrations Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -344,8 +380,8 @@ namespace OpenIddict.Demo.Server.Migrations Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), Resources = table.Column(type: "nvarchar(max)", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -553,8 +589,8 @@ namespace OpenIddict.Demo.Server.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -589,8 +625,8 @@ namespace OpenIddict.Demo.Server.Migrations Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -714,6 +750,12 @@ namespace OpenIddict.Demo.Server.Migrations table: "AbpSecurityLogs", columns: new[] { "TenantId", "UserId" }); + migrationBuilder.CreateIndex( + name: "IX_AbpSettingDefinitions_Name", + table: "AbpSettingDefinitions", + column: "Name", + unique: true); + migrationBuilder.CreateIndex( name: "IX_AbpSettings_Name_ProviderName_ProviderKey", table: "AbpSettings", @@ -833,6 +875,9 @@ namespace OpenIddict.Demo.Server.Migrations migrationBuilder.DropTable( name: "AbpSecurityLogs"); + migrationBuilder.DropTable( + name: "AbpSettingDefinitions"); + migrationBuilder.DropTable( name: "AbpSettings"); @@ -842,6 +887,9 @@ namespace OpenIddict.Demo.Server.Migrations migrationBuilder.DropTable( name: "AbpUserClaims"); + migrationBuilder.DropTable( + name: "AbpUserDelegations"); + migrationBuilder.DropTable( name: "AbpUserLogins"); diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs index 6dcdccdd99..07fca7b999 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace OpenIddict.Demo.Server.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -154,6 +154,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -163,6 +164,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -228,6 +230,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -236,6 +239,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -328,6 +332,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -340,6 +345,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -389,6 +395,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -425,6 +432,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -568,6 +576,33 @@ namespace OpenIddict.Demo.Server.Migrations b.ToTable("AbpUserClaims", (string)null); }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => { b.Property("UserId") @@ -682,6 +717,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -712,6 +748,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -790,6 +827,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -821,6 +859,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -878,6 +917,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -902,6 +942,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnName("DeletionTime"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -952,6 +993,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -985,6 +1027,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1033,6 +1076,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1060,6 +1104,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -1261,6 +1306,55 @@ namespace OpenIddict.Demo.Server.Migrations b.ToTable("AbpSettings", (string)null); }); + modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultValue") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsEncrypted") + .HasColumnType("bit"); + + b.Property("IsInherited") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpSettingDefinitions", (string)null); + }); + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Property("Id") @@ -1269,6 +1363,7 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -1293,6 +1388,7 @@ namespace OpenIddict.Demo.Server.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20230713030300_Initial.Designer.cs b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20240108025904_Initial.Designer.cs similarity index 98% rename from modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20230713030300_Initial.Designer.cs rename to modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20240108025904_Initial.Designer.cs index 56f02e3c47..81cb02079e 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20230713030300_Initial.Designer.cs +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20240108025904_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.SettingManagement.DemoApp; namespace Volo.Abp.SettingManagement.DemoApp.Migrations { [DbContext(typeof(DemoAppDbContext))] - [Migration("20230713030300_Initial")] + [Migration("20240108025904_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -35,6 +35,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -44,6 +45,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -109,6 +111,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -117,6 +120,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -209,6 +213,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -221,6 +226,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -270,6 +276,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -306,6 +313,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -590,6 +598,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -620,6 +629,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -835,8 +845,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -866,8 +876,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20230713030300_Initial.cs b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20240108025904_Initial.cs similarity index 98% rename from modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20230713030300_Initial.cs rename to modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20240108025904_Initial.cs index c02df983b0..7a08e47302 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20230713030300_Initial.cs +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/20240108025904_Initial.cs @@ -23,8 +23,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), ValueType = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -56,8 +56,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), @@ -137,8 +137,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations IsStatic = table.Column(type: "bit", nullable: false), IsPublic = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -162,8 +162,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false) }, constraints: table => { @@ -178,9 +178,9 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), Description = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), - DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), IsVisibleToClients = table.Column(type: "bit", nullable: false), - Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Providers = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true), IsInherited = table.Column(type: "bit", nullable: false), IsEncrypted = table.Column(type: "bit", nullable: false), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) @@ -247,8 +247,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), EntityVersion = table.Column(type: "int", nullable: false), LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: false), CreationTime = table.Column(type: "datetime2", nullable: false), CreatorId = table.Column(type: "uniqueidentifier", nullable: true), LastModificationTime = table.Column(type: "datetime2", nullable: true), diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/DemoAppDbContextModelSnapshot.cs b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/DemoAppDbContextModelSnapshot.cs index 768f911be8..91c1fad210 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/DemoAppDbContextModelSnapshot.cs +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Migrations/DemoAppDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("ProductVersion", "7.0.14") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -32,6 +32,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -41,6 +42,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("nvarchar(256)"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -106,6 +108,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -114,6 +117,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -206,6 +210,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -218,6 +223,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("datetime2"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -267,6 +273,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -303,6 +310,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -587,6 +595,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations b.Property("ConcurrencyStamp") .IsConcurrencyToken() + .IsRequired() .HasMaxLength(40) .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); @@ -617,6 +626,7 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("int"); b.Property("ExtraProperties") + .IsRequired() .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -832,8 +842,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("uniqueidentifier"); b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("Description") .HasMaxLength(512) @@ -863,8 +873,8 @@ namespace Volo.Abp.SettingManagement.DemoApp.Migrations .HasColumnType("nvarchar(128)"); b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); b.HasKey("Id"); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs index 92662be22e..e61193697a 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingDefinitionRecordConsts.cs @@ -8,7 +8,12 @@ public class SettingDefinitionRecordConsts public static int MaxDescriptionLength { get; set; } = 512; - public static int MaxDefaultValueLength { get; set; } = 256; + ///