Browse Source

Merge branch 'dev' into maliming/net5

pull/5700/head
maliming 6 years ago
parent
commit
a8aff0eb9b
  1. 7
      framework/Volo.Abp.sln
  2. 38
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs
  3. 9
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs
  4. 8
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs
  5. 8
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs
  6. 4
      framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj
  7. 12
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs
  8. 5
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs
  9. 1
      framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj
  10. 4
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs
  11. 3
      framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xml
  12. 30
      framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xsd
  13. 25
      framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj
  14. 24
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs
  15. 7
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs
  16. 0
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Domain/Entities/EntityNotFoundException.cs
  17. 33
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs
  18. 10
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/AbpExceptionHandlingResource.cs
  19. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ar.json
  20. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/cs.json
  21. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/de.json
  22. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json
  23. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/es.json
  24. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fr.json
  25. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/nl.json
  26. 18
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pl-PL.json
  27. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pt-BR.json
  28. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ru.json
  29. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/sl.json
  30. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/tr.json
  31. 18
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/vi.json
  32. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json
  33. 23
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hant.json
  34. 0
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorInfo.cs
  35. 0
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorResponse.cs
  36. 0
      framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs
  37. 1
      framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj
  38. 4
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs
  39. 20
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json
  40. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json
  41. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
  42. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json
  43. 20
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json
  44. 118
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json
  45. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json
  46. 15
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json
  47. 20
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json
  48. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json
  49. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json
  50. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json
  51. 13
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json
  52. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json
  53. 18
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
  54. 2
      framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj
  55. 6
      framework/src/Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs
  56. 1
      nupkg/common.ps1

7
framework/Volo.Abp.sln

@ -347,6 +347,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Autofac.WebAssembl
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Authentication.OpenIdConnect", "src\Volo.Abp.AspNetCore.Authentication.OpenIdConnect\Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj", "{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Authentication.OpenIdConnect", "src\Volo.Abp.AspNetCore.Authentication.OpenIdConnect\Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj", "{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.ExceptionHandling", "src\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj", "{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -1033,6 +1035,10 @@ Global
{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Debug|Any CPU.Build.0 = Debug|Any CPU {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Release|Any CPU.Build.0 = Release|Any CPU {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}.Release|Any CPU.Build.0 = Release|Any CPU
{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -1208,6 +1214,7 @@ Global
{29CA7471-4E3E-4E75-8B33-001DDF682F01} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {29CA7471-4E3E-4E75-8B33-001DDF682F01} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{37F89B0B-1C6B-426F-A5EE-676D1956D9E9} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {37F89B0B-1C6B-426F-A5EE-676D1956D9E9} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{B9D1ADCB-D552-4626-A1F1-78FF72C1E822} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}

38
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ExceptionHandling/UserExceptionInformer.cs

@ -1,47 +1,49 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.ExceptionHandling;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Http;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
using Volo.Abp.Validation;
namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling
{ {
public class UserExceptionInformer : IUserExceptionInformer, ITransientDependency public class UserExceptionInformer : IUserExceptionInformer, ITransientDependency
{ {
private readonly IUiMessageService _messageService; protected IUiMessageService MessageService { get; }
protected IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; }
public UserExceptionInformer(IUiMessageService messageService) public UserExceptionInformer(IUiMessageService messageService, IExceptionToErrorInfoConverter exceptionToErrorInfoConverter)
{ {
_messageService = messageService; MessageService = messageService;
ExceptionToErrorInfoConverter = exceptionToErrorInfoConverter;
} }
public virtual async Task InformAsync(UserExceptionInformerContext context) public virtual async Task InformAsync(UserExceptionInformerContext context)
{
var errorInfo = GetErrorInfo(context);
await ShowErrorInfoAsync(errorInfo);
}
protected virtual RemoteServiceErrorInfo GetErrorInfo(UserExceptionInformerContext context)
{ {
if (context.Exception is AbpRemoteCallException remoteCallException) if (context.Exception is AbpRemoteCallException remoteCallException)
{ {
await InformAbpRemoteCallExceptionAsync(remoteCallException, context); return remoteCallException.Error;
}
else if (context.Exception is AbpValidationException validationException)
{
await InformAbpValidationExceptionAsync(validationException, context);
} }
return ExceptionToErrorInfoConverter.Convert(context.Exception, false);
} }
protected virtual async Task InformAbpRemoteCallExceptionAsync(AbpRemoteCallException exception, UserExceptionInformerContext context) protected virtual async Task ShowErrorInfoAsync(RemoteServiceErrorInfo errorInfo)
{ {
if (exception.Error.Details.IsNullOrEmpty()) if (errorInfo.Details.IsNullOrEmpty())
{ {
await _messageService.ErrorAsync(exception.Error.Message); await MessageService.ErrorAsync(errorInfo.Message);
} }
else else
{ {
await _messageService.ErrorAsync(exception.Error.Details, exception.Error.Message); await MessageService.ErrorAsync(errorInfo.Details, errorInfo.Message);
} }
} }
protected virtual async Task InformAbpValidationExceptionAsync(AbpValidationException exception, UserExceptionInformerContext context)
{
await _messageService.ErrorAsync(exception.Message);
}
} }
} }

9
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Controllers/ErrorController.cs

@ -19,18 +19,21 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers
private readonly IStringLocalizer<AbpUiResource> _localizer; private readonly IStringLocalizer<AbpUiResource> _localizer;
private readonly AbpErrorPageOptions _abpErrorPageOptions; private readonly AbpErrorPageOptions _abpErrorPageOptions;
private readonly IExceptionNotifier _exceptionNotifier; private readonly IExceptionNotifier _exceptionNotifier;
private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions;
public ErrorController( public ErrorController(
IExceptionToErrorInfoConverter exceptionToErrorInfoConverter, IExceptionToErrorInfoConverter exceptionToErrorInfoConverter,
IHttpExceptionStatusCodeFinder httpExceptionStatusCodeFinder, IHttpExceptionStatusCodeFinder httpExceptionStatusCodeFinder,
IOptions<AbpErrorPageOptions> abpErrorPageOptions, IOptions<AbpErrorPageOptions> abpErrorPageOptions,
IStringLocalizer<AbpUiResource> localizer, IStringLocalizer<AbpUiResource> localizer,
IExceptionNotifier exceptionNotifier) IExceptionNotifier exceptionNotifier,
IOptions<AbpExceptionHandlingOptions> exceptionHandlingOptions)
{ {
_errorInfoConverter = exceptionToErrorInfoConverter; _errorInfoConverter = exceptionToErrorInfoConverter;
_statusCodeFinder = httpExceptionStatusCodeFinder; _statusCodeFinder = httpExceptionStatusCodeFinder;
_localizer = localizer; _localizer = localizer;
_exceptionNotifier = exceptionNotifier; _exceptionNotifier = exceptionNotifier;
_exceptionHandlingOptions = exceptionHandlingOptions.Value;
_abpErrorPageOptions = abpErrorPageOptions.Value; _abpErrorPageOptions = abpErrorPageOptions.Value;
} }
@ -44,7 +47,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers
await _exceptionNotifier.NotifyAsync(new ExceptionNotificationContext(exception)); await _exceptionNotifier.NotifyAsync(new ExceptionNotificationContext(exception));
var errorInfo = _errorInfoConverter.Convert(exception); var errorInfo = _errorInfoConverter.Convert(exception, _exceptionHandlingOptions.SendExceptionsDetailsToClients);
if (httpStatusCode == 0) if (httpStatusCode == 0)
{ {

8
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionFilter.cs

@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.AspNetCore.ExceptionHandling;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.ExceptionHandling; using Volo.Abp.ExceptionHandling;
@ -23,15 +24,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling
private readonly IExceptionToErrorInfoConverter _errorInfoConverter; private readonly IExceptionToErrorInfoConverter _errorInfoConverter;
private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder; private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder;
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions;
public AbpExceptionFilter( public AbpExceptionFilter(
IExceptionToErrorInfoConverter errorInfoConverter, IExceptionToErrorInfoConverter errorInfoConverter,
IHttpExceptionStatusCodeFinder statusCodeFinder, IHttpExceptionStatusCodeFinder statusCodeFinder,
IJsonSerializer jsonSerializer) IJsonSerializer jsonSerializer,
IOptions<AbpExceptionHandlingOptions> exceptionHandlingOptions)
{ {
_errorInfoConverter = errorInfoConverter; _errorInfoConverter = errorInfoConverter;
_statusCodeFinder = statusCodeFinder; _statusCodeFinder = statusCodeFinder;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
_exceptionHandlingOptions = exceptionHandlingOptions.Value;
Logger = NullLogger<AbpExceptionFilter>.Instance; Logger = NullLogger<AbpExceptionFilter>.Instance;
} }
@ -76,7 +80,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling
context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true");
context.HttpContext.Response.StatusCode = (int)_statusCodeFinder.GetStatusCode(context.HttpContext, context.Exception); context.HttpContext.Response.StatusCode = (int)_statusCodeFinder.GetStatusCode(context.HttpContext, context.Exception);
var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception); var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception, _exceptionHandlingOptions.SendExceptionsDetailsToClients);
context.Result = new ObjectResult(new RemoteServiceErrorResponse(remoteServiceErrorInfo)); context.Result = new ObjectResult(new RemoteServiceErrorResponse(remoteServiceErrorInfo));

8
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ExceptionHandling/AbpExceptionPageFilter.cs

@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.AspNetCore.ExceptionHandling;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.ExceptionHandling; using Volo.Abp.ExceptionHandling;
@ -23,15 +24,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling
private readonly IExceptionToErrorInfoConverter _errorInfoConverter; private readonly IExceptionToErrorInfoConverter _errorInfoConverter;
private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder; private readonly IHttpExceptionStatusCodeFinder _statusCodeFinder;
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly AbpExceptionHandlingOptions _exceptionHandlingOptions;
public AbpExceptionPageFilter( public AbpExceptionPageFilter(
IExceptionToErrorInfoConverter errorInfoConverter, IExceptionToErrorInfoConverter errorInfoConverter,
IHttpExceptionStatusCodeFinder statusCodeFinder, IHttpExceptionStatusCodeFinder statusCodeFinder,
IJsonSerializer jsonSerializer) IJsonSerializer jsonSerializer,
IOptions<AbpExceptionHandlingOptions> exceptionHandlingOptions)
{ {
_errorInfoConverter = errorInfoConverter; _errorInfoConverter = errorInfoConverter;
_statusCodeFinder = statusCodeFinder; _statusCodeFinder = statusCodeFinder;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
_exceptionHandlingOptions = exceptionHandlingOptions.Value;
Logger = NullLogger<AbpExceptionPageFilter>.Instance; Logger = NullLogger<AbpExceptionPageFilter>.Instance;
} }
@ -88,7 +92,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ExceptionHandling
context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true"); context.HttpContext.Response.Headers.Add(AbpHttpConsts.AbpErrorFormat, "true");
context.HttpContext.Response.StatusCode = (int)_statusCodeFinder.GetStatusCode(context.HttpContext, context.Exception); context.HttpContext.Response.StatusCode = (int)_statusCodeFinder.GetStatusCode(context.HttpContext, context.Exception);
var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception); var remoteServiceErrorInfo = _errorInfoConverter.Convert(context.Exception, _exceptionHandlingOptions.SendExceptionsDetailsToClients);
context.Result = new ObjectResult(new RemoteServiceErrorResponse(remoteServiceErrorInfo)); context.Result = new ObjectResult(new RemoteServiceErrorResponse(remoteServiceErrorInfo));

4
framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj

@ -19,11 +19,9 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Auditing\Volo.Abp.Auditing.csproj" /> <ProjectReference Include="..\Volo.Abp.Auditing\Volo.Abp.Auditing.csproj" />
<ProjectReference Include="..\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" /> <ProjectReference Include="..\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" />
<ProjectReference Include="..\Volo.Abp.Ddd.Domain\Volo.Abp.Ddd.Domain.csproj" /> <ProjectReference Include="..\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj" />
<ProjectReference Include="..\Volo.Abp.Http\Volo.Abp.Http.csproj" /> <ProjectReference Include="..\Volo.Abp.Http\Volo.Abp.Http.csproj" />
<ProjectReference Include="..\Volo.Abp.Localization\Volo.Abp.Localization.csproj" />
<ProjectReference Include="..\Volo.Abp.Security\Volo.Abp.Security.csproj" /> <ProjectReference Include="..\Volo.Abp.Security\Volo.Abp.Security.csproj" />
<ProjectReference Include="..\Volo.Abp.UI\Volo.Abp.UI.csproj" />
<ProjectReference Include="..\Volo.Abp.Uow\Volo.Abp.Uow.csproj" /> <ProjectReference Include="..\Volo.Abp.Uow\Volo.Abp.Uow.csproj" />
<ProjectReference Include="..\Volo.Abp.Validation\Volo.Abp.Validation.csproj" /> <ProjectReference Include="..\Volo.Abp.Validation\Volo.Abp.Validation.csproj" />
<ProjectReference Include="..\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" /> <ProjectReference Include="..\Volo.Abp.VirtualFileSystem\Volo.Abp.VirtualFileSystem.csproj" />

12
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs

@ -6,12 +6,10 @@ using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Auditing; using Volo.Abp.AspNetCore.Auditing;
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Volo.Abp.Authorization; using Volo.Abp.Authorization;
using Volo.Abp.Domain; using Volo.Abp.ExceptionHandling;
using Volo.Abp.Http; using Volo.Abp.Http;
using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Security; using Volo.Abp.Security;
using Volo.Abp.UI;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
@ -19,16 +17,14 @@ using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.AspNetCore namespace Volo.Abp.AspNetCore
{ {
[DependsOn( [DependsOn(
typeof(AbpAuditingModule), typeof(AbpAuditingModule),
typeof(AbpSecurityModule), typeof(AbpSecurityModule),
typeof(AbpVirtualFileSystemModule), typeof(AbpVirtualFileSystemModule),
typeof(AbpUnitOfWorkModule), typeof(AbpUnitOfWorkModule),
typeof(AbpHttpModule), typeof(AbpHttpModule),
typeof(AbpAuthorizationModule), typeof(AbpAuthorizationModule),
typeof(AbpDddDomainModule), //TODO: Can we remove this? typeof(AbpValidationModule),
typeof(AbpLocalizationModule), typeof(AbpExceptionHandlingModule)
typeof(AbpUiModule), //TODO: Can we remove this?
typeof(AbpValidationModule)
)] )]
public class AbpAspNetCoreModule : AbpModule public class AbpAspNetCoreModule : AbpModule
{ {

5
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/AbpExceptionHandlingMiddleware.cs

@ -3,9 +3,9 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.Net.Http.Headers; using Microsoft.Net.Http.Headers;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Uow;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.ExceptionHandling; using Volo.Abp.ExceptionHandling;
using Volo.Abp.Http; using Volo.Abp.Http;
@ -61,6 +61,7 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling
var errorInfoConverter = httpContext.RequestServices.GetRequiredService<IExceptionToErrorInfoConverter>(); var errorInfoConverter = httpContext.RequestServices.GetRequiredService<IExceptionToErrorInfoConverter>();
var statusCodeFinder = httpContext.RequestServices.GetRequiredService<IHttpExceptionStatusCodeFinder>(); var statusCodeFinder = httpContext.RequestServices.GetRequiredService<IHttpExceptionStatusCodeFinder>();
var jsonSerializer = httpContext.RequestServices.GetRequiredService<IJsonSerializer>(); var jsonSerializer = httpContext.RequestServices.GetRequiredService<IJsonSerializer>();
var options = httpContext.RequestServices.GetRequiredService<IOptions<AbpExceptionHandlingOptions>>().Value;
httpContext.Response.Clear(); httpContext.Response.Clear();
httpContext.Response.StatusCode = (int)statusCodeFinder.GetStatusCode(httpContext, exception); httpContext.Response.StatusCode = (int)statusCodeFinder.GetStatusCode(httpContext, exception);
@ -70,7 +71,7 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling
await httpContext.Response.WriteAsync( await httpContext.Response.WriteAsync(
jsonSerializer.Serialize( jsonSerializer.Serialize(
new RemoteServiceErrorResponse( new RemoteServiceErrorResponse(
errorInfoConverter.Convert(exception) errorInfoConverter.Convert(exception, options.SendExceptionsDetailsToClients)
) )
) )
); );

1
framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj

@ -18,6 +18,7 @@
<ProjectReference Include="..\Volo.Abp.Auditing\Volo.Abp.Auditing.csproj" /> <ProjectReference Include="..\Volo.Abp.Auditing\Volo.Abp.Auditing.csproj" />
<ProjectReference Include="..\Volo.Abp.Data\Volo.Abp.Data.csproj" /> <ProjectReference Include="..\Volo.Abp.Data\Volo.Abp.Data.csproj" />
<ProjectReference Include="..\Volo.Abp.EventBus\Volo.Abp.EventBus.csproj" /> <ProjectReference Include="..\Volo.Abp.EventBus\Volo.Abp.EventBus.csproj" />
<ProjectReference Include="..\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj" />
<ProjectReference Include="..\Volo.Abp.Guids\Volo.Abp.Guids.csproj" /> <ProjectReference Include="..\Volo.Abp.Guids\Volo.Abp.Guids.csproj" />
<ProjectReference Include="..\Volo.Abp.MultiTenancy\Volo.Abp.MultiTenancy.csproj" /> <ProjectReference Include="..\Volo.Abp.MultiTenancy\Volo.Abp.MultiTenancy.csproj" />
<ProjectReference Include="..\Volo.Abp.ObjectMapping\Volo.Abp.ObjectMapping.csproj" /> <ProjectReference Include="..\Volo.Abp.ObjectMapping\Volo.Abp.ObjectMapping.csproj" />

4
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs

@ -1,6 +1,7 @@
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.EventBus; using Volo.Abp.EventBus;
using Volo.Abp.ExceptionHandling;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
@ -20,7 +21,8 @@ namespace Volo.Abp.Domain
typeof(AbpThreadingModule), typeof(AbpThreadingModule),
typeof(AbpTimingModule), typeof(AbpTimingModule),
typeof(AbpUnitOfWorkModule), typeof(AbpUnitOfWorkModule),
typeof(AbpObjectMappingModule) typeof(AbpObjectMappingModule),
typeof(AbpExceptionHandlingModule)
)] )]
public class AbpDddDomainModule : AbpModule public class AbpDddDomainModule : AbpModule
{ {

3
framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
framework/src/Volo.Abp.ExceptionHandling/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

25
framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj

@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Localization\Volo.Abp.Localization.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Volo\Abp\ExceptionHandling\Localization\**\*.json" />
<Content Remove="Volo\Abp\ExceptionHandling\Localization\**\*.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.6" />
</ItemGroup>
</Project>

24
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs → framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/DefaultExceptionToErrorInfoConverter.cs

@ -2,7 +2,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Localization.Resources.AbpUi;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -10,6 +9,7 @@ using Volo.Abp.Authorization;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.ExceptionHandling; using Volo.Abp.ExceptionHandling;
using Volo.Abp.ExceptionHandling.Localization;
using Volo.Abp.Http; using Volo.Abp.Http;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Localization.ExceptionHandling;
@ -20,28 +20,25 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling
public class DefaultExceptionToErrorInfoConverter : IExceptionToErrorInfoConverter, ITransientDependency public class DefaultExceptionToErrorInfoConverter : IExceptionToErrorInfoConverter, ITransientDependency
{ {
protected AbpExceptionLocalizationOptions LocalizationOptions { get; } protected AbpExceptionLocalizationOptions LocalizationOptions { get; }
protected AbpExceptionHandlingOptions ExceptionHandlingOptions { get; }
protected IStringLocalizerFactory StringLocalizerFactory { get; } protected IStringLocalizerFactory StringLocalizerFactory { get; }
protected IStringLocalizer<AbpUiResource> L { get; } protected IStringLocalizer<AbpExceptionHandlingResource> L { get; }
protected IServiceProvider ServiceProvider { get; } protected IServiceProvider ServiceProvider { get; }
public DefaultExceptionToErrorInfoConverter( public DefaultExceptionToErrorInfoConverter(
IOptions<AbpExceptionLocalizationOptions> localizationOptions, IOptions<AbpExceptionLocalizationOptions> localizationOptions,
IOptions<AbpExceptionHandlingOptions> exceptionHandlingOptions,
IStringLocalizerFactory stringLocalizerFactory, IStringLocalizerFactory stringLocalizerFactory,
IStringLocalizer<AbpUiResource> abpUiStringLocalizer, IStringLocalizer<AbpExceptionHandlingResource> stringLocalizer,
IServiceProvider serviceProvider) IServiceProvider serviceProvider)
{ {
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
ExceptionHandlingOptions = exceptionHandlingOptions.Value;
StringLocalizerFactory = stringLocalizerFactory; StringLocalizerFactory = stringLocalizerFactory;
L = abpUiStringLocalizer; L = stringLocalizer;
LocalizationOptions = localizationOptions.Value; LocalizationOptions = localizationOptions.Value;
} }
public RemoteServiceErrorInfo Convert(Exception exception) public RemoteServiceErrorInfo Convert(Exception exception, bool includeSensitiveDetails)
{ {
var errorInfo = CreateErrorInfoWithoutCode(exception); var errorInfo = CreateErrorInfoWithoutCode(exception, includeSensitiveDetails);
if (exception is IHasErrorCode hasErrorCodeException) if (exception is IHasErrorCode hasErrorCodeException)
{ {
@ -51,9 +48,9 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling
return errorInfo; return errorInfo;
} }
protected virtual RemoteServiceErrorInfo CreateErrorInfoWithoutCode(Exception exception) protected virtual RemoteServiceErrorInfo CreateErrorInfoWithoutCode(Exception exception, bool includeSensitiveDetails)
{ {
if (ExceptionHandlingOptions.SendExceptionsDetailsToClients) if (includeSensitiveDetails)
{ {
return CreateDetailedErrorInfoFromException(exception); return CreateDetailedErrorInfoFromException(exception);
} }
@ -179,10 +176,9 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling
{ {
var aggException = exception as AggregateException; var aggException = exception as AggregateException;
if (aggException.InnerException is IUserFriendlyException || if (aggException.InnerException is AbpValidationException ||
aggException.InnerException is AbpValidationException ||
aggException.InnerException is EntityNotFoundException ||
aggException.InnerException is AbpAuthorizationException || aggException.InnerException is AbpAuthorizationException ||
aggException.InnerException is EntityNotFoundException ||
aggException.InnerException is IBusinessException) aggException.InnerException is IBusinessException)
{ {
return aggException.InnerException; return aggException.InnerException;

7
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs → framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/AspNetCore/ExceptionHandling/IExceptionToErrorInfoConverter.cs

@ -4,7 +4,7 @@ using Volo.Abp.Http;
namespace Volo.Abp.AspNetCore.ExceptionHandling namespace Volo.Abp.AspNetCore.ExceptionHandling
{ {
/// <summary> /// <summary>
/// This interface can be implemented to convert an <see cref="Exception"/> object to an <see cref="RemoteServiceErrorInfo"/> object. /// This interface can be implemented to convert an <see cref="Exception"/> object to an <see cref="RemoteServiceErrorInfo"/> object.
/// Implements Chain Of Responsibility pattern. /// Implements Chain Of Responsibility pattern.
/// </summary> /// </summary>
public interface IExceptionToErrorInfoConverter public interface IExceptionToErrorInfoConverter
@ -13,7 +13,8 @@ namespace Volo.Abp.AspNetCore.ExceptionHandling
/// Converter method. /// Converter method.
/// </summary> /// </summary>
/// <param name="exception">The exception</param> /// <param name="exception">The exception</param>
/// <param name="includeSensitiveDetails">Should include sensitive details to the error info?</param>
/// <returns>Error info or null</returns> /// <returns>Error info or null</returns>
RemoteServiceErrorInfo Convert(Exception exception); RemoteServiceErrorInfo Convert(Exception exception, bool includeSensitiveDetails);
} }
} }

0
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/EntityNotFoundException.cs → framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Domain/Entities/EntityNotFoundException.cs

33
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs

@ -0,0 +1,33 @@
using Volo.Abp.ExceptionHandling.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.ExceptionHandling
{
/* TODO: This package is introduced in a later time by gathering
* classes from multiple packages.
* So, didn't change the original namespaces of the types to not introduce breaking changes.
* We will re-design this package in a later time, probably with v5.0.
*/
[DependsOn(
typeof(AbpLocalizationModule)
)]
public class AbpExceptionHandlingModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpExceptionHandlingModule>();
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<AbpExceptionHandlingResource>("en")
.AddVirtualJson("/Volo/Abp/ExceptionHandling/Localization");
});
}
}
}

10
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/AbpExceptionHandlingResource.cs

@ -0,0 +1,10 @@
using Volo.Abp.Localization;
namespace Volo.Abp.ExceptionHandling.Localization
{
[LocalizationResourceName("AbpExceptionHandling")]
public class AbpExceptionHandlingResource
{
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ar.json

@ -0,0 +1,23 @@
{
"culture": "ar",
"texts": {
"InternalServerErrorMessage": "حدث خطأ داخلي أثناء طلبك!",
"ValidationErrorMessage": "طلبك غير صحيح!",
"ValidationNarrativeErrorMessageTitle": "تم الكشف عن الأخطاء التالية أثناء التحقق .",
"DefaultErrorMessage": "حدث خطأ!",
"DefaultErrorMessageDetail": "لم يتم إرسال تفاصيل الخطأ بواسطة الخادم.",
"DefaultErrorMessage401": "أنت غير مصدق!",
"DefaultErrorMessage401Detail": "يجب عليك تسجيل الدخول لأداء هذه العملية.",
"DefaultErrorMessage403": "أنك غير مخول!",
"DefaultErrorMessage403Detail": "لا يسمح لك بإجراء هذه العملية!",
"DefaultErrorMessage404": "المورد غير موجود!",
"DefaultErrorMessage404Detail": "لم يتم العثور على المورد المطلوب على الخادم!",
"EntityNotFoundErrorMessage": "لا يوجد كيان {0} بالمعرف = {1}!",
"Error": "خطأ",
"UnhandledException": "استثناء غير معالج!",
"401Message": "غير مصرح",
"403Message": "ممنوع",
"404Message": "الصفحة غير موجودة",
"500Message": "خطأ في الخادم الداخلي"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/cs.json

@ -0,0 +1,23 @@
{
"culture": "cs",
"texts": {
"InternalServerErrorMessage": "Během požadavku se vyskytla vnitřní chyba!",
"ValidationErrorMessage": "Neplatný požadavek!",
"ValidationNarrativeErrorMessageTitle": "Během ověřování byly zjištěny následující chyby.",
"DefaultErrorMessage": "Vyskytla se chyba!",
"DefaultErrorMessageDetail": "Server neposkytl detaily k chybě.",
"DefaultErrorMessage401": "Nejste přihlášeni!",
"DefaultErrorMessage401Detail": "K vykonání této operace se musíte nejprve přihlásit.",
"DefaultErrorMessage403": "Nemáte oprávnění!",
"DefaultErrorMessage403Detail": "Není vám dovoleno vykonat tuto operaci!",
"DefaultErrorMessage404": "Prostředek nenalezen!",
"DefaultErrorMessage404Detail": "Vyžádaný prostředek nebyl na serveru nalezen!",
"EntityNotFoundErrorMessage": "Neexistující entita {0} s id = {1}!",
"Error": "Chyba",
"UnhandledException": "Neošetřená výjimka!",
"401Message": "Neoprávněno",
"403Message": "Zakázáno",
"404Message": "Stránka nenalezena",
"500Message": "Interní chyba serveru"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/de.json

@ -0,0 +1,23 @@
{
"culture": "de",
"texts": {
"InternalServerErrorMessage": "Während Ihrer Anfrage ist ein interner Fehler aufgetreten!",
"ValidationErrorMessage": "Ihre Anfrage ist nicht gültig!",
"ValidationNarrativeErrorMessageTitle": "Die folgenden Fehler wurden bei der Validierung entdeckt.",
"DefaultErrorMessage": "Ein Fehler ist aufgetreten!",
"DefaultErrorMessageDetail": "Es wurden keine Fehlerdetails vom Server gesendet.",
"DefaultErrorMessage401": "Sie sind nicht authentifiziert.",
"DefaultErrorMessage401Detail": "Sie sollten sich anmelden, um diese Operation durchzuführen.",
"DefaultErrorMessage403": "Sie sind nicht autorisiert!",
"DefaultErrorMessage403Detail": "Es ist Ihnen nicht erlaubt, diese Operation durchzuführen!",
"DefaultErrorMessage404": "Ressource nicht gefunden!",
"DefaultErrorMessage404Detail": "Die angeforderte Ressource konnte auf dem Server nicht gefunden werden!",
"EntityNotFoundErrorMessage": "Es gibt keine Entität {0} mit id = {1}!",
"Error": "Fehler",
"UnhandledException": "Unerwartete Ausnahme!",
"401Message": "Unauthorisiert",
"403Message": "Verboten",
"404Message": "Seite nicht gefunden",
"500Message": "Interner Server Fehler"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/en.json

@ -0,0 +1,23 @@
{
"culture": "en",
"texts": {
"InternalServerErrorMessage": "An internal error occurred during your request!",
"ValidationErrorMessage": "Your request is not valid!",
"ValidationNarrativeErrorMessageTitle": "The following errors were detected during validation.",
"DefaultErrorMessage": "An error has occurred!",
"DefaultErrorMessageDetail": "Error detail not sent by server.",
"DefaultErrorMessage401": "You are not authenticated!",
"DefaultErrorMessage401Detail": "You should sign in to perform this operation.",
"DefaultErrorMessage403": "You are not authorized!",
"DefaultErrorMessage403Detail": "You are not allowed to perform this operation!",
"DefaultErrorMessage404": "Resource not found!",
"DefaultErrorMessage404Detail": "The resource requested could not found on the server!",
"EntityNotFoundErrorMessage": "There is no entity {0} with id = {1}!",
"Error": "Error",
"UnhandledException": "Unhandled exception!",
"401Message": "Unauthorized",
"403Message": "Forbidden",
"404Message": "Page not found",
"500Message": "Internal Server Error"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/es.json

@ -0,0 +1,23 @@
{
"culture": "es",
"texts": {
"InternalServerErrorMessage": "Ocurrió un error interno en su pedido!",
"ValidationErrorMessage": "Su pedido no es válido!",
"ValidationNarrativeErrorMessageTitle": "Los siguientes errores se encontraton durante la validación.",
"DefaultErrorMessage": "Ocurrió un error!",
"DefaultErrorMessageDetail": "El servidor no envió el detalle del error.",
"DefaultErrorMessage401": "Usted no ha iniciado sessión!",
"DefaultErrorMessage401Detail": "Debe iniciar sessión para ejecutar esta operación.",
"DefaultErrorMessage403": "Usted no está autorizado!",
"DefaultErrorMessage403Detail": "Usted no puede hacer esta operación!",
"DefaultErrorMessage404": "No se encontró el recurso!",
"DefaultErrorMessage404Detail": "El recurso solicitado no se encontró en el servidor!",
"EntityNotFoundErrorMessage": "No hay una entidad {0} con el id = {1}!",
"Error": "Error",
"UnhandledException": "Excepción no controlada!",
"401Message": "No autorizado",
"403Message": "Prohibido",
"404Message": "La página no existe",
"500Message": "Error interno del servidor"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fr.json

@ -0,0 +1,23 @@
{
"culture": "fr",
"texts": {
"InternalServerErrorMessage": "Une erreur interne s'est produite lors de votre demande!",
"ValidationErrorMessage": "Votre demande n'est pas valide!",
"ValidationNarrativeErrorMessageTitle": "Les erreurs suivantes ont été détectées lors de la validation.",
"DefaultErrorMessage": "Une erreur est survenue!",
"DefaultErrorMessageDetail": "Détails de l'erreur non envoyés par le serveur.",
"DefaultErrorMessage401": "Vous n'êtes pas authentifié!",
"DefaultErrorMessage401Detail": "Vous devez vous connecter pour effectuer cette opération.",
"DefaultErrorMessage403": "Vous n'êtes pas autorisé!",
"DefaultErrorMessage403Detail": "Vous n'êtes pas autorisé à effectuer cette opération!",
"DefaultErrorMessage404": "Ressource introuvable!",
"DefaultErrorMessage404Detail": "La ressource demandée est introuvable sur le serveur!",
"EntityNotFoundErrorMessage": "Il n'y a pas d'entité {0} avec id = {1}!",
"Error": "Erreur",
"UnhandledException": "Exception non-gérée!",
"401Message": "Non autorisé",
"403Message": "Interdit",
"404Message": "Page introuvable",
"500Message": "Erreur Interne du Serveur"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/nl.json

@ -0,0 +1,23 @@
{
"culture": "nl",
"texts": {
"InternalServerErrorMessage": "Er is een interne fout opgetreden tijdens uw verzoek!",
"ValidationErrorMessage": "Uw verzoek is niet geldig!",
"ValidationNarrativeErrorMessageTitle": "Tijdens de validatie zijn de volgende fouten gedetecteerd.",
"DefaultErrorMessage": "er is een fout opgetreden!",
"DefaultErrorMessageDetail": "Foutdetails niet verzonden door server.",
"DefaultErrorMessage401": "U bent niet geverifieerd!",
"DefaultErrorMessage401Detail": "U moet inloggen om deze bewerking uit te voeren.",
"DefaultErrorMessage403": "U bent niet geautoriseerd!",
"DefaultErrorMessage403Detail": "U mag deze bewerking niet uitvoeren!",
"DefaultErrorMessage404": "Bron niet gevonden!",
"DefaultErrorMessage404Detail": "De gevraagde bron kan niet worden gevonden op de server!",
"EntityNotFoundErrorMessage": "Er is geen entiteit {0} met id = {1}!",
"Error": "Fout",
"UnhandledException": "Onverwerkte uitzondering!",
"401Message": "Ongeautoriseerd",
"403Message": "Verboden",
"404Message": "Pagina niet gevonden",
"500Message": "Interne Server Fout"
}
}

18
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pl-PL.json

@ -0,0 +1,18 @@
{
"culture": "pl-PL",
"texts": {
"InternalServerErrorMessage": "Błąd wewnętrzny serwera podczas przetwarzania żądania!",
"ValidationErrorMessage": "Twoje żądanie jest niepoprawnie!",
"ValidationNarrativeErrorMessageTitle": "Wykryto następujące błędy podczas walidacji.",
"DefaultErrorMessage": "Wystąpił błąd!",
"DefaultErrorMessageDetail": "Treść błędu nie została wysłana z serwera.",
"DefaultErrorMessage401": "Nie jesteś zalogowany!",
"DefaultErrorMessage401Detail": "Musisz się zalogować, aby wykonać tą operację.",
"DefaultErrorMessage403": "Nie jesteś zautentykowany!",
"DefaultErrorMessage403Detail": "Nie masz uprawnień do wykonania tej operacji!",
"DefaultErrorMessage404": "Nie znaleziono zasobu!",
"DefaultErrorMessage404Detail": "Nie znaleziono zasobu z żądania na serwerze!",
"EntityNotFoundErrorMessage": "Nie istnieje encja {0} z id = {1}!",
"Error": "Błąd"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/pt-BR.json

@ -0,0 +1,23 @@
{
"culture": "pt-BR",
"texts": {
"InternalServerErrorMessage": "Um erro interno ocorreu durante a requisição!",
"ValidationErrorMessage": "Sua requisição não é válida!",
"ValidationNarrativeErrorMessageTitle": "Os seguintes erros foram detectados durante a validação:",
"DefaultErrorMessage": "Ocorreu um erro!",
"DefaultErrorMessageDetail": "Os detalhes do erro não foram enviados pelo servidor.",
"DefaultErrorMessage401": "Você não etá autenticado!",
"DefaultErrorMessage401Detail": "Você deve autenticar-se para proceder com esta operação.",
"DefaultErrorMessage403": "Você não possui autorização!",
"DefaultErrorMessage403Detail": "Você não tem permissão para executar esta operação!",
"DefaultErrorMessage404": "Recurso não encontrado!",
"DefaultErrorMessage404Detail": "O recurso requisitado não pode ser encontrado pelo servidor!",
"EntityNotFoundErrorMessage": "Não existe uma entidade {0} com código = {1}!",
"Error": "Erro",
"UnhandledException": "Exceção não tratada!",
"401Message": "Autenticação inválida",
"403Message": "Não autorizado",
"404Message": "Página não encontrada",
"500Message": "Erro interno do servidor"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/ru.json

@ -0,0 +1,23 @@
{
"culture": "ru",
"texts": {
"InternalServerErrorMessage": "Во время запроса произошла внутренняя ошибка!",
"ValidationErrorMessage": "Ваш запрос недействителен!",
"ValidationNarrativeErrorMessageTitle": "При проверке были обнаружены следующие ошибки.",
"DefaultErrorMessage": "Произошла ошибка!",
"DefaultErrorMessageDetail": "Сведения об ошибке не были предоставлены сервером.",
"DefaultErrorMessage401": "Вы не авторизированы!",
"DefaultErrorMessage401Detail": "Вы должны Войти, чтобы выполнить эту операцию.",
"DefaultErrorMessage403": "Вы не авторизованы!",
"DefaultErrorMessage403Detail": "У вас нет доступа к выполнению этой операции!",
"DefaultErrorMessage404": "Ресурс не найден!",
"DefaultErrorMessage404Detail": "Запрошенный ресурс не удалось найти на сервере!",
"EntityNotFoundErrorMessage": "Нет объекта {0} с id = {1}!",
"Error": "Ошибка",
"UnhandledException": "Непредвиденная ошибка!",
"401Message": "Неавторизованный",
"403Message": "В доступе отказано",
"404Message": "Страница не найдена",
"500Message": "Внутренняя ошибка сервера"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/sl.json

@ -0,0 +1,23 @@
{
"culture": "sl",
"texts": {
"InternalServerErrorMessage": "Zgodila se je napaka na strežniku!",
"ValidationErrorMessage": "Vaš zahtevek ni veljaven!",
"ValidationNarrativeErrorMessageTitle": "Pri preverjanju so bile zaznane sledeče napake.",
"DefaultErrorMessage": "Zgodila se je napaka!",
"DefaultErrorMessageDetail": "Strežnik ni poslal podrobnosti o napaki.",
"DefaultErrorMessage401": "Niste prijavljeni!",
"DefaultErrorMessage401Detail": "Za izvedbo te operacije se morate prijaviti.",
"DefaultErrorMessage403": "Nimate pravic!",
"DefaultErrorMessage403Detail": "Nimate dovoljenja za izvedbo te operacije!",
"DefaultErrorMessage404": "Vir ni bil najden!",
"DefaultErrorMessage404Detail": "Zahtevanega vira ni bilo mogoče najti na strežniku!",
"EntityNotFoundErrorMessage": "Ni entitete {0} z id-jem = {1}!",
"Error": "Napaka",
"UnhandledException": "Neobravnavana napaka!",
"401Message": "Nepooblaščeno",
"403Message": "Prepovedano",
"404Message": "Strani ni mogoče najti",
"500Message": "Napaka na strani strežnika"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/tr.json

@ -0,0 +1,23 @@
{
"culture": "tr",
"texts": {
"InternalServerErrorMessage": "Sayfa işlenirken sunucu tarafında beklenmedik bir hata oluştu!",
"ValidationErrorMessage": "İşleminiz geçerli değil!",
"ValidationNarrativeErrorMessageTitle": "Aşağıdaki hatalar doğrulama sırasında tespit edilmiştir.",
"DefaultErrorMessage": "Bir hata oluştu!",
"DefaultErrorMessageDetail": "Hatanın ne olduğu sunucu tarafından gönderilmedi.",
"DefaultErrorMessage401": "Giriş yapılmamış!",
"DefaultErrorMessage401Detail": "Bu işlemi gerçekleştirmek için uygulamaya giriş yapmalısınız.",
"DefaultErrorMessage403": "İzinsiz işlem!",
"DefaultErrorMessage403Detail": "Bu işlemi gerçekleştirmek için gereken izne sahip değilsiniz.",
"DefaultErrorMessage404": "Kaynak bulunamadı!",
"DefaultErrorMessage404Detail": "İstenilen kaynak sunucuda bulunamadı.",
"EntityNotFoundErrorMessage": "Id değeri {1} olan {0} türünden bir nesne bulunamadı!",
"Error": "Hata",
"UnhandledException": "Yakalanmamış hata!",
"401Message": "Yetkisiz",
"403Message": "Yasak",
"404Message": "Sayfa bulunamadı",
"500Message": "Sunucu tarafında hata"
}
}

18
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/vi.json

@ -0,0 +1,18 @@
{
"culture": "vi",
"texts": {
"InternalServerErrorMessage": "Có một lỗi nội bộ xảy ra trong quá trình thực hiện yêu cầu của bạn!",
"ValidationErrorMessage": "Yêu cầu của bạn không hợp lệ!",
"ValidationNarrativeErrorMessageTitle": "Các lỗi sau đây đã được phát hiện trong quá trình xác nhận",
"DefaultErrorMessage": "Một lỗi đã xảy ra",
"DefaultErrorMessageDetail": "Chi tiết lỗi không được gửi bởi máy chủ",
"DefaultErrorMessage401": "Bạn chưa được xác thực",
"DefaultErrorMessage401Detail": "Bạn cần đăng nhập để thực hiện thao tác này.",
"DefaultErrorMessage403": "Bạn không được phép!",
"DefaultErrorMessage403Detail": "Bạn không được phép thực hiện thao tác này!",
"DefaultErrorMessage404": "Tài nguyên không tìm thấy!",
"DefaultErrorMessage404Detail": "Tài nguyên được yêu cầu không được tìm thấy trên máy chủ!",
"EntityNotFoundErrorMessage": "Không có thực thể nào {0} với id = {1}!",
"Error": "Lỗi"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hans.json

@ -0,0 +1,23 @@
{
"culture": "zh-Hans",
"texts": {
"InternalServerErrorMessage": "对不起,在处理你的请求期间,产生了一个服务器内部错误!",
"ValidationErrorMessage": "你的请求无效!",
"ValidationNarrativeErrorMessageTitle": "验证时发现以下错误.",
"DefaultErrorMessage": "发生错误!",
"DefaultErrorMessageDetail": "服务器未发送错误的详细信息.",
"DefaultErrorMessage401": "未通过身份验证!",
"DefaultErrorMessage401Detail": "你需要进行身份认证(登录)后再执行此操作.",
"DefaultErrorMessage403": "你没有权限!",
"DefaultErrorMessage403Detail": "你不能执行此操作!",
"DefaultErrorMessage404": "未找到资源!",
"DefaultErrorMessage404Detail": "未在服务中找到请求的资源!",
"EntityNotFoundErrorMessage": "实体 {0} 不存在,id = {1}!",
"Error": "错误",
"UnhandledException": "未处理的异常!",
"401Message": "未授权",
"403Message": "禁止访问",
"404Message": "网页未找到",
"500Message": "内部服务器错误"
}
}

23
framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/zh-Hant.json

@ -0,0 +1,23 @@
{
"culture": "zh-Hant",
"texts": {
"InternalServerErrorMessage": "對不起,在處理你的請求期間,產生了一個伺服器內部錯誤!",
"ValidationErrorMessage": "你的請求無效!",
"ValidationNarrativeErrorMessageTitle": "驗證時發現以下錯誤.",
"DefaultErrorMessage": "發生錯誤!",
"DefaultErrorMessageDetail": "伺服器未發送錯誤的詳細信息.",
"DefaultErrorMessage401": "未通過身份驗證!",
"DefaultErrorMessage401Detail": "你需要進行身份認證(登入)後再執行此操作.",
"DefaultErrorMessage403": "你沒有權限!",
"DefaultErrorMessage403Detail": "你不能執行此操作!",
"DefaultErrorMessage404": "未找到資源!",
"DefaultErrorMessage404Detail": "未在服務中找到請求的資源!",
"EntityNotFoundErrorMessage": "實體 {0} 不存在,id = {1}!",
"Error": "錯誤",
"UnhandledException": "未處理的異常!",
"401Message": "未授權",
"403Message": "禁止訪問",
"404Message": "網頁未找到",
"500Message": "內部伺服器錯誤"
}
}

0
framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorInfo.cs → framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorInfo.cs

0
framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceErrorResponse.cs → framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceErrorResponse.cs

0
framework/src/Volo.Abp.Http/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs → framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/Http/RemoteServiceValidationErrorInfo.cs

1
framework/src/Volo.Abp.Http.Client/Volo.Abp.Http.Client.csproj

@ -20,6 +20,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Castle.Core\Volo.Abp.Castle.Core.csproj" /> <ProjectReference Include="..\Volo.Abp.Castle.Core\Volo.Abp.Castle.Core.csproj" />
<ProjectReference Include="..\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj" />
<ProjectReference Include="..\Volo.Abp.Http\Volo.Abp.Http.csproj" /> <ProjectReference Include="..\Volo.Abp.Http\Volo.Abp.Http.csproj" />
<ProjectReference Include="..\Volo.Abp.MultiTenancy\Volo.Abp.MultiTenancy.csproj" /> <ProjectReference Include="..\Volo.Abp.MultiTenancy\Volo.Abp.MultiTenancy.csproj" />
<ProjectReference Include="..\Volo.Abp.Threading\Volo.Abp.Threading.csproj" /> <ProjectReference Include="..\Volo.Abp.Threading\Volo.Abp.Threading.csproj" />

4
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientModule.cs

@ -6,6 +6,7 @@ using Volo.Abp.MultiTenancy;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using Polly; using Polly;
using Volo.Abp.ExceptionHandling;
namespace Volo.Abp.Http.Client namespace Volo.Abp.Http.Client
{ {
@ -14,7 +15,8 @@ namespace Volo.Abp.Http.Client
typeof(AbpCastleCoreModule), typeof(AbpCastleCoreModule),
typeof(AbpThreadingModule), typeof(AbpThreadingModule),
typeof(AbpMultiTenancyModule), typeof(AbpMultiTenancyModule),
typeof(AbpValidationModule) typeof(AbpValidationModule),
typeof(AbpExceptionHandlingModule)
)] )]
public class AbpHttpClientModule : AbpModule public class AbpHttpClientModule : AbpModule
{ {

20
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json

@ -1,20 +1,7 @@
{ {
"culture": "ar", "culture": "ar",
"texts": { "texts": {
"InternalServerErrorMessage": "حدث خطأ داخلي أثناء طلبك!",
"ValidationErrorMessage": "طلبك غير صحيح!",
"ValidationNarrativeErrorMessageTitle": "تم الكشف عن الأخطاء التالية أثناء التحقق .",
"DefaultErrorMessage": "حدث خطأ!",
"DefaultErrorMessageDetail": "لم يتم إرسال تفاصيل الخطأ بواسطة الخادم.",
"DefaultErrorMessage401": "أنت غير مصدق!",
"DefaultErrorMessage401Detail": "يجب عليك تسجيل الدخول لأداء هذه العملية.",
"DefaultErrorMessage403": "أنك غير مخول!",
"DefaultErrorMessage403Detail": "لا يسمح لك بإجراء هذه العملية!",
"DefaultErrorMessage404": "المورد غير موجود!",
"DefaultErrorMessage404Detail": "لم يتم العثور على المورد المطلوب على الخادم!",
"EntityNotFoundErrorMessage": "لا يوجد كيان {0} بالمعرف = {1}!",
"Languages": "اللغات", "Languages": "اللغات",
"Error": "خطأ",
"AreYouSure": "هل أنت متأكد؟", "AreYouSure": "هل أنت متأكد؟",
"Cancel": "إلغاء", "Cancel": "إلغاء",
"Clear": "تنظيف", "Clear": "تنظيف",
@ -55,13 +42,8 @@
"ChangePassword": "تغيير كلمة السر", "ChangePassword": "تغيير كلمة السر",
"PersonalInfo": "ملفي الشخصي", "PersonalInfo": "ملفي الشخصي",
"AreYouSureYouWantToCancelEditingWarningMessage": "لم تحفظ التغييرات.", "AreYouSureYouWantToCancelEditingWarningMessage": "لم تحفظ التغييرات.",
"UnhandledException": "استثناء غير معالج!",
"401Message": "غير مصرح",
"403Message": "ممنوع",
"404Message": "الصفحة غير موجودة",
"500Message": "خطأ في الخادم الداخلي",
"GoHomePage": "اذهب الى الصفحة الرئيسية", "GoHomePage": "اذهب الى الصفحة الرئيسية",
"GoBack": "عد", "GoBack": "عد",
"Search": "بحث" "Search": "بحث"
} }
} }

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json

@ -1,20 +1,7 @@
{ {
"culture": "cs", "culture": "cs",
"texts": { "texts": {
"InternalServerErrorMessage": "Během požadavku se vyskytla vnitřní chyba!",
"ValidationErrorMessage": "Neplatný požadavek!",
"ValidationNarrativeErrorMessageTitle": "Během ověřování byly zjištěny následující chyby.",
"DefaultErrorMessage": "Vyskytla se chyba!",
"DefaultErrorMessageDetail": "Server neposkytl detaily k chybě.",
"DefaultErrorMessage401": "Nejste přihlášeni!",
"DefaultErrorMessage401Detail": "K vykonání této operace se musíte nejprve přihlásit.",
"DefaultErrorMessage403": "Nemáte oprávnění!",
"DefaultErrorMessage403Detail": "Není vám dovoleno vykonat tuto operaci!",
"DefaultErrorMessage404": "Prostředek nenalezen!",
"DefaultErrorMessage404Detail": "Vyžádaný prostředek nebyl na serveru nalezen!",
"EntityNotFoundErrorMessage": "Neexistující entita {0} s id = {1}!",
"Languages": "Jazyky", "Languages": "Jazyky",
"Error": "Chyba",
"AreYouSure": "Jste si jisti?", "AreYouSure": "Jste si jisti?",
"Cancel": "Zrušit", "Cancel": "Zrušit",
"Yes": "Ano", "Yes": "Ano",
@ -54,11 +41,6 @@
"ChangePassword": "Změnit heslo", "ChangePassword": "Změnit heslo",
"PersonalInfo": "Můj profil", "PersonalInfo": "Můj profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Máte neuložené změny.", "AreYouSureYouWantToCancelEditingWarningMessage": "Máte neuložené změny.",
"UnhandledException": "Neošetřená výjimka!",
"401Message": "Neoprávněno",
"403Message": "Zakázáno",
"404Message": "Stránka nenalezena",
"500Message": "Interní chyba serveru",
"GoHomePage": "Přejít na domovskou stránku", "GoHomePage": "Přejít na domovskou stránku",
"GoBack": "Jít zpět", "GoBack": "Jít zpět",
"Search": "Vyhledávání" "Search": "Vyhledávání"

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json

@ -1,20 +1,7 @@
{ {
"culture": "de", "culture": "de",
"texts": { "texts": {
"InternalServerErrorMessage": "Während Ihrer Anfrage ist ein interner Fehler aufgetreten!",
"ValidationErrorMessage": "Ihre Anfrage ist nicht gültig!",
"ValidationNarrativeErrorMessageTitle": "Die folgenden Fehler wurden bei der Validierung entdeckt.",
"DefaultErrorMessage": "Ein Fehler ist aufgetreten!",
"DefaultErrorMessageDetail": "Es wurden keine Fehlerdetails vom Server gesendet.",
"DefaultErrorMessage401": "Sie sind nicht authentifiziert.",
"DefaultErrorMessage401Detail": "Sie sollten sich anmelden, um diese Operation durchzuführen.",
"DefaultErrorMessage403": "Sie sind nicht autorisiert!",
"DefaultErrorMessage403Detail": "Es ist Ihnen nicht erlaubt, diese Operation durchzuführen!",
"DefaultErrorMessage404": "Ressource nicht gefunden!",
"DefaultErrorMessage404Detail": "Die angeforderte Ressource konnte auf dem Server nicht gefunden werden!",
"EntityNotFoundErrorMessage": "Es gibt keine Entität {0} mit id = {1}!",
"Languages": "Sprachen", "Languages": "Sprachen",
"Error": "Fehler",
"AreYouSure": "Sind Sie sicher?", "AreYouSure": "Sind Sie sicher?",
"Cancel": "Abbrechen", "Cancel": "Abbrechen",
"Yes": "Ja", "Yes": "Ja",
@ -52,11 +39,6 @@
"ChangePassword": "Passwort ändern", "ChangePassword": "Passwort ändern",
"PersonalInfo": "Mein Profil", "PersonalInfo": "Mein Profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Sie haben ungespeicherte Änderungen.", "AreYouSureYouWantToCancelEditingWarningMessage": "Sie haben ungespeicherte Änderungen.",
"UnhandledException": "Unerwartete Ausnahme!",
"401Message": "Unauthorisiert",
"403Message": "Verboten",
"404Message": "Seite nicht gefunden",
"500Message": "Interner Server Fehler",
"GoHomePage": "Zur Startseite", "GoHomePage": "Zur Startseite",
"GoBack": "Zurück" "GoBack": "Zurück"
} }

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json

@ -1,20 +1,7 @@
{ {
"culture": "en", "culture": "en",
"texts": { "texts": {
"InternalServerErrorMessage": "An internal error occurred during your request!",
"ValidationErrorMessage": "Your request is not valid!",
"ValidationNarrativeErrorMessageTitle": "The following errors were detected during validation.",
"DefaultErrorMessage": "An error has occurred!",
"DefaultErrorMessageDetail": "Error detail not sent by server.",
"DefaultErrorMessage401": "You are not authenticated!",
"DefaultErrorMessage401Detail": "You should sign in to perform this operation.",
"DefaultErrorMessage403": "You are not authorized!",
"DefaultErrorMessage403Detail": "You are not allowed to perform this operation!",
"DefaultErrorMessage404": "Resource not found!",
"DefaultErrorMessage404Detail": "The resource requested could not found on the server!",
"EntityNotFoundErrorMessage": "There is no entity {0} with id = {1}!",
"Languages": "Languages", "Languages": "Languages",
"Error": "Error",
"AreYouSure": "Are you sure?", "AreYouSure": "Are you sure?",
"Cancel": "Cancel", "Cancel": "Cancel",
"Clear": "Clear", "Clear": "Clear",
@ -55,11 +42,6 @@
"ChangePassword": "Change password", "ChangePassword": "Change password",
"PersonalInfo": "My profile", "PersonalInfo": "My profile",
"AreYouSureYouWantToCancelEditingWarningMessage": "You have unsaved changes.", "AreYouSureYouWantToCancelEditingWarningMessage": "You have unsaved changes.",
"UnhandledException": "Unhandled exception!",
"401Message": "Unauthorized",
"403Message": "Forbidden",
"404Message": "Page not found",
"500Message": "Internal Server Error",
"GoHomePage": "Go to the homepage", "GoHomePage": "Go to the homepage",
"GoBack": "Go back", "GoBack": "Go back",
"Search": "Search", "Search": "Search",

20
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json

@ -1,20 +1,7 @@
{ {
"culture": "es", "culture": "es",
"texts": { "texts": {
"InternalServerErrorMessage": "Ocurrió un error interno en su pedido!",
"ValidationErrorMessage": "Su pedido no es válido!",
"ValidationNarrativeErrorMessageTitle": "Los siguientes errores se encontraton durante la validación.",
"DefaultErrorMessage": "Ocurrió un error!",
"DefaultErrorMessageDetail": "El servidor no envió el detalle del error.",
"DefaultErrorMessage401": "Usted no ha iniciado sessión!",
"DefaultErrorMessage401Detail": "Debe iniciar sessión para ejecutar esta operación.",
"DefaultErrorMessage403": "Usted no está autorizado!",
"DefaultErrorMessage403Detail": "Usted no puede hacer esta operación!",
"DefaultErrorMessage404": "No se encontró el recurso!",
"DefaultErrorMessage404Detail": "El recurso solicitado no se encontró en el servidor!",
"EntityNotFoundErrorMessage": "No hay una entidad {0} con el id = {1}!",
"Languages": "Lenguajes", "Languages": "Lenguajes",
"Error": "Error",
"AreYouSure": "¿Está seguro?", "AreYouSure": "¿Está seguro?",
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Yes": "Si", "Yes": "Si",
@ -52,13 +39,8 @@
"ChangePassword": "Cambiar contraseña", "ChangePassword": "Cambiar contraseña",
"PersonalInfo": "My perfil", "PersonalInfo": "My perfil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Tiene cambios sin guardar.", "AreYouSureYouWantToCancelEditingWarningMessage": "Tiene cambios sin guardar.",
"UnhandledException": "Excepción no controlada!",
"401Message": "No autorizado",
"403Message": "Prohibido",
"404Message": "La página no existe",
"500Message": "Error interno del servidor",
"GoHomePage": "Ir a la página principal", "GoHomePage": "Ir a la página principal",
"GoBack": "Atras", "GoBack": "Atras",
"Search": "Buscar" "Search": "Buscar"
} }
} }

118
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json

@ -1,69 +1,51 @@
{ {
"culture": "fr", "culture": "fr",
"texts": { "texts": {
"InternalServerErrorMessage": "Une erreur interne s'est produite lors de votre demande!", "Languages": "Langues",
"ValidationErrorMessage": "Votre demande n'est pas valide!", "AreYouSure": "Êtes-vous sûr?",
"ValidationNarrativeErrorMessageTitle": "Les erreurs suivantes ont été détectées lors de la validation.", "Cancel": "Annuler",
"DefaultErrorMessage": "Une erreur est survenue!", "Clear": "Clair",
"DefaultErrorMessageDetail": "Détails de l'erreur non envoyés par le serveur.", "Yes": "Oui",
"DefaultErrorMessage401": "Vous n'êtes pas authentifié!", "No": "Non",
"DefaultErrorMessage401Detail": "Vous devez vous connecter pour effectuer cette opération.", "Ok": "D'accord",
"DefaultErrorMessage403": "Vous n'êtes pas autorisé!", "Close": "Fermer",
"DefaultErrorMessage403Detail": "Vous n'êtes pas autorisé à effectuer cette opération!", "Save": "Enregistrer",
"DefaultErrorMessage404": "Ressource introuvable!", "SavingWithThreeDot": "Enregistrement...",
"DefaultErrorMessage404Detail": "La ressource demandée est introuvable sur le serveur!", "Actions": "Actions",
"EntityNotFoundErrorMessage": "Il n'y a pas d'entité {0} avec id = {1}!", "Delete": "Supprimer",
"Languages": "Langues", "Edit": "Modifier",
"Error": "Erreur", "Refresh": "Actualiser",
"AreYouSure": "Êtes-vous sûr?", "Language": "Langue",
"Cancel": "Annuler", "LoadMore": "Charger plus",
"Clear": "Clair", "ProcessingWithThreeDot": "Traitement...",
"Yes": "Oui", "LoadingWithThreeDot": "Chargement...",
"No": "Non", "Welcome": "Bienvenue",
"Ok": "D'accord", "Login": "Se connecter",
"Close": "Fermer", "Register": "S'inscrire",
"Save": "Enregistrer", "Logout": "Se déconnecter",
"SavingWithThreeDot": "Enregistrement...", "Submit": "Envoyer",
"Actions": "Actions", "Back": "Précédent",
"Delete": "Supprimer", "PagerSearch": "Recherche",
"Edit": "Modifier", "PagerNext": "prochain",
"Refresh": "Actualiser", "PagerPrevious": "Précédent",
"Language": "Langue", "PagerFirst": "Première",
"LoadMore": "Charger plus", "PagerLast": "Dernier",
"ProcessingWithThreeDot": "Traitement...", "PagerInfo": "Affichage de _START_ à _END_ entrées sur _TOTAL_",
"LoadingWithThreeDot": "Chargement...", "PagerInfo{0}{1}{2}": "Affichage de {0} à {1} sur {2} entrées",
"Welcome": "Bienvenue", "PagerInfoEmpty": "Affichage de 0 à 0 sur 0 entrées",
"Login": "Se connecter", "PagerInfoFiltered": "(filtré à partir des entrées _MAX_ totale)",
"Register": "S'inscrire", "NoDataAvailableInDatatable": "Aucune donnée disponible",
"Logout": "Se déconnecter", "Total": "Total",
"Submit": "Envoyer", "Selected": "Sélectionné",
"Back": "Précédent", "PagerShowMenuEntries": "Afficher les entrées _MENU_",
"PagerSearch": "Recherche", "DatatableActionDropdownDefaultText": "Actions",
"PagerNext": "prochain", "ChangePassword": "Changer le mot de passe",
"PagerPrevious": "Précédent", "PersonalInfo": "Mon profil",
"PagerFirst": "Première", "AreYouSureYouWantToCancelEditingWarningMessage": "Vous avez des changements non enregistrés.",
"PagerLast": "Dernier", "GoHomePage": "Aller à la page d'accueil",
"PagerInfo": "Affichage de _START_ à _END_ entrées sur _TOTAL_", "GoBack": "Retour",
"PagerInfo{0}{1}{2}": "Affichage de {0} à {1} sur {2} entrées", "Search": "Recherche",
"PagerInfoEmpty": "Affichage de 0 à 0 sur 0 entrées", "ItemWillBeDeletedMessageWithFormat": "{0} sera supprimé!",
"PagerInfoFiltered": "(filtré à partir des entrées _MAX_ totale)", "ItemWillBeDeletedMessage": "Cet objet va être supprimé!"
"NoDataAvailableInDatatable": "Aucune donnée disponible", }
"Total": "Total", }
"Selected": "Sélectionné",
"PagerShowMenuEntries": "Afficher les entrées _MENU_",
"DatatableActionDropdownDefaultText": "Actions",
"ChangePassword": "Changer le mot de passe",
"PersonalInfo": "Mon profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Vous avez des changements non enregistrés.",
"UnhandledException": "Exception non-gérée!",
"401Message": "Non autorisé",
"403Message": "Interdit",
"404Message": "Page introuvable",
"500Message": "Erreur Interne du Serveur",
"GoHomePage": "Aller à la page d'accueil",
"GoBack": "Retour",
"Search": "Recherche",
"ItemWillBeDeletedMessageWithFormat": "{0} sera supprimé!",
"ItemWillBeDeletedMessage": "Cet objet va être supprimé!"
}
}

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json

@ -1,20 +1,7 @@
{ {
"culture": "nl", "culture": "nl",
"texts": { "texts": {
"InternalServerErrorMessage": "Er is een interne fout opgetreden tijdens uw verzoek!",
"ValidationErrorMessage": "Uw verzoek is niet geldig!",
"ValidationNarrativeErrorMessageTitle": "Tijdens de validatie zijn de volgende fouten gedetecteerd.",
"DefaultErrorMessage": "er is een fout opgetreden!",
"DefaultErrorMessageDetail": "Foutdetails niet verzonden door server.",
"DefaultErrorMessage401": "U bent niet geverifieerd!",
"DefaultErrorMessage401Detail": "U moet inloggen om deze bewerking uit te voeren.",
"DefaultErrorMessage403": "U bent niet geautoriseerd!",
"DefaultErrorMessage403Detail": "U mag deze bewerking niet uitvoeren!",
"DefaultErrorMessage404": "Bron niet gevonden!",
"DefaultErrorMessage404Detail": "De gevraagde bron kan niet worden gevonden op de server!",
"EntityNotFoundErrorMessage": "Er is geen entiteit {0} met id = {1}!",
"Languages": "Talen", "Languages": "Talen",
"Error": "Fout",
"AreYouSure": "Bent u zeker?", "AreYouSure": "Bent u zeker?",
"Cancel": "Annuleren", "Cancel": "Annuleren",
"Yes": "Ja", "Yes": "Ja",
@ -52,11 +39,6 @@
"ChangePassword": "Verander wachtwoord", "ChangePassword": "Verander wachtwoord",
"PersonalInfo": "Mijn profiel", "PersonalInfo": "Mijn profiel",
"AreYouSureYouWantToCancelEditingWarningMessage": "U heeft nog niet-opgeslagen wijzigingen.", "AreYouSureYouWantToCancelEditingWarningMessage": "U heeft nog niet-opgeslagen wijzigingen.",
"UnhandledException": "Onverwerkte uitzondering!",
"401Message": "Ongeautoriseerd",
"403Message": "Verboden",
"404Message": "Pagina niet gevonden",
"500Message": "Interne Server Fout",
"GoHomePage": "Ga naar de homepage", "GoHomePage": "Ga naar de homepage",
"GoBack": "Ga terug", "GoBack": "Ga terug",
"Search": "Zoeken" "Search": "Zoeken"

15
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json

@ -1,19 +1,6 @@
{ {
"culture": "pl-PL", "culture": "pl-PL",
"texts": { "texts": {
"InternalServerErrorMessage": "Błąd wewnętrzny serwera podczas przetwarzania żądania!",
"ValidationErrorMessage": "Twoje żądanie jest niepoprawnie!",
"ValidationNarrativeErrorMessageTitle": "Wykryto następujące błędy podczas walidacji.",
"DefaultErrorMessage": "Wystąpił błąd!",
"DefaultErrorMessageDetail": "Treść błędu nie została wysłana z serwera.",
"DefaultErrorMessage401": "Nie jesteś zalogowany!",
"DefaultErrorMessage401Detail": "Musisz się zalogować, aby wykonać tą operację.",
"DefaultErrorMessage403": "Nie jesteś zautentykowany!",
"DefaultErrorMessage403Detail": "Nie masz uprawnień do wykonania tej operacji!",
"DefaultErrorMessage404": "Nie znaleziono zasobu!",
"DefaultErrorMessage404Detail": "Nie znaleziono zasobu z żądania na serwerze!",
"EntityNotFoundErrorMessage": "Nie istnieje encja {0} z id = {1}!",
"Error": "Błąd",
"AreYouSure": "Czy jesteś pewien?", "AreYouSure": "Czy jesteś pewien?",
"Cancel": "Anuluj", "Cancel": "Anuluj",
"Yes": "Tak", "Yes": "Tak",
@ -49,4 +36,4 @@
"PersonalInfo": "Mój profil", "PersonalInfo": "Mój profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Masz niezapisane zmiany." "AreYouSureYouWantToCancelEditingWarningMessage": "Masz niezapisane zmiany."
} }
} }

20
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json

@ -1,19 +1,6 @@
{ {
"culture": "pt-BR", "culture": "pt-BR",
"texts": { "texts": {
"InternalServerErrorMessage": "Um erro interno ocorreu durante a requisição!",
"ValidationErrorMessage": "Sua requisição não é válida!",
"ValidationNarrativeErrorMessageTitle": "Os seguintes erros foram detectados durante a validação:",
"DefaultErrorMessage": "Ocorreu um erro!",
"DefaultErrorMessageDetail": "Os detalhes do erro não foram enviados pelo servidor.",
"DefaultErrorMessage401": "Você não etá autenticado!",
"DefaultErrorMessage401Detail": "Você deve autenticar-se para proceder com esta operação.",
"DefaultErrorMessage403": "Você não possui autorização!",
"DefaultErrorMessage403Detail": "Você não tem permissão para executar esta operação!",
"DefaultErrorMessage404": "Recurso não encontrado!",
"DefaultErrorMessage404Detail": "O recurso requisitado não pode ser encontrado pelo servidor!",
"EntityNotFoundErrorMessage": "Não existe uma entidade {0} com código = {1}!",
"Error": "Erro",
"AreYouSure": "Você tem certeza?", "AreYouSure": "Você tem certeza?",
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Yes": "Sim", "Yes": "Sim",
@ -48,13 +35,8 @@
"ChangePassword": "Alterar Senha", "ChangePassword": "Alterar Senha",
"PersonalInfo": "Perfil", "PersonalInfo": "Perfil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Há alterações não salvas.", "AreYouSureYouWantToCancelEditingWarningMessage": "Há alterações não salvas.",
"UnhandledException": "Exceção não tratada!",
"401Message": "Autenticação inválida",
"403Message": "Não autorizado",
"404Message": "Página não encontrada",
"500Message": "Erro interno do servidor",
"GoHomePage": "Voltar à página principal", "GoHomePage": "Voltar à página principal",
"GoBack": "Voltar", "GoBack": "Voltar",
"Search": "Procurar" "Search": "Procurar"
} }
} }

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json

@ -1,20 +1,7 @@
{ {
"culture": "ru", "culture": "ru",
"texts": { "texts": {
"InternalServerErrorMessage": "Во время запроса произошла внутренняя ошибка!",
"ValidationErrorMessage": "Ваш запрос недействителен!",
"ValidationNarrativeErrorMessageTitle": "При проверке были обнаружены следующие ошибки.",
"DefaultErrorMessage": "Произошла ошибка!",
"DefaultErrorMessageDetail": "Сведения об ошибке не были предоставлены сервером.",
"DefaultErrorMessage401": "Вы не авторизированы!",
"DefaultErrorMessage401Detail": "Вы должны Войти, чтобы выполнить эту операцию.",
"DefaultErrorMessage403": "Вы не авторизованы!",
"DefaultErrorMessage403Detail": "У вас нет доступа к выполнению этой операции!",
"DefaultErrorMessage404": "Ресурс не найден!",
"DefaultErrorMessage404Detail": "Запрошенный ресурс не удалось найти на сервере!",
"EntityNotFoundErrorMessage": "Нет объекта {0} с id = {1}!",
"Languages": "Языки", "Languages": "Языки",
"Error": "Ошибка",
"AreYouSure": "Вы уверены?", "AreYouSure": "Вы уверены?",
"Cancel": "Отмена", "Cancel": "Отмена",
"Yes": "Да", "Yes": "Да",
@ -51,11 +38,6 @@
"ChangePassword": "Изменить пароль", "ChangePassword": "Изменить пароль",
"PersonalInfo": "Мой профиль", "PersonalInfo": "Мой профиль",
"AreYouSureYouWantToCancelEditingWarningMessage": "У вас есть несохраненные изменения.", "AreYouSureYouWantToCancelEditingWarningMessage": "У вас есть несохраненные изменения.",
"UnhandledException": "Непредвиденная ошибка!",
"401Message": "Неавторизованный",
"403Message": "В доступе отказано",
"404Message": "Страница не найдена",
"500Message": "Внутренняя ошибка сервера",
"GoHomePage": "Вернуться на главную страницу", "GoHomePage": "Вернуться на главную страницу",
"GoBack": "Вернуться назад", "GoBack": "Вернуться назад",
"Search": "поиск" "Search": "поиск"

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json

@ -1,20 +1,7 @@
{ {
"culture": "sl", "culture": "sl",
"texts": { "texts": {
"InternalServerErrorMessage": "Zgodila se je napaka na strežniku!",
"ValidationErrorMessage": "Vaš zahtevek ni veljaven!",
"ValidationNarrativeErrorMessageTitle": "Pri preverjanju so bile zaznane sledeče napake.",
"DefaultErrorMessage": "Zgodila se je napaka!",
"DefaultErrorMessageDetail": "Strežnik ni poslal podrobnosti o napaki.",
"DefaultErrorMessage401": "Niste prijavljeni!",
"DefaultErrorMessage401Detail": "Za izvedbo te operacije se morate prijaviti.",
"DefaultErrorMessage403": "Nimate pravic!",
"DefaultErrorMessage403Detail": "Nimate dovoljenja za izvedbo te operacije!",
"DefaultErrorMessage404": "Vir ni bil najden!",
"DefaultErrorMessage404Detail": "Zahtevanega vira ni bilo mogoče najti na strežniku!",
"EntityNotFoundErrorMessage": "Ni entitete {0} z id-jem = {1}!",
"Languages": "Jeziki", "Languages": "Jeziki",
"Error": "Napaka",
"AreYouSure": "Ali ste prepričani?", "AreYouSure": "Ali ste prepričani?",
"Cancel": "Prekliči", "Cancel": "Prekliči",
"Yes": "Da", "Yes": "Da",
@ -52,11 +39,6 @@
"ChangePassword": "Zamenjaj geslo", "ChangePassword": "Zamenjaj geslo",
"PersonalInfo": "Moj profil", "PersonalInfo": "Moj profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Imate neshranjene spremembe.", "AreYouSureYouWantToCancelEditingWarningMessage": "Imate neshranjene spremembe.",
"UnhandledException": "Neobravnavana napaka!",
"401Message": "Nepooblaščeno",
"403Message": "Prepovedano",
"404Message": "Strani ni mogoče najti",
"500Message": "Napaka na strani strežnika",
"GoHomePage": "Pojdi na osnovno stran", "GoHomePage": "Pojdi na osnovno stran",
"GoBack": "Nazaj", "GoBack": "Nazaj",
"Search": "Iskanje" "Search": "Iskanje"

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json

@ -1,20 +1,7 @@
{ {
"culture": "tr", "culture": "tr",
"texts": { "texts": {
"InternalServerErrorMessage": "Sayfa işlenirken sunucu tarafında beklenmedik bir hata oluştu!",
"ValidationErrorMessage": "İşleminiz geçerli değil!",
"ValidationNarrativeErrorMessageTitle": "Aşağıdaki hatalar doğrulama sırasında tespit edilmiştir.",
"DefaultErrorMessage": "Bir hata oluştu!",
"DefaultErrorMessageDetail": "Hatanın ne olduğu sunucu tarafından gönderilmedi.",
"DefaultErrorMessage401": "Giriş yapılmamış!",
"DefaultErrorMessage401Detail": "Bu işlemi gerçekleştirmek için uygulamaya giriş yapmalısınız.",
"DefaultErrorMessage403": "İzinsiz işlem!",
"DefaultErrorMessage403Detail": "Bu işlemi gerçekleştirmek için gereken izne sahip değilsiniz.",
"DefaultErrorMessage404": "Kaynak bulunamadı!",
"DefaultErrorMessage404Detail": "İstenilen kaynak sunucuda bulunamadı.",
"EntityNotFoundErrorMessage": "Id değeri {1} olan {0} türünden bir nesne bulunamadı!",
"Languages": "Diller", "Languages": "Diller",
"Error": "Hata",
"AreYouSure": "Emin misiniz?", "AreYouSure": "Emin misiniz?",
"Cancel": "Vazgeç", "Cancel": "Vazgeç",
"Clear": "Temizle", "Clear": "Temizle",
@ -55,11 +42,6 @@
"ChangePassword": "Şifre değiştir", "ChangePassword": "Şifre değiştir",
"PersonalInfo": "Profilim", "PersonalInfo": "Profilim",
"AreYouSureYouWantToCancelEditingWarningMessage": "Kaydedilmemiş değişiklikler var.", "AreYouSureYouWantToCancelEditingWarningMessage": "Kaydedilmemiş değişiklikler var.",
"UnhandledException": "Yakalanmamış hata!",
"401Message": "Yetkisiz",
"403Message": "Yasak",
"404Message": "Sayfa bulunamadı",
"500Message": "Sunucu tarafında hata",
"GoHomePage": "Ana sayfaya git", "GoHomePage": "Ana sayfaya git",
"GoBack": "Geri dön", "GoBack": "Geri dön",
"Search": "Arama", "Search": "Arama",

13
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json

@ -1,19 +1,6 @@
{ {
"culture": "vi", "culture": "vi",
"texts": { "texts": {
"InternalServerErrorMessage": "Có một lỗi nội bộ xảy ra trong quá trình thực hiện yêu cầu của bạn!",
"ValidationErrorMessage": "Yêu cầu của bạn không hợp lệ!",
"ValidationNarrativeErrorMessageTitle": "Các lỗi sau đây đã được phát hiện trong quá trình xác nhận",
"DefaultErrorMessage": "Một lỗi đã xảy ra",
"DefaultErrorMessageDetail": "Chi tiết lỗi không được gửi bởi máy chủ",
"DefaultErrorMessage401": "Bạn chưa được xác thực",
"DefaultErrorMessage401Detail": "Bạn cần đăng nhập để thực hiện thao tác này.",
"DefaultErrorMessage403": "Bạn không được phép!",
"DefaultErrorMessage403Detail": "Bạn không được phép thực hiện thao tác này!",
"DefaultErrorMessage404": "Tài nguyên không tìm thấy!",
"DefaultErrorMessage404Detail": "Tài nguyên được yêu cầu không được tìm thấy trên máy chủ!",
"EntityNotFoundErrorMessage": "Không có thực thể nào {0} với id = {1}!",
"Error": "Lỗi",
"AreYouSure": "Bạn có chắc không ?", "AreYouSure": "Bạn có chắc không ?",
"Cancel": "Hủy bỏ", "Cancel": "Hủy bỏ",
"Yes": "Đồng ý", "Yes": "Đồng ý",

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json

@ -1,20 +1,7 @@
{ {
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"InternalServerErrorMessage": "对不起,在处理你的请求期间,产生了一个服务器内部错误!",
"ValidationErrorMessage": "你的请求无效!",
"ValidationNarrativeErrorMessageTitle": "验证时发现以下错误.",
"DefaultErrorMessage": "发生错误!",
"DefaultErrorMessageDetail": "服务器未发送错误的详细信息.",
"DefaultErrorMessage401": "未通过身份验证!",
"DefaultErrorMessage401Detail": "你需要进行身份认证(登录)后再执行此操作.",
"DefaultErrorMessage403": "你没有权限!",
"DefaultErrorMessage403Detail": "你不能执行此操作!",
"DefaultErrorMessage404": "未找到资源!",
"DefaultErrorMessage404Detail": "未在服务中找到请求的资源!",
"EntityNotFoundErrorMessage": "实体 {0} 不存在,id = {1}!",
"Languages": "语言", "Languages": "语言",
"Error": "错误",
"AreYouSure": "你确定吗?", "AreYouSure": "你确定吗?",
"Cancel": "取消", "Cancel": "取消",
"Yes": "是", "Yes": "是",
@ -49,11 +36,6 @@
"ChangePassword": "修改密码", "ChangePassword": "修改密码",
"PersonalInfo": "个人信息", "PersonalInfo": "个人信息",
"AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改.", "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改.",
"UnhandledException": "未处理的异常!",
"401Message": "未授权",
"403Message": "禁止访问",
"404Message": "网页未找到",
"500Message": "内部服务器错误",
"GoHomePage": "返回主页", "GoHomePage": "返回主页",
"GoBack": "返回", "GoBack": "返回",
"Search" : "搜索" "Search" : "搜索"

18
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json

@ -1,20 +1,7 @@
{ {
"culture": "zh-Hant", "culture": "zh-Hant",
"texts": { "texts": {
"InternalServerErrorMessage": "對不起,在處理你的請求期間,產生了一個伺服器內部錯誤!",
"ValidationErrorMessage": "你的請求無效!",
"ValidationNarrativeErrorMessageTitle": "驗證時發現以下錯誤.",
"DefaultErrorMessage": "發生錯誤!",
"DefaultErrorMessageDetail": "伺服器未發送錯誤的詳細信息.",
"DefaultErrorMessage401": "未通過身份驗證!",
"DefaultErrorMessage401Detail": "你需要進行身份認證(登入)後再執行此操作.",
"DefaultErrorMessage403": "你沒有權限!",
"DefaultErrorMessage403Detail": "你不能執行此操作!",
"DefaultErrorMessage404": "未找到資源!",
"DefaultErrorMessage404Detail": "未在服務中找到請求的資源!",
"EntityNotFoundErrorMessage": "實體 {0} 不存在,id = {1}!",
"Languages": "語系", "Languages": "語系",
"Error": "錯誤",
"AreYouSure": "你確定嗎?", "AreYouSure": "你確定嗎?",
"Cancel": "取消", "Cancel": "取消",
"Clear": "清除", "Clear": "清除",
@ -55,11 +42,6 @@
"ChangePassword": "修改密碼", "ChangePassword": "修改密碼",
"PersonalInfo": "個人資料", "PersonalInfo": "個人資料",
"AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改", "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改",
"UnhandledException": "未處理的異常!",
"401Message": "未授權",
"403Message": "禁止訪問",
"404Message": "網頁未找到",
"500Message": "內部伺服器錯誤",
"GoHomePage": "返回首頁", "GoHomePage": "返回首頁",
"GoBack": "返回", "GoBack": "返回",
"Search": "查詢", "Search": "查詢",

2
framework/src/Volo.Abp.UI/Volo.Abp.UI.csproj

@ -20,7 +20,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Localization\Volo.Abp.Localization.csproj" /> <ProjectReference Include="..\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

6
framework/src/Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs

@ -1,5 +1,6 @@
using Localization.Resources.AbpUi; using Localization.Resources.AbpUi;
using Microsoft.Extensions.DependencyInjection; using Volo.Abp.ExceptionHandling;
using Volo.Abp.ExceptionHandling.Localization;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
@ -7,7 +8,7 @@ using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.UI namespace Volo.Abp.UI
{ {
[DependsOn( [DependsOn(
typeof(AbpLocalizationModule) typeof(AbpExceptionHandlingModule)
)] )]
public class AbpUiModule : AbpModule public class AbpUiModule : AbpModule
{ {
@ -22,6 +23,7 @@ namespace Volo.Abp.UI
{ {
options.Resources options.Resources
.Add<AbpUiResource>("en") .Add<AbpUiResource>("en")
.AddBaseTypes(typeof(AbpExceptionHandlingResource))
.AddVirtualJson("/Localization/Resources/AbpUi"); .AddVirtualJson("/Localization/Resources/AbpUi");
}); });
} }

1
nupkg/common.ps1

@ -92,6 +92,7 @@ $projects = (
"framework/src/Volo.Abp.EventBus", "framework/src/Volo.Abp.EventBus",
"framework/src/Volo.Abp.EventBus.RabbitMQ", "framework/src/Volo.Abp.EventBus.RabbitMQ",
"framework/src/Volo.Abp.EventBus.Kafka", "framework/src/Volo.Abp.EventBus.Kafka",
"framework/src/Volo.Abp.ExceptionHandling",
"framework/src/Volo.Abp.Features", "framework/src/Volo.Abp.Features",
"framework/src/Volo.Abp.FluentValidation", "framework/src/Volo.Abp.FluentValidation",
"framework/src/Volo.Abp.GlobalFeatures", "framework/src/Volo.Abp.GlobalFeatures",

Loading…
Cancel
Save