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.Threading.Tasks; |
|||
using Volo.Abp.AspNetCore.ExceptionHandling; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Http; |
|||
using Volo.Abp.Http.Client; |
|||
using Volo.Abp.Validation; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.WebAssembly.ExceptionHandling |
|||
{ |
|||
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) |
|||
{ |
|||
var errorInfo = GetErrorInfo(context); |
|||
await ShowErrorInfoAsync(errorInfo); |
|||
} |
|||
|
|||
protected virtual RemoteServiceErrorInfo GetErrorInfo(UserExceptionInformerContext context) |
|||
{ |
|||
if (context.Exception is AbpRemoteCallException remoteCallException) |
|||
{ |
|||
await InformAbpRemoteCallExceptionAsync(remoteCallException, context); |
|||
} |
|||
else if (context.Exception is AbpValidationException validationException) |
|||
{ |
|||
await InformAbpValidationExceptionAsync(validationException, context); |
|||
return remoteCallException.Error; |
|||
} |
|||
|
|||
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 |
|||
{ |
|||
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", |
|||
"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}!", |
|||
"Languages": "Langues", |
|||
"Error": "Erreur", |
|||
"AreYouSure": "Êtes-vous sûr?", |
|||
"Cancel": "Annuler", |
|||
"Clear": "Clair", |
|||
"Yes": "Oui", |
|||
"No": "Non", |
|||
"Ok": "D'accord", |
|||
"Close": "Fermer", |
|||
"Save": "Enregistrer", |
|||
"SavingWithThreeDot": "Enregistrement...", |
|||
"Actions": "Actions", |
|||
"Delete": "Supprimer", |
|||
"Edit": "Modifier", |
|||
"Refresh": "Actualiser", |
|||
"Language": "Langue", |
|||
"LoadMore": "Charger plus", |
|||
"ProcessingWithThreeDot": "Traitement...", |
|||
"LoadingWithThreeDot": "Chargement...", |
|||
"Welcome": "Bienvenue", |
|||
"Login": "Se connecter", |
|||
"Register": "S'inscrire", |
|||
"Logout": "Se déconnecter", |
|||
"Submit": "Envoyer", |
|||
"Back": "Précédent", |
|||
"PagerSearch": "Recherche", |
|||
"PagerNext": "prochain", |
|||
"PagerPrevious": "Précédent", |
|||
"PagerFirst": "Première", |
|||
"PagerLast": "Dernier", |
|||
"PagerInfo": "Affichage de _START_ à _END_ entrées sur _TOTAL_", |
|||
"PagerInfo{0}{1}{2}": "Affichage de {0} à {1} sur {2} entrées", |
|||
"PagerInfoEmpty": "Affichage de 0 à 0 sur 0 entrées", |
|||
"PagerInfoFiltered": "(filtré à partir des entrées _MAX_ totale)", |
|||
"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é!" |
|||
} |
|||
} |
|||
"culture": "fr", |
|||
"texts": { |
|||
"Languages": "Langues", |
|||
"AreYouSure": "Êtes-vous sûr?", |
|||
"Cancel": "Annuler", |
|||
"Clear": "Clair", |
|||
"Yes": "Oui", |
|||
"No": "Non", |
|||
"Ok": "D'accord", |
|||
"Close": "Fermer", |
|||
"Save": "Enregistrer", |
|||
"SavingWithThreeDot": "Enregistrement...", |
|||
"Actions": "Actions", |
|||
"Delete": "Supprimer", |
|||
"Edit": "Modifier", |
|||
"Refresh": "Actualiser", |
|||
"Language": "Langue", |
|||
"LoadMore": "Charger plus", |
|||
"ProcessingWithThreeDot": "Traitement...", |
|||
"LoadingWithThreeDot": "Chargement...", |
|||
"Welcome": "Bienvenue", |
|||
"Login": "Se connecter", |
|||
"Register": "S'inscrire", |
|||
"Logout": "Se déconnecter", |
|||
"Submit": "Envoyer", |
|||
"Back": "Précédent", |
|||
"PagerSearch": "Recherche", |
|||
"PagerNext": "prochain", |
|||
"PagerPrevious": "Précédent", |
|||
"PagerFirst": "Première", |
|||
"PagerLast": "Dernier", |
|||
"PagerInfo": "Affichage de _START_ à _END_ entrées sur _TOTAL_", |
|||
"PagerInfo{0}{1}{2}": "Affichage de {0} à {1} sur {2} entrées", |
|||
"PagerInfoEmpty": "Affichage de 0 à 0 sur 0 entrées", |
|||
"PagerInfoFiltered": "(filtré à partir des entrées _MAX_ totale)", |
|||
"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.", |
|||
"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