+
+### Database Provider Options
+
+
+
+## What ABP Provides?
+
+ABP provides a **full stack developer experience**.
+
+### Architecture
+
+
+
+ABP offers a complete, **modular** and **layered** software architecture based on **[Domain Driven Design](https://docs.abp.io/en/abp/latest/Domain-Driven-Design)** principles and patterns. It also provides the necessary infrastructure and guiding to [implement this architecture](https://docs.abp.io/en/abp/4.0/Domain-Driven-Design-Implementation-Guide).
+
+ABP Framework is suitable for **[microservice solutions](https://docs.abp.io/en/abp/latest/Microservice-Architecture)** as well as monolithic applications.
+
+### Infrastructure
+
+There are a lot of features provided by the ABP Framework to achieve real world scenarios easier, like [Event Bus](https://docs.abp.io/en/abp/4.0/Event-Bus), [Background Job System](https://docs.abp.io/en/abp/4.0/Background-Jobs), [Audit Logging](https://docs.abp.io/en/abp/4.0/Audit-Logging), [BLOB Storing](https://docs.abp.io/en/abp/4.0/Blob-Storing), [Data Seeding](https://docs.abp.io/en/abp/4.0/Data-Seeding), [Data Filtering](https://docs.abp.io/en/abp/4.0/Data-Filtering), etc.
+
+### Cross Cutting Concerns
+
+ABP also simplifies (and even automates wherever possible) cross cutting concerns and common non-functional requirements like [Exception Handling](https://docs.abp.io/en/abp/4.0/Exception-Handling), [Validation](https://docs.abp.io/en/abp/4.0/Validation), [Authorization](https://docs.abp.io/en/abp/4.0/Authorization), [Localization](https://docs.abp.io/en/abp/4.0/Localization), [Caching](https://docs.abp.io/en/abp/4.0/Caching), [Dependency Injection](https://docs.abp.io/en/abp/4.0/Dependency-Injection), [Setting Management](https://docs.abp.io/en/abp/4.0/Settings), etc.
+
+### Application Modules
+
+ABP is a modular framework and the Application Modules provide **pre-built application functionalities**;
+
+- [**Account**](https://docs.abp.io/en/abp/4.0/Modules/Account): Provides UI for the account management and allows user to login/register to the application.
+- **[Identity](https://docs.abp.io/en/abp/4.0/Modules/Identity)**: Manages organization units, roles, users and their permissions, based on the Microsoft Identity library.
+- [**IdentityServer**](https://docs.abp.io/en/abp/4.0/Modules/IdentityServer): Integrates to IdentityServer4.
+- [**Tenant Management**](https://docs.abp.io/en/abp/4.0/Modules/Tenant-Management): Manages tenants for a [multi-tenant](https://docs.abp.io/en/abp/4.0/Multi-Tenancy) (SaaS) application.
+
+See the [Application Modules](https://docs.abp.io/en/abp/4.0/Modules/Index) document for all pre-built modules.
+
+### Startup Templates
+
+The [Startup templates](https://docs.abp.io/en/abp/4.0/Startup-Templates/Index) are pre-built Visual Studio solution templates. You can create your own solution based on these templates to **immediately start your development**.
+
+## ABP Community
+
+### ABP Community Web Site
+
+The [ABP Community](https://community.abp.io/) is a website to publish **articles** and share **knowledge** about the ABP Framework. You can also create content for the community!
+
+### Blog
+
+Follow the [ABP Blog](https://blog.abp.io/) to learn the latest happenings in the ABP Framework.
+
+### Samples
+
+See the [sample projects](https://docs.abp.io/en/abp/4.0/Samples/Index) built with the ABP Framework.
+
+### Want to Contribute?
+
+ABP is a community-driven open source project. See [the contribution guide](https://docs.abp.io/en/abp/4.0/Contribution/Index) if you want to be a part of this project.
+
+## Official Links
+
+* Main Web Site
* Get Started
* Features
- * Documentation
- * Samples
- * Blog
+* Documentation
+* Samples
+* Blog
+* Community
* Stack overflow
* Twitter
-## Contribution
+## Support the ABP Framework
-ABP is an open source platform. Check [the contribution guide](docs/en/Contribution/Index.md) if you want to contribute to the project.
+Love ABP Framework? **Please give a star** to this repository :star:
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/de-DE.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/de-DE.json
new file mode 100644
index 0000000000..b0418f082f
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/de-DE.json
@@ -0,0 +1,14 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "Account": "ABP Benutzerkonto - Anmeldung & Registrierung | ABP.IO",
+ "Welcome": "Willkommen",
+ "UseOneOfTheFollowingLinksToContinue": "Nutzen Sie einen der nachfolgenden Links um fortzusetzen",
+ "FrameworkHomePage": "Framework Website",
+ "FrameworkDocumentation": "Framework Dokumentation",
+ "OfficialBlog": "Offizieller Blog",
+ "CommercialHomePage": "Commercial Website",
+ "CommercialSupportWebSite": "Commercial Support-Website",
+ "CommunityWebSite": "ABP Community-Website"
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/es.json
new file mode 100644
index 0000000000..44ec873da0
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/es.json
@@ -0,0 +1,14 @@
+{
+ "culture": "es",
+ "texts": {
+ "Account": "Cuenta de ABP - Iniciar sesión y registrarse | ABP.IO",
+ "Welcome": "Bienvenido",
+ "UseOneOfTheFollowingLinksToContinue": "Usa uno de los siguientes links para continuar",
+ "FrameworkHomePage": "Página de inicio del framework",
+ "FrameworkDocumentation": "Documentación del framework",
+ "OfficialBlog": "Blog Oficial",
+ "CommercialHomePage": "Página de inicio comercial",
+ "CommercialSupportWebSite": "Sitio web de soporte comercial",
+ "CommunityWebSite": "Sitio web comunidad ABP"
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/de-DE.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/de-DE.json
new file mode 100644
index 0000000000..60725c437b
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/de-DE.json
@@ -0,0 +1,199 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "Permission:Organizations": "Organisationen",
+ "Permission:Manage": "Organisationen verwalten",
+ "Permission:DiscountRequests": "Rabattanfragen",
+ "Permission:DiscountManage": "Rabattanfragen verwalten",
+ "Permission:Disable": "Deaktivieren",
+ "Permission:Enable": "Aktivieren",
+ "Permission:EnableSendEmail": "E-Mail-Senden aktivieren",
+ "Permission:SendEmail": "E-Mail senden",
+ "Permission:NpmPackages": "NPM-Pakete",
+ "Permission:NugetPackages": "Nuget-Pakete",
+ "Permission:Maintenance": "Wartung",
+ "Permission:Maintain": "Warten",
+ "Permission:ClearCaches": "Caches leeren",
+ "Permission:Modules": "Module",
+ "Permission:Packages": "Pakete",
+ "Permission:Edit": "Bearbeiten",
+ "Permission:Delete": "Löschen",
+ "Permission:Create": "Erstellen",
+ "Permission:Accounting": "Abrechnung",
+ "Permission:Accounting:Quotation": "Angebot",
+ "Permission:Accounting:Invoice": "Rechnung",
+ "Menu:Organizations": "Organisationen",
+ "Menu:Accounting": "Abrechnung",
+ "Menu:Packages": "Pakete",
+ "Menu:DiscountRequests": "Rabattanfragen",
+ "NpmPackageDeletionWarningMessage": "Dieses NPM-Paket wird entfernt. Bestätigen Sie das?",
+ "NugetPackageDeletionWarningMessage": "Dieses Nuget-Paket wird entfernt. Bestägiten Sie das?",
+ "ModuleDeletionWarningMessage": "Dieses Modul wird entfernt. Bestätigen Sie das?",
+ "Name": "Name",
+ "DisplayName": "Anzeigename",
+ "ShortDescription": "Kurzbeschreibung",
+ "NameFilter": "Name",
+ "CreationTime": "Erstellungszeitpunkt",
+ "IsPro": "Ist pro",
+ "ShowOnModuleList": "In Modulliste anzeigen",
+ "EfCoreConfigureMethodName": "Methodenname konfigurieren",
+ "IsProFilter": "Ist pro",
+ "ApplicationType": "Anwendungstyp",
+ "Target": "Ziel",
+ "TargetFilter": "Ziel",
+ "ModuleClass": "Modulklasse",
+ "NugetPackageTarget.DomainShared": "Gemeinsame Domain",
+ "NugetPackageTarget.Domain": "Domain",
+ "NugetPackageTarget.Application": "Anwendung",
+ "NugetPackageTarget.ApplicationContracts": "Anwedungsverträge",
+ "NugetPackageTarget.HttpApi": "HTTP-API",
+ "NugetPackageTarget.HttpApiClient": "HTTP-API-Client",
+ "NugetPackageTarget.Web": "Web",
+ "NugetPackageTarget.EntityFrameworkCore": "DeleteAllEntityFramework Core",
+ "NugetPackageTarget.MongoDB": "MongoDB",
+ "Edit": "Bearbeiten",
+ "Delete": "Löschen",
+ "Refresh": "Aktualisieren",
+ "NpmPackages": "NPM-Pakete",
+ "NugetPackages": "Nuget-Pakete",
+ "NpmPackageCount": "NPM-Paketanzahl",
+ "NugetPackageCount": "Nuget-Paketanzahl",
+ "Module": "Module",
+ "ModuleInfo": "Modulinfo",
+ "CreateANpmPackage": "Erstellen Sie ein NPM Paket",
+ "CreateAModule": "Erstellen Sie in Modul",
+ "CreateANugetPackage": "Erstellen Sei ein Nuget-Paket",
+ "AddNew": "Neu hinzufügen",
+ "PackageAlreadyExist{0}": "\"{0}\" Paket ist bereits hinzugefügt.",
+ "ModuleAlreadyExist{0}": "\"{0}\" Modul ist bereits hinzugefügt.",
+ "ClearCache": "Cache leeren",
+ "SuccessfullyCleared": "Erfolgreich geleert",
+ "Menu:NpmPackages": "NPM-Pakete",
+ "Menu:Modules": "Module",
+ "Menu:Maintenance": "Wartung",
+ "Menu:NugetPackages": "Nuget-Pakete",
+ "CreateAnOrganization": "Erstellen Sie eine Organisation",
+ "Organizations": "Organisationen",
+ "LongName": "Lange Name",
+ "LicenseType": "Lizenztyp",
+ "MissingLicenseTypeField": "Das Feld Lizenztyp ist erforderlich!",
+ "LicenseStartTime": "Startzeit der Lizenz",
+ "LicenseEndTime": "Endzeit der Lizenz",
+ "AllowedDeveloperCount": "Zulässige Entwickleranzahl",
+ "UserNameOrEmailAddress": "Benutzername oder E-Mail-Adresse",
+ "AddOwner": "Besitzer hinzufügen",
+ "UserName": "Benutzername",
+ "Email": "E-Mail",
+ "Developers": "Entwickler",
+ "AddDeveloper": "Entwickler hinzufügen",
+ "Create": "Erstellen",
+ "UserNotFound": "Benutzer nicht gefunden",
+ "{0}WillBeRemovedFromDevelopers": "{0} wird von den Entwicklern entfernt. Bestätigen Sie das?",
+ "{0}WillBeRemovedFromOwners": "{0} wird von den Besitzern entfernt. Bestätigen Sie das?",
+ "Computers": "Computer",
+ "UniqueComputerId": "Eindeutig Computer-ID",
+ "LastSeenDate": "Zuletzt gesehenes Datum",
+ "{0}Computer{1}WillBeRemovedFromRecords": "Computer von {0} ({1}) wird aus den Datensätzen entfernt",
+ "OrganizationDeletionWarningMessage": "Organisation wird gelöscht",
+ "DeletingLastOwnerWarningMessage": "Eine Organisation muss zumindest einen Besitzer aufweisen! Daher können Sie diesen Besitzer nicht entfernen",
+ "This{0}AlreadyExistInThisOrganization": "Dies {0} existiert bereits in dieser Organisation",
+ "AreYouSureYouWantToDeleteAllComputers": "Sind Sie sicher, dass Sie alle Computer löschen möchten?",
+ "DeleteAll": "Alles Löschen",
+ "DoYouWantToCreateNewUser": "Möchten Sie einen neuen Benutzer erstellen?",
+ "MasterModules": "Master-Module",
+ "OrganizationName": "Organisationsname",
+ "CreationDate": "Erstellungsdatum",
+ "LicenseStartDate": "Startdatum der Lizenz",
+ "LicenseEndDate": "Enddatum der Lizenz",
+ "OrganizationNamePlaceholder": "Organisationsname...",
+ "TotalQuestionCountPlaceholder": "Gesamtzahl der Fragen...",
+ "RemainingQuestionCountPlaceholder": "Anzahl verbleibender Fragen...",
+ "LicenseTypePlaceholder": "Lizenztyp...",
+ "CreationDatePlaceholder": "Erstellungsdatum...",
+ "LicenseStartDatePlaceholder": "Startdatum der Lizenz...",
+ "LicenseEndDatePlaceholder": "Enddatum der Lizenz...",
+ "UsernameOrEmail": "Benutzername oder E-Mail-Adresse",
+ "UsernameOrEmailPlaceholder": "Benutzername oder E-Mail-Adresse...",
+ "Member": "Mitglied",
+ "PurchaseOrderNo": "Bestellnummer",
+ "QuotationDate": "Angebotsdatum",
+ "CompanyName": "Firmenname",
+ "CompanyAddress": "Firmenanschrift",
+ "Price": "Preis",
+ "DiscountText": "Rabatttext",
+ "DiscountQuantity": "Rabattmenge",
+ "DiscountPrice": "Rabattpreis",
+ "Quotation": "Angebot",
+ "ExtraText": "Zusätzlicher Text",
+ "ExtraAmount": "Zusätzliche Menge",
+ "DownloadQuotation": "Angebot herunterladen",
+ "Invoice": "Rechnung",
+ "TaxNumber": "Steuernummer",
+ "InvoiceNumber": "Rechnungsnummer",
+ "InvoiceDate": "Rechnungsdatum",
+ "InvoiceNote": "Rechnungsnotiz",
+ "Quantity": "Menge",
+ "AddProduct": "Produkt hinzufügen",
+ "AddProductWarning": "Sie müssen ein Produkt hinzufügen!",
+ "TotalPrice": "Gesamtpreis",
+ "Generate": "Generieren",
+ "MissingQuantityField": "Das Feld Menge ist erforderlich!",
+ "MissingPriceField": "Das Feld Preis ist erforderlich!",
+ "CodeUsageStatus": "Status",
+ "Country": "Land",
+ "DeveloperCount": "Entwickleranzahl",
+ "RequestCode": "Anfrage-Code",
+ "WebSite": "Webseite",
+ "GithubUsername": "Github Benutzername",
+ "PhoneNumber": "Telefonnummer",
+ "ProjectDescription": "Projektbeschreibung",
+ "Referrer": "Referrer",
+ "DiscountRequests": "Rabattanfrage",
+ "Copylink": "Link kopieren",
+ "Disable": "Deaktivieren",
+ "Enable": "Aktivieren",
+ "EnableSendEmail": "E-Mail-Senden aktivieren",
+ "SendEmail": "E-Mail senden",
+ "SuccessfullyDisabled": "Erfolgreich deaktiviert",
+ "SuccessfullyEnabled": "Erfolgreich aktiviert",
+ "EmailSent": "E-Mail gesendet",
+ "SuccessfullySent": "Erfolgreich gesendet",
+ "SuccessfullyDeleted": "Erfolgreich gelöscht",
+ "DiscountRequestDeletionWarningMessage": "Rabattanfrage wird gelöscht",
+ "BusinessType": "Unternehmensart",
+ "TotalQuestionCount": "Gesamtzahl der Fragen",
+ "RemainingQuestionCount": "Anzahl verbleibender Fragen",
+ "TotalQuestionMustBeGreaterWarningMessage": "TotalQuestionCount muss größer sein als RemainingQuestionCount !",
+ "QuestionCountsMustBeGreaterThanZero": "TotalQuestionCount und RemainingQuestionCount müssen Null oder größer als Null sein !",
+ "UnlimitedQuestionCount": "Unbegrenzte Anzahl von Fragen",
+ "Notes": "Anmerkungen",
+ "Menu:Community": "Community",
+ "Menu:Articles": "Beiträge",
+ "Wait": "Warten",
+ "Approve": "Genehmigen",
+ "Reject": "Ablehnen",
+ "Details": "Details",
+ "Url": "URL",
+ "Title": "Titel",
+ "ContentSource": "Inhaltsquelle",
+ "Status": "Status",
+ "ReadArticle": "Beitrag lesen",
+ "ArticleHasBeenWaiting": "Beitrag hat gewartet",
+ "ArticleHasBeenApproved": "Beitrag wurde genehmigt",
+ "ArticleHasBeenRejected": "Beitrag wurde abgelehnt",
+ "Permission:Community": "Community",
+ "Permission:CommunityArticle": "Beitrag",
+ "Link": "Link",
+ "Enum:ContentSource:0": "Github",
+ "Enum:ContentSource:1": "Extern",
+ "Enum:Status:0": "Wartend",
+ "Enum:Status:1": "Abgelehnt",
+ "Enum:Status:2": "Genehmigt",
+ "Summary": "Zusammenfassung",
+ "AuthorName": "Autorenname",
+ "CoverImage": "Titelbild",
+ "RemoveCacheConfirmationMessage": "Sind Sie sicher, dass Sie den Cache für den Artikel \"{0}\" entfernen wollen?",
+ "SuccessfullyRemoved": "Erfolgreich geleert",
+ "RemoveCache": "Cache entfernen"
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/es.json
new file mode 100644
index 0000000000..1cf2e4f365
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/es.json
@@ -0,0 +1,199 @@
+{
+ "culture": "es",
+ "texts": {
+ "Permission:Organizations": "Organizaciones",
+ "Permission:Manage": "Gestionar organizaciones",
+ "Permission:DiscountRequests": "Solicitudes de descuento",
+ "Permission:DiscountManage": "Gestionar solicitudes de descuento",
+ "Permission:Disable": "Desactivar",
+ "Permission:Enable": "Activar",
+ "Permission:EnableSendEmail": "Activar enviar email",
+ "Permission:SendEmail": "Enviar email",
+ "Permission:NpmPackages": "Paquetes NPM",
+ "Permission:NugetPackages": "Paquetes Nuget",
+ "Permission:Maintenance": "Mantenimiento",
+ "Permission:Maintain": "Mantener",
+ "Permission:ClearCaches": "Borrar cachés",
+ "Permission:Modules": "Módulos",
+ "Permission:Packages": "Paquetes",
+ "Permission:Edit": "Editar",
+ "Permission:Delete": "Borrar",
+ "Permission:Create": "Crear",
+ "Permission:Accounting": "Contabilidad",
+ "Permission:Accounting:Quotation": "Cotización",
+ "Permission:Accounting:Invoice": "Factura",
+ "Menu:Organizations": "Organizaciones",
+ "Menu:Accounting": "Contabilidad",
+ "Menu:Packages": "Paquetes",
+ "Menu:DiscountRequests": "Solicitudes de descuento",
+ "NpmPackageDeletionWarningMessage": "Este NPM paquete será borrado. ¿Quieres confirmar?",
+ "NugetPackageDeletionWarningMessage": "Este NPM paquete será borrado. ¿Quieres confirmar?",
+ "ModuleDeletionWarningMessage": "Este NPM paquete será borrado. ¿Quieres confirmar?",
+ "Name": "Nombre",
+ "DisplayName": "Nombre para mostrar",
+ "ShortDescription": "Descripción corta",
+ "NameFilter": "Nombre",
+ "CreationTime": "Fecha de creación",
+ "IsPro": "Es pro",
+ "ShowOnModuleList": "Mostrar en la lista de módulos",
+ "EfCoreConfigureMethodName": "configurar nombre de método",
+ "IsProFilter": "Es pro",
+ "ApplicationType": "tipo de aplicación",
+ "Target": "Destino",
+ "TargetFilter": "Destino",
+ "ModuleClass": "Módulo de clase",
+ "NugetPackageTarget.DomainShared": "Dominio compartido",
+ "NugetPackageTarget.Domain": "Dominio",
+ "NugetPackageTarget.Application": "Aplicación",
+ "NugetPackageTarget.ApplicationContracts": "Contratos de aplicación",
+ "NugetPackageTarget.HttpApi": "Http Api",
+ "NugetPackageTarget.HttpApiClient": "Cliente Http Api",
+ "NugetPackageTarget.Web": "Web",
+ "NugetPackageTarget.EntityFrameworkCore": "Delete todo EntityFramework Core",
+ "NugetPackageTarget.MongoDB": "MongoDB",
+ "Edit": "Editar",
+ "Delete": "Borrar",
+ "Refresh": "Refrescar",
+ "NpmPackages": "Paquetes NPM",
+ "NugetPackages": "Paquetes Nuget",
+ "NpmPackageCount": "Número de paquetes NPM",
+ "NugetPackageCount": "Número de paquetes Nuget",
+ "Module": "Módulos",
+ "ModuleInfo": "Info de módulo",
+ "CreateANpmPackage": "Crear un paquete NPM",
+ "CreateAModule": "Crear un módulo",
+ "CreateANugetPackage": "Crear un paquete de Nuget",
+ "AddNew": "Añadir nuevo",
+ "PackageAlreadyExist{0}": "\"{0}\" paquete ya se encuentra añadido",
+ "ModuleAlreadyExist{0}": "\"{0}\" módulo ya se encuentra añadido.",
+ "ClearCache": "Borrar caché",
+ "SuccessfullyCleared": "Borrado satisfactoriamente",
+ "Menu:NpmPackages": "Paquetes de NPM",
+ "Menu:Modules": "Módulos",
+ "Menu:Maintenance": "Mantenimiento",
+ "Menu:NugetPackages": "Paquetes Nuget",
+ "CreateAnOrganization": "Crear una organización",
+ "Organizations": "Organizaciones",
+ "LongName": "Nombre largo",
+ "LicenseType": "Tipo de licencia",
+ "MissingLicenseTypeField": "El campo tipo de licencia es requerido!",
+ "LicenseStartTime": "Fecha de inicio de licencia",
+ "LicenseEndTime": "Fecha de caducidad de licencia",
+ "AllowedDeveloperCount": "Número de desarrolladores permitidos",
+ "UserNameOrEmailAddress": "Nombre de usuario o",
+ "AddOwner": "Añadir propietario",
+ "UserName": "Nombre de usuario",
+ "Email": "Email",
+ "Developers": "Desarrolladores",
+ "AddDeveloper": "Añadir desarrollador",
+ "Create": "Crear",
+ "UserNotFound": "Usuario no encontrado",
+ "{0}WillBeRemovedFromDevelopers": "{0} será eliminado de desarrolladores, ¿deseas continuar?",
+ "{0}WillBeRemovedFromOwners": "{0} será eliminado de propietarios, ¿deseas continuar?",
+ "Computers": "Ordenadores",
+ "UniqueComputerId": "Id única de ordenador",
+ "LastSeenDate": "Fecha de visto por última vez",
+ "{0}Computer{1}WillBeRemovedFromRecords": "El ordenador {0} ({1}) será eliminado de los registros",
+ "OrganizationDeletionWarningMessage": "La organización será eliminada",
+ "DeletingLastOwnerWarningMessage": "Una organización debe tener al menos un propietario!. Por lo tanto, tu no puedes eliminar este propietario",
+ "This{0}AlreadyExistInThisOrganization": "Este/a {0} ya existe en esta organización",
+ "AreYouSureYouWantToDeleteAllComputers": "Estás seguro tu quieres eliminar todos los ordenadores",
+ "DeleteAll": "Eliminar todo",
+ "DoYouWantToCreateNewUser": "¿Quieres crear un nuevo usuario?",
+ "MasterModules": "Módulos maestros",
+ "OrganizationName": "Nombre de organización",
+ "CreationDate": "Fecha de creación",
+ "LicenseStartDate": "Fecha de inicio de licencia",
+ "LicenseEndDate": "Fecha de caducidad de licencia",
+ "OrganizationNamePlaceholder": "Nombre de organización...",
+ "TotalQuestionCountPlaceholder": "Número total de preguntas...",
+ "RemainingQuestionCountPlaceholder": "Número de preguntas pendientes",
+ "LicenseTypePlaceholder": "Tipo de licencia...",
+ "CreationDatePlaceholder": "Fecha de creación...",
+ "LicenseStartDatePlaceholder": "Fecha de inicio de licencia...",
+ "LicenseEndDatePlaceholder": "Fecha de caducidad de licencia...",
+ "UsernameOrEmail": "Usuario o email",
+ "UsernameOrEmailPlaceholder": "Usuario o email...",
+ "Member": "Miembro",
+ "PurchaseOrderNo": "Número de orden de compra",
+ "QuotationDate": "",
+ "CompanyName": "",
+ "CompanyAddress": "",
+ "Price": "",
+ "DiscountText": "",
+ "DiscountQuantity": "",
+ "DiscountPrice": "",
+ "Quotation": "",
+ "ExtraText": "",
+ "ExtraAmount": "",
+ "DownloadQuotation": "",
+ "Invoice": "",
+ "TaxNumber": "",
+ "InvoiceNumber": "",
+ "InvoiceDate": "",
+ "InvoiceNote": "",
+ "Quantity": "",
+ "AddProduct": "",
+ "AddProductWarning": "",
+ "TotalPrice": "",
+ "Generate": "",
+ "MissingQuantityField": "",
+ "MissingPriceField": "",
+ "CodeUsageStatus": "",
+ "Country": "",
+ "DeveloperCount": "",
+ "RequestCode": "",
+ "WebSite": "",
+ "GithubUsername": "",
+ "PhoneNumber": "",
+ "ProjectDescription": "",
+ "Referrer": "",
+ "DiscountRequests": "",
+ "Copylink": "",
+ "Disable": "",
+ "Enable": "",
+ "EnableSendEmail": "",
+ "SendEmail": "",
+ "SuccessfullyDisabled": "",
+ "SuccessfullyEnabled": "",
+ "EmailSent": "",
+ "SuccessfullySent": "",
+ "SuccessfullyDeleted": "",
+ "DiscountRequestDeletionWarningMessage": "",
+ "BusinessType": "",
+ "TotalQuestionCount": "",
+ "RemainingQuestionCount": "",
+ "TotalQuestionMustBeGreaterWarningMessage": "",
+ "QuestionCountsMustBeGreaterThanZero": "",
+ "UnlimitedQuestionCount": "",
+ "Notes": "",
+ "Menu:Community": "",
+ "Menu:Articles": "",
+ "Wait": "",
+ "Approve": "",
+ "Reject": "",
+ "Details": "",
+ "Url": "",
+ "Title": "",
+ "ContentSource": "",
+ "Status": "",
+ "ReadArticle": "",
+ "ArticleHasBeenWaiting": "",
+ "ArticleHasBeenApproved": "",
+ "ArticleHasBeenRejected": "",
+ "Permission:Community": "",
+ "Permission:CommunityArticle": "",
+ "Link": "",
+ "Enum:ContentSource:0": "",
+ "Enum:ContentSource:1": "",
+ "Enum:Status:0": "",
+ "Enum:Status:1": "",
+ "Enum:Status:2": "",
+ "Summary": "",
+ "AuthorName": "",
+ "CoverImage": "",
+ "RemoveCacheConfirmationMessage": "",
+ "SuccessfullyRemoved": "",
+ "RemoveCache": ""
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de-DE.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de-DE.json
new file mode 100644
index 0000000000..77e1b2090a
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/de-DE.json
@@ -0,0 +1,33 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "Volo.AbpIo.Domain:010004": "Maximale Mitgliederanzahl erreicht!",
+ "Volo.AbpIo.Domain:010005": "Miximale Besizeranzahl erreicht!",
+ "Volo.AbpIo.Domain:010006": "Dieser Benutzer ist bereits ein Besitzer in dieser Organisation!",
+ "Volo.AbpIo.Domain:010007": "Dieser Benutzer ist bereits ein Entwickler in dieser Organisation!",
+ "Volo.AbpIo.Domain:010008": "Die zulässige Entwickleranzahl darf nicht geringer sein als die aktuelle Entwickleranzahl!",
+ "Volo.AbpIo.Domain:010009": "Die zulässige Entwickleranzahl darf nicht kleiner als 0 sein!",
+ "Volo.AbpIo.Domain:010010": "Die maximale Anzahl der Mac-Adressen ist überschritten!",
+ "Volo.AbpIo.Domain:010011": "Die persönliche Lizenz kann nicht mehr als 1 Entwickler haben!",
+ "Volo.AbpIo.Domain:010012": "Die Lizenz kann nicht einen Monat nach Ablauf der Lizenz verlängert werden!",
+ "Volo.AbpIo.Domain:020001": "Dieses NPM-Paket konnte nicht gelöscht werden, da \"{NugetPackages}\" Nuget-Pakete von diesem Paket abhängig sind.",
+ "Volo.AbpIo.Domain:020002": "Dieses NPM-Paket konnte nicht gelöscht werden, da \"{Module}\" Module dieses Paket verwenden.",
+ "Volo.AbpIo.Domain:020003": "Dieses NPM-Paket konnte nicht gelöscht werden, da \"{Module}\" Module dieses Paket verwenden und \"{NugetPackages}\" Nuget-Pakete von diesem Paket abhängig sind.",
+ "Volo.AbpIo.Domain:020004": "Dieses Nuget-Paket konnte nicht gelöscht werden, da \"{Module}\" Module dieses Paket verwenden.",
+ "WantToLearn?": "Wollen Sie sich einlernen?",
+ "ReadyToGetStarted?": "Bereit anzufangen?",
+ "JoinOurCommunity": "Tritt unserer Community bei",
+ "GetStartedUpper": "LOSLEGEN",
+ "ForkMeOnGitHub": "Fork me on GitHub",
+ "Features": "Features",
+ "GetStarted": "Loslegen",
+ "Documents": "Unterlagen",
+ "Community": "Community",
+ "ContributionGuide": "Leitfaden für Mitwirkende",
+ "Blog": "Blog",
+ "Commercial": "Commercial",
+ "MyAccount": "Mein Benutzerkonto",
+ "SeeDocuments": "Siehe Unterlagen",
+ "Samples": "Beispiele"
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json
new file mode 100644
index 0000000000..2b210888c5
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/es.json
@@ -0,0 +1,33 @@
+{
+ "culture": "es",
+ "texts": {
+ "Volo.AbpIo.Domain:010004": "",
+ "Volo.AbpIo.Domain:010005": "",
+ "Volo.AbpIo.Domain:010006": "",
+ "Volo.AbpIo.Domain:010007": "",
+ "Volo.AbpIo.Domain:010008": "",
+ "Volo.AbpIo.Domain:010009": "",
+ "Volo.AbpIo.Domain:010010": "",
+ "Volo.AbpIo.Domain:010011": "",
+ "Volo.AbpIo.Domain:010012": "",
+ "Volo.AbpIo.Domain:020001": "",
+ "Volo.AbpIo.Domain:020002": "",
+ "Volo.AbpIo.Domain:020003": "",
+ "Volo.AbpIo.Domain:020004": "",
+ "WantToLearn?": "",
+ "ReadyToGetStarted?": "",
+ "JoinOurCommunity": "",
+ "GetStartedUpper": "",
+ "ForkMeOnGitHub": "",
+ "Features": "",
+ "GetStarted": "",
+ "Documents": "",
+ "Community": "",
+ "ContributionGuide": "",
+ "Blog": "",
+ "Commercial": "",
+ "MyAccount": "",
+ "SeeDocuments": "",
+ "Samples": ""
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de-DE.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de-DE.json
new file mode 100644
index 0000000000..ddc493e63b
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de-DE.json
@@ -0,0 +1,35 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "OrganizationManagement": "Organisationsverwaltung",
+ "OrganizationList": "Organisationsauflistung",
+ "Volo.AbpIo.Commercial:010003": "Sie sind der Besitzer dieser Organisation!",
+ "OrganizationNotFoundMessage": "Keine Organisation gefunden!",
+ "DeveloperCount": "Zugeordnete / Gesamte Entwickler",
+ "QuestionCount": "Verbleibende / Gesamte Fragen",
+ "Unlimited": "Unbegrenzt",
+ "Owners": "Besitzer",
+ "AddMember": "Mitglied hinzufügen",
+ "AddOwner": "Besizer hinzufügen",
+ "AddDeveloper": "Entwickler hinzufügen",
+ "UserName": "Benutzername",
+ "Name": "Name",
+ "EmailAddress": "E-Mail-Adress",
+ "Developers": "Entwickler",
+ "LicenseType": "Lizenztyp",
+ "Manage": "Verwalten",
+ "StartDate": "Startdatum",
+ "EndDate": "Enddatum",
+ "Modules": "Module",
+ "LicenseExtendMessage": "Ihr Lizenzenddatum wird auf {0} verlängert",
+ "LicenseUpgradeMessage": "Ihre Lizenz wird auf {0} aktualisiert",
+ "LicenseAddDeveloperMessage": "{0} Entwickler zu Ihrer Lizenz hinzugefügt",
+ "Volo.AbpIo.Commercial:010004": "Kann den angegebenen Benutzer nicht finden! Der Benutzer muss sich bereits registriert haben.",
+ "MyOrganizations": "Meine Organisationen",
+ "ApiKey": "API-Schlüssel",
+ "UserNameNotFound": "Es gibt keinen Benutzer mit dem Benutzernamen {0}",
+ "SuccessfullyAddedToNewsletter": "Vielen Dank, dass Sie unseren Newsletter abonniert haben!",
+ "MyProfile": "Mein Profil",
+ "EmailNotValid": "Bitte geben Sie eine gültige E-Mail-Adresse ein."
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
index 2a57c6b25d..e029499b06 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
@@ -30,6 +30,8 @@
"UserNameNotFound": "There is no user with username {0}",
"SuccessfullyAddedToNewsletter": "Thanks you for subscribing to our newsletter!",
"MyProfile": "My profile",
- "EmailNotValid": "Please enter a valid email address."
+ "EmailNotValid": "Please enter a valid email address.",
+ "JoinOurMarketingNewsletter": "Join our marketing newsletter",
+ "WouldLikeToReceiveMarketingMaterials": "I would like to receive marketing materials like product deals & special offers."
}
}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json
new file mode 100644
index 0000000000..7aa24608d4
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json
@@ -0,0 +1,35 @@
+{
+ "culture": "es",
+ "texts": {
+ "OrganizationManagement": "",
+ "OrganizationList": "",
+ "Volo.AbpIo.Commercial:010003": "",
+ "OrganizationNotFoundMessage": "",
+ "DeveloperCount": "",
+ "QuestionCount": "",
+ "Unlimited": "",
+ "Owners": "",
+ "AddMember": "",
+ "AddOwner": "",
+ "AddDeveloper": "",
+ "UserName": "",
+ "Name": "",
+ "EmailAddress": "",
+ "Developers": "",
+ "LicenseType": "Tipo de licencia",
+ "Manage": "",
+ "StartDate": "",
+ "EndDate": "",
+ "Modules": "Módulos",
+ "LicenseExtendMessage": "",
+ "LicenseUpgradeMessage": "",
+ "LicenseAddDeveloperMessage": "",
+ "Volo.AbpIo.Commercial:010004": "",
+ "MyOrganizations": "",
+ "ApiKey": "",
+ "UserNameNotFound": "",
+ "SuccessfullyAddedToNewsletter": "",
+ "MyProfile": "",
+ "EmailNotValid": ""
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/de-DE.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/de-DE.json
new file mode 100644
index 0000000000..cc8d76012c
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/de-DE.json
@@ -0,0 +1,90 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "Permission:CommunityArticle": "Community-Beitrag",
+ "Permission:Edit": "Bearbeiten",
+ "Waiting": "Wartend",
+ "Approved": "Genehmigt",
+ "Rejected": "Abgelehnt",
+ "Wait": "Warten",
+ "Approve": "Genehmigen",
+ "Reject": "Ablehnen",
+ "ReadArticle": "Beitrag lesen",
+ "Status": "Status",
+ "ContentSource": "Inhaltsquelle",
+ "Details": "Details",
+ "Url": "URL",
+ "Title": "Titel",
+ "CreationTime": "Erstellungszeitpunkt",
+ "Save": "Speichern",
+ "SameUrlAlreadyExist": "Dieselbe URL existiert bereits, wenn Sie diesen Beitrag hinzufügen möchten, sollten Sie die URL ändern!",
+ "UrlIsNotValid": "Der URL ist nicht korrekt.",
+ "UrlNotFound": "URL nicht gefunden.",
+ "UrlContentNotFound": "URL-Inhalt nicht gefunden",
+ "Summary": "Zusammenfassung",
+ "MostRead": "Meist gelesen",
+ "Latest": "Neueste",
+ "ContributeAbpCommunity": "Tragen Sie zur ABP Community bei",
+ "SubmitYourArticle": "Reichen Sie Ihren Beitrag ein",
+ "ContributionGuide": "Leitfaden für Mitwirkende",
+ "BugReport": "Fehler melden",
+ "SeeAllArticles": "Alle Beiträge anzeigen",
+ "WelcomeToABPCommunity!": "Willkommen in der ABP Community!",
+ "MyProfile": "Mein Profil",
+ "MyOrganizations": "Meine Organisationen",
+ "EmailNotValid": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
+ "FeatureRequest": "Featureanfrage",
+ "CreateArticleTitleInfo": "Titel des Beitrags, der in der Beitragsliste angezeigt werden soll.",
+ "CreateArticleUrlInfo": "Original GitHub-/externe URL des Beitrags.",
+ "CreateArticleSummaryInfo": "Eine kurze Zusammenfassung des Beitrags, der in der Beitragsliste angezeigt werden soll.",
+ "CreateArticleCoverInfo": "Fügen Sie zum Erstellen eines effektiven Beitrags ein Titelbild hinzu. Laden Sie Bilder mit einem Seitenverhältnis von 16: 9 hoch, um die beste Ansicht zu erhalten.",
+ "ThisExtensionIsNotAllowed": "Diese Erweiterung ist nicht zulässig.",
+ "TheFileIsTooLarge": "Die Datei ist zu groß.",
+ "GoToTheArticle": "Gehe zum Beitrag",
+ "Contribute": "Beitragen",
+ "OverallProgress": "Gesamtfortschritt",
+ "Done": "Ferig",
+ "Open": "Offen",
+ "Closed": "Geschlossen",
+ "LatestQuestionOnThe": "Letzte Frage zum",
+ "Stackoverflow": "Stackoverflow",
+ "Votes": "Stimmen",
+ "Answer": "Antworten",
+ "Views": "Ansichten",
+ "Answered": "Beantwortet",
+ "WaitingForYourAnswer": "Warten auf Ihre Antwort",
+ "Asked": "gefragt",
+ "AllQuestions": "Alle Fragen",
+ "NextVersion": "Nächste Version",
+ "MilestoneErrorMessage": "Die aktuellen Meilensteindetails konnten von Github nicht abgerufen werden.",
+ "QuestionItemErrorMessage": "Die neuesten Fragendetails konnten von Stackoverflow nicht abgerufen werden.",
+ "Oops": "Hoppla!",
+ "CreateArticleSuccessMessage": "Der Beitrag wurde erfolgreich eingereicht. Er wird nach einer Überprüfung durch den Site-Administrator veröffentlicht.",
+ "ChooseCoverImage": "Wählen Sie ein Titelbild ...",
+ "CoverImage": "Titelbild",
+ "ShareYourExperiencesWithTheABPFramework": "Teilen Sie Ihre Erfahrungen mit dem ABP Framework!",
+ "Optional": "Optional",
+ "UpdateUserWebSiteInfo": "Beispiel: https://johndoe.com",
+ "UpdateUserTwitterInfo": "Beispiel: johndoe",
+ "UpdateUserGithubInfo": "Beispiel: johndoe",
+ "UpdateUserLinkedinInfo": "Beispiel: https://www.linkedin.com/...",
+ "UpdateUserCompanyInfo": "Beispiel: Volosoft",
+ "UpdateUserJobTitleInfo": "Beispiel: Software Developer",
+ "UserName": "Benutzername",
+ "Company": "Firma",
+ "PersonalWebsite": "Persönliche Website",
+ "RegistrationDate": "Registrierungsdatum",
+ "Social": "Social",
+ "Biography": "Biographie",
+ "HasNoPublishedArticlesYet": "hat noch keine Beiträge veröffentlicht",
+ "Author": "Autor",
+ "LatestGithubAnnouncements": "Neueste Github-Ankündigungen",
+ "SeeAllAnnouncements": "Alle Ankündigungen anzeigen",
+ "LatestBlogPost": "Letzter Blog-Beitrag",
+ "Edit": "Bearbeiten",
+ "ProfileImageChange": "Ändern Sie das Profilbild",
+ "BlogItemErrorMessage": "Die neuesten Blogpost-Details konnten von ABP nicht abgerufen werden.",
+ "PlannedReleaseDate": "Geplantes Erscheinungsdatum",
+ "CommunityArticleRequestErrorMessage": "Die Anfrage nach den neuesten Beiträgen von Github konnte nicht abgerufen werden."
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json
index 2544e50726..c570e6fb1e 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json
@@ -84,6 +84,21 @@
"Edit": "Edit",
"ProfileImageChange": "Change the profile image",
"BlogItemErrorMessage": "Could not get the latest blog post details from ABP.",
- "PlannedReleaseDate": "Planned release date"
+ "PlannedReleaseDate": "Planned release date",
+ "CommunityArticleRequestErrorMessage": "Could not get the latest article request from Github.",
+ "ArticleRequestFromGithubIssue": "There are not any article requests now.",
+ "LatestArticles": "Latest Articles",
+ "ArticleRequests": "Article Requests",
+ "AllArticleRequests": "See All Article Requests",
+ "SubscribeToTheNewsletter": "Subscribe to the Newsletter",
+ "NewsletterEmailDefinition": "Get information about happenings in ABP like new releases, free sources, articles, and more.",
+ "NoThanks": "No, thanks",
+ "MaybeLater": "Maybe later",
+ "JoinOurArticleNewsletter": "Join our article newsletter",
+ "Community": "Community",
+ "Marketing": "Marketing",
+ "CommunityPrivacyPolicyConfirmation": "I agree to the Terms & Conditions and Privacy Policy.",
+ "ArticleRequestMessageTitle": "Open an issue on the GitHub to request an article/tutorial you want to see on this web site.",
+ "ArticleRequestMessageBody": "Here, the list of the requested articles by the community. Do you want to write a requested article? Please click to the request and join to the discussion."
}
}
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/es.json
new file mode 100644
index 0000000000..d495720a93
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/es.json
@@ -0,0 +1,90 @@
+{
+ "culture": "es",
+ "texts": {
+ "Permission:CommunityArticle": "",
+ "Permission:Edit": "",
+ "Waiting": "",
+ "Approved": "",
+ "Rejected": "",
+ "Wait": "",
+ "Approve": "",
+ "Reject": "",
+ "ReadArticle": "",
+ "Status": "",
+ "ContentSource": "",
+ "Details": "",
+ "Url": "",
+ "Title": "",
+ "CreationTime": "",
+ "Save": "Guardar",
+ "SameUrlAlreadyExist": "",
+ "UrlIsNotValid": "",
+ "UrlNotFound": "",
+ "UrlContentNotFound": "",
+ "Summary": "",
+ "MostRead": "",
+ "Latest": "",
+ "ContributeAbpCommunity": "",
+ "SubmitYourArticle": "",
+ "ContributionGuide": "",
+ "BugReport": "",
+ "SeeAllArticles": "",
+ "WelcomeToABPCommunity!": "",
+ "MyProfile": "",
+ "MyOrganizations": "",
+ "EmailNotValid": "",
+ "FeatureRequest": "",
+ "CreateArticleTitleInfo": "",
+ "CreateArticleUrlInfo": "",
+ "CreateArticleSummaryInfo": "",
+ "CreateArticleCoverInfo": "",
+ "ThisExtensionIsNotAllowed": "",
+ "TheFileIsTooLarge": "",
+ "GoToTheArticle": "",
+ "Contribute": "",
+ "OverallProgress": "",
+ "Done": "",
+ "Open": "",
+ "Closed": "",
+ "LatestQuestionOnThe": "",
+ "Stackoverflow": "",
+ "Votes": "",
+ "Answer": "",
+ "Views": "",
+ "Answered": "",
+ "WaitingForYourAnswer": "",
+ "Asked": "",
+ "AllQuestions": "",
+ "NextVersion": "",
+ "MilestoneErrorMessage": "",
+ "QuestionItemErrorMessage": "",
+ "Oops": "",
+ "CreateArticleSuccessMessage": "",
+ "ChooseCoverImage": "",
+ "CoverImage": "",
+ "ShareYourExperiencesWithTheABPFramework": "",
+ "Optional": "",
+ "UpdateUserWebSiteInfo": "",
+ "UpdateUserTwitterInfo": "",
+ "UpdateUserGithubInfo": "",
+ "UpdateUserLinkedinInfo": "",
+ "UpdateUserCompanyInfo": "",
+ "UpdateUserJobTitleInfo": "",
+ "UserName": "",
+ "Company": "",
+ "PersonalWebsite": "",
+ "RegistrationDate": "",
+ "Social": "",
+ "Biography": "",
+ "HasNoPublishedArticlesYet": "",
+ "Author": "",
+ "LatestGithubAnnouncements": "",
+ "SeeAllAnnouncements": "",
+ "LatestBlogPost": "",
+ "Edit": "",
+ "ProfileImageChange": "",
+ "BlogItemErrorMessage": "",
+ "PlannedReleaseDate": "",
+ "CommunityArticleRequestErrorMessage": ""
+ }
+}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de-DE.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de-DE.json
new file mode 100644
index 0000000000..6f9f0726cf
--- /dev/null
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de-DE.json
@@ -0,0 +1,189 @@
+{
+ "culture": "de-DE",
+ "texts": {
+ "GetStarted": "Erste Schritte - Startvorlagen",
+ "Create": "Erstellen",
+ "NewProject": "Neues Projekt",
+ "DirectDownload": "Direkter Download",
+ "ProjectName": "Proejktname",
+ "ProjectType": "Projekttyp",
+ "DatabaseProvider": "Datenbankanbieter",
+ "NTier": "N-Tier",
+ "IncludeUserInterface": "Benutzeroberfläche einschließen",
+ "CreateNow": "Jetzt erstellen",
+ "TheStartupProject": "Das Startprojekt",
+ "Tutorial": "Lernprogramm",
+ "UsingCLI": "mit CLI",
+ "SeeDetails": "Details ansehen",
+ "AbpShortDescription": "ABP Framework ist eine vollständige Infrastruktur zum Erstellen moderner Webanwendungen unter Befolgung von Best Practices und Konventionen für Softwareentwicklung.",
+ "SourceCodeUpper": "QUELLCODE",
+ "LatestReleaseLogs": "Akteulle Release",
+ "Infrastructure": "Infrastrutkur",
+ "Architecture": "Architektur",
+ "Modular": "Modular",
+ "DontRepeatYourself": "Don't Repeat Yourself",
+ "DeveloperFocused": "Entwickler-Zentriert",
+ "FullStackApplicationInfrastructure": "Full-Stack-Anwendungsinfrastruktur.",
+ "DomainDrivenDesign": "Domain Driven Design",
+ "DomainDrivenDesignExplanation": "Entworfen und entwickelt basierend auf DDD-Mustern und -Prinzipien. Bietet ein Schichtenmodell für Ihre Anwendung.",
+ "Authorization": "Authorization",
+ "AuthorizationExplanation": "Erweiterte Autorisierung mit Benutzer-, Rollen- und fein abgestimmtem Berechtigungssystem. Aufbauend auf der Microsoft Identity-Bibliothek.",
+ "MultiTenancy": "Multi-Tenancy",
+ "MultiTenancyExplanationShort": "SaaS-Anwendungen leicht gemacht! Integrierte Mandantenfähigkeit von der Datenbank bis zur Benutzeroberfläche.",
+ "CrossCuttingConcerns": "Cross Cutting Concerns",
+ "CrossCuttingConcernsExplanationShort": "Komplette Infrastruktur für Autorisierung, Validierung, Ausnahmebehandlung, Caching, Überwachungsprotokollierung, Transaktionsverwaltung und mehr.",
+ "BuiltInBundlingMinification": "Built-In Bundling & Minification",
+ "BuiltInBundlingMinificationExplanation": "Für die Bundling und Minification müssen keine externen Tools verwendet werden. ABP bietet eine einfachere, dynamische, leistungsstarke, modulare und integrierte Methode!",
+ "VirtualFileSystem": "Virtual File System",
+ "VirtualFileSystemExplanation": "Betten Sie Ansichten, Skripte, Stile, Bilder ... in Pakete/Bibliotheken ein und verwenden Sie sie in verschiedenen Anwendungen wieder.",
+ "Theming": "Theming",
+ "ThemingExplanationShort": "Verwenden und passen Sie das Bootstrap-basierte Standard-UI-Design an oder erstellen Sie Ihr eigenes.",
+ "BootstrapTagHelpersDynamicForms": "Bootstrap Tag Helpers & Dynamic Forms",
+ "BootstrapTagHelpersDynamicFormsExplanation": "Anstatt die sich wiederholenden Details von Bootstrap-Komponenten manuell zu schreiben, verwenden Sie die Tag-Helper von ABP, um diese zu vereinfachen und dabei die Vorteile von Intellisense zu nutzen. Erstellen Sie mit dem dynamischen Formular-Tag-Helfer schnell UI-Formulare basierend auf einem C#-Modell.",
+ "HTTPAPIsDynamicProxies": "HTTP APIs & Dynamic Proxies",
+ "HTTPAPIsDynamicProxiesExplanation": "Stellen Sie Anwendungsdienste automatisch als HTTP-APIs im REST-Stil bereit und verwenden Sie diese mit dynamischen JavaScript- und C#-Proxys.",
+ "CompleteArchitectureInfo": "Moderne Architektur zur Erstellung wartbarer Softwarelösungen.",
+ "DomainDrivenDesignBasedLayeringModelExplanation": "Hilft Ihnen bei der Implementierung einer DDD-basierten Schichtarchitektur und beim Aufbau einer wartbaren Codebasis.",
+ "DomainDrivenDesignBasedLayeringModelExplanationCont": "Bietet Startvorlagen, Abstraktionen, Basisklassen, Dienste, Dokumentation und Anleitungen, mit denen Sie Ihre Anwendung basierend auf DDD-Mustern und -Prinzipien entwickeln können.",
+ "MicroserviceCompatibleModelExplanation": "Das Kernframework und die vorgefertigten Module sind unter Berücksichtigung der Microservice-Architektur konzipiert.",
+ "MicroserviceCompatibleModelExplanationCont": "Bietet Infrastruktur, Integrationen, Beispiele und Dokumentation zur einfacheren Implementierung von Microservice-Lösungen, ohne zusätzliche Komplexität zu verursachen, wenn Sie eine monolithische Anwendung wünschen.",
+ "ModularInfo": "ABP bietet ein Modulsystem, mit dem Sie wiederverwendbare Anwendungsmodule entwickeln, Ereignisse im Anwendungslebenszyklus verknüpfen und Abhängigkeiten zwischen Kernteilen Ihres Systems ausdrücken können.",
+ "PreBuiltModulesThemes": "Vorgefertigte Module & Themes",
+ "PreBuiltModulesThemesExplanation": "Open Source- und kommerzielle Module und Themes stehen bereit, um in Ihrer Geschäftsanwendung verwendet zu werden.",
+ "NuGetNPMPackages": "NuGet- & NPM-Pakete",
+ "NuGetNPMPackagesExplanation": "Bereitgestellt als NuGet- & NPM-Pakete. Einfach zu installieren und zu aktualisieren.",
+ "ExtensibleReplaceable": "Erweiterbar/Austauschbar",
+ "ExtensibleReplaceableExplanation": "Alle Dienste und Module sind auf Erweiterbarkeit ausgelegt. Sie können Dienste, Seiten, Stile und Komponenten ersetzen.",
+ "CrossCuttingConcernsExplanation2": "Halten Sie Ihre Codebasis kleiner, damit Sie sich auf ihre geschäftsspezifischen Code konzentrieren können.",
+ "CrossCuttingConcernsExplanation3": "Verbringen Sie keine Zeit damit, grundlegende Anwendungsanforderungen für jedes neue Projekte zu implementieren.",
+ "AuthenticationAuthorization": "Authentifizierung & Autorisierung",
+ "ExceptionHandling": "Fehlerbehandlung",
+ "Validation": "Validierung",
+ "DatabaseConnection": "Datenbankverbindung",
+ "TransactionManagement": "Transaktionsmanagement",
+ "AuditLogging": "Audit Logging",
+ "Caching": "Caching",
+ "Multitenancy": "Multimandantenfähigkeit",
+ "DataFiltering": "Datenfilterung",
+ "ConventionOverConfiguration": "Convention Over Configuration",
+ "ConventionOverConfigurationExplanation": "ABP implementiert standardmäßig allgemeine Anwendungskonventionen mit einer minimalen oder Null-Konfiguration.",
+ "ConventionOverConfigurationExplanationList1": "Automatische Registrierung bekannter Services für Dependency Injection.",
+ "ConventionOverConfigurationExplanationList2": "Stellt Anwendungsdienste mittels Namenskonventionen als HTTP-APIs bereit.",
+ "ConventionOverConfigurationExplanationList3": "Erstellt dynamische HTTP-Client-Proxys für C# und JavaScript.",
+ "ConventionOverConfigurationExplanationList4": "Bietet Standard-Repositorys für Ihre Entities.",
+ "ConventionOverConfigurationExplanationList5": "Verwaltet die Unit-of-Work gemäß Webanforderung oder Anwendungsdienstmethode.",
+ "ConventionOverConfigurationExplanationList6": "Triggert Erstellungs-, Aktualisierungs- und Lösch-Events für Ihre Entities.",
+ "BaseClasses": "Basisklassen",
+ "BaseClassesExplanation": "Vorgefertigte Basisklassen für gängige Anwendungsmuster.",
+ "DeveloperFocusedExplanation": "ABP ist für Entwickler",
+ "DeveloperFocusedExplanationCont": "Es zielt darauf ab, Ihre tägliche Softwareentwicklung zu vereinfachen, ohne Sie daran zu hindern, Low-Level-Code zu schreiben.",
+ "SeeAllFeatures": "Alle Features anzeigen",
+ "CLI_CommandLineInterface": "CLI (Command Line Interface)",
+ "CLI_CommandLineInterfaceExplanation": "Enthält eine CLI, mit der Sie die Erstellung neuer Projekte und das Hinzufügen neuer Module automatisieren können.",
+ "StartupTemplates": "Startvorlagen",
+ "StartupTemplatesExplanation": "Verschiedene Startvorlagen bieten eine vollständig konfigurierte Lösung, um Ihre Entwicklung zu beschleunigen.",
+ "BasedOnFamiliarTools": "Basierend auf vertrauten Tools",
+ "BasedOnFamiliarToolsExplanation": "Aufbauend auf und integriert mit beliebten Tools, die Sie bereits kennen. Geringe Lernkurve, einfache Anpassung, komfortable Entwicklung.",
+ "ORMIndependent": "ORM-unabhängig",
+ "ORMIndependentExplanation": "Das Kernframework ist ORM-/datenbankunabhängig und kann mit jeder Datenquelle arbeiten. Entity Framework Core- und MongoDB-Anbieter sind bereits verfügbar.",
+ "Features": "Entdecken Sie die ABP Framework-Features",
+ "ABPCLI": "ABP CLI",
+ "Modularity": "Modularität",
+ "BootstrapTagHelpers": "Bootstrap Tag Helpers",
+ "DynamicForms": "Dynamische Formulare",
+ "BundlingMinification": "Bundling & Minification",
+ "BackgroundJobs": "Background Jobs",
+ "BackgroundJobsExplanation": "Definieren Sie einfache Klassen, um Jobs im Hintergrund in der Warteschlange auszuführen. Verwenden Sie den integrierten Jobmanager oder integrieren Sie Ihren eigenen. Hangfire & RabbitMQ -Integrationen sind bereits verfügbar.",
+ "DDDInfrastructure": "DDD-Infrastruktur",
+ "DomainDrivenDesignInfrastructure": "Domain Driven Design-Infrastruktur",
+ "AutoRESTAPIs": "Auto REST APIs",
+ "DynamicClientProxies": "Dynamische Client-Proxies",
+ "DistributedEventBus": "Distributed Event Bus",
+ "DistributedEventBusWithRabbitMQIntegration": "Distributed Event Bus mit RabbitMQ-Integration",
+ "TestInfrastructure": "Test-Infrastruktur",
+ "AuditLoggingEntityHistories": "Audit Logging & Entity Histories",
+ "ObjectToObjectMapping": "Object to Object Mapping",
+ "ObjectToObjectMappingExplanation": " Object to Object Mapping Abstraktion mit AutoMapper-Integration.",
+ "EmailSMSAbstractions": "E-Mail & SMS Abstraktionen",
+ "EmailSMSAbstractionsWithTemplatingSupport": "E-Mail- und SMS-Abstraktionen mit Vorlagenunterstützung",
+ "Localization": "Lokalisierung",
+ "SettingManagement": "Einstellungsverwaltung",
+ "ExtensionMethods": "Erweiterungsmethoden",
+ "ExtensionMethodsHelpers": "Erweiterungsmethoden & Helfer",
+ "AspectOrientedProgramming": "Aspektorientierte Programmierung",
+ "DependencyInjection": "Dependency Injection",
+ "DependencyInjectionByConventions": "Dependency Injection durch Konventionen",
+ "ABPCLIExplanation": "ABP CLI (Command Line Interface) ist ein Befehlszeilenprogramm zum Ausführen einiger gängiger Vorgänge für ABP-basierte Lösungen.",
+ "ModularityExplanation": "ABP bietet eine vollständige Infrastruktur zum Erstellen eigener Anwendungsmodule, die Entities, Services, Datenbankintegration, APIs, UI-Komponenten usw. enthalten können.",
+ "MultiTenancyExplanation": "Das ABP-Framework unterstützt nicht nur die Entwicklung von Multi-Mandantenanwendungen, sondern macht Ihren Code von der Mandantenfähigkeit auch weitgehend unabhängig.",
+ "MultiTenancyExplanation2": "Kann den aktuellen Mandanten automatisch ermitteln und Daten verschiedener Mandanten voneinander isolieren.",
+ "MultiTenancyExplanation3": "Unterstützt einzelne Datenbank-, Datenbank-pro-Mandanten- und Hybrid-Ansätze.",
+ "MultiTenancyExplanation4": "Sie konzentrieren sich auf Ihren geschäftsspezifischen Code und lassen das Framework die Mandantenfähigkeit für Sie übernehmen.",
+ "BootstrapTagHelpersExplanation": "Anstatt die sich wiederholenden Details von Bootstrap-Komponenten manuell zu schreiben, verwenden Sie die Tag-Helper von ABP, um diese zu vereinfachen und dabei die Vorteile von Intellisense zu nutzen. Sie können Bootstrap weitherhin verwenden, wann immer Sie es benötigen.",
+ "DynamicFormsExplanation": "Helfer für dynamische Formular- und Input-Tags können das vollständige Formular anhand einer C#-Klasse als Model erstellen.",
+ "AuthenticationAuthorizationExplanation": "Umfangreiche Authentifizierungs- und Autorisierungsoptionen, die in ASP.NET Core Identity & IdentityServer4 integriert sind. Bietet ein erweiterbares und detailliertes Berechtigungssystem.",
+ "CrossCuttingConcernsExplanation": "Wiederholen Sie sich nicht, um all diese allgemeinen Dinge immer wieder zu implementieren. Konzentrieren Sie sich auf Ihren geschäftsspezifischen Code und lassen Sie ihn von ABP durch Konventionen automatisieren.",
+ "DatabaseConnectionTransactionManagement": "Datenbankverbindungs- und Transaktionsmanagement",
+ "CorrelationIdTracking": "Correlation-ID-Verfolgung",
+ "BundlingMinificationExplanation": "ABP bietet ein einfaches, dynamisches, leistungsstarkes, modulares und integriertes Bundling- und Minification-System.",
+ "VirtualFileSystemnExplanation": "Das virtuelle Dateisystem ermöglicht die Verwaltung von Dateien, die physisch nicht auf dem Dateisystem (Datenträger) vorhanden sind. Es wird hauptsächlich verwendet, um Dateien (js, css, image, cshtml ...) in Assemblys einzubetten und sie zur Laufzeit wie physische Dateien zu verwenden.",
+ "ThemingExplanation": "Mit dem Theming-System können Sie Ihre Anwendung & Module Theme-unabhängig entwickeln, indem Sie eine Reihe gemeinsamer Basisbibliotheken und Layouts definieren, die auf dem neuesten Bootstrap-Framework basieren.",
+ "DomainDrivenDesignInfrastructureExplanation": "Eine vollständige Infrastruktur zum Erstellen von mehrschichtigen Anwendungen basierend auf den Domain Driven Design Entwurfsmustern und -prinzipien;",
+ "Specification": "Specification",
+ "Repository": "Repository",
+ "DomainService": "Domain Service",
+ "ValueObject": "Value Object",
+ "ApplicationService": "Application Service",
+ "DataTransferObject": "Data Transfer Object",
+ "AggregateRootEntity": "Aggregate Root, Entity",
+ "AutoRESTAPIsExplanation": "ABP kann Ihre Anwendungsservices gemäß Konvention automatisch als API-Controller konfigurieren.",
+ "DynamicClientProxiesExplanation": "Verwenden Sie Ihre APIs ganz einfach in JavaScript- und C#-Clients.",
+ "DistributedEventBusWithRabbitMQIntegrationExplanation": "Veröffentlichen und konsumieren Sie Distributed Events einfach mithilfe des integrierten Distributed Event Bus mit verfügbarer RabbitMQ-Integration.",
+ "TestInfrastructureExplanation": "Das Framework wurde unter Berücksichtigung von Unit- und Integrationstests entwickelt. Bietet Ihnen Basisklassen, um es einfacher zu machen. Startvorlagen werden mit vorkonfiguriert Tests geliefert.",
+ "AuditLoggingEntityHistoriesExplanation": "Integriertes Audit Logging für geschäftskritische Anwendungen. Audit Logging auf Request-, Service-, und Methodenebene sowie Entity-Historien mit Details auf Property-Ebene.",
+ "EmailSMSAbstractionsWithTemplatingSupportExplanation": "IEmailSender- und ISmsSender-Abstraktionen entkoppeln Ihre Anwendungslogik von der Infrastruktur. Das erweiterte E-Mail-Vorlagensystem ermöglicht das Erstellen und Lokalisieren von E-Mail-Vorlagen und deren einfache Verwendung bei Bedarf.",
+ "LocalizationExplanation": "Das Lokalisierungssystem ermöglicht das Erstellen von Ressourcen in einfachen JSON-Dateien und die Lokalisierung Ihrer Benutzeroberfläche. Es unterstützt erweiterte Szenarien wie Vererbung, Erweiterungen und JavaScript-Integration und ist vollständig mit dem Lokalisierungssystem von AspNet Core kompatibel.",
+ "SettingManagementExplanation": "Definieren Sie Einstellungen für Ihre Anwendung und erhalten Sie zur Laufzeit Werte basierend auf der aktuellen Konfiguration, dem Mandanten und dem Benutzer.",
+ "ExtensionMethodsHelpersExplanation": "Wiederholen Sie sich nicht einmal für triviale Codeteile. Erweiterungen und Helfer für Standardtypen machen Ihren Code viel sauberer und einfacher zu schreiben.",
+ "AspectOrientedProgrammingExplanation": "Bietet eine komfortable Infrastruktur zum Erstellen dynamischer Proxys und zum Implementieren der aspektorientierten Programmierung. Fangen Sie eine Klasse ab und führen Sie Ihren Code vor und nach jeder Methodenausführung aus.",
+ "DependencyInjectionByConventionsExplanation": "Sie müssen Ihre Klassen nicht manuell für die Dependency Injection registrieren. Registriert gängige Servicetypen automatisch gemäß Konvention. Für andere Arten von Services können Sie Schnittstellen und Attribute verwenden, um dies einfacher gestalten und an Ort und Stelle zu ermöglichen.",
+ "DataFilteringExplanation": "Definieren und verwenden Sie Datenfilter, die automatisch angewendet werden, wenn Sie Entities aus der Datenbank abfragen. Soft Delete- und Multimandanten-Filter sind sofort verfügbar, wenn Sie einfache Schnittstellen implementieren.",
+ "PublishEvents": "Events veröffentlichen",
+ "HandleEvents": "Auf Events reagieren",
+ "AndMore": "und mehr...",
+ "Code": "Code",
+ "Result": "Resultat",
+ "SeeTheDocumentForMoreInformation": "Weitere Informationen finden Sie in der {0} -Dokumentation ",
+ "IndexPageHeroSection": "Open SourceWebanwendung
-[Web application development tutorial](Tutorials/Part-1.md) is a complete tutorial to develop a full stack application using the ABP Framework.
+### Database Provider Options
-### ABP Community Articles
+
-See also the [ABP Community](https://community.abp.io/) articles.
+## Exploring the Documentation
-## Samples
+ABP has a **comprehensive documentation** that not only explains the ABP Framework, but also includes **guides** and **samples** to help you on creating a **maintainable solution** by introducing and discussing common **software development principle and best practices**.
-See the [sample projects](Samples/Index.md) built with the ABP Framework.
+### Architecture
+
+ABP offers a complete, modular and layered software architecture based on [Domain Driven Design](Domain-Driven-Design.md) principles and patterns. It also provides the necessary infrastructure to implement this architecture.
+
+* See the [Modularity](Module-Development-Basics.md) document to understand the module system.
+* [Implementing Domain Driven Design](Domain-Driven-Design-Implementation-Guide.md) document is an ultimate guide for who want to understand and implement the DDD.
+* [Microservice Architecture](Microservice-Architecture.md) document explains how ABP helps to create a microservice solution.
+
+### Infrastructure
+
+There are a lot of features provided by the ABP Framework to achieve real world scenarios easier, like [Event Bus](Event-Bus.md), [Background Job System](Background-Jobs.md), [Audit Logging](Audit-Logging.md), [BLOB Storing](Blob-Storing.md), [Data Seeding](Data-Seeding.md), [Data Filtering](Data-Filtering.md).
+
+### Cross Cutting Concerns
+
+ABP also simplifies (and even automates wherever possible) cross cutting concerns and common non-functional requirements like [Exception Handling](Exception-Handling.md), [Validation](Validation.md), [Authorization](Authorization.md), [Localization](Localization.md), [Caching](Caching.md), [Dependency Injection](Dependency-Injection.md), [Setting Management](Settings.md), etc.
+
+### Application Modules
+
+Application Modules provides pre-built application functionalities;
+
+* [**Account**](Modules/Account.md): Provides UI for the account management and allows user to login/register to the application.
+* **[Identity](Modules/Identity.md)**: Manages organization units, roles, users and their permissions, based on the Microsoft Identity library.
+* [**IdentityServer**](Modules/IdentityServer.md): Integrates to IdentityServer4.
+* [**Tenant Management**](Modules/Tenant-Management.md): Manages tenants for a [multi-tenant](Multi-Tenancy.md) (SaaS) application.
-## Source Code
+See the [Application Modules](Modules/Index.md) document for all pre-built modules.
+
+### Startup Templates
+
+The [Startup templates](Startup-Templates/Index.md) are pre-built Visual Studio solution templates. You can create your own solution based on these templates to **immediately start your development**.
+
+## ABP Community
+
+### The Source Code
ABP is hosted on GitHub. See [the source code](https://github.com/abpframework).
-## Want to Contribute?
+### ABP Community Web Site
+
+The [ABP Community](https://community.abp.io/) is a website to publish articles and share knowledge about the ABP Framework. You can also create content for the community!
+
+### Blog
+
+Follow the [ABP Blog](https://blog.abp.io/) to learn the latest happenings in the ABP Framework.
+
+### Samples
+
+See the [sample projects](Samples/Index.md) built with the ABP Framework.
+
+### Want to Contribute?
ABP is a community-driven open source project. See [the contribution guide](Contribution/Index.md) if you want to be a part of this project.
diff --git a/docs/en/Localization.md b/docs/en/Localization.md
index a33dff1779..089567422c 100644
--- a/docs/en/Localization.md
+++ b/docs/en/Localization.md
@@ -162,8 +162,8 @@ Getting the localized text is pretty standard.
Just inject the `IStringLocalizerThis page is located inside a plug-in module! :)
+```` + +Now, you can build the plug-in project. It will produce the following output: + + + +Copy the `MyMvcUIPlugIn.dll` and `MyMvcUIPlugIn.Views.dll` into the plug-in folder (`D:\Temp\MyPlugIns` for this example). + +If you have configured the main application like described above (see Basic Usage section), you should be able to visit the `/MyPlugInPage` URL when your application: + + + +## Discussions + +In real world, your plug-in may have some external dependencies. Also, your application might be designed to support plug-ins. All these are your own system requirements. What ABP does is just loading modules on the application startup. What you do inside that modules is up to you. + +However, we can provide a few suggestions for some common cases. + +### Library Dependencies + +For package/dll dependencies, you can copy the related dlls to the plug-in folder. ABP automatically loads all assemblies in the folder and your plug-in will work as expected. + +> See [Microsoft's documentation](https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support#plugin-with-library-dependencies) for some additional explanations for that case. + +### Database Schema + +If your module uses a relational database and [Entity Framework Core](Entity-Framework-Core.md), it will need to have its tables available in the database. There are different ways to ensure the tables have been created when an application uses the plug-in. Some examples; + +1. The Plugin may check if the database tables does exists and create the tables on the application startup or migrate them if the plug-in has been updated and requires some schema changes. You can use EF Core's migration API to do that. +2. You can improve the `DbMigrator` application to find migrations of the plug-ins and execute them. + +There may be other solutions. For example, if your DB admin doesn't allow you to change the database schema in the application code, you may need to manually send a SQL file to the database admin to apply it to the database. \ No newline at end of file diff --git a/docs/en/Repositories.md b/docs/en/Repositories.md index 0fc80984e7..5ff8372af8 100644 --- a/docs/en/Repositories.md +++ b/docs/en/Repositories.md @@ -79,6 +79,14 @@ If your entity does not have an Id primary key (it may have a composite primary > `IRepository