mirror of https://github.com/abpframework/abp.git
56 changed files with 571 additions and 374 deletions
@ -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); |
|
||||
} |
|
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -0,0 +1,3 @@ |
|||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
||||
|
<ConfigureAwait ContinueOnCapturedContext="false" /> |
||||
|
</Weavers> |
||||
@ -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> |
||||
@ -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> |
||||
@ -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"); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
using Volo.Abp.Localization; |
||||
|
|
||||
|
namespace Volo.Abp.ExceptionHandling.Localization |
||||
|
{ |
||||
|
[LocalizationResourceName("AbpExceptionHandling")] |
||||
|
public class AbpExceptionHandlingResource |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -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": "خطأ في الخادم الداخلي" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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": "Внутренняя ошибка сервера" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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" |
||||
|
} |
||||
|
} |
||||
@ -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": "内部服务器错误" |
||||
|
} |
||||
|
} |
||||
@ -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": "內部伺服器錯誤" |
||||
|
} |
||||
|
} |
||||
@ -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é!" |
|
||||
} |
|
||||
} |
|
||||
|
|||||
Loading…
Reference in new issue