Browse Source

Merge branch 'dev' of https://github.com/abpframework/abp into feat/layout-components

pull/3851/head
mehmet-erim 7 years ago
parent
commit
c634c1d892
  1. 52
      docs/zh-Hans/Localization.md
  2. 100
      docs/zh-Hans/Object-Extensions.md
  3. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/de.json
  4. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/nl.json
  5. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Components/DefaultBrandingProvider.cs
  6. 8
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Components/IBrandingProvider.cs
  7. 22
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/VirtualFileSystem/WebContentFileProvider.cs
  8. 6
      framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/de.json
  9. 6
      framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/nl.json
  10. 23
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/de.json
  11. 23
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/nl.json
  12. 7
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/de.json
  13. 7
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/nl.json
  14. 6
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/de.json
  15. 6
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/nl.json
  16. 63
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
  17. 63
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json
  18. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/cs.json
  19. 34
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/de.json
  20. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/en.json
  21. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/es.json
  22. 34
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/nl.json
  23. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/pt-BR.json
  24. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/ru.json
  25. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/tr.json
  26. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json
  27. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hant.json
  28. 7
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/de.json
  29. 7
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/nl.json
  30. 6
      framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/de.json
  31. 6
      framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/nl.json
  32. 10
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs
  33. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/de.json
  34. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/nl.json
  35. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/de.json
  36. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/nl.json
  37. 11
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de.json
  38. 11
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/nl.json
  39. 8
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/de.json
  40. 6
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/nl.json
  41. 45
      modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/de.json
  42. 45
      modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/nl.json
  43. 14
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/de.json
  44. 14
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/nl.json
  45. 49
      modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/de.json
  46. 49
      modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/nl.json
  47. 10
      modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/de.json
  48. 10
      modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/nl.json
  49. 7
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs
  50. 37
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/de.json
  51. 37
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/nl.json
  52. 10
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs
  53. 9
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ReindexInput.cs
  54. 36
      modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs
  55. 71
      modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs
  56. 7
      modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs
  57. 14
      modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/ProjectsAdminController.cs
  58. 4
      modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
  59. 27
      modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/index.js
  60. 44
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/ElasticDocumentFullSearch.cs
  61. 6
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/IDocumentFullSearch.cs
  62. 31
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/de.json
  63. 6
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/en.json
  64. 31
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/nl.json
  65. 7
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/de.json
  66. 7
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/nl.json
  67. 104
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
  68. 104
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
  69. 12
      modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/de.json
  70. 12
      modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/nl.json
  71. 10
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/de.json
  72. 10
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/nl.json
  73. 7
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/de.json
  74. 7
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/nl.json
  75. 22
      modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/de.json
  76. 22
      modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/nl.json
  77. 2
      npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts
  78. 5
      samples/MicroserviceDemo/applications/AuthServer.Host/BrandingProvider.cs
  79. 5
      samples/MicroserviceDemo/applications/BackendAdminApp.Host/BrandingProvider.cs
  80. 5
      samples/MicroserviceDemo/applications/PublicWebSite.Host/BrandingProvider.cs
  81. 11
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs
  82. 10
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs

52
docs/zh-Hans/Localization.md

@ -86,6 +86,21 @@ JSON文件位于 "/Localization/Resources/Test" 项目文件夹下, 如下图所
* 每个本地化文件都需要定义 `culture` (文化) 代码 (例如 "en" 或 "en-US"). * 每个本地化文件都需要定义 `culture` (文化) 代码 (例如 "en" 或 "en-US").
* `texts` 部分只包含本地化字符串的键值集合 (键也可能有空格). * `texts` 部分只包含本地化字符串的键值集合 (键也可能有空格).
### 默认资源
可以将 `AbpLocalizationOptions.DefaultResourceType` 设置为资源类型,在未指定本地化资源时使用:
````csharp
Configure<AbpLocalizationOptions>(options =>
{
options.DefaultResourceType = typeof(TestResource);
});
````
> [启动模板]](Startup-Templates/Application.md) 设置 `DefaultResourceType` 为应用程序的本地化资源.
请参阅下面的*客户端*部分获取用例
##### 简短的本地化资源名称 ##### 简短的本地化资源名称
本地化资源也可以在客户端(JavaScript)使用. 因此, 为本地化资源设置一个简短的名称可以更方便的本地化文本. 例如: 本地化资源也可以在客户端(JavaScript)使用. 因此, 为本地化资源设置一个简短的名称可以更方便的本地化文本. 例如:
@ -165,6 +180,10 @@ public class MyService
} }
```` ````
##### 格式参数
格式参数可以在本地化Key参数后传递,如果你的消息是 `Hello {0}, welcome!`,可以将 `{0}` 传递给localizer,例如: `_localizer["HelloMessage", "John"]`.
###### 在Razor视图/Page中简单的用法 ###### 在Razor视图/Page中简单的用法
````c# ````c#
@ -179,7 +198,9 @@ public class MyService
ABP提供了JavaScript服务, 可以在客户端使用相同的本地化文本. ABP提供了JavaScript服务, 可以在客户端使用相同的本地化文本.
获取本地化资源: #### getResource
`abp.localization.getResource` 函数用于获取本地化资源:
````js ````js
var testResource = abp.localization.getResource('Test'); var testResource = abp.localization.getResource('Test');
@ -191,6 +212,33 @@ var testResource = abp.localization.getResource('Test');
var str = testResource('HelloWorld'); var str = testResource('HelloWorld');
```` ````
## See Also #### 本地化
`abp.localization.localize` 函数用于获取本地化文本,你可以传递本地化Key和资源名称:
````js
var str = abp.localization.localize('HelloWorld', 'Test');
````
`HelloWorld` 是本地化文本的Key, `Test` 是本地化资源的名称.
如果未指定本地化资源名称,它使用 `AbpLocalizationOptions` 中定义的默认本地化资源(参见上面的*默认资源*部分). 例:
````js
var str = abp.localization.localize('HelloWorld'); //uses the default resource
````
##### 格式参数
如果本地化字符串包含参数, 例如 `Hello {0}, welcome!`. 你可以将参数传递给本地化方法. 例:
````js
var str1 = abp.localization.getResource('Test')('HelloWelcomeMessage', 'John');
var str2 = abp.localization.localize('HelloWorld', 'Test', 'John');
````
上面的两个示例都会输出 `Hello John, welcome!`.
## 另请参阅
* [Angular UI中的本地化](UI/Angular/Localization.md) * [Angular UI中的本地化](UI/Angular/Localization.md)

100
docs/zh-Hans/Object-Extensions.md

@ -176,6 +176,106 @@ ObjectExtensionManager.Instance
`options` 有一个名为 `Configuration` 的字典,该字典存储对象扩展定义甚至可以扩展. EF Core使用它来将其他属性映射到数据库中的表字段. 请参阅[扩展实体文档](Customizing-Application-Modules-Extending-Entities.md). `options` 有一个名为 `Configuration` 的字典,该字典存储对象扩展定义甚至可以扩展. EF Core使用它来将其他属性映射到数据库中的表字段. 请参阅[扩展实体文档](Customizing-Application-Modules-Extending-Entities.md).
#### CheckPairDefinitionOnMapping
控制在映射两个可扩展对象时如何检查属性定义. 请参阅*对象到对象映射*部分,了解 `CheckPairDefinitionOnMapping` 选项.
## Validation
你可能要为你定义的额外属性添加一些 **验证规则**. `AddOrUpdateProperty` 方法选项允许进行验证的方法有两种:
1. 你可以为属性添加 **数据注解 attributes**.
2. 你可以给定一个action(代码块)执行 **自定义验证**.
当你在**自动验证**的方法(例如:控制器操作,页面处理程序方法,应用程序服务方法...)中使用对象时,验证会工作. 因此,每当扩展对象被验证时,所有额外的属性都会被验证.
### 数据注解 Attributes
所有标准的数据注解Attributes对于额外属性都是有效的. 例:
````csharp
ObjectExtensionManager.Instance
.AddOrUpdateProperty<IdentityUserCreateDto, string>(
"SocialSecurityNumber",
options =>
{
options.Attributes.Add(new RequiredAttribute());
options.Attributes.Add(
new StringLengthAttribute(32) {
MinimumLength = 6
}
);
});
````
使用以上配置,如果没有提供有效的 `SocialSecurityNumber` 值, `IdentityUserCreateDto` 对象将是无效的.
### 自定义验证
如果需要,可以添加一个自定义action验证额外属性. 例:
````csharp
ObjectExtensionManager.Instance
.AddOrUpdateProperty<IdentityUserCreateDto, string>(
"SocialSecurityNumber",
options =>
{
options.Validators.Add(context =>
{
var socialSecurityNumber = context.Value as string;
if (socialSecurityNumber == null ||
socialSecurityNumber.StartsWith("X"))
{
context.ValidationErrors.Add(
new ValidationResult(
"Invalid social security number: " + socialSecurityNumber,
new[] { "SocialSecurityNumber" }
)
);
}
});
});
````
`context.ServiceProvider` 可以解析服务.
除了为单个属性添加自定义验证逻辑外,还可以添加在对象级执行的自定义验证逻辑. 例:
````csharp
ObjectExtensionManager.Instance
.AddOrUpdate<IdentityUserCreateDto>(objConfig =>
{
//Define two properties with their own validation rules
objConfig.AddOrUpdateProperty<string>("Password", propertyConfig =>
{
propertyConfig.Attributes.Add(new RequiredAttribute());
});
objConfig.AddOrUpdateProperty<string>("PasswordRepeat", propertyConfig =>
{
propertyConfig.Attributes.Add(new RequiredAttribute());
});
//Write a common validation logic works on multiple properties
objConfig.Validators.Add(context =>
{
if (context.ValidatingObject.GetProperty<string>("Password") !=
context.ValidatingObject.GetProperty<string>("PasswordRepeat"))
{
context.ValidationErrors.Add(
new ValidationResult(
"Please repeat the same password!",
new[] { "Password", "PasswordRepeat" }
)
);
}
});
});
````
## 对象到对象映射 ## 对象到对象映射
假设你已向可扩展的实体对象添加了额外的属性并使用了自动[对象到对象的映射](Object-To-Object-Mapping.md)将该实体映射到可扩展的DTO类. 在这种情况下你需要格外小心,因为额外属性可能包含**敏感数据**,这些数据对于客户端不可用. 假设你已向可扩展的实体对象添加了额外的属性并使用了自动[对象到对象的映射](Object-To-Object-Mapping.md)将该实体映射到可扩展的DTO类. 在这种情况下你需要格外小心,因为额外属性可能包含**敏感数据**,这些数据对于客户端不可用.

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/de.json

@ -0,0 +1,12 @@
{
"culture": "de",
"texts": {
"GivenTenantIsNotAvailable": "Der angegebene Mandant ist nicht verfügbar: {0}",
"Tenant": "Mandant",
"Switch": "wechseln",
"Name": "Name",
"SwitchTenantHint": "Lassen Sie das Namensfeld leer, um auf die Host-Seite zu wechseln.",
"SwitchTenant": "Mandant wechseln",
"NotSelected": "Nicht ausgewählt"
}
}

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/nl.json

@ -0,0 +1,12 @@
{
"culture": "nl",
"texts": {
"GivenTenantIsNotAvailable": "Gegeven klant is niet beschikbaar: {0}",
"Tenant": "Klant",
"Switch": "Schakel over",
"Name": "Name",
"SwitchTenantHint": "Laat het naamveld leeg om over te schakelen naar de hostkant.",
"SwitchTenant": "Klant wisselen",
"NotSelected": "Niet geselecteerd"
}
}

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Components/DefaultBrandingProvider.cs

@ -7,5 +7,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Components
public virtual string AppName => "MyApplication"; public virtual string AppName => "MyApplication";
public virtual string LogoUrl => null; public virtual string LogoUrl => null;
public virtual string LogoReverseUrl => null;
} }
} }

8
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Components/IBrandingProvider.cs

@ -4,6 +4,14 @@
{ {
string AppName { get; } string AppName { get; }
/// <summary>
/// Logo on white background
/// </summary>
string LogoUrl { get; } string LogoUrl { get; }
/// <summary>
/// Logo on dark background
/// </summary>
string LogoReverseUrl { get; }
} }
} }

22
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/VirtualFileSystem/WebContentFileProvider.cs

@ -1,8 +1,10 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using JetBrains.Annotations; using JetBrains.Annotations;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Primitives;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -91,9 +93,27 @@ namespace Volo.Abp.AspNetCore.VirtualFileSystem
protected virtual IFileProvider CreateFileProvider() protected virtual IFileProvider CreateFileProvider()
{ {
return new CompositeFileProvider( var fileProviders = new List<IFileProvider>()
{
new PhysicalFileProvider(_hostingEnvironment.ContentRootPath), new PhysicalFileProvider(_hostingEnvironment.ContentRootPath),
_virtualFileProvider _virtualFileProvider
};
if (_hostingEnvironment.IsDevelopment() &&
_hostingEnvironment.WebRootFileProvider is CompositeFileProvider compositeFileProvider)
{
var staticWebAssetsFileProvider = compositeFileProvider
.FileProviders
.FirstOrDefault(f => f.GetType().Name.Equals("StaticWebAssetsFileProvider"));
if (staticWebAssetsFileProvider != null)
{
fileProviders.Add(staticWebAssetsFileProvider);
}
}
return new CompositeFileProvider(
fileProviders
); );
} }

6
framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/de.json

@ -0,0 +1,6 @@
{
"culture": "de",
"texts": {
"MaxResultCountExceededExceptionMessage": "{0} kann nicht mehr als {1} sein! Erhöhen Sie {2}.{3} auf der Serverseite, um mehr Ergebnisse zu ermöglichen."
}
}

6
framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/nl.json

@ -0,0 +1,6 @@
{
"culture": "nl",
"texts": {
"MaxResultCountExceededExceptionMessage": "{0} kan niet meer dan {1} zijn! Vergroot {2}.{3} op de server om een groter resultaat toe te staan."
}
}

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

@ -0,0 +1,23 @@
{
"culture": "de",
"texts": {
"DisplayName:Abp.Mailing.DefaultFromAddress": "Standard-Absenderadresse",
"DisplayName:Abp.Mailing.DefaultFromDisplayName": "Standard-Absendername",
"DisplayName:Abp.Mailing.Smtp.Host": "Host",
"DisplayName:Abp.Mailing.Smtp.Port": "Port",
"DisplayName:Abp.Mailing.Smtp.UserName": "Benutzername",
"DisplayName:Abp.Mailing.Smtp.Password": "Passwort",
"DisplayName:Abp.Mailing.Smtp.Domain": "Domain",
"DisplayName:Abp.Mailing.Smtp.EnableSsl": "SSL aktivieren",
"DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "Standard-Anmeldeinformationen verwenden",
"Description:Abp.Mailing.DefaultFromAddress": "Die Standard-Absenderadresse",
"Description:Abp.Mailing.DefaultFromDisplayName": "Der Standard-Absendername",
"Description:Abp.Mailing.Smtp.Host": "Der Name oder die IP-Adresse des für SMTP-Transaktionen verwendeten Hosts.",
"Description:Abp.Mailing.Smtp.Port": "Der für SMTP-Transaktionen verwendete Port.",
"Description:Abp.Mailing.Smtp.UserName": "Benutzername, der mit den Anmeldedaten verknüpft ist.",
"Description:Abp.Mailing.Smtp.Password": "Das Passwort für den Benutzernamen, der mit den Anmeldeinformationen verknüpft ist.",
"Description:Abp.Mailing.Smtp.Domain": "Die Domäne oder der Computername, der die Anmeldeinformationen verifiziert.",
"Description:Abp.Mailing.Smtp.EnableSsl": "Bestimmt, ob der SmptClient Secure Sockets Layer (SSL) zur Verschlüsselung der Verbindung verwendet.",
"Description:Abp.Mailing.Smtp.UseDefaultCredentials": "Bestimmt, ob die DefaultCredentials mit Anfragen gesendet werden."
}
}

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

@ -0,0 +1,23 @@
{
"culture": "nl",
"texts": {
"DisplayName:Abp.Mailing.DefaultFromAddress": "Standard vanaf adres",
"DisplayName:Abp.Mailing.DefaultFromDisplayName": "Standaard vanaf weergave naam",
"DisplayName:Abp.Mailing.Smtp.Host": "Host",
"DisplayName:Abp.Mailing.Smtp.Port": "Poort",
"DisplayName:Abp.Mailing.Smtp.UserName": "Gebruiker naam",
"DisplayName:Abp.Mailing.Smtp.Password": "wachtwoord",
"DisplayName:Abp.Mailing.Smtp.Domain": "Domein",
"DisplayName:Abp.Mailing.Smtp.EnableSsl": "SSL toestaan",
"DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "Gebruik standaard inloggegevens",
"Description:Abp.Mailing.DefaultFromAddress": "Standard vanaf adres",
"Description:Abp.Mailing.DefaultFromDisplayName": "Standaard vanaf weergave naam",
"Description:Abp.Mailing.Smtp.Host": "De naam of het IP-adres van de host die wordt gebruikt voor SMTP-transacties.",
"Description:Abp.Mailing.Smtp.Port": "De poort die wordt gebruikt voor SMTP-transacties.",
"Description:Abp.Mailing.Smtp.UserName": "Gebruikersnaam gekoppeld aan de inloggegevens.",
"Description:Abp.Mailing.Smtp.Password": "Het wachtwoord voor de gebruikersnaam die bij de inloggegevens hoort.",
"Description:Abp.Mailing.Smtp.Domain": "Het domein of de computernaam die de inloggegevens verifieert.",
"Description:Abp.Mailing.Smtp.EnableSsl": "Of de SmtpClient Secure Sockets Layer (SSL) gebruikt om de verbinding te versleutelen.",
"Description:Abp.Mailing.Smtp.UseDefaultCredentials": "Of de standaard inloggegevens worden verzonden met verzoeken."
}
}

7
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/de.json

@ -0,0 +1,7 @@
{
"culture": "de",
"texts": {
"DisplayName:Abp.Localization.DefaultLanguage": "Standardsprache",
"Description:Abp.Localization.DefaultLanguage": "Die Standardsprache der Anwendung."
}
}

7
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"DisplayName:Abp.Localization.DefaultLanguage": "Standaard taal",
"Description:Abp.Localization.DefaultLanguage": "De standaardtaal van de applicatie."
}
}

6
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/de.json

@ -0,0 +1,6 @@
{
"culture": "de",
"texts": {
"Menu:Administration": "Administration"
}
}

6
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/nl.json

@ -0,0 +1,6 @@
{
"culture": "nl",
"texts": {
"Menu:Administration": "Administratie"
}
}

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

@ -0,0 +1,63 @@
{
"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}!",
"Languages": "Sprachen",
"Error": "Fehler",
"AreYouSure": "Sind Sie sicher?",
"Cancel": "Abbrechen",
"Yes": "Ja",
"No": "Nein",
"Ok": "Ok",
"Close": "Schließen",
"Save": "Speichern",
"SavingWithThreeDot": "Speichere...",
"Actions": "Aktionen",
"Delete": "Löschen",
"Edit": "Bearbeiten",
"Refresh": "Aktualisieren",
"Language": "Sprache",
"LoadMore": "Mehr laden",
"ProcessingWithThreeDot": "Verarbeite...",
"LoadingWithThreeDot": "Lade...",
"Welcome": "Willkommen",
"Login": "Anmelden",
"Register": "Registrieren",
"Logout": "Abmelden",
"Submit": "Absenden",
"Back": "Zurück",
"PagerSearch": "Suchen",
"PagerNext": "Nächste",
"PagerPrevious": "Vorherige",
"PagerFirst": "Erste",
"PagerLast": "Letzte",
"PagerInfo": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"PagerInfo{0}{1}{2}": "Zeige {0} bis {1} von {2} Einträgen",
"PagerInfoEmpty": "Zeige 0 bis 0 von 0 Einträgen",
"PagerInfoFiltered": "(gefiltert von _MAX_ Einträgen insgesamt)",
"NoDataAvailableInDatatable": "Keine Daten verfügbar",
"PagerShowMenuEntries": "Zeige _MENU_ Einträge",
"DatatableActionDropdownDefaultText": "Aktionen",
"ChangePassword": "Passwort ändern",
"PersonalInfo": "Mein Profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Sie haben ungespeicherte Änderungen.",
"UnhandledException": "Unerwartete Ausnahme!",
"401Message": "Unauthorisiert",
"403Message": "Verboten",
"404Message": "Seite nicht gefunden",
"500Message": "Internet Server Fehler",
"GoHomePage": "Zur Startseite",
"GoBack": "Zurück"
}
}

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

@ -0,0 +1,63 @@
{
"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}!",
"Languages": "Talen",
"Error": "Fout",
"AreYouSure": "Bent u zeker?",
"Cancel": "Annuleren",
"Yes": "Ja",
"No": "Nee",
"Ok": "Ok",
"Close": "Sluiten",
"Save": "Opslaan",
"SavingWithThreeDot": "Opslaan...",
"Actions": "Acties",
"Delete": "Verwijder",
"Edit": "Bewerk",
"Refresh": "Ververs",
"Language": "Taal",
"LoadMore": "Meer laden",
"ProcessingWithThreeDot": "Verwerken...",
"LoadingWithThreeDot": "Laden...",
"Welcome": "Welkom",
"Login": "Log in",
"Register": "Registreren",
"Logout": "Afmelden",
"Submit": "Verzenden",
"Back": "Terug",
"PagerSearch": "Zoeken",
"PagerNext": "Volgende",
"PagerPrevious": "Vorige",
"PagerFirst": "Eerste",
"PagerLast": "Laatste",
"PagerInfo": "Toont _START_ tot _END_ van _TOTAL_ vermeldingen",
"PagerInfo{0}{1}{2}": "{0} tot {1} van {2} vermeldingen weergeven",
"PagerInfoEmpty": "Toont 0 tot 0 van 0 vermeldingen",
"PagerInfoFiltered": "(gefilterd uit in totaal _MAX_ vermeldingen)",
"NoDataAvailableInDatatable": "Geen gegevens beschikbaar",
"PagerShowMenuEntries": "Toon _MENU_-vermeldingen",
"DatatableActionDropdownDefaultText": "Acties",
"ChangePassword": "Verander wachtwoord",
"PersonalInfo": "Mijn profiel",
"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",
"GoBack": "Ga terug"
}
}

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/cs.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "{0} není platný.", "ThisFieldIsNotValid.": "{0} není platný.",
"ThisFieldIsNotAValidEmailAddress.": "V poli {0} není platný email.", "ThisFieldIsNotAValidEmailAddress.": "V poli {0} není platný email.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Pole přijímá soubory pouze s následujícími koncovkami: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Pole přijímá soubory pouze s následujícími koncovkami: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "Vy poli musí být řežezec nebo řada o maximální délce '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Vy poli musí být řežezec nebo řada o maximální délce '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "V poli musí být řežezec nebo řada o minimální délce '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "V poli musí být řežezec nebo řada o minimální délce '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "V poli není platné telefonní číslo.", "ThisFieldIsNotAValidPhoneNumber.": "V poli není platné telefonní číslo.",
"ThisFieldMustBeBetween{0}And{1}": "Pole musí být mezi {0} a {1}.", "ThisFieldMustBeBetween{0}And{1}": "Pole musí být mezi {0} a {1}.",

34
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/de.json

@ -0,0 +1,34 @@
{
"culture": "de",
"texts": {
"'{0}' and '{1}' do not match.": "'{0}' und '{1}' stimmen nicht überein.",
"The {0} field is not a valid credit card number.": "Das Feld {0} ist keine gültige Kreditkartennummer.",
"{0} is not valid.": "{0} ist nicht gültig.",
"The {0} field is not a valid e-mail address.": "Das Feld {0} ist keine gültige E-Mail-Adresse.",
"The {0} field only accepts files with the following extensions: {1}": "Das Feld {0} akzeptiert nur Dateien mit den folgenden Erweiterungen: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "Das Feld {0} muss eine Zeichenfolge oder Auflistung mit einer maximalen Länge von '{1}' sein.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "Das Feld {0} muss eine Zeichenfolge oder Auflistung mit einer Mindestlänge von '{1}' sein.",
"The {0} field is not a valid phone number.": "Das Feld {0} ist keine gültige Telefonnummer.",
"The field {0} must be between {1} and {2}.": "Das Feld {0} muss zwischen {1} und {2} liegen.",
"The field {0} must match the regular expression '{1}'.": "Das Feld {0} muss dem regulären Ausdruck '{1}' entsprechen.",
"The {0} field is required.": "Das Feld {0} ist erforderlich.",
"The field {0} must be a string with a maximum length of {1}.": "Das Feld {0} muss eine Zeichenfolge mit einer maximalen Länge von {1} sein.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "Das Feld {0} muss eine Zeichenfolge mit einer minimalen Länge von {2} und einer maximalen Länge von {1} sein.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "Das {0}-Feld ist keine gültige vollqualifizierte http-, https- oder ftp-URL.",
"The field {0} is invalid.": "Das Feld {0} ist ungültig.",
"ThisFieldIsNotAValidCreditCardNumber.": "Dieses Feld ist keine gültige Kreditkartennummer.",
"ThisFieldIsNotValid.": "Dieses Feld ist nicht gültig.",
"ThisFieldIsNotAValidEmailAddress.": "Dieses Feld ist keine gültige E-Mail-Adresse.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Dieses Feld akzeptiert nur Dateien mit den folgenden Erweiterungen: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge oder Auflistung mit einer maximalen Länge von '{0}' sein.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge oder Auflistung mit einer Mindestlänge von '{0}' sein.",
"ThisFieldIsNotAValidPhoneNumber.": "Dieses Feld ist keine gültige Telefonnummer.",
"ThisFieldMustBeBetween{0}And{1}": "Dieses Feld muss zwischen {0} und {1} liegen.",
"ThisFieldMustMatchTheRegularExpression{0}": "Dieses Feld muss dem regulären Ausdruck '{0}' entsprechen.",
"ThisFieldIsRequired.": "Dieses Feld ist erforderlich.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge mit einer maximalen Länge von {0} sein.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge mit einer Mindestlänge von '{0}' sein.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Dieses Feld ist keine gültige vollqualifizierte http-, https- oder ftp-URL.",
"ThisFieldIsInvalid.": "Dieses Feld ist ungültig."
}
}

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/en.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "This field is not valid.", "ThisFieldIsNotValid.": "This field is not valid.",
"ThisFieldIsNotAValidEmailAddress.": "This field is not a valid e-mail address.", "ThisFieldIsNotAValidEmailAddress.": "This field is not a valid e-mail address.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "This field only accepts files with the following extensions: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "This field only accepts files with the following extensions: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "This field must be a string or array type with a maximum length of '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "This field must be a string or array type with a maximum length of '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "This field must be a string or array type with a minimum length of '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "This field must be a string or array type with a minimum length of '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "This field is not a valid phone number.", "ThisFieldIsNotAValidPhoneNumber.": "This field is not a valid phone number.",
"ThisFieldMustBeBetween{0}And{1}": "This field must be between {0} and {1}.", "ThisFieldMustBeBetween{0}And{1}": "This field must be between {0} and {1}.",

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/es.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "Este campo no es válido.", "ThisFieldIsNotValid.": "Este campo no es válido.",
"ThisFieldIsNotAValidEmailAddress.": "Este campo no es una dirección de correo electrónico válida.", "ThisFieldIsNotAValidEmailAddress.": "Este campo no es una dirección de correo electrónico válida.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Este campo sólo acepta archivos con las siguientes extensiones: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Este campo sólo acepta archivos con las siguientes extensiones: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "Este campo debe ser una cadena o un array con una longitud máxima de '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Este campo debe ser una cadena o un array con una longitud máxima de '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Este campo debe ser una cadena o un array con una longitud mínima de '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Este campo debe ser una cadena o un array con una longitud mínima de '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "Este campo no es un número de teléfono válido.", "ThisFieldIsNotAValidPhoneNumber.": "Este campo no es un número de teléfono válido.",
"ThisFieldMustBeBetween{0}And{1}": "Este campo debe tener un valor entre {0} y {1}.", "ThisFieldMustBeBetween{0}And{1}": "Este campo debe tener un valor entre {0} y {1}.",

34
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/nl.json

@ -0,0 +1,34 @@
{
"culture": "nl",
"texts": {
"'{0}' and '{1}' do not match.": "'{0}' en '{1}' komen niet overeen.",
"The {0} field is not a valid credit card number.": "Het veld {0} is geen geldig krediet kaartnummer.",
"{0} is not valid.": "{0} is niet geldig.",
"The {0} field is not a valid e-mail address.": "Het veld {0} is geen geldig e-mailadres.",
"The {0} field only accepts files with the following extensions: {1}": "Het veld {0} accepteert alleen bestanden met de volgende extensies: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "Het veld {0} moet een tekenreeks- of arraytype zijn met een maximale lengte van '{1}'.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "Het veld {0} moet een tekenreeks- of arraytype zijn met een minimale lengte van '{1}'.",
"The {0} field is not a valid phone number.": "Het veld {0} is geen geldig telefoonnummer.",
"The field {0} must be between {1} and {2}.": "Het veld {0} moet tussen {1} en {2} liggen.",
"The field {0} must match the regular expression '{1}'.": "Het veld {0} moet overeenkomen met de reguliere expressie '{1}'.",
"The {0} field is required.": "Het veld {0} is verplicht.",
"The field {0} must be a string with a maximum length of {1}.": "Het veld {0} moet een tekenreeks zijn met een maximale lengte van {1}.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "Het veld {0} moet een tekenreeks zijn met een minimale lengte van {2} en een maximale lengte van {1}.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "Het veld {0} is geen geldige, volledig gekwalificeerde http-, https- of ftp-URL.",
"The field {0} is invalid.": "Het veld {0} is ongeldig.",
"ThisFieldIsNotAValidCreditCardNumber.": "Dit veld is geen geldig krediet kaartnummer.",
"ThisFieldIsNotValid.": "Dir veld is ongeldig.",
"ThisFieldIsNotAValidEmailAddress.": "Dit veld is geen geldig e-mail adres.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Dit veld accepteert alleen bestanden met de volgende extensies: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Dit veld moet een tekenreeks- of arraytype zijn met een maximale lengte van '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Dit veld moet een tekenreeks- of arraytype zijn met een minimale lengte van '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "Dit veld is geen geldig telefoonnummer.",
"ThisFieldMustBeBetween{0}And{1}": "Dit veld moet tussen {0} en {1} liggen.",
"ThisFieldMustMatchTheRegularExpression{0}": "Dit veld moet overeenkomen met de reguliere expressie '{0}'.",
"ThisFieldIsRequired.": "Dit veld is verplicht.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Dit veld moet een tekenreeks zijn met een maximale lengte van {0}.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Dit veld moet een tekenreeks zijn met een minimale lengte van {1} en een maximale lengte van {0}.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Dit veld is geen geldige, volledig gekwalificeerde http-, https- of ftp-URL.",
"ThisFieldIsInvalid.": "Dit veld is ongeldig."
}
}

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/pt-BR.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "Campo inválido.", "ThisFieldIsNotValid.": "Campo inválido.",
"ThisFieldIsNotAValidEmailAddress.": "E-mail inválido.", "ThisFieldIsNotAValidEmailAddress.": "E-mail inválido.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Este campo só aceita arquivos com asseguintes extensões: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Este campo só aceita arquivos com asseguintes extensões: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "This field must be a string or array type with a maximum length of '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "This field must be a string or array type with a maximum length of '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "This field must be a string or array type with a minimum length of '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "This field must be a string or array type with a minimum length of '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "Número de telefone inválido.", "ThisFieldIsNotAValidPhoneNumber.": "Número de telefone inválido.",
"ThisFieldMustBeBetween{0}And{1}": "Este campo deve estar entre {0} e {1}.", "ThisFieldMustBeBetween{0}And{1}": "Este campo deve estar entre {0} e {1}.",

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/ru.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "Значение в этом поле недействительно.", "ThisFieldIsNotValid.": "Значение в этом поле недействительно.",
"ThisFieldIsNotAValidEmailAddress.": "Это поле не содержит действительный адрес электронной почты.", "ThisFieldIsNotAValidEmailAddress.": "Это поле не содержит действительный адрес электронной почты.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Вы можете загрузить файлы только следующих форматов: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Вы можете загрузить файлы только следующих форматов: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "Это поле должно иметь тип строки или массива с максимальной длиной '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Это поле должно иметь тип строки или массива с максимальной длиной '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Это поле должно иметь тип строки или массива с минимальной длиной '{0}'.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Это поле должно иметь тип строки или массива с минимальной длиной '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "Это поле не содержит действительный номер телефона.", "ThisFieldIsNotAValidPhoneNumber.": "Это поле не содержит действительный номер телефона.",
"ThisFieldMustBeBetween{0}And{1}": "Это поле должно быть между {0} и {1}.", "ThisFieldMustBeBetween{0}And{1}": "Это поле должно быть между {0} и {1}.",

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/tr.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "Bu alan geçerli değil.", "ThisFieldIsNotValid.": "Bu alan geçerli değil.",
"ThisFieldIsNotAValidEmailAddress.": "Bu alan geçerli bir e-posta adresi olmalıdır.", "ThisFieldIsNotAValidEmailAddress.": "Bu alan geçerli bir e-posta adresi olmalıdır.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Bu alan sadece şu uzantılarda dosyaları kabul eder: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Bu alan sadece şu uzantılarda dosyaları kabul eder: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "Bu alan en fazla '{0}' uzunluğunda bir metin ya da dizi olmalıdır.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Bu alan en fazla '{0}' uzunluğunda bir metin ya da dizi olmalıdır.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Bu alan en az '{0}' uzunluğunda bir metin ya da dizi olmalıdır.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Bu alan en az '{0}' uzunluğunda bir metin ya da dizi olmalıdır.",
"ThisFieldIsNotAValidPhoneNumber.": "Bu alan geçerli bir telefon numarası olmalıdır.", "ThisFieldIsNotAValidPhoneNumber.": "Bu alan geçerli bir telefon numarası olmalıdır.",
"ThisFieldMustBeBetween{0}And{1}": "Bu alanın değeri {0} ile {1} arasında olmalıdır.", "ThisFieldMustBeBetween{0}And{1}": "Bu alanın değeri {0} ile {1} arasında olmalıdır.",

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hans.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "验证未通过.", "ThisFieldIsNotValid.": "验证未通过.",
"ThisFieldIsNotAValidEmailAddress.": "字段不是有效的邮箱地址.", "ThisFieldIsNotAValidEmailAddress.": "字段不是有效的邮箱地址.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "字段只允许以下扩展名的文件: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "字段只允许以下扩展名的文件: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "字段必须是最大长度为'{0}'的字符串或数组.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "字段必须是最大长度为'{0}'的字符串或数组.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "字段必须是最小长度为'{0}'的字符串或数组.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "字段必须是最小长度为'{0}'的字符串或数组.",
"ThisFieldIsNotAValidPhoneNumber.": "字段不是有效的手机号码.", "ThisFieldIsNotAValidPhoneNumber.": "字段不是有效的手机号码.",
"ThisFieldMustBeBetween{0}And{1}": "字段值必须在{0}和{1}范围内.", "ThisFieldMustBeBetween{0}And{1}": "字段值必须在{0}和{1}范围内.",

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hant.json

@ -20,7 +20,7 @@
"ThisFieldIsNotValid.": "此驗證未通過.", "ThisFieldIsNotValid.": "此驗證未通過.",
"ThisFieldIsNotAValidEmailAddress.": "此欄位不是有效的郵箱地址.", "ThisFieldIsNotAValidEmailAddress.": "此欄位不是有效的郵箱地址.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "此欄位只允許以下副檔名的文件: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "此欄位只允許以下副檔名的文件: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "此欄位必須是最大長度為'{0}'的字串或陣列.", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "此欄位必須是最大長度為'{0}'的字串或陣列.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "此欄位必須是最小長度為'{0}'的字串或陣列.", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "此欄位必須是最小長度為'{0}'的字串或陣列.",
"ThisFieldIsNotAValidPhoneNumber.": "此欄位不是有效的電話號碼.", "ThisFieldIsNotAValidPhoneNumber.": "此欄位不是有效的電話號碼.",
"ThisFieldMustBeBetween{0}And{1}": "此欄位值必須在{0}和{1}範圍內.", "ThisFieldMustBeBetween{0}And{1}": "此欄位值必須在{0}和{1}範圍內.",

7
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/de.json

@ -0,0 +1,7 @@
{
"culture": "de",
"texts": {
"BirthDate": "Geburtsdatum",
"Value1": "Wert Eins"
}
}

7
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"BirthDate": "Geboortedatum",
"Value1": "Waarde een"
}
}

6
framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/de.json

@ -0,0 +1,6 @@
{
"culture": "de",
"texts": {
"hello": "Hallo"
}
}

6
framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/nl.json

@ -0,0 +1,6 @@
{
"culture": "nl",
"texts": {
"hello": "hallo"
}
}

10
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

@ -73,6 +73,11 @@ namespace Volo.Abp.Localization
_localizer["Car"].Value.ShouldBe("Auto"); _localizer["Car"].Value.ShouldBe("Auto");
} }
using (CultureHelper.Use("de"))
{
_localizer["Car"].Value.ShouldBe("Auto");
}
} }
[Fact] [Fact]
@ -98,6 +103,11 @@ namespace Volo.Abp.Localization
_localizer["SeeYou"].Value.ShouldBe("Nos vemos"); _localizer["SeeYou"].Value.ShouldBe("Nos vemos");
} }
using (CultureHelper.Use("de"))
{
_localizer["SeeYou"].Value.ShouldBe("Bis bald");
}
} }
[Fact] [Fact]

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/de.json

@ -0,0 +1,7 @@
{
"culture": "de",
"texts": {
"USA": "Vereinigte Staaten von Amerika",
"Brazil": "Brasilien"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"USA": "Verenigde Staten van Amerika",
"Brazil": "Brazilië"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/de.json

@ -0,0 +1,7 @@
{
"culture": "de",
"texts": {
"ThisFieldIsRequired": "Dieses Feld ist ein Pflichtfeld",
"MaxLenghtErrorMessage": "Die Länge dieses Feldes kann maximal '{0}'-Zeichen betragen"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"ThisFieldIsRequired": "Dit veld is verplicht",
"MaxLenghtErrorMessage": "Dit veld mag maximaal '{0}' tekens bevatten"
}
}

11
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/de.json

@ -0,0 +1,11 @@
{
"culture": "de",
"texts": {
"Hello <b>{0}</b>.": "Hallo <b>{0}</b>.",
"Car": "Auto",
"CarPlural": "Autos",
"MaxLenghtErrorMessage": "Die Länge dieses Feldes kann maximal '{0}'-Zeichen betragen",
"Universe": "Universum",
"FortyTwo": "Zweiundvierzig"
}
}

11
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/nl.json

@ -0,0 +1,11 @@
{
"culture": "nl",
"texts": {
"Hello <b>{0}</b>.": "Hallo <b>{0}</b>.",
"Car": "Auto",
"CarPlural": "Auto's",
"MaxLenghtErrorMessage": "De lengte van dit veld mag maximaal '{0}' tekens zijn",
"Universe": "Universum",
"FortyTwo": "Tweeënveertig"
}
}

8
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/de.json

@ -0,0 +1,8 @@
{
"culture": "de",
"texts": {
"Hello <b>{0}</b>.": "Hallo <b>{0}</b>.",
"Car": "Auto",
"SeeYou": "Bis bald"
}
}

6
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/nl.json

@ -0,0 +1,6 @@
{
"culture": "nl",
"texts": {
"SeeYou": "Tot ziens"
}
}

45
modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/de.json

@ -0,0 +1,45 @@
{
"culture": "de",
"texts": {
"UserName": "Benutzername",
"EmailAddress": "E-Mail-Adresse",
"UserNameOrEmailAddress": "Benutzername oder E-Mail-Adresse",
"Password": "Passwort",
"RememberMe": "Angemeldet bleiben",
"UseAnotherServiceToLogin": "Einen anderen Dienst zum Anmelden verwenden",
"UserLockedOutMessage": "Das Benutzerkonto wurde aufgrund fehlgeschlagener Anmeldeversuche gesperrt. Bitte warten Sie eine Weile und versuchen Sie es erneut.",
"InvalidUserNameOrPassword": "Ungültiger Benutzername oder Passwort!",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Sie müssen Ihre E-Mail/Telefonnummer bestätigen.",
"SelfRegistrationDisabledMessage": "Die Selbstregistrierung ist für diese Anwendung deaktiviert. Bitte wenden Sie sich an den Anwendungsadministrator, um einen neuen Benutzer zu registrieren.",
"LocalLoginDisabledMessage": "Die lokale Anmeldung ist für diese Anwendung deaktiviert.",
"Login": "Anmelden",
"Cancel": "Abbrechen",
"Register": "Registrieren",
"AreYouANewUser": "Neuer Benutzer?",
"AlreadyRegistered": "Bereits registriert?",
"InvalidLoginRequest": "Ungültige Login-Anfrage",
"ThereAreNoLoginSchemesConfiguredForThisClient": "Es sind keine Anmeldeschemata für diesen Client konfiguriert.",
"LogInUsingYourProviderAccount": "Melden Sie sich mit Ihrem {0}-Konto an",
"DisplayName:CurrentPassword": "Aktuelles Passwort",
"DisplayName:NewPassword": "Neues Passwort",
"DisplayName:NewPasswordConfirm": "Neues Passwort bestätigen",
"PasswordChangedMessage": "Ihr Passwort wurde erfolgreich geändert.",
"DisplayName:UserName": "Benutzername",
"DisplayName:Email": "E-Mail",
"DisplayName:Name": "Name",
"DisplayName:Surname": "Nachname",
"DisplayName:Password": "Passwort",
"DisplayName:EmailAddress": "E-Mail-Adresse",
"DisplayName:PhoneNumber": "Telefonnummer",
"PersonalSettings": "Persönliche Einstellungen",
"PersonalSettingsSaved": "Persönliche Einstellungen gespeichert",
"PasswordChanged": "Passwort geändert",
"NewPasswordConfirmFailed": "Bitte bestätigen Sie das neue Passwort.",
"Manage": "Verwalten",
"ManageYourProfile": "Ihr profil verwalten",
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "Ist die Selbstregistrierung aktiviert",
"Description:Abp.Account.IsSelfRegistrationEnabled": "Gibt an, ob ein Benutzer das Konto selbst registrieren kann.",
"DisplayName:Abp.Account.EnableLocalLogin": "Authentifizierung mit einem lokalen Konto",
"Description:Abp.Account.EnableLocalLogin": "Gibt an, ob der Server Benutzern die Authentifizierung mit einem lokalen Konto erlaubt."
}
}

45
modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/nl.json

@ -0,0 +1,45 @@
{
"culture": "nl",
"texts": {
"UserName": "Gebruikersnaam",
"EmailAddress": "E-mailadres",
"UserNameOrEmailAddress": "Gebruikersnaam of e-mail adres",
"Password": "Wachtwoord",
"RememberMe": "Herinner me",
"UseAnotherServiceToLogin": "Gebruik een andere dienst om in te loggen",
"UserLockedOutMessage": "Het gebruikersaccount is geblokkeerd vanwege ongeldige inlogpogingen. Wacht even en probeer het opnieuw.",
"InvalidUserNameOrPassword": "Ongeldige gebruikersnaam of wachtwoord!",
"LoginIsNotAllowed": "U mag niet inloggen! U moet uw e-mailadres / telefoonnummer bevestigen.",
"SelfRegistrationDisabledMessage": "Zelfregistratie is uitgeschakeld voor deze applicatie. Neem contact op met de applicatiebeheerder om een nieuwe gebruiker te registreren.",
"LocalLoginDisabledMessage": "Lokale aanmelding is uitgeschakeld voor deze applicatie.",
"Login": "Log in",
"Cancel": "Annuleer",
"Register": "Registreer",
"AreYouANewUser": "Bent u een nieuwe gebruiker?",
"AlreadyRegistered": "Al geregistreerd?",
"InvalidLoginRequest": "Ongeldig inlogverzoek",
"ThereAreNoLoginSchemesConfiguredForThisClient": "Er zijn geen aanmeldingsschema's geconfigureerd voor deze client.",
"LogInUsingYourProviderAccount": "Log in met uw {0} -account",
"DisplayName:CurrentPassword": "Huidig wachtwoord",
"DisplayName:NewPassword": "Nieuw wachtwoord",
"DisplayName:NewPasswordConfirm": "Bevestig nieuw wachtwoord",
"PasswordChangedMessage": "Uw wachtwoord is met succes veranderd.",
"DisplayName:UserName": "Gebruikersnaam",
"DisplayName:Email": "E-mail",
"DisplayName:Name": "Naam",
"DisplayName:Surname": "Achternaam",
"DisplayName:Password": "Wachtwoord",
"DisplayName:EmailAddress": "E-mail adres",
"DisplayName:PhoneNumber": "Telefoonnummer",
"PersonalSettings": "Persoonlijke instellingen",
"PersonalSettingsSaved": "Persoonlijke instellingen opgeslagen",
"PasswordChanged": "wachtwoord veranderd",
"NewPasswordConfirmFailed": "Bevestig het nieuwe wachtwoord a.u.b..",
"Manage": "Beheer",
"ManageYourProfile": "Beheer uw profiel",
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "Is zelfregistratie ingeschakeld",
"Description:Abp.Account.IsSelfRegistrationEnabled": "Of een gebruiker het account zelf kan registreren.",
"DisplayName:Abp.Account.EnableLocalLogin": "Verifieer met een lokaal account",
"Description:Abp.Account.EnableLocalLogin": "Geeft aan of de server gebruikers toestaat zich te verifiëren met een lokaal account."
}
}

14
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/de.json

@ -0,0 +1,14 @@
{
"culture": "de",
"texts": {
"Permission:Blogging": "Blog",
"Permission:Blogs": "Blogs",
"Permission:Posts": "Beiträge",
"Permission:Tags": "Tags",
"Permission:Comments": "Kommentare",
"Permission:Management": "Verwaltung",
"Permission:Edit": "Bearbeiten",
"Permission:Create": "Erstellen",
"Permission:Delete": "Löschen"
}
}

14
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/nl.json

@ -0,0 +1,14 @@
{
"culture": "nl",
"texts": {
"Permission:Blogging": "Blog",
"Permission:Blogs": "Blogs",
"Permission:Posts": "Posts",
"Permission:Tags": "Tags",
"Permission:Comments": "Kommentaar",
"Permission:Management": "Beheer",
"Permission:Edit": "Bewerk",
"Permission:Create": "Maak aan",
"Permission:Delete": "Verwijder"
}
}

49
modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/de.json

@ -0,0 +1,49 @@
{
"culture": "de",
"texts": {
"Menu:Blogs": "Blogs",
"Menu:BlogManagement": "Blog-Verwaltung",
"Title": "Titel",
"Delete": "Löschen",
"Reply": "Antwort",
"ReplyTo": "Antwort auf {0}",
"ContinueReading": "Weiterlesen",
"DaysAgo": "vor {0} Tagen",
"YearsAgo": "vor {0} Jahren",
"MonthsAgo": "vor {0} Monaten",
"WeeksAgo": "vor {0} Wochen",
"MinutesAgo": "vor {0} Minuten",
"SecondsAgo": "vor {0} Sekunden",
"HoursAgo": "vor {0} Stunden",
"Now": "jetzt",
"Content": "Inhalt",
"SeeAll": "Alle anzeigen",
"PopularTags": "Beliebte Tags",
"WiewsWithCount": "{0} Aufrufe",
"LastPosts": "Letzte Beiträge",
"LeaveComment": "Kommentar hinterlassen",
"TagsInThisArticle": "Tags in diesem Artikel",
"Posts": "Beiträge",
"Edit": "Bearbeiten",
"BLOG": "BLOG",
"CommentDeletionWarningMessage": "Kommentar wird gelöscht.",
"PostDeletionWarningMessage": "Beitrag wird gelöscht.",
"BlogDeletionWarningMessage": "Blog wird gelöscht.",
"AreYouSure": "Sind Sie sicher?",
"CommentWithCount": "{0} Kommentare",
"Comment": "Kommentar",
"ShareOnTwitter": "Auf Twitter teilen",
"CoverImage": "Titelbild",
"CreateANewPost": "Neuen Beitrag erstellen",
"CreateANewBlog": "Neuen Blog erstellen",
"WhatIsNew": "Was ist neu?",
"Name": "Name",
"ShortName": "Kurzname",
"CreationTime": "Erstellungszeit",
"Description": "Beschreibung",
"Blogs": "Blogs",
"Tags": "Tags",
"ShareOn": "Teilen auf",
"TitleLengthWarning": "Halten Sie Ihren Titel unter 60 Zeichen, um SEO-freundlich zu sein!"
}
}

49
modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/nl.json

@ -0,0 +1,49 @@
{
"culture": "nl",
"texts": {
"Menu:Blogs": "Blogs",
"Menu:BlogManagement": "Blog Beheer",
"Title": "Titel",
"Delete": "Verwijder",
"Reply": "Antwoord",
"ReplyTo": "Antwoord aan {0}",
"ContinueReading": "Lees verder",
"DaysAgo": "{0} dagen geleden",
"YearsAgo": "{0} jaar geleden",
"MonthsAgo": "{0} maanden geleden",
"WeeksAgo": "{0} weken geleden",
"MinutesAgo": "{0} minuten geleden",
"SecondsAgo": "{0} seconden geleden",
"HoursAgo": "{0} uur geleden",
"Now": "nu",
"Content": "Inhoud",
"SeeAll": "Alles zien",
"PopularTags": "Populaire tags",
"WiewsWithCount": "{0} keer bekeken",
"LastPosts": "Laatste berichten",
"LeaveComment": "Laat commentaar achter",
"TagsInThisArticle": "Tags in dit artikel",
"Posts": "Berichten",
"Edit": "Bewerk",
"BLOG": "BLOG",
"CommentDeletionWarningMessage": "Reactie wordt verwijderd.",
"PostDeletionWarningMessage": "Berich wordt verwijderd.",
"BlogDeletionWarningMessage": "Blog wordt verwijderd.",
"AreYouSure": "Weet u het zeker?",
"CommentWithCount": "{0} reacties",
"Comment": "Reactie",
"ShareOnTwitter": "Delen op Twitter",
"CoverImage": "Omslagfoto",
"CreateANewPost": "Maak een nieuw bericht",
"CreateANewBlog": "Maak een nieuwe Blog",
"WhatIsNew": "Wat is nieuw?",
"Name": "Naam",
"ShortName": "Korte naam",
"CreationTime": "Creatie tijd",
"Description": "Beschrijving",
"Blogs": "Blogs",
"Tags": "Tags",
"ShareOn": "Delen op",
"TitleLengthWarning": "Houd uw titel kleiner dan 60 tekens om SEO-vriendelijk te zijn!"
}
}

10
modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/de.json

@ -0,0 +1,10 @@
{
"culture": "de",
"texts": {
"DocsTitle": "VoloDocs",
"WelcomeVoloDocs": "Willkommen bei den VoloDocs!",
"NoProjectWarning": "Es gibt noch kein definiertes Projekt!",
"CreateYourFirstProject": "Klicken Sie hier, um Ihr erstes Projekt zu starten",
"NoProject": "Kein Projekt!"
}
}

10
modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/nl.json

@ -0,0 +1,10 @@
{
"culture": "nl",
"texts": {
"DocsTitle": "VoloDocs",
"WelcomeVoloDocs": "Welkom bij de VoloDocs!",
"NoProjectWarning": "Er is nog geen gedefinieerd project!",
"CreateYourFirstProject": "Klik hier om uw eerste project te starten",
"NoProject": "Geen project!"
}
}

7
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks; using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
namespace Volo.Docs.Admin.Documents namespace Volo.Docs.Admin.Documents
@ -10,7 +11,5 @@ namespace Volo.Docs.Admin.Documents
Task PullAllAsync(PullAllDocumentInput input); Task PullAllAsync(PullAllDocumentInput input);
Task PullAsync(PullDocumentInput input); Task PullAsync(PullDocumentInput input);
Task ReindexAsync();
} }
} }

37
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/de.json

@ -0,0 +1,37 @@
{
"culture": "de",
"texts": {
"Permission:DocumentManagement": "Dokumentenverwaltung",
"Permission:Projects": "Projekte",
"Permission:Edit": "Bearbeiten",
"Permission:Delete": "Löschen",
"Permission:Create": "Erstellen",
"Permission:Documents": "Dokumente",
"Menu:DocumentManagement": "Dokumente",
"Menu:ProjectManagement": "Projekte",
"CreateANewProject": "Neues Projekt erstellen",
"Edit": "Bearbeiten",
"Create": "Erstellen",
"Pull": "Pull",
"Projects": "Projekte",
"Name": "Name",
"ShortName": "Kurzname",
"DocumentStoreType": "DocumentStoreType",
"Format": "Format",
"ShortNameInfoText": "Wird für eindeutige URL verwendet.",
"DisplayName:Name": "Name",
"DisplayName:ShortName": "Kurzname",
"DisplayName:Format": "Format",
"DisplayName:DefaultDocumentName": "Standard-Dokumentname",
"DisplayName:NavigationDocumentName": "Name des Navigationsdokuments",
"DisplayName:MinimumVersion": "Mindestversion",
"DisplayName:MainWebsiteUrl": "Haupt-URL der Website",
"DisplayName:LatestVersionBranchName": "Zweigname der neuesten Version",
"DisplayName:GitHubRootUrl": "GitHub-Stamm-URL",
"DisplayName:GitHubAccessToken": "GitHub-Zugriffstoken",
"DisplayName:GitHubUserAgent": "GitHub-Benutzer-Agent",
"DisplayName:All": "Pull all",
"DisplayName:LanguageCode": "Sprachcode",
"DisplayName:Version": "Version"
}
}

37
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/nl.json

@ -0,0 +1,37 @@
{
"culture": "nl",
"texts": {
"Permission:DocumentManagement": "Document beheer",
"Permission:Projects": "Projecten",
"Permission:Edit": "Bewerk",
"Permission:Delete": "Verwijder",
"Permission:Create": "Maak aan",
"Permission:Documents": "Documenten",
"Menu:DocumentManagement": "Documenten",
"Menu:ProjectManagement": "Projecten",
"CreateANewProject": "Maak een nieuw project",
"Edit": "Bewerk",
"Create": "Maak aan",
"Pull": "Pull",
"Projects": "Projecten",
"Name": "Naam",
"ShortName": "Korte naam",
"DocumentStoreType": "DocumentStoreType",
"Format": "Formaat",
"ShortNameInfoText": "Wordt gebruikt voor unieke URL.",
"DisplayName:Name": "Naam",
"DisplayName:ShortName": "Korte naam",
"DisplayName:Format": "Formaat",
"DisplayName:DefaultDocumentName": "Standaard documentnaam",
"DisplayName:NavigationDocumentName": "Navigatiedocumentnaam",
"DisplayName:MinimumVersion": "Minimale versie",
"DisplayName:MainWebsiteUrl": "URL van hoofdwebsite",
"DisplayName:LatestVersionBranchName": "Laatste versie vertakkingsnaam",
"DisplayName:GitHubRootUrl": "GitHub root URL",
"DisplayName:GitHubAccessToken": "GitHub-toegangstoken",
"DisplayName:GitHubUserAgent": "GitHub-gebruikersagent",
"DisplayName:All": "Pull all",
"DisplayName:LanguageCode": "Taalcode",
"DisplayName:Version": "Versie"
}
}

10
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/IProjectAdminAppService.cs

@ -12,9 +12,13 @@ namespace Volo.Docs.Admin.Projects
Task<ProjectDto> GetAsync(Guid id); Task<ProjectDto> GetAsync(Guid id);
Task<ProjectDto> CreateAsync(CreateProjectDto input); Task<ProjectDto> CreateAsync(CreateProjectDto input);
Task<ProjectDto> UpdateAsync(Guid id, UpdateProjectDto input); Task<ProjectDto> UpdateAsync(Guid id, UpdateProjectDto input);
Task DeleteAsync(Guid id); Task DeleteAsync(Guid id);
Task ReindexAsync(ReindexInput input);
Task ReindexAllAsync();
} }
} }

9
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Projects/ReindexInput.cs

@ -0,0 +1,9 @@
using System;
namespace Volo.Docs.Admin.Projects
{
public class ReindexInput
{
public Guid ProjectId { get; set; }
}
}

36
modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs

@ -25,17 +25,13 @@ namespace Volo.Docs.Admin.Documents
private readonly IDistributedCache<DocumentUpdateInfo> _documentUpdateCache; private readonly IDistributedCache<DocumentUpdateInfo> _documentUpdateCache;
private readonly IDistributedCache<List<VersionInfo>> _versionCache; private readonly IDistributedCache<List<VersionInfo>> _versionCache;
private readonly IDistributedCache<LanguageConfig> _languageCache; private readonly IDistributedCache<LanguageConfig> _languageCache;
private readonly IDistributedCache<DocumentResource> _resourceCache;
private readonly IDocumentFullSearch _documentFullSearch;
public DocumentAdminAppService(IProjectRepository projectRepository, public DocumentAdminAppService(IProjectRepository projectRepository,
IDocumentRepository documentRepository, IDocumentRepository documentRepository,
IDocumentSourceFactory documentStoreFactory, IDocumentSourceFactory documentStoreFactory,
IDistributedCache<DocumentUpdateInfo> documentUpdateCache, IDistributedCache<DocumentUpdateInfo> documentUpdateCache,
IDistributedCache<List<VersionInfo>> versionCache, IDistributedCache<List<VersionInfo>> versionCache,
IDistributedCache<LanguageConfig> languageCache, IDistributedCache<LanguageConfig> languageCache)
IDistributedCache<DocumentResource> resourceCache,
IDocumentFullSearch documentFullSearch)
{ {
_projectRepository = projectRepository; _projectRepository = projectRepository;
_documentRepository = documentRepository; _documentRepository = documentRepository;
@ -43,8 +39,6 @@ namespace Volo.Docs.Admin.Documents
_documentUpdateCache = documentUpdateCache; _documentUpdateCache = documentUpdateCache;
_versionCache = versionCache; _versionCache = versionCache;
_languageCache = languageCache; _languageCache = languageCache;
_resourceCache = resourceCache;
_documentFullSearch = documentFullSearch;
LocalizationResource = typeof(DocsResource); LocalizationResource = typeof(DocsResource);
} }
@ -125,32 +119,6 @@ namespace Volo.Docs.Admin.Documents
await UpdateDocumentUpdateInfoCache(sourceDocument); await UpdateDocumentUpdateInfoCache(sourceDocument);
} }
public async Task ReindexAsync()
{
var docs = await _documentRepository.GetListAsync();
var projects = await _projectRepository.GetListAsync();
foreach (var doc in docs)
{
var project = projects.FirstOrDefault(x => x.Id == doc.ProjectId);
if (project == null)
{
continue;
}
if (doc.FileName == project.NavigationDocumentName)
{
continue;
}
if (doc.FileName == project.ParametersDocumentName)
{
continue;
}
await _documentFullSearch.AddOrUpdateAsync(doc);
}
}
private async Task UpdateDocumentUpdateInfoCache(Document document) private async Task UpdateDocumentUpdateInfoCache(Document document)
{ {
var cacheKey = $"DocumentUpdateInfo{document.ProjectId}#{document.Name}#{document.LanguageCode}#{document.Version}"; var cacheKey = $"DocumentUpdateInfo{document.ProjectId}#{document.Name}#{document.LanguageCode}#{document.Version}";
@ -174,4 +142,4 @@ namespace Volo.Docs.Admin.Documents
return document; return document;
} }
} }
} }

71
modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs

@ -1,10 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using Volo.Docs.Documents;
using Volo.Docs.Documents.FullSearch.Elastic;
using Volo.Docs.Localization; using Volo.Docs.Localization;
using Volo.Docs.Projects; using Volo.Docs.Projects;
@ -14,15 +17,22 @@ namespace Volo.Docs.Admin.Projects
public class ProjectAdminAppService : ApplicationService, IProjectAdminAppService public class ProjectAdminAppService : ApplicationService, IProjectAdminAppService
{ {
private readonly IProjectRepository _projectRepository; private readonly IProjectRepository _projectRepository;
private readonly IDocumentRepository _documentRepository;
private readonly IDocumentFullSearch _documentFullSearch;
private readonly IGuidGenerator _guidGenerator; private readonly IGuidGenerator _guidGenerator;
public ProjectAdminAppService( public ProjectAdminAppService(
IProjectRepository projectRepository, IGuidGenerator guidGenerator) IProjectRepository projectRepository,
IDocumentRepository documentRepository,
IDocumentFullSearch documentFullSearch,
IGuidGenerator guidGenerator)
{ {
ObjectMapperContext = typeof(DocsAdminApplicationModule); ObjectMapperContext = typeof(DocsAdminApplicationModule);
LocalizationResource = typeof(DocsResource); LocalizationResource = typeof(DocsResource);
_projectRepository = projectRepository; _projectRepository = projectRepository;
_documentRepository = documentRepository;
_documentFullSearch = documentFullSearch;
_guidGenerator = guidGenerator; _guidGenerator = guidGenerator;
} }
@ -51,7 +61,7 @@ namespace Volo.Docs.Admin.Projects
{ {
throw new ProjectShortNameAlreadyExistsException(input.ShortName); throw new ProjectShortNameAlreadyExistsException(input.ShortName);
} }
var project = new Project(_guidGenerator.Create(), var project = new Project(_guidGenerator.Create(),
input.Name, input.Name,
input.ShortName, input.ShortName,
@ -71,7 +81,7 @@ namespace Volo.Docs.Admin.Projects
{ {
project.ExtraProperties.Add(extraProperty.Key, extraProperty.Value); project.ExtraProperties.Add(extraProperty.Key, extraProperty.Value);
} }
project = await _projectRepository.InsertAsync(project); project = await _projectRepository.InsertAsync(project);
return ObjectMapper.Map<Project, ProjectDto>(project); return ObjectMapper.Map<Project, ProjectDto>(project);
@ -106,6 +116,57 @@ namespace Volo.Docs.Admin.Projects
{ {
await _projectRepository.DeleteAsync(id); await _projectRepository.DeleteAsync(id);
} }
public async Task ReindexAsync(ReindexInput input)
{
var project = await _projectRepository.GetAsync(input.ProjectId);
await _documentFullSearch.DeleteAllByProjectIdAsync(project.Id);
var docs = await _documentRepository.GetListByProjectId(project.Id);
foreach (var doc in docs)
{
if (doc.FileName == project.NavigationDocumentName)
{
continue;
}
if (doc.FileName == project.ParametersDocumentName)
{
continue;
}
await _documentFullSearch.AddOrUpdateAsync(doc);
}
}
public async Task ReindexAllAsync()
{
await _documentFullSearch.DeleteAllAsync();
var docs = await _documentRepository.GetListAsync();
var projects = await _projectRepository.GetListAsync();
foreach (var doc in docs)
{
var project = projects.FirstOrDefault(x => x.Id == doc.ProjectId);
if (project == null)
{
continue;
}
if (doc.FileName == project.NavigationDocumentName)
{
continue;
}
if (doc.FileName == project.ParametersDocumentName)
{
continue;
}
await _documentFullSearch.AddOrUpdateAsync(doc);
}
}
} }
} }

7
modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs

@ -39,12 +39,5 @@ namespace Volo.Docs.Admin
{ {
return _documentAdminAppService.PullAsync(input); return _documentAdminAppService.PullAsync(input);
} }
[HttpPost]
[Route("Reindex")]
public Task ReindexAsync()
{
return _documentAdminAppService.ReindexAsync();
}
} }
} }

14
modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/ProjectsAdminController.cs

@ -53,5 +53,19 @@ namespace Volo.Docs.Admin
{ {
return _projectAppService.DeleteAsync(id); return _projectAppService.DeleteAsync(id);
} }
[HttpPost]
[Route("ReindexAll")]
public Task ReindexAllAsync()
{
return _projectAppService.ReindexAllAsync();
}
[HttpPost]
[Route("Reindex")]
public Task ReindexAsync(ReindexInput input)
{
return _projectAppService.ReindexAsync(input);
}
} }
} }

4
modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml

@ -39,6 +39,10 @@
</abp-dropdown-menu> </abp-dropdown-menu>
</abp-dropdown> </abp-dropdown>
} }
@if (await Authorization.IsGrantedAsync(DocsAdminPermissions.Projects.Default))
{
<abp-button button-type="Primary" icon="plus" text="@L["ReIndexAllProjects"].Value" id="ReIndexAllProjects" />
}
</abp-column> </abp-column>
</abp-row> </abp-row>
</abp-card-header> </abp-card-header>

27
modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/index.js

@ -74,6 +74,18 @@
_dataTable.ajax.reload(); _dataTable.ajax.reload();
}); });
} }
},
{
text: l('ReIndexProject'),
visible: abp.auth.isGranted('Docs.Admin.Documents'),
confirmMessage: function (data) { return l('ReIndexProjectConfirmationMessage', data.record.name); },
action: function (data) {
volo.docs.admin.projectsAdmin
.reindex({ projectId: data.record.id})
.then(function () {
abp.message.success(l('SuccessfullyReIndexProject', data.record.name));
});
}
} }
] ]
} }
@ -110,6 +122,19 @@
_createModal.open({source:"GitHub"}); _createModal.open({source:"GitHub"});
}); });
$("#ReIndexAllProjects").click(function (event) {
abp.message.confirm(l('ReIndexAllProjectConfirmationMessage'))
.done(function (accepted) {
if (accepted) {
volo.docs.admin.projectsAdmin
.reindexAll()
.then(function () {
abp.message.success(l('SuccessfullyReIndexAllProject'));
});
}
});
});
_createModal.onClose(function () { _createModal.onClose(function () {
_dataTable.ajax.reload(); _dataTable.ajax.reload();
}); });
@ -118,4 +143,4 @@
_dataTable.ajax.reload(); _dataTable.ajax.reload();
}); });
}); });

44
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/ElasticDocumentFullSearch.cs

@ -92,6 +92,48 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
.DeleteAsync(DocumentPath<Document>.Id(id), x => x.Index(_options.IndexName), cancellationToken)); .DeleteAsync(DocumentPath<Document>.Id(id), x => x.Index(_options.IndexName), cancellationToken));
} }
public async Task DeleteAllAsync(CancellationToken cancellationToken = default)
{
ValidateElasticSearchEnabled();
var request = new DeleteByQueryRequest(_options.IndexName)
{
Query = new MatchAllQuery()
};
HandleError(await _clientProvider.GetClient()
.DeleteByQueryAsync(request, cancellationToken));
}
public async Task DeleteAllByProjectIdAsync(Guid projectId, CancellationToken cancellationToken = default)
{
ValidateElasticSearchEnabled();
var request = new DeleteByQueryRequest(_options.IndexName)
{
Query = new BoolQuery
{
Filter = new QueryContainer[]
{
new BoolQuery
{
Must = new QueryContainer[]
{
new TermQuery
{
Field = "projectId",
Value = projectId
}
}
}
}
},
};
HandleError(await _clientProvider.GetClient()
.DeleteByQueryAsync(request, cancellationToken));
}
public async Task<List<EsDocument>> SearchAsync(string context, Guid projectId, string languageCode, public async Task<List<EsDocument>> SearchAsync(string context, Guid projectId, string languageCode,
string version, int? skipCount = null, int? maxResultCount = null, string version, int? skipCount = null, int? maxResultCount = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
@ -185,4 +227,4 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
} }
} }
} }
} }

6
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/IDocumentFullSearch.cs

@ -13,8 +13,12 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
Task DeleteAsync(Guid id, CancellationToken cancellationToken = default); Task DeleteAsync(Guid id, CancellationToken cancellationToken = default);
Task DeleteAllAsync(CancellationToken cancellationToken = default);
Task DeleteAllByProjectIdAsync(Guid projectId, CancellationToken cancellationToken = default);
Task<List<EsDocument>> SearchAsync(string context, Guid projectId, string languageCode, Task<List<EsDocument>> SearchAsync(string context, Guid projectId, string languageCode,
string version, int? skipCount = null, int? maxResultCount = null, string version, int? skipCount = null, int? maxResultCount = null,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
} }
} }

31
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/de.json

@ -0,0 +1,31 @@
{
"culture": "de",
"texts": {
"Documents": "Dokumente",
"BackToWebsite": "Zurück zur Website",
"Contributors": "Mitwirkende",
"ShareOn": "Teilen auf",
"Version": "Version",
"Edit": "Bearbeiten",
"LastEditTime": "Letzte Bearbeitung",
"Delete": "Löschen",
"ClearCache": "Cache leeren",
"ClearCacheConfirmationMessage": "Sind Sie sicher, dass Sie alle Caches für das Projekt löschen \"{0}\"",
"InThisDocument": "In diesem Dokument",
"GoToTop": "Nach oben",
"Projects": "Projekt(e)",
"NoProjectWarning": "Es gibt noch keine Projekte!",
"DocumentNotFound": "Hoppla, das angeforderte Dokument wurde nicht gefunden!",
"NavigationDocumentNotFound": "Diese Version hat kein Navigationsdokument!",
"DocumentNotFoundInSelectedLanguage": "Das Dokument wurde nicht in der von Ihnen gewünschten Sprache gefunden. Das Dokument wird in der Standardsprache angezeigt.",
"FilterTopics": "Themen filtern",
"FullSearch": "Suche in Dokumenten",
"Volo.Docs.Domain:010001": "Elastic search ist nicht aktiviert.",
"MultipleVersionDocumentInfo": "Dieses Dokument hat mehrere Versionen. Wählen Sie die für Sie am besten geeigneten Optionen aus.",
"New": "Neu",
"Upd": "Upd",
"NewExplanation": "Erstellt in den letzten zwei Wochen.",
"UpdatedExplanation": "Aktualisiert in den letzten zwei Wochen.",
"Volo.Docs.Domain:010002": "Kurzname {ShortName} existiert bereits."
}
}

6
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/en.json

@ -11,6 +11,12 @@
"Delete": "Delete", "Delete": "Delete",
"ClearCache": "Clear cache", "ClearCache": "Clear cache",
"ClearCacheConfirmationMessage": "Are you sure to clear all caches for project \"{0}\"", "ClearCacheConfirmationMessage": "Are you sure to clear all caches for project \"{0}\"",
"ReIndexAllProjects": "ReIndex all projects",
"ReIndexProject": "ReIndex project",
"ReIndexProjectConfirmationMessage":"Are you sure to reindex for project \"{0}\"",
"SuccessfullyReIndexProject": "Successfully reindex for project \"{0}\"",
"ReIndexAllProjectConfirmationMessage": "Are you sure to reindex all project?",
"SuccessfullyReIndexAllProject": "Successfully reindex for all projects",
"InThisDocument": "In this document", "InThisDocument": "In this document",
"GoToTop": "Go to top", "GoToTop": "Go to top",
"Projects": "Project(s)", "Projects": "Project(s)",

31
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/nl.json

@ -0,0 +1,31 @@
{
"culture": "nl",
"texts": {
"Documents": "Documenten",
"BackToWebsite": "Terug naar website",
"Contributors": "Bijdragers",
"ShareOn": "Delen op",
"Version": "Versie",
"Edit": "Bewerk",
"LastEditTime": "Laatste bewerking",
"Delete": "Verwijder",
"ClearCache": "Cache wissen",
"ClearCacheConfirmationMessage": "Weet u zeker dat u alle caches voor het project \"{0}\" wilt wissen?",
"InThisDocument": "In dit document",
"GoToTop": "Ga naar boven",
"Projects": "Project (en)",
"NoProjectWarning": "Er zijn nog geen projecten!",
"DocumentNotFound": "Oeps, het opgevraagde document is niet gevonden!",
"NavigationDocumentNotFound": "Deze versie heeft geen navigatiedocument!",
"DocumentNotFoundInSelectedLanguage": "Document in de gewenste taal is niet gevonden. Document in de standaardtaal wordt weergegeven.",
"FilterTopics": "Filter onderwerpen",
"FullSearch": "Zoek in documenten",
"Volo.Docs.Domain:010001": "Elastisch zoeken is niet ingeschakeld.",
"MultipleVersionDocumentInfo": "Dit document heeft meerdere versies. Selecteer de opties die het beste bij u passen.",
"New": "Nieuw",
"Upd": "Bew",
"NewExplanation": "Gemaakt in de afgelopen twee weken.",
"UpdatedExplanation": "Bewerkt in de afgelopen twee weken.",
"Volo.Docs.Domain:010002": "KorteNaam {ShortName} bestaat al."
}
}

7
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/de.json

@ -0,0 +1,7 @@
{
"culture": "de",
"texts": {
"Features": "Funktionen",
"NoFeatureFoundMessage": "Es ist keine Funktion verfügbar."
}
}

7
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"Features": "Functies",
"NoFeatureFoundMessage": "Er is geen functie beschikbaar."
}
}

104
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json

@ -0,0 +1,104 @@
{
"culture": "de",
"texts": {
"Menu:IdentityManagement": "Identitätsverwaltung",
"Users": "Benutzer",
"NewUser": "Neuer Benutzer",
"UserName": "Benutzername",
"EmailAddress": "E-Mail-Adresse",
"PhoneNumber": "Telefonnummer",
"UserInformations": "Benutzerinformationen",
"DisplayName:IsDefault": "Standard",
"DisplayName:IsStatic": "Statisch",
"DisplayName:IsPublic": "Öffentlich",
"Roles": "Rollen",
"Password": "Passwort",
"PersonalInfo": "Mein Profil",
"PersonalSettings": "Persönliche Einstellungen",
"UserDeletionConfirmationMessage": "Der Benutzer '{0}' wird gelöscht. Sind Sie sicher?",
"RoleDeletionConfirmationMessage": "Die Rolle '{0}' wird gelöscht. Sind Sie sicher?",
"DisplayName:RoleName": "Rollenname",
"DisplayName:UserName": "Benutzername",
"DisplayName:Name": "Name",
"DisplayName:Surname": "Nachname",
"DisplayName:Password": "Passwort",
"DisplayName:Email": "E-Mail-Adresse",
"DisplayName:PhoneNumber": "Telefonnummer",
"DisplayName:TwoFactorEnabled": "Zwei-Faktor-Verifizierung",
"DisplayName:LockoutEnabled": "Konto nach fehlgeschlagenen Anmeldeversuchen sperren",
"NewRole": "Neue Rolle",
"RoleName": "Rollenname",
"CreationTime": "Erstellungszeit",
"Permissions": "Berechtigungen",
"DisplayName:CurrentPassword": "Aktuelles Passwort",
"DisplayName:NewPassword": "Neues Passwort",
"DisplayName:NewPasswordConfirm": "Neues Passwort bestätigen",
"PasswordChangedMessage": "Ihr Passwort wurde erfolgreich geändert.",
"PersonalSettingsSavedMessage": "Ihre persönlichen Einstellungen wurden erfolgreich gespeichert.",
"Identity.DefaultError": "Ein unbekannter Fehler ist aufgetreten.",
"Identity.ConcurrencyFailure": "Optimistischer Nebenläufigkeitsfehler, Objekt wurde geändert.",
"Identity.DuplicateEmail": "E-Mail '{0}' ist bereits vergeben.",
"Identity.DuplicateRoleName": "Der Rollenname '{0}' ist bereits vergeben.",
"Identity.DuplicateUserName": "Der Benutzername '{0}' ist bereits vergeben.",
"Identity.InvalidEmail": "E-Mail '{0}' ist ungültig.",
"Identity.InvalidPasswordHasherCompatibilityMode": "Der angegebene PasswordHasherCompatibilityMode ist ungültig.",
"Identity.InvalidPasswordHasherIterationCount": "Die Iterationszahl muss eine positive Ganzzahl sein.",
"Identity.InvalidRoleName": "Der Rollenname '{0}' ist ungültig.",
"Identity.InvalidToken": "Ungültiges Token.",
"Identity.InvalidUserName": "Benutzername '{0}' ist ungültig, kann nur Buchstaben oder Ziffern enthalten.",
"Identity.LoginAlreadyAssociated": "Ein Benutzer mit diesem Login existiert bereits.",
"Identity.PasswordMismatch": "Falsches Passwort.",
"Identity.PasswordRequiresDigit": "Passwörter müssen mindestens eine Ziffer ('0'-'9') enthalten.",
"Identity.PasswordRequiresLower": "Passwörter müssen mindestens einen Kleinbuchstaben ('a'-'z') enthalten.",
"Identity.PasswordRequiresNonAlphanumeric": "Passwörter müssen mindestens ein Sonderzeichen enthalten.",
"Identity.PasswordRequiresUpper": "Passwörter müssen mindestens einen Großbuchstaben ('A'-'Z') enthalten.",
"Identity.PasswordTooShort": "Passwörter müssen mindestens {0} Zeichen enthalten.",
"Identity.RoleNotFound": "Die Rolle {0} existiert nicht.",
"Identity.UserAlreadyHasPassword": "Der Benutzer hat bereits ein Passwort gesetzt.",
"Identity.UserAlreadyInRole": "Benutzer ist bereits in der Rolle '{0}'.",
"Identity.UserLockedOut": "Benutzer ist ausgesperrt.",
"Identity.UserLockoutNotEnabled": "Aussperrung ist für diesen Benutzer nicht aktiviert.",
"Identity.UserNameNotFound": "Benutzer {0} existiert nicht.",
"Identity.UserNotInRole": "Benutzer ist nicht in der Rolle '{0}'.",
"Identity.PasswordConfirmationFailed": "Passwort stimmt nicht mit dem Bestätigungspasswort überein.",
"Identity.StaticRoleRenamingErrorMessage": "Statische Rollen können nicht umbenannt werden.",
"Identity.StaticRoleDeletionErrorMessage": "Statische Rollen können nicht gelöscht werden.",
"Volo.Abp.Identity:010001": "Sie können Ihr eigenes Konto nicht löschen!",
"Permission:IdentityManagement": "Identitätsverwaltung",
"Permission:RoleManagement": "Rollenverwaltung",
"Permission:Create": "Erstellen",
"Permission:Edit": "Bearbeiten",
"Permission:Delete": "Löschen",
"Permission:ChangePermissions": "Berechtigungen ändern",
"Permission:UserManagement": "Benutzerverwaltung",
"Permission:UserLookup": "Benutzer-Lookup",
"DisplayName:Abp.Identity.Password.RequiredLength": "Erforderliche Länge",
"DisplayName:Abp.Identity.Password.RequiredUniqueChars": "Erforderliche eindeutige Zeichenanzahl",
"DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "Erforderliches Sonderzeichen",
"DisplayName:Abp.Identity.Password.RequireLowercase": "Erforderliche Kleinbuchstaben",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Erforderliche Großbuchstaben",
"DisplayName:Abp.Identity.Password.RequireDigit": "Erforderliche Ziffer",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Aktiviert für neue Benutzer",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Aussperrdauer (Sekunden)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max fehlgeschlagene Zugriffsversuche",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "Bestätigte E-Mail erforderlich",
"DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Telefonnummer-Bestätigung aktivieren",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Bestätigte Telefonnummer erforderlich",
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "Ist die Aktualisierung des Benutzernamens aktiviert?",
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "Ist die E-Mail-Aktualisierung aktiviert?",
"Description:Abp.Identity.Password.RequiredLength": "Die Mindestlänge, die ein Passwort haben muss.",
"Description:Abp.Identity.Password.RequiredUniqueChars": "Die Mindestanzahl eindeutiger Zeichen, die ein Passwort enthalten muss.",
"Description:Abp.Identity.Password.RequireNonAlphanumeric": "Ob Passwörter ein nicht-alphanumerisches Zeichen enthalten müssen.",
"Description:Abp.Identity.Password.RequireLowercase": "Ob Passwörter ein kleingeschriebenes ASCII-Zeichen enthalten müssen.",
"Description:Abp.Identity.Password.RequireUppercase": "Ob Passwörter ein ASCII-Zeichen in Großbuchstaben enthalten müssen.",
"Description:Abp.Identity.Password.RequireDigit": "Ob Passwörter eine Ziffer enthalten müssen.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Ob ein neuer Benutzer ausgesperrt werden kann.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Die Dauer, für die ein Benutzer ausgesperrt ist, wenn eine Sperre auftritt.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Die Anzahl der fehlgeschlagenen Zugriffsversuche, die erlaubt sind, bevor ein Benutzer gesperrt wird, vorausgesetzt, die Sperre ist aktiviert.",
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "Whether a confirmed email address is required to sign in.",
"Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Ob für die Anmeldung eine bestätigte E-Mail-Adresse erforderlich ist.",
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Ob für die Anmeldung eine bestätigte Telefonnummer erforderlich ist.",
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Ob der Benutzername vom Benutzer aktualisiert werden kann.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Ob die E-Mail durch den Benutzer aktualisiert werden kann."
}
}

104
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json

@ -0,0 +1,104 @@
{
"culture": "nl",
"texts": {
"Menu:IdentityManagement": "Identiteitsbeheer",
"Users": "Gebruikers",
"NewUser": "Nieuwe Gebruiker",
"UserName": "Gebruikersnaam",
"EmailAddress": "E-mail adres",
"PhoneNumber": "Telefoonnummer",
"UserInformations": "Gebruikers informatie",
"DisplayName:IsDefault": "Standaard",
"DisplayName:IsStatic": "Statisch",
"DisplayName:IsPublic": "Openbaar",
"Roles": "Roles",
"Password": "Wachtwoord",
"PersonalInfo": "Mijn profiel",
"PersonalSettings": "Persoonlijke instellingen",
"UserDeletionConfirmationMessage": "Gebruiker '{0}' wordt verwijderd. Bevestigt U dat?",
"RoleDeletionConfirmationMessage": "Rol '{0}' wordt verwijderd. Bevestigt U dat?",
"DisplayName:RoleName": "Rol naam",
"DisplayName:UserName": "Gebruikersnaam",
"DisplayName:Name": "Naam",
"DisplayName:Surname": "Achternaam",
"DisplayName:Password": "Wachtwoord",
"DisplayName:Email": "E-mail adres",
"DisplayName:PhoneNumber": "Telefoonnummer",
"DisplayName:TwoFactorEnabled": "Twee-factor-verificatie",
"DisplayName:LockoutEnabled": "Account vergrendelen na mislukte inlogpogingen",
"NewRole": "Nieuwe rol",
"RoleName": "Rol naam",
"CreationTime": "Creatie tijd",
"Permissions": "Rechten",
"DisplayName:CurrentPassword": "Huidig wachtwoord",
"DisplayName:NewPassword": "Nieuw wachtwoord",
"DisplayName:NewPasswordConfirm": "Bevestig nieuw wachtwoord",
"PasswordChangedMessage": "Uw wachtwoord is met succes veranderd.",
"PersonalSettingsSavedMessage": "Uw persoonlijke instellingen zijn succesvol opgeslagen.",
"Identity.DefaultError": "Er is een onbekende fout opgetreden.",
"Identity.ConcurrencyFailure": "Optimistische gelijktijdigheidsfout, object is gewijzigd.",
"Identity.DuplicateEmail": "E-mail '{0}' is al in gebruik.",
"Identity.DuplicateRoleName": "De rolnaam '{0}' is al in gebruik.",
"Identity.DuplicateUserName": "Gebruikersnaam '{0}' is al in gebruik.",
"Identity.InvalidEmail": "E-mail' {0} 'is ongeldig.",
"Identity.InvalidPasswordHasherCompatibilityMode": "De opgegeven PasswordHasherCompatibilityMode is ongeldig.",
"Identity.InvalidPasswordHasherIterationCount": "De iteratietelling moet een positief geheel getal zijn.",
"Identity.InvalidRoleName": "Rolnaam '{0}' is ongeldig.",
"Identity.InvalidToken": "Ongeldig token.",
"Identity.InvalidUserName": "Gebruikersnaam '{0}' is ongeldig, mag alleen letters of cijfers bevatten.",
"Identity.LoginAlreadyAssociated": "Er bestaat al een gebruiker met deze login.",
"Identity.PasswordMismatch": "Incorrect wachtwoord.",
"Identity.PasswordRequiresDigit": "Wachtwoorden moeten minimaal één cijfer bevatten ('0' - '9').",
"Identity.PasswordRequiresLower": "Wachtwoorden moeten minstens één kleine letter bevatten ('a' - 'z').",
"Identity.PasswordRequiresNonAlphanumeric": "Wachtwoorden moeten minimaal één niet-alfanumeriek teken bevatten.",
"Identity.PasswordRequiresUpper": "Wachtwoorden moeten ten minste één hoofdletter bevatten ('A' - 'Z').",
"Identity.PasswordTooShort": "Wachtwoorden moeten uit minimaal {0} tekens bestaan.",
"Identity.RoleNotFound": "Rol {0} bestaat niet.",
"Identity.UserAlreadyHasPassword": "Gebruiker heeft al een wachtwoord ingesteld.",
"Identity.UserAlreadyInRole": "Gebruiker al in rol '{0}'.",
"Identity.UserLockedOut": "Gebruiker is geblokkeerd.",
"Identity.UserLockoutNotEnabled": "Lockout is niet ingeschakeld voor deze gebruiker.",
"Identity.UserNameNotFound": "Gebruiker {0} bestaat niet.",
"Identity.UserNotInRole": "Gebruiker speelt geen rol '{0}'.",
"Identity.PasswordConfirmationFailed": "Wachtwoord komt niet overeen met de wachtwoord bevestiging.",
"Identity.StaticRoleRenamingErrorMessage": "Statische rollen kunnen niet worden hernoemd.",
"Identity.StaticRoleDeletionErrorMessage": "Statische rollen kunnen niet worden verwijderd.",
"Volo.Abp.Identity:010001": "U kunt uw eigen account niet verwijderen!",
"Permission:IdentityManagement": "Identiteitsbeheer",
"Permission:RoleManagement": "Rolbeheer",
"Permission:Create": "Maak aan",
"Permission:Edit": "Verander",
"Permission:Delete": "Verwijder",
"Permission:ChangePermissions": "Wijzig de rechten",
"Permission:UserManagement": "Gebruikersbeheer",
"Permission:UserLookup": "Gebruiker opzoeken",
"DisplayName:Abp.Identity.Password.RequiredLength": "Vereiste lengte",
"DisplayName:Abp.Identity.Password.RequiredUniqueChars": "Vereist aantal unieke tekens",
"DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "Vereist niet-alfanumeriek teken",
"DisplayName:Abp.Identity.Password.RequireLowercase": "Vereist kleine letter",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Vereist hoofdletter",
"DisplayName:Abp.Identity.Password.RequireDigit": "Vereist cijfer",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Ingeschakeld voor nieuwe gebruikers",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Blokkeringsduur (seconden)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Max mislukte toegangspogingen",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "Vereist bevestigde e-mail",
"DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Schakel telefoonnummerbevestiging in",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Vereist bevestigd telefoonnummer",
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "Is gebruikersnaam aktualisering ingeschakeld",
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "Is e-mail aktualisering ingeschakeld",
"Description:Abp.Identity.Password.RequiredLength": "De minimale lengte die een wachtwoord moet hebben.",
"Description:Abp.Identity.Password.RequiredUniqueChars": "Het minimumaantal unieke tekens dat een wachtwoord moet bevatten.",
"Description:Abp.Identity.Password.RequireNonAlphanumeric": "Als wachtwoorden een niet-alfanumeriek teken moeten bevatten.",
"Description:Abp.Identity.Password.RequireLowercase": "Als wachtwoorden een ASCII-teken in kleine letters moeten bevatten.",
"Description:Abp.Identity.Password.RequireUppercase": "Als wachtwoorden een ASCII-teken in hoofdletters moeten bevatten.",
"Description:Abp.Identity.Password.RequireDigit": "Als wachtwoorden een cijfer moeten bevatten.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Of een nieuwe gebruiker kan worden geblokkeerd.",
"Description:Abp.Identity.Lockout.LockoutDuration": "De duur dat een gebruiker wordt geblokkeerd wanneer een blokkering optreedt.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Het aantal mislukte toegangspogingen dat is toegestaan voordat een gebruiker wordt geblokkeerd, ervan uitgaande dat blokkering is ingeschakeld.",
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "Of een bevestigd e-mail adres vereist is om in te loggen.",
"Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Of het telefoonnummer kan worden bevestigd door de gebruiker.",
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Of een bevestigd telefoonnummer vereist is om in te loggen.",
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Of de gebruikersnaam kan worden bijgewerkt door de gebruiker.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Of de e-mail door de gebruiker kan worden veranderd."
}
}

12
modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/de.json

@ -0,0 +1,12 @@
{
"culture": "de",
"texts": {
"Volo.IdentityServer:DuplicateIdentityResourceName": "Identität Ressourcenname existiert bereits: {Name}",
"Volo.IdentityServer:DuplicateApiResourceName": "Api Ressourcenname existiert bereits: {Name}",
"Volo.IdentityServer:DuplicateClientId": "ClientId bereits vorhanden: {ClientId}",
"UserLockedOut": "Das Benutzerkonto wurde aufgrund ungültiger Anmeldeversuche ausgesperrt. Bitte warten Sie eine Weile und versuchen Sie es erneut.",
"InvalidUserNameOrPassword": "Ungültiger Benutzername oder Passwort!",
"LoginIsNotAllowed": "Sie dürfen sich nicht anmelden! Sie müssen Ihre E-Mail/Telefonnummer bestätigen.",
"InvalidUsername": "Ungültiger Benutzername oder Passwort!"
}
}

12
modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/nl.json

@ -0,0 +1,12 @@
{
"culture": "nl",
"texts": {
"Volo.IdentityServer:DuplicateIdentityResourceName": "Identiteitsbronnaam bestaat al: {Name}",
"Volo.IdentityServer:DuplicateApiResourceName": "API-bronnaam bestaat al: {Name}",
"Volo.IdentityServer:DuplicateClientId": "ClientId bestaat al: {ClientId}",
"UserLockedOut": "Het gebruikersaccount is geblokkeerd vanwege ongeldige inlogpogingen. Wacht even en probeer het opnieuw.",
"InvalidUserNameOrPassword": "ongeldige gebruikersnaam of wachtwoord!",
"LoginIsNotAllowed": "U mag niet inloggen! U moet uw e-mailadres / telefoonnummer bevestigen.",
"InvalidUsername": "Ongeldige gebruikersnaam of wachtwoord!"
}
}

10
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/de.json

@ -0,0 +1,10 @@
{
"culture": "de",
"texts": {
"Permissions": "Berechtigungen",
"OnlyProviderPermissons": "Nur dieser Anbieter",
"All": "Alle",
"SelectAllInAllTabs": "Alle Berechtigungen erteilen",
"SelectAllInThisTab": "Alle auswählen"
}
}

10
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/nl.json

@ -0,0 +1,10 @@
{
"culture": "nl",
"texts": {
"Permissions": "Rechten",
"OnlyProviderPermissons": "Alleen deze provider",
"All": "Alle",
"SelectAllInAllTabs": "Verleen alle rechten",
"SelectAllInThisTab": "Selecteer alles"
}
}

7
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/de.json

@ -0,0 +1,7 @@
{
"culture": "de",
"texts": {
"Settings": "Einstellungen",
"SuccessfullySaved": "Erfolgreich gespeichert"
}
}

7
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/nl.json

@ -0,0 +1,7 @@
{
"culture": "nl",
"texts": {
"Settings": "Instellingen",
"SuccessfullySaved": "Succesvol opgeslagen"
}
}

22
modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/de.json

@ -0,0 +1,22 @@
{
"culture": "de",
"texts": {
"Menu:TenantManagement": "Mandantenverwaltung",
"Tenants": "Mandanten",
"NewTenant": "Neuer Mandant",
"TenantName": "Mandantenname",
"DisplayName:TenantName": "Mandantenname",
"TenantDeletionConfirmationMessage": "Der Mandant '{0}' wird gelöscht. Sind Sie sicher?",
"ConnectionStrings": "Verbindungszeichenfolgen",
"DisplayName:DefaultConnectionString": "Standard Verbindungszeichenfolge",
"DisplayName:UseSharedDatabase": "Nutze die gemeinsame Datenbank",
"Permission:TenantManagement": "Mandantenverwaltung",
"Permission:Create": "Erstellen",
"Permission:Edit": "Bearbeiten",
"Permission:Delete": "Löschen",
"Permission:ManageConnectionStrings": "Verbindungszeichenfolgen verwalten",
"Permission:ManageFeatures": "Funktionen verwalten",
"DisplayName:AdminEmailAddress": "Admin E-Mail-Adresse",
"DisplayName:AdminPassword": "Admin Password"
}
}

22
modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/nl.json

@ -0,0 +1,22 @@
{
"culture": "nl",
"texts": {
"Menu:TenantManagement": "Klanten beheer",
"Tenants": "Klanten",
"NewTenant": "Nieuwe klant",
"TenantName": "Naam klant",
"DisplayName:TenantName": "Naam klant",
"TenantDeletionConfirmationMessage": "Klant '{0}' wordt verwijderd. Bevestigt u dat?",
"ConnectionStrings": "Connection Strings",
"DisplayName:DefaultConnectionString": "Standaard Connection String",
"DisplayName:UseSharedDatabase": "Gebruik de gedeelde database",
"Permission:TenantManagement": "Klanten beheer",
"Permission:Create": "Maak aan",
"Permission:Edit": "Bewerk",
"Permission:Delete": "Verwijder",
"Permission:ManageConnectionStrings": "Beheer connection strings",
"Permission:ManageFeatures": "Beheer functies",
"DisplayName:AdminEmailAddress": "Admin e-mail adres",
"DisplayName:AdminPassword": "Admin wachtwoord"
}
}

2
npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts

@ -37,7 +37,7 @@ export const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, Empt
email: 'AbpAccount::ThisFieldIsNotAValidEmailAddress.', email: 'AbpAccount::ThisFieldIsNotAValidEmailAddress.',
max: 'AbpAccount::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]', max: 'AbpAccount::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]',
maxlength: maxlength:
'AbpAccount::ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}[{{ requiredLength }}]', 'AbpAccount::ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}[{{ requiredLength }}]',
min: 'AbpAccount::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]', min: 'AbpAccount::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]',
minlength: minlength:
'AbpAccount::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]', 'AbpAccount::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]',

5
samples/MicroserviceDemo/applications/AuthServer.Host/BrandingProvider.cs

@ -3,9 +3,8 @@ using Volo.Abp.DependencyInjection;
namespace AuthServer.Host namespace AuthServer.Host
{ {
public class BrandingProvider : IBrandingProvider, ISingletonDependency public class BrandingProvider : DefaultBrandingProvider, ISingletonDependency
{ {
public string AppName => "Authentication Server"; public override string AppName => "Authentication Server";
public string LogoUrl => null;
} }
} }

5
samples/MicroserviceDemo/applications/BackendAdminApp.Host/BrandingProvider.cs

@ -3,9 +3,8 @@ using Volo.Abp.DependencyInjection;
namespace BackendAdminApp.Host namespace BackendAdminApp.Host
{ {
public class BrandingProvider : IBrandingProvider, ISingletonDependency public class BrandingProvider : DefaultBrandingProvider, ISingletonDependency
{ {
public string AppName => "Backend Admin App"; public override string AppName => "Backend Admin App";
public string LogoUrl => null;
} }
} }

5
samples/MicroserviceDemo/applications/PublicWebSite.Host/BrandingProvider.cs

@ -3,9 +3,8 @@ using Volo.Abp.DependencyInjection;
namespace PublicWebSite.Host namespace PublicWebSite.Host
{ {
public class BrandingProvider : IBrandingProvider, ISingletonDependency public class BrandingProvider : DefaultBrandingProvider, ISingletonDependency
{ {
public string AppName => "Public Web Site"; public override string AppName => "Public Web Site";
public string LogoUrl => null;
} }
} }

11
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs

@ -18,6 +18,7 @@ using Volo.Abp.Account.Web;
using Volo.Abp.AspNetCore.Authentication.JwtBearer; using Volo.Abp.AspNetCore.Authentication.JwtBearer;
using Volo.Abp.AspNetCore.MultiTenancy; using Volo.Abp.AspNetCore.MultiTenancy;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
using Volo.Abp.Localization; using Volo.Abp.Localization;
@ -152,6 +153,16 @@ namespace MyCompanyName.MyProjectName
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseErrorPage();
}
app.UseCorrelationId(); app.UseCorrelationId();
app.UseVirtualFiles(); app.UseVirtualFiles();

10
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs

@ -139,6 +139,16 @@ namespace MyCompanyName.MyProjectName
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseErrorPage();
}
app.UseCorrelationId(); app.UseCorrelationId();
app.UseVirtualFiles(); app.UseVirtualFiles();

Loading…
Cancel
Save