@ -0,0 +1,247 @@ |
|||
# ABP Framework v2.7.0 Has Been Released! |
|||
|
|||
The **ABP Framework** & and the **ABP Commercial** v2.7 have been released. We hadn't created blog post for the 2.4, 2.4 and 2.6 releases, so this post will also cover **what's new** with these releases and **what we've done** in the last 2 months. |
|||
|
|||
## About the Release Cycle & Development |
|||
|
|||
Reminding that we had started to release a new minor feature version **in every two weeks**, generally on Thursdays. Our goal is to deliver new features as soon as possible. |
|||
|
|||
We've completed & merged hundreds of issues and pull requests with **1,300+ commits** in the last 7-8 weeks, only for the ABP Framework repository. Daily commit counts are constantly increasing: |
|||
|
|||
 |
|||
|
|||
ABP.IO Platform is rapidly growing and we are getting more and more contributions from the community. |
|||
|
|||
## What's New in the ABP Framework? |
|||
|
|||
### Object Extending System |
|||
|
|||
In the last few releases, we've mostly focused on providing ways to extend existing modules when you use them as NuGet/NPM Packages. |
|||
|
|||
The Object Extending System allows module developers to create extensible modules and allows application developers to customize and extend a module easily. |
|||
|
|||
For example, you can add two extension properties to the user entity of the identity module: |
|||
|
|||
````csharp |
|||
ObjectExtensionManager.Instance |
|||
.AddOrUpdate<IdentityUser>(options => |
|||
{ |
|||
options.AddOrUpdateProperty<string>("SocialSecurityNumber"); |
|||
options.AddOrUpdateProperty<bool>("IsSuperUser"); |
|||
} |
|||
); |
|||
```` |
|||
|
|||
It is easy to define validation rules for the properties: |
|||
|
|||
````csharp |
|||
ObjectExtensionManager.Instance |
|||
.AddOrUpdateProperty<IdentityUserCreateDto, string>( |
|||
"SocialSecurityNumber", |
|||
options => |
|||
{ |
|||
options.Attributes.Add(new RequiredAttribute()); |
|||
options.Attributes.Add( |
|||
new StringLengthAttribute(32) { |
|||
MinimumLength = 6 |
|||
} |
|||
); |
|||
}); |
|||
```` |
|||
|
|||
You can even write custom code to validate the property. It automatically works for the objects those are parameters of an application service, controller or a page. |
|||
|
|||
While extension properties of an entity are normally stored in a single JSON formatted field in the database table, you can easily configure to store a property as a table field using the EF Core mapping: |
|||
|
|||
````csharp |
|||
ObjectExtensionManager.Instance |
|||
.AddOrUpdateProperty<IdentityUser, string>( |
|||
"SocialSecurityNumber", |
|||
options => |
|||
{ |
|||
options.MapEfCore(b => b.HasMaxLength(32)); |
|||
} |
|||
); |
|||
```` |
|||
|
|||
See the [Object Extensions document](https://docs.abp.io/en/abp/latest/Object-Extensions) for details about this system. |
|||
|
|||
See also the [Customizing the Existing Modules](https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Guide) guide to learn all the possible customization options. |
|||
|
|||
### Text Templating Package |
|||
|
|||
[Volo.Abp.TextTemplating](https://www.nuget.org/packages/Volo.Abp.TextTemplating) is a new package introduced with the v2.7.0. Previously, [Volo.Abp.Emailing](https://www.nuget.org/packages/Volo.Abp.Emailing) package had a similar functionality but it was limited, experimental and tightly coupled to the emailing. |
|||
|
|||
The new text templating package allows you to define text based templates those can be easily localized and reused. You can define layout templates and share the layout from other templates. |
|||
|
|||
We are currently using it for email sending. A module needs to send an email typically defines a template. Example: |
|||
|
|||
````xml |
|||
<h3>{{L "PasswordReset"}}</h3> |
|||
|
|||
<p>{{L "PasswordResetInfoInEmail"}}</p> |
|||
|
|||
<div> |
|||
<a href="{{model.link}}">{{L "ResetMyPassword"}}</a> |
|||
</div> |
|||
```` |
|||
|
|||
This is a typical password reset email template. |
|||
|
|||
* The template system is based on the open source [Scriban library](https://github.com/lunet-io/scriban). So it supports if conditions, loops and much more. |
|||
* `model` is used to pass data to the template (just like the ASP.NET Core MVC). |
|||
* `L` is a special function that localizes the given string. |
|||
|
|||
It is typical to use the same layout for all emails. So, you can define a layout template. This is the standard layout template comes with the framework: |
|||
|
|||
````xml |
|||
<!DOCTYPE html> |
|||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> |
|||
<head> |
|||
<meta charset="utf-8" /> |
|||
</head> |
|||
<body> |
|||
{{content}} |
|||
</body> |
|||
</html> |
|||
```` |
|||
|
|||
A layout should have a `{{content}}` area to render the child content (just like the `RenderBody()` in the MVC). |
|||
|
|||
It is very easy to override a template content by the final application to customize it. |
|||
|
|||
Whenever you need to render a template, use the `ITemplateRenderer` service by providing the template name and a model. See the [text templating documentation](https://docs.abp.io/en/abp/latest/Text-Templating) for details. We've even created a UI for the ABP Commercial (see the related section below). |
|||
|
|||
### Subscribing to the Exceptions |
|||
|
|||
ABP Framework's [exception handling system](https://docs.abp.io/en/abp/latest/Exception-Handling) automatically handles exceptions and returns an appropriate result to the client. In some cases, you may want to have a callback that is notified whenever an exception occurs. In this way, for example, you can send an email or take any action based on the exception. |
|||
|
|||
Just create a class derived from the `ExceptionSubscriber` class in your application: |
|||
|
|||
````csharp |
|||
public class MyExceptionSubscriber : ExceptionSubscriber |
|||
{ |
|||
public override async Task HandleAsync(ExceptionNotificationContext context) |
|||
{ |
|||
//TODO... |
|||
} |
|||
} |
|||
```` |
|||
|
|||
See the [exception handling](https://docs.abp.io/en/abp/latest/Exception-Handling) document for more. |
|||
|
|||
### Others |
|||
|
|||
There are many minor features and enhancements made to the framework in the past releases. Here, a few ones: |
|||
|
|||
* Added `AbpLocalizationOptions.DefaultResourceType` to set the default resource type for the application. In this way, the localization system uses the default resource whenever the resource was not specified. The latest application startup template already configures it, but you may want to set it for your existing applications. |
|||
* Added `IsEnabled` to permission definition. In this way, you can completely disable a permission and hide the related functionality from the application. This can be a way of feature switch for some applications. See [#3486](https://github.com/abpframework/abp/issues/3486) for usage. |
|||
* Added Dutch and German localizations to all the localization resources defined by the framework. Thanks to the contributors. |
|||
|
|||
## What's New in the ABP Commercial |
|||
|
|||
The goal of the [ABP Commercial](https://commercial.abp.io/) is to provide pre-build application functionalities, code generation tools, professional themes, advanced samples and premium support for ABP Framework based projects. |
|||
|
|||
We are working on the ABP Commercial in the parallel to align with the ABP Framework features and provide more modules, theme options and tooling. |
|||
|
|||
This section explains what's going on the ABP Commercial side. |
|||
|
|||
### Module Entity Extension System |
|||
|
|||
Module entity extension system is a higher level API that uses the object extension system (introduced above) and provides an easy way to add extension properties to existing entities. A new extension property easily automatically becomes a part of the HTTP API and the User Interface. |
|||
|
|||
Example: Add a `SocialSecurityNumber` to the user entity of the identity module |
|||
|
|||
````csharp |
|||
ObjectExtensionManager.Instance.Modules() |
|||
.ConfigureIdentity(identity => |
|||
{ |
|||
identity.ConfigureUser(user => |
|||
{ |
|||
user.AddOrUpdateProperty<string>( //property type: string |
|||
"SocialSecurityNumber", //property name |
|||
property => |
|||
{ |
|||
//validation rules |
|||
property.Attributes.Add(new RequiredAttribute()); |
|||
property.Attributes.Add( |
|||
new StringLengthAttribute(64) { |
|||
MinimumLength = 4 |
|||
} |
|||
); |
|||
|
|||
//...other configurations for this property |
|||
} |
|||
); |
|||
}); |
|||
}); |
|||
```` |
|||
|
|||
With just such a configuration, the user interface will have the new property (on the table and on the create/edit forms): |
|||
|
|||
 |
|||
|
|||
The new property can be easily localized and validated. Currently, it supports primitive types like string, number and boolean, but we planned to add more advanced scenarios by the time (like navigation/lookup properties). |
|||
|
|||
See the [Module Entity Extensions](https://docs.abp.io/en/commercial/latest/guides/module-entity-extensions) guide to learn how to use it and configure details. |
|||
|
|||
#### Other Extension Points |
|||
|
|||
There are also some other pre-defined points to customize and extend the user interface of a depended module: |
|||
|
|||
* You can add a new action for an entity on the data table (left side on the picture below). |
|||
* You can add new buttons (or other controls) to the page toolbar (right side on the picture below). |
|||
* You can add custom columns to a data table. |
|||
|
|||
 |
|||
|
|||
See the [Customizing the Modules](https://docs.abp.io/en/commercial/latest/guides/customizing-modules) guide to learn all the possible ways to customize a depended module. |
|||
|
|||
### Text Template Management Module |
|||
|
|||
We are introducing a new module with the v2.7 release: [Text Template Management](https://docs.abp.io/en/commercial/latest/modules/text-template-management). It is basically used to edit text/email templates (introduced with the ABP Framework 2.7) on the user interface and save changed in the database. |
|||
|
|||
A screenshot from the content editing for the password reset email template: |
|||
|
|||
 |
|||
|
|||
This module comes pre-installed when you create a new project. |
|||
|
|||
### Entity History Views |
|||
|
|||
Audit logging UI module now shows all the entity changes in the application with property change details. |
|||
|
|||
 |
|||
|
|||
You can also check history for an entity when you click to the actions menu for the entity: |
|||
|
|||
 |
|||
|
|||
### More Samples |
|||
|
|||
We are creating more advanced sample applications built with the ABP Commercial. Easy CRM is one of them which will be available in a few days to the commercial customers. |
|||
|
|||
Here, a screenshot from the Easy CRM dashboard: |
|||
|
|||
 |
|||
|
|||
It has accounts, contacts, product groups, products, orders and so on. |
|||
|
|||
### New Modules |
|||
|
|||
We continue to improve existing modules and creating new modules. In addition to the new [text template management](https://docs.abp.io/en/commercial/latest/modules/text-template-management) module introduced above; |
|||
|
|||
* We've recently released a [payment module](https://commercial.abp.io/modules/Volo.Payment) that currently works with PayU and 2Checkout payment gateways. More gateways will be added by the time. |
|||
* We've created a simple [Twilio SMS integration](https://docs.abp.io/en/commercial/latest/modules/twilio-sms) module to send SMS over the Twilio. |
|||
* We are working on a **chat module** that is currently being developed and will be available in the next weeks. |
|||
* We are working on the **organization unit management** system for the identity module to create hierarchical organization units (domain layer will be open source & free). |
|||
|
|||
More modules, theme and tooling options are being developed for the ABP Commercial and the ABP Framework. |
|||
|
|||
## ABP Framework vs ABP Commercial |
|||
|
|||
We ([Volosoft](https://volosoft.com/) - the core team behind the ABP.IO platform), are spending almost equal time on the ABP Framework and the ABP Commercial and we consider the ABP.IO platform as a whole. |
|||
|
|||
[ABP Framework](https://abp.io/) provides all the infrastructure and application independent framework features to make you more productive, focus on your own business code and implement software development best practices. It provides you a well defined and comfortable development experience without repeating yourself. |
|||
|
|||
[ABP Commercial](https://commercial.abp.io/) provides pre-built functionalities, themes and tooling to save your time if your requirements involve these functionalities in addition to the premium support for the framework and the pre-built modules. |
|||
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 385 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,3 @@ |
|||
# Text-Templating |
|||
|
|||
TODO |
|||
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 158 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 23 KiB |
@ -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" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"DisplayName:Abp.Localization.DefaultLanguage": "Standardsprache", |
|||
"Description:Abp.Localization.DefaultLanguage": "Die Standardsprache der Anwendung." |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"DisplayName:Abp.Localization.DefaultLanguage": "Standaard taal", |
|||
"Description:Abp.Localization.DefaultLanguage": "De standaardtaal van de applicatie." |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"Menu:Administration": "Administration" |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"Menu:Administration": "Administratie" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"BirthDate": "Geburtsdatum", |
|||
"Value1": "Wert Eins" |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"BirthDate": "Geboortedatum", |
|||
"Value1": "Waarde een" |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"hello": "Hallo" |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"hello": "hallo" |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"USA": "Vereinigte Staaten von Amerika", |
|||
"Brazil": "Brasilien" |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"USA": "Verenigde Staten van Amerika", |
|||
"Brazil": "Brazilië" |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"ThisFieldIsRequired": "Dieses Feld ist ein Pflichtfeld", |
|||
"MaxLenghtErrorMessage": "Die Länge dieses Feldes kann maximal '{0}'-Zeichen betragen" |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"ThisFieldIsRequired": "Dit veld is verplicht", |
|||
"MaxLenghtErrorMessage": "Dit veld mag maximaal '{0}' tekens bevatten" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
{ |
|||
"culture": "de", |
|||
"texts": { |
|||
"Hello <b>{0}</b>.": "Hallo <b>{0}</b>.", |
|||
"Car": "Auto", |
|||
"SeeYou": "Bis bald" |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
{ |
|||
"culture": "nl", |
|||
"texts": { |
|||
"SeeYou": "Tot ziens" |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -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." |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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!" |
|||
} |
|||
} |
|||
@ -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!" |
|||
} |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Volo.Blogging |
|||
{ |
|||
public class BloggingTwitterOptions |
|||
{ |
|||
public string Site { get; set; } |
|||
} |
|||
} |
|||
@ -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!" |
|||
} |
|||
} |
|||
@ -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!" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Docs.Admin.Projects |
|||
{ |
|||
public class ReindexInput |
|||
{ |
|||
public Guid ProjectId { get; set; } |
|||
} |
|||
} |
|||