Browse Source

Merge branch 'rel-9.0' into auto-merge/rel-8-3/3330

pull/21740/head
EngincanV 1 year ago
parent
commit
5fdaea1b16
  1. 94
      .github/ISSUE_TEMPLATE/03_studio.yml
  2. 0
      .github/ISSUE_TEMPLATE/04_article_request.yml
  3. 0
      .github/ISSUE_TEMPLATE/05_performance_issue.md
  4. 0
      .github/ISSUE_TEMPLATE/06_blank_issue.md
  5. 22
      .github/workflows/auto-pr.yml
  6. 2
      .github/workflows/build-and-test.yml
  7. 2
      CONTRIBUTING.md
  8. 262
      Directory.Packages.props
  9. 119
      README.md
  10. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj
  11. 14
      abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalizationModule.cs
  12. 11
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en-GB.json
  13. 43
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  14. 13
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
  15. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/en.json
  16. 10
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/AbpIoCommercialResource.cs
  17. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json
  18. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json
  19. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json
  20. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json
  21. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json
  22. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json
  23. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json
  24. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json
  25. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json
  26. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json
  27. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json
  28. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json
  29. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json
  30. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json
  31. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json
  32. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json
  33. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json
  34. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json
  35. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
  36. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json
  37. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json
  38. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json
  39. 10
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/AbpIoCommunityResource.cs
  40. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/en.json
  41. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json
  42. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json
  43. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json
  44. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en-GB.json
  45. 1456
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json
  46. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json
  47. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json
  48. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json
  49. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json
  50. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json
  51. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json
  52. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json
  53. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json
  54. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json
  55. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json
  56. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json
  57. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json
  58. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json
  59. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json
  60. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json
  61. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json
  62. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json
  63. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json
  64. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json
  65. 4
      common.props
  66. BIN
      docs/en/Blog-Posts/2024-07-23-AbpIo-United-Is-Live/cover.png
  67. 62
      docs/en/Blog-Posts/2024-07-23-AbpIo-United-Is-Live/post.md
  68. BIN
      docs/en/Blog-Posts/2024-07-25-Introducing-The-New-ABP-CLI/cover-image.png
  69. 81
      docs/en/Blog-Posts/2024-07-25-Introducing-The-New-ABP-CLI/post.md
  70. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-helm-charts.png
  71. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-license-comparison-table.png
  72. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-new-layered-solution-template-wizard-options.png
  73. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-new-layered-solution-template-wizard.png
  74. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-solution-runner-overall.png
  75. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-solution-runner-start-apps.png
  76. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-suite-in-abp-studio.png
  77. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-suite-open-in-abp-studio.png
  78. 111
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/post.md
  79. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/solution-explorer.png
  80. BIN
      docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/suite-generated-entity.png
  81. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cms-kit-faq.png
  82. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cmskit-module-comments-settings.png
  83. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cmskit-module-markedItems.png
  84. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cover-image.png
  85. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/docs-google-search.png
  86. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/faq-section-public-web.png
  87. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/google-search-results.png
  88. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/new-abp-cli-cover-image.png
  89. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/new-platform-cover-image.png
  90. 177
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/post.md
  91. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/studio-beta-cover-image.png
  92. BIN
      docs/en/Blog-Posts/2024-07-31 v8_3_Preview/studio-switch-to-preview.png
  93. BIN
      docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/0.png
  94. BIN
      docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/1.png
  95. BIN
      docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/2.png
  96. BIN
      docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/3.png
  97. 490
      docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/POST.md
  98. BIN
      docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/cover.jpg
  99. 78
      docs/en/Blog-Posts/2024-08-13 New-ABP-Documentation-System/POST.md
  100. BIN
      docs/en/Blog-Posts/2024-08-13 New-ABP-Documentation-System/abp-docs.png

94
.github/ISSUE_TEMPLATE/03_studio.yml

@ -0,0 +1,94 @@
name: 🤠 ABP Studio
description: Create a report to help us improve the ABP Studio
labels: [studio]
body:
- type: markdown
attributes:
value: |
We welcome bug reports! This template will help us gather the information we need to start the triage process.
Please keep in mind that the GitHub issue tracker is not intended as a general support forum, but for reporting **non-security** bugs and feature requests.
If you believe you have an issue that affects the SECURITY of the platform, please do NOT create an issue and instead email your issue details to info@abp.io.
For other types of questions, consider using [StackOverflow](https://stackoverflow.com/questions/tagged/abp).
- type: checkboxes
id: searched
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered or feature request ([abp/issues](https://github.com/abpframework/abp/issues?q=is%3Aopen+is%3Aissue+label%3Astudio)).
options:
- label: I have searched the existing issues
required: true
- type: textarea
id: background
attributes:
label: Description
description: Please share a clear and concise description of the problem.
placeholder: Description
validations:
required: true
- type: markdown
attributes:
value: |
## Setup
Please provide more information on your ABP Studio setup.
- type: input
id: version
attributes:
label: Version
description: Which version of ABP Studio are you using?
placeholder: Version
validations:
required: true
- type: dropdown
id: Operation-System
attributes:
label: Operation System
description: What is the operation system of the computer?
options:
- Windows (Default)
- Linux
- macOS
- Others
validations:
required: true
- type: textarea
id: solution-config
attributes:
label: Solution Configuration
description: |
If there is an open solution, what are the configurations of the solution?
🧐 Hint: You can see all the information about your solution from the configuration window, which opens when you right-click on the [solution](https://abp.io/docs/latest/studio/solution-explorer#solution) and click on the `Solution Configuration` button.
placeholder: |
- **Template**: app
- **Created ABP Studio Version**: 0.7.9
- **Tiered**: No
- **UI Framework**: mvc
- **Theme**: leptonx
- **Theme Style**: system
- **Database Provider**: ef
- **Database Management System**: sqlserver
- **Separate Tenant Schema**: No
- **Mobile Framework**: none
- **Public Website**: No
- **Optional Modules**:
* GDPR
* TextTemplateManagement
* LanguageManagement
* AuditLogging
* SaaS
* OpenIddictAdmin
validations:
required: false
- type: markdown
attributes:
value: |
---
- type: textarea
id: other-info
attributes:
label: Other information
description: |
If you have an idea where the problem might lie, let us know that here. Please include any pointers to code, relevant changes, or related issues you know of.
placeholder: Other information
validations:
required: false

0
.github/ISSUE_TEMPLATE/03_article_request.yml → .github/ISSUE_TEMPLATE/04_article_request.yml

0
.github/ISSUE_TEMPLATE/04_performance_issue.md → .github/ISSUE_TEMPLATE/05_performance_issue.md

0
.github/ISSUE_TEMPLATE/05_blank_issue.md → .github/ISSUE_TEMPLATE/06_blank_issue.md

22
.github/workflows/auto-pr.yml

@ -1,13 +1,13 @@
name: Merge branch rel-9.0 with rel-8.3
name: Merge branch dev with rel-9.0
on:
push:
branches:
- rel-8.3
- rel-9.0
permissions:
contents: read
jobs:
merge-rel-9-0-with-rel-8-3:
merge-dev-with-rel-9-0:
permissions:
contents: write # for peter-evans/create-pull-request to create branch
pull-requests: write # for peter-evans/create-pull-request to create a PR
@ -15,17 +15,17 @@ jobs:
steps:
- uses: actions/checkout@v2
with:
ref: rel-9.0
ref: dev
- name: Reset promotion branch
run: |
git fetch origin rel-8.3:rel-8.3
git reset --hard rel-8.3
git fetch origin rel-9.0:rel-9.0
git reset --hard rel-9.0
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
branch: auto-merge/rel-8-3/${{github.run_number}}
title: Merge branch rel-9.0 with rel-8.3
body: This PR generated automatically to merge rel-9.0 with rel-8.3. Please review the changed files before merging to prevent any errors that may occur.
branch: auto-merge/rel-9-0/${{github.run_number}}
title: Merge branch dev with rel-9.0
body: This PR generated automatically to merge dev with rel-9.0. Please review the changed files before merging to prevent any errors that may occur.
reviewers: maliming
draft: true
token: ${{ github.token }}
@ -34,5 +34,5 @@ jobs:
GH_TOKEN: ${{ secrets.BOT_SECRET }}
run: |
gh pr ready
gh pr review auto-merge/rel-8-3/${{github.run_number}} --approve
gh pr merge auto-merge/rel-8-3/${{github.run_number}} --merge --auto --delete-branch
gh pr review auto-merge/rel-9-0/${{github.run_number}} --approve
gh pr merge auto-merge/rel-9-0/${{github.run_number}} --merge --auto --delete-branch

2
.github/workflows/build-and-test.yml

@ -51,7 +51,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-dotnet@master
with:
dotnet-version: 8.0.100
dotnet-version: 9.0.100
- name: chown
run: |

2
CONTRIBUTING.md

@ -1,3 +1,3 @@
## Contribution
See the [contribution guide](docs/en/Contribution/Index.md).
The contribution guide is available at [contribution guide](docs/en/contribution/index.md).

262
Directory.Packages.props

@ -3,175 +3,177 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="2.0.24" />
<PackageVersion Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="3.0.0" />
<PackageVersion Include="aliyun-net-sdk-sts" Version="3.1.2" />
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.13.0" />
<PackageVersion Include="AsyncKeyedLock" Version="6.3.4" />
<PackageVersion Include="Autofac" Version="8.0.0" />
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
<PackageVersion Include="AsyncKeyedLock" Version="7.0.1" />
<PackageVersion Include="Autofac" Version="8.1.0" />
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="10.0.0" />
<PackageVersion Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
<PackageVersion Include="AutoMapper" Version="13.0.1" />
<PackageVersion Include="Asp.Versioning.Mvc" Version="8.1.0" />
<PackageVersion Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
<PackageVersion Include="AWSSDK.S3" Version="3.7.300.2" />
<PackageVersion Include="AWSSDK.SecurityToken" Version="3.7.300.2" />
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.17.0" />
<PackageVersion Include="Azure.Storage.Blobs" Version="12.19.1" />
<PackageVersion Include="Blazorise" Version="1.5.2" />
<PackageVersion Include="Blazorise.Components" Version="1.5.2" />
<PackageVersion Include="Blazorise.DataGrid" Version="1.5.2" />
<PackageVersion Include="Blazorise.Snackbar" Version="1.5.2" />
<PackageVersion Include="AWSSDK.S3" Version="3.7.410.9" />
<PackageVersion Include="AWSSDK.SecurityToken" Version="3.7.401.16" />
<PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.18.1" />
<PackageVersion Include="Azure.Storage.Blobs" Version="12.22.1" />
<PackageVersion Include="Blazorise" Version="1.6.2" />
<PackageVersion Include="Blazorise.Components" Version="1.6.2" />
<PackageVersion Include="Blazorise.DataGrid" Version="1.6.2" />
<PackageVersion Include="Blazorise.Snackbar" Version="1.6.2" />
<PackageVersion Include="Castle.Core" Version="5.1.1" />
<PackageVersion Include="Castle.Core.AsyncInterceptor" Version="2.1.0" />
<PackageVersion Include="CommonMark.NET" Version="0.15.1" />
<PackageVersion Include="Confluent.Kafka" Version="2.3.0" />
<PackageVersion Include="Dapper" Version="2.1.21" />
<PackageVersion Include="Dapr.AspNetCore" Version="1.12.0" />
<PackageVersion Include="Dapr.Client" Version="1.12.0" />
<PackageVersion Include="DeviceDetector.NET" Version="6.1.4" />
<PackageVersion Include="Devart.Data.Oracle.EFCore" Version="10.3.10.8" />
<PackageVersion Include="DistributedLock.Core" Version="1.0.5" />
<PackageVersion Include="DistributedLock.Redis" Version="1.0.2" />
<PackageVersion Include="DeepL.net" Version="1.8.0" />
<PackageVersion Include="Confluent.Kafka" Version="2.5.3" />
<PackageVersion Include="Dapper" Version="2.1.44" />
<PackageVersion Include="Dapr.AspNetCore" Version="1.14.0" />
<PackageVersion Include="Dapr.Client" Version="1.14.0" />
<PackageVersion Include="DeviceDetector.NET" Version="6.3.3" />
<PackageVersion Include="Devart.Data.Oracle.EFCore" Version="10.3.21.8" />
<PackageVersion Include="DistributedLock.Core" Version="1.0.7" />
<PackageVersion Include="DistributedLock.Redis" Version="1.0.3" />
<PackageVersion Include="DeepL.net" Version="1.10.0" />
<PackageVersion Include="EphemeralMongo.Core" Version="1.1.3" />
<PackageVersion Include="EphemeralMongo6.runtime.linux-x64" Version="1.1.3" />
<PackageVersion Include="EphemeralMongo6.runtime.osx-x64" Version="1.1.3" />
<PackageVersion Include="EphemeralMongo6.runtime.win-x64" Version="1.1.3" />
<PackageVersion Include="FluentValidation" Version="11.8.0" />
<PackageVersion Include="FluentValidation" Version="11.10.0" />
<PackageVersion Include="Google.Cloud.Storage.V1" Version="4.10.0" />
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.14" />
<PackageVersion Include="Hangfire.SqlServer" Version="1.8.14" />
<PackageVersion Include="HtmlSanitizer" Version="8.0.746" />
<PackageVersion Include="IdentityModel" Version="6.2.0" />
<PackageVersion Include="HtmlSanitizer" Version="8.1.870" />
<PackageVersion Include="IdentityModel" Version="7.0.0" />
<PackageVersion Include="IdentityServer4" Version="4.1.2" />
<PackageVersion Include="IdentityServer4.AspNetIdentity" Version="4.1.2" />
<PackageVersion Include="JetBrains.Annotations" Version="2023.3.0" />
<PackageVersion Include="JetBrains.Annotations" Version="2024.2.0" />
<PackageVersion Include="LdapForNet" Version="2.7.15" />
<PackageVersion Include="LibGit2Sharp" Version="0.28.0" />
<PackageVersion Include="LibGit2Sharp" Version="0.30.0" />
<PackageVersion Include="Magick.NET-Q16-AnyCPU" Version="13.4.0" />
<PackageVersion Include="MailKit" Version="4.7.1.1" />
<PackageVersion Include="MailKit" Version="4.8.0" />
<PackageVersion Include="Markdig.Signed" Version="0.37.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.25" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.4" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.Razor.Language" Version="6.0.33" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="9.0.0" />
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="9.0.0" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.4" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Composite" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.4" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Localization" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.1.1" />
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="7.5.1" />
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="7.5.1" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="7.5.1" />
<PackageVersion Include="Minio" Version="6.0.2" />
<PackageVersion Include="MongoDB.Driver" Version="2.22.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.Hybrid" Version="9.0.0-preview.7.24406.2" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Composite" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.0" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<PackageVersion Include="Microsoft.IdentityModel.Protocols.OpenIdConnect" Version="8.1.0" />
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.1.0" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.1.0" />
<PackageVersion Include="Minio" Version="6.0.3" />
<PackageVersion Include="MongoDB.Driver" Version="2.29.0" />
<PackageVersion Include="NEST" Version="7.17.5" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Nito.AsyncEx.Context" Version="5.1.2" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.2" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.2" />
<PackageVersion Include="NSubstitute" Version="5.1.0" />
<PackageVersion Include="NuGet.Versioning" Version="6.7.0" />
<PackageVersion Include="NUglify" Version="1.21.0" />
<PackageVersion Include="NuGet.Versioning" Version="6.11.1" />
<PackageVersion Include="NUglify" Version="1.21.9" />
<PackageVersion Include="Nullable" Version="1.3.1" />
<PackageVersion Include="Octokit" Version="9.0.0" />
<PackageVersion Include="OpenIddict.Abstractions" Version="5.5.0" />
<PackageVersion Include="OpenIddict.Core" Version="5.5.0" />
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="5.5.0" />
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="5.5.0" />
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="5.5.0" />
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="8.23.40" />
<PackageVersion Include="Polly" Version="8.2.0" />
<PackageVersion Include="Octokit" Version="13.0.1" />
<PackageVersion Include="OpenIddict.Abstractions" Version="5.8.0" />
<PackageVersion Include="OpenIddict.Core" Version="5.8.0" />
<PackageVersion Include="OpenIddict.Server.AspNetCore" Version="5.8.0" />
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="5.8.0" />
<PackageVersion Include="OpenIddict.Validation.ServerIntegration" Version="5.8.0" />
<PackageVersion Include="Oracle.EntityFrameworkCore" Version="9.23.60" />
<PackageVersion Include="Polly" Version="8.4.2" />
<PackageVersion Include="Polly.Extensions.Http" Version="3.0.0" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.2" />
<PackageVersion Include="Quartz" Version="3.7.0" />
<PackageVersion Include="Quartz.Extensions.DependencyInjection" Version="3.7.0" />
<PackageVersion Include="Quartz.Plugins.TimeZoneConverter" Version="3.7.0" />
<PackageVersion Include="Quartz.Serialization.Json" Version="3.7.0" />
<PackageVersion Include="RabbitMQ.Client" Version="6.6.0" />
<PackageVersion Include="Rebus" Version="8.4.2" />
<PackageVersion Include="Rebus.ServiceProvider" Version="10.1.2" />
<PackageVersion Include="Scriban" Version="5.9.0" />
<PackageVersion Include="Serilog" Version="3.1.1" />
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.0" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.2.efcore.9.0.0" />
<PackageVersion Include="Quartz" Version="3.13.0" />
<PackageVersion Include="Quartz.Extensions.DependencyInjection" Version="3.13.0" />
<PackageVersion Include="Quartz.Plugins.TimeZoneConverter" Version="3.13.0" />
<PackageVersion Include="Quartz.Serialization.Json" Version="3.13.0" />
<PackageVersion Include="RabbitMQ.Client" Version="6.8.1" />
<PackageVersion Include="Rebus" Version="8.6.0" />
<PackageVersion Include="Rebus.ServiceProvider" Version="10.2.0" />
<PackageVersion Include="Scriban" Version="5.10.0" />
<PackageVersion Include="Serilog" Version="4.0.2" />
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.2" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="8.0.0" />
<PackageVersion Include="Serilog.Sinks.Async" Version="1.5.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="5.0.0" />
<PackageVersion Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageVersion Include="Serilog.Sinks.Async" Version="2.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageVersion Include="SharpZipLib" Version="1.4.2" />
<PackageVersion Include="Shouldly" Version="4.2.1" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.4" />
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.0.1" />
<PackageVersion Include="SkiaSharp" Version="2.88.6" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.6" />
<PackageVersion Include="SkiaSharp.NativeAssets.macOS" Version="2.88.6" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.5" />
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.4" />
<PackageVersion Include="SkiaSharp" Version="2.88.8" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.8" />
<PackageVersion Include="SkiaSharp.NativeAssets.macOS" Version="2.88.8" />
<PackageVersion Include="Slugify.Core" Version="4.0.1" />
<PackageVersion Include="Spectre.Console" Version="0.47.0" />
<PackageVersion Include="StackExchange.Redis" Version="2.7.4" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
<PackageVersion Include="Spectre.Console" Version="0.49.1" />
<PackageVersion Include="StackExchange.Redis" Version="2.8.16" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.8.1" />
<PackageVersion Include="System.Collections.Immutable" Version="9.0.0" />
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.3.5" />
<PackageVersion Include="System.Linq.Dynamic.Core" Version="1.4.5" />
<PackageVersion Include="System.Linq.Queryable" Version="4.3.0" />
<PackageVersion Include="System.Runtime.Loader" Version="4.3.0" />
<PackageVersion Include="System.Security.Permissions" Version="8.0.0" />
<PackageVersion Include="System.Security.Permissions" Version="9.0.0" />
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="8.0.0" />
<PackageVersion Include="System.Text.Encodings.Web" Version="8.0.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.4" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="7.5.1" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="9.0.0" />
<PackageVersion Include="System.Text.Encodings.Web" Version="9.0.0" />
<PackageVersion Include="System.Text.Json" Version="9.0.0" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.1.0" />
<PackageVersion Include="TimeZoneConverter" Version="6.1.0" />
<PackageVersion Include="Unidecode.NET" Version="2.1.0" />
<PackageVersion Include="xunit" Version="2.6.1" />
<PackageVersion Include="xunit.extensibility.execution" Version="2.6.1" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3" />
<PackageVersion Include="coverlet.collector" Version="6.0.0" />
<PackageVersion Include="xunit" Version="2.9.2" />
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" />
<PackageVersion Include="Fody" Version="6.8.0" />
<PackageVersion Include="Fody" Version="6.8.2" />
</ItemGroup>
</Project>

119
README.md

@ -1,95 +1,81 @@
# ABP Framework
![build and test](https://img.shields.io/github/actions/workflow/status/abpframework/abp/build-and-test.yml?branch=dev&style=flat-square) 🔹 [![codecov](https://codecov.io/gh/abpframework/abp/branch/dev/graph/badge.svg?token=jUKLCxa6HF)](https://codecov.io/gh/abpframework/abp) 🔹 [![NuGet](https://img.shields.io/nuget/v/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) 🔹 [![NuGet (with prereleases)](https://img.shields.io/nuget/vpre/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) 🔹 [![MyGet (nightly builds)](https://img.shields.io/myget/abp-nightly/vpre/Volo.Abp.svg?style=flat-square)](https://docs.abp.io/en/abp/latest/Nightly-Builds) 🔹
![build and test](https://img.shields.io/github/actions/workflow/status/abpframework/abp/build-and-test.yml?branch=dev&style=flat-square) 🔹 [![codecov](https://codecov.io/gh/abpframework/abp/branch/dev/graph/badge.svg?token=jUKLCxa6HF)](https://codecov.io/gh/abpframework/abp) 🔹 [![NuGet](https://img.shields.io/nuget/v/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) 🔹 [![NuGet (with prereleases)](https://img.shields.io/nuget/vpre/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) 🔹 [![MyGet (nightly builds)](https://img.shields.io/myget/abp-nightly/vpre/Volo.Abp.svg?style=flat-square)](https://abp.io/docs/latest/release-info/nightly-builds) 🔹
[![NuGet Download](https://img.shields.io/nuget/dt/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) 🔹 [![Code of Conduct](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](https://github.com/abpframework/abp/blob/dev/CODE_OF_CONDUCT.md) 🔹 [![CLA Signed](https://cla-assistant.io/readme/badge/abpframework/abp)](https://cla-assistant.io/abpframework/abp) 🔹 [![Discord Shield](https://discord.com/api/guilds/951497912645476422/widget.png?style=shield)](https://discord.gg/abp)
ABP Framework is a complete **infrastructure** based on **ASP.NET Core** that creates **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**.
[![ABP Platform](https://github.com/abpframework/abp/assets/9526587/47531496-4088-406d-9c69-63cb0ffec2ba)](https://abp.io)
[ABP](https://abp.io/) offers an **opinionated architecture** to build enterprise software solutions with **best practices** on top of the **.NET** and the **ASP.NET Core** platforms. It provides the fundamental infrastructure, production-ready startup templates, pre-built application modules, UI themes, tooling, guides and documentation to implement that architecture properly and **automate the details** and repetitive works as much as possible.
[![ABP Platform](https://github.com/user-attachments/assets/200653c0-0e69-4b47-b76a-3a83460aaab6)](https://abp.io)
## Getting Started
- [Quick Start](https://docs.abp.io/en/abp/latest/Tutorials/Todo/Index) is a single-part, quick-start tutorial to build a simple application with the ABP Framework. Start with this tutorial if you want to understand how ABP works quickly.
- [Getting Started guide](https://docs.abp.io/en/abp/latest/Getting-Started) can be used to create and run ABP-based solutions with different options and details.
- [Web Application Development Tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1) is a complete tutorial on developing a full-stack web application with all aspects of a real-life solution.
### Quick Start
Install the ABP CLI:
````bash
> dotnet tool install -g Volo.Abp.Cli
````
Create a new solution:
````bash
> abp new BookStore -u mvc -d ef
````
> See the [CLI documentation](https://docs.abp.io/en/abp/latest/CLI) for all available options.
### UI Framework Options
<img width="500" src="docs/en/images/ui-options.png">
### Database Provider Options
<img width="500" src="docs/en/images/db-options.png">
- [The Getting Started guide](https://abp.io/docs/latest/get-started) can be used to create and run ABP-based solutions with different options and details.
- [Quick Start](https://abp.io/docs/latest/tutorials/todo) is a single-part, quick-start tutorial to build a simple application with the ABP Framework. Start with this tutorial if you want to understand how ABP works quickly.
- [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store) is a complete tutorial on developing a full-stack web application with all aspects of a real-life solution.
- [Modular Monolith Application](https://abp.io/docs/latest/tutorials/modular-crm/index): A multi-part tutorial that demonstrates how to create application modules, compose and communicate them to build a monolith modular web application.
## What ABP Provides?
ABP provides a **full stack developer experience**.
ABP bridges the gap between ASP.NET Core and real-world business application requirements, and makes you focus on your own business code.
The following diagram contains the core components of the **ABP Platform** and shows how ABP sits between **ASP.NET Core** and **Your Application**:
![abp-overall-diagram](docs/en/images/abp-overall-diagram.png)
### Architecture
<img src="docs/en/images/ddd-microservice-simple.png">
ABP offers a complete architectural model to build modern enterprise software solutions. Here, the fundamental architectural structures offered and first-class supported by ABP:
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 guidance to [implement this architecture](https://docs.abp.io/en/abp/latest/Domain-Driven-Design-Implementation-Guide).
* [Domain Driven Design](https://abp.io/docs/latest/framework/architecture/domain-driven-design)
* [Microservices](https://abp.io/docs/latest/framework/architecture/microservices)
* [Modularity](https://abp.io/docs/latest/framework/architecture/modularity/basics)
* [Multi-Tenancy](https://abp.io/docs/latest/framework/architecture/multi-tenancy)
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 infrastructure features provided by the ABP Framework to achieve real-world scenarios easier, like [Event Bus](https://abp.io/docs/latest/framework/infrastructure/event-bus), [Background Job System](https://abp.io/docs/latest/framework/infrastructure/background-jobs), [Audit Logging](https://abp.io/docs/latest/framework/infrastructure/audit-logging), [BLOB Storing](https://abp.io/docs/latest/framework/infrastructure/blob-storing), [Data Seeding](https://abp.io/docs/latest/framework/infrastructure/data-seeding), [Data Filtering](https://abp.io/docs/latest/framework/infrastructure/data-filtering), and much more.
[See ABP Framework features](https://abp.io/framework)
### Infrastructure
#### Cross-Cutting Concerns
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/latest/Event-Bus), [Background Job System](https://docs.abp.io/en/abp/latest/Background-Jobs), [Audit Logging](https://docs.abp.io/en/abp/latest/Audit-Logging), [BLOB Storing](https://docs.abp.io/en/abp/latest/Blob-Storing), [Data Seeding](https://docs.abp.io/en/abp/latest/Data-Seeding), [Data Filtering](https://docs.abp.io/en/abp/latest/Data-Filtering), etc.
ABP also simplifies (and even automates wherever possible) cross-cutting concerns and common non-functional requirements like [Exception Handling](https://abp.io/docs/latest/framework/fundamentals/exception-handling), [Validation](https://abp.io/docs/latest/framework/fundamentals/validation), [Authorization](https://abp.io/docs/latest/framework/fundamentals/authorizationn), [Localization](https://abp.io/docs/latest/framework/fundamentals/localization), [Caching](https://abp.io/docs/latest/framework/fundamentals/caching), [Dependency Injection](https://abp.io/docs/latest/framework/fundamentals/dependency-injection), [Setting Management](https://abp.io/docs/latest/framework/infrastructure/settings), etc.
### Application Modules
ABP is a modular framework and the [application modules](https://abp.io/modules) provide **pre-built application functionalities**.
### Cross-Cutting Concerns
Some examples:
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/latest/Exception-Handling), [Validation](https://docs.abp.io/en/abp/latest/Validation), [Authorization](https://docs.abp.io/en/abp/latest/Authorization), [Localization](https://docs.abp.io/en/abp/latest/Localization), [Caching](https://docs.abp.io/en/abp/latest/Caching), [Dependency Injection](https://docs.abp.io/en/abp/latest/Dependency-Injection), [Setting Management](https://docs.abp.io/en/abp/latest/Settings), etc.
- [**Account**](https://abp.io/modules/Volo.Account.Pro): Provides UI for the account management and allows user to login/register to the application.
- [CMS Kit](https://abp.io/modules/Volo.CmsKit): Brings CMS (Content Management System) capabilities to your application.
- **[Identity](https://abp.io/modules/Volo.Identity.Pro)**: Manages organization units, roles, users and their permissions based on the Microsoft Identity library.
- [**OpenIddict**](https://abp.io/modules/Volo.OpenIddict.Pro): Integrates to OpenIddict library and provides a management UI.
- [**SaaS**](https://abp.io/modules/Volo.Saas): Manages tenants and editions for a [multi-tenant](https://abp.io/docs/latest/framework/architecture/multi-tenancy) (SaaS) application.
See [all official modules](https://abp.io/modules).
### Startup Templates
### Application Modules
The [Startup templates](https://abp.io/docs/latest/solution-templates) are pre-built Visual Studio solution templates. You can create your own solution based on these templates to **immediately start your development**.
ABP is a modular framework and the Application Modules provide **pre-built application functionalities**;
### Tooling
- [**Account**](https://docs.abp.io/en/abp/latest/Modules/Account): Provides UI for the account management and allows user to login/register to the application.
- **[Identity](https://docs.abp.io/en/abp/latest/Modules/Identity)**: Manages organization units, roles, users and their permissions based on the Microsoft Identity library.
- [**OpenIddict**](https://docs.abp.io/en/abp/latest/Modules/OpenIddict): Integrates to OpenIddict.
- [**Tenant Management**](https://docs.abp.io/en/abp/latest/Modules/Tenant-Management): Manages tenants for a [multi-tenant](https://docs.abp.io/en/abp/latest/Multi-Tenancy) (SaaS) application.
ABP provides CLI and UI tools to simplify your daily development work flows.
See the [Application Modules](https://docs.abp.io/en/abp/latest/Modules/Index) document for all pre-built modules.
#### ABP Studio
[ABP Studio](https://abp.io/studio) is a cross-platform desktop application for ABP developers.
It is well integrated to the ABP Framework and aims to provide a comfortable development environment for you by automating things, providing insights about your solution, making develop, run and deploy your solutions much easier.
### Startup Templates
#### ABP Suite
The [Startup templates](https://docs.abp.io/en/abp/latest/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 Suite](https://abp.io/suite) allows you to automatically generate web pages in a matter of minutes.
#### ABP CLI
[ABP CLI](https://abp.io/cli) is a command line tool to perform common operations for ABP based solutions.
## Mastering ABP Framework Book
@ -103,43 +89,36 @@ This book will help you to gain a complete understanding of the ABP Framework an
### 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!
The [ABP Community](https://abp.io/community) is a central hub to publish **articles** and share **knowledge** about the ABP Framework.
### Blog
Follow the [ABP Blog](https://blog.abp.io/) to learn the latest happenings in the ABP Framework.
Follow the [ABP Blog](https://abp.io/blog) to learn the latest happenings in the ABP Framework.
### Samples
See the [sample projects](https://docs.abp.io/en/abp/latest/Samples/Index) built with the ABP Framework.
See the [sample projects](https://abp.io/docs/latest/samples) 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/latest/Contribution/Index) if you want to participate in this project.
ABP is a community-driven open-source project. See [the contribution guide](https://abp.io/docs/latest/contribution) if you want to participate in this project.
## Official Links
* [Home Website](https://abp.io)
* [Get Started](https://abp.io/get-started)
* [Features](https://abp.io/features)
* [Documents](https://docs.abp.io/)
* [Samples](https://docs.abp.io/en/abp/latest/Samples/Index)
* [Blog](https://blog.abp.io/)
* [Community](https://community.abp.io/)
* [Features](https://abp.io/framework)
* [Documents](https://abp.io/docs/latest)
* [Samples](https://abp.io/docs/latest/samples)
* [Blog](https://abp.io/blog)
* [Community](https://abp.io/community)
* [Stackoverflow](https://stackoverflow.com/questions/tagged/abp)
* [Twitter](https://twitter.com/abpframework)
## Support ABP
GitHub repository stars are an important indicator of popularity and the size of the community. If you like ABP Framework, support us by clicking the star :star: on the repository.
## Discord Server
We have a Discord server where you can chat with other ABP users. Share your ideas, report technical issues, showcase your creations, share the tips that worked for you and catch up with the latest news and announcements about ABP Framework. Join 👉 https://discord.gg/abp.

2
abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0;net9.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>

14
abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalizationModule.cs

@ -2,8 +2,6 @@
using AbpIoLocalization.Admin.Localization;
using AbpIoLocalization.Base.Localization;
using AbpIoLocalization.Blog.Localization;
using AbpIoLocalization.Commercial.Localization;
using AbpIoLocalization.Community.Localization;
using AbpIoLocalization.Docs.Localization;
using AbpIoLocalization.Support.Localization;
using AbpIoLocalization.Www;
@ -28,9 +26,7 @@ namespace AbpIoLocalization
Configure<AbpExceptionLocalizationOptions>(options =>
{
options.MapCodeNamespace("Volo.AbpIo.Commercial", typeof(AbpIoCommercialResource));
options.MapCodeNamespace("Volo.AbpIo.Domain", typeof(AbpIoBaseResource));
options.MapCodeNamespace("Volo.AbpIo.Community", typeof(AbpIoCommunityResource));
});
Configure<AbpLocalizationOptions>(options =>
@ -57,11 +53,6 @@ namespace AbpIoLocalization
.AddVirtualJson("/Blog/Localization/Resources")
.AddBaseTypes(typeof(AbpIoBaseResource));
options.Resources
.Add<AbpIoCommercialResource>("en")
.AddVirtualJson("/Commercial/Localization/Resources")
.AddBaseTypes(typeof(AbpIoBaseResource));
options.Resources
.Add<AbpIoDocsResource>("en")
.AddVirtualJson("/Docs/Localization/Resources")
@ -76,11 +67,6 @@ namespace AbpIoLocalization
.Add<AbpIoWwwResource>("en")
.AddVirtualJson("/Www/Localization/Resources")
.AddBaseTypes(typeof(AbpIoBaseResource));
options.Resources
.Add<AbpIoCommunityResource>("en")
.AddVirtualJson("/Community/Localization/Resources")
.AddBaseTypes(typeof(AbpIoBaseResource));
});
}
}

11
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en-GB.json

@ -15,6 +15,7 @@
"Permission:Maintain": "Maintain",
"Permission:ClearCaches": "Clear caches",
"Permission:Modules": "Modules",
"Permission:UserDownloads": "User Downloads",
"Permission:Packages": "Packages",
"Permission:Edit": "Edit",
"Permission:Delete": "Delete",
@ -32,12 +33,15 @@
"Name": "Name",
"DisplayName": "Display name",
"ShortDescription": "Short description",
"LongDescription": "Long description",
"NameFilter": "Name",
"CreationTime": "Creation time",
"IsPro": "Is pro",
"IsPro": "Pro package",
"ShowOnModuleList": "Show in module list",
"EfCoreConfigureMethodName": "Configure method name",
"IsProFilter": "Is pro",
"ShowOnModuleFilter": "Show on module list",
"ShowOnModuleListFilter": "Show on module list",
"ApplicationType": "Application type",
"Target": "Target",
"TargetFilter": "Target",
@ -56,8 +60,10 @@
"Refresh": "Refresh",
"NpmPackages": "NPM Packages",
"NugetPackages": "Nuget Packages",
"NuGetPackages": "NuGet Packages",
"NpmPackageCount": "NPM Package Count",
"NugetPackageCount": "Nuget Package Count",
"NuGetPackageCount": "NuGet Package Count",
"Module": "Modules",
"ModuleInfo": "Module info",
"CreateANpmPackage": "Create a NPM package",
@ -102,6 +108,9 @@
"DoYouWantToCreateNewUser": "Do you want to create new user?",
"MasterModules": "Master Modules",
"OrganizationName": "Organisation name",
"DownloadType": "Download type",
"UserDownloads": "User Downloads",
"AcceptNewsletter": "Accept newsletter",
"CreationDate": "Creation date",
"LicenseStartDate": "License start date",
"LicenseEndDate": "License end date",

43
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json

@ -28,17 +28,21 @@
"Menu:DiscountRequests": "Discount Requests",
"NpmPackageDeletionWarningMessage": "This NPM Package will be deleted. Do you confirm that?",
"NugetPackageDeletionWarningMessage": "This Nuget Package will be deleted. Do you confirm that?",
"NuGetPackages": "NuGet Packages",
"ModuleDeletionWarningMessage": "This Module will be deleted. Do you confirm that?",
"Name": "Name",
"DisplayName": "Display name",
"ShortDescription": "Short description",
"LongDescription": "Long description",
"NameFilter": "Name",
"CreationTime": "Creation time",
"IsPro": "Is pro",
"IsPro": "Pro package",
"IsFreeToActiveLicenseOwners": "Free to license owners",
"ShowOnModuleList": "Show on module list",
"EfCoreConfigureMethodName": "Configure method name",
"IsProFilter": "Is pro",
"IsProFilter": "Pro package",
"ShowOnModuleFilter": "Show on module list",
"ShowOnModuleListFilter": "Show on module list",
"ApplicationType": "Application type",
"Target": "Target",
"TargetFilter": "Target",
@ -59,6 +63,7 @@
"NugetPackages": "Nuget Packages",
"NpmPackageCount": "NPM Package Count",
"NugetPackageCount": "Nuget Package Count",
"NuGetPackageCount": "NuGet Package Count",
"Module": "Modules",
"ModuleInfo": "Module info",
"CreateANpmPackage": "Create a NPM package",
@ -72,7 +77,7 @@
"Menu:NpmPackages": "NPM Packages",
"Menu:Modules": "Modules",
"Menu:Maintenance": "Maintenance",
"Menu:NugetPackages": "Nuget Packages",
"Menu:NugetPackages": "NuGet Packages",
"CreateAnOrganization": "Create an organization",
"Organizations": "Organizations",
"LongName": "Long name",
@ -120,8 +125,15 @@
"PurchaseOrderNo": "Purchase order no",
"QuotationDate": "Quotation date",
"CompanyName": "Company name",
"DownloadType": "Download type",
"UserDownloads": "User Downloads",
"AcceptNewsletter": "Accept newsletter",
"CompanyAddress": "Company address",
"Price": "Price",
"Unknown": "Unknown",
"DddEBook": "Ddd EBook",
"MasteringAbpFrameworkEBook": "Mastering AbpFramework EBook",
"MicroserviceEBook": "Microservice EBook",
"DiscountText": "Discount text",
"DiscountQuantity": "Discount quantity",
"DiscountPrice": "Discount price",
@ -219,8 +231,8 @@
"ReIndexAllPostsConfirmationMessage": "Are you sure you want to reindex all posts?",
"SuccessfullyReIndexAllPosts": "All posts have been successfully reindexed.",
"Permission:FullSearch": "Full text search",
"Menu:CliAnalytics": "Cli Analytics",
"Menu:Reports": "Reports",
"Menu:CliAnalytics": "CLI Analytics",
"Menu:Reports": "Dynamic Reports",
"TemplateName": "Template name",
"TemplateVersion": "Template version",
"DatabaseProvider": "Database provider",
@ -232,7 +244,7 @@
"UiFramework": "Ui framework",
"Options": "Options",
"CliAnalytics": "Cli Analytics",
"Reports": "Reports",
"Reports": "Dynamic Reports",
"Permission:CliAnalyticses": "Cli Analyticses",
"Permission:CliAnalytics": "Cli Analytics",
"Permission:Reports": "Reports",
@ -284,6 +296,7 @@
"Menu:Quotation": "Quotation",
"Menu:Invoice": "Invoice",
"Menu:Quotation/Invoice": "Quotation/Invoice",
"Menu:UserDownloads": "User Downloads",
"Menu:PaymentRequests": "Payment Requests",
"Permission:PaymentRequests": "Payment Requests",
"PaymentRequests": "Payment Requests",
@ -456,7 +469,8 @@
"InterestedLicenseType": "Interested License Type",
"MoveWaitList": "Move to wait list",
"CommunityLinkTitle": "Open on the community website",
"CommunityLink": "Community link",
"CommunityLink": "Link",
"IpAddress": "IP Address",
"ReloadFromSource": "Reload From the Source",
"ReloadFromSourceConfirmationMessage": "This post will be refreshed from \"{0}\". Do you want to continue?",
"UnitPrice": "Unit Price",
@ -565,6 +579,7 @@
"AllowAbpStudioBetaAccess": "Allow ABP Studio Beta Access",
"TotalQuestionCanNotBeNullMessage": "Total Question can not be null",
"Permission:OrganizationAutoRenewalPayments": "Organization Auto Renewal Payments",
"Permission:UserDownloads": "User Downloads",
"Permission:RetryFailedPayments": "Retry Failed Payments",
"AutoRenewalIsNotEnabled": "Auto Renewal is not enabled!",
"LicenseIsNotExpired": "License is not expired!",
@ -587,9 +602,10 @@
"AutoRenewalEnabled": "Auto Renewal Enabled",
"LastAutoRenewalPaymentTime": "Last Auto Renewal Payment Time",
"OrganizationDoesNotHaveACreditCard": "Organization does not have a credit card!",
"OrganizationDoesNotHaveACreditCardInGateway": "Organization does not have a credit card in the gateway!",
"Permission:EditWinners": "Edit Winners",
"Permission:ChangeDrawingStatus": "Change Drawing Status",
"Menu:Licenses": "Licenses",
"Menu:Licenses": "Licensing",
"OrganizationId": "Organization Id",
"RemoveAllWinnersConfirmationMessage": "Are you sure you want to remove all winners?",
"AutoRenewals": "Auto Renewals",
@ -622,6 +638,17 @@
"DeleteImageSuccessMessage": "Image successfully deleted",
"DeleteImage": "Delete Image",
"NetTerms": "Terms (Days)",
"Menu:DynamicReports": "Dynamic Reports",
"Menu:Others": "Others",
"Menu:Packs&Modules": "Packs & Modules",
"ReleaseCaches": "Release Cache",
"Menu:HeroSections": "Hero Sections",
"HeroSections": "Hero Sections",
"DynamicReports": "Dynamic Reports",
"Menu:ReportsMenu": "Reports",
"Permission:HeroSections": "Hero Sections",
"RedirectLink": "Redirect link",
"HeroSectionsDeletionConfirmationMessage": "Are you sure you want to delete the hero section?",
"AbpStudioName": "Abp Studio name"
}
}

13
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json

@ -90,9 +90,9 @@
"TermsAndConditions": "Terms & Conditions",
"WouldLikeToReceiveMarketingMaterials": "I would like to receive marketing materials like product deals & special offers.",
"JoinOurMarketingNewsletter": "Join our marketing newsletter",
"CommunityPrivacyPolicyConfirmation": "I agree to the Terms & Conditions and <a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"https://commercial.abp.io/Privacy\">Privacy Policy</a>.",
"CommunityPrivacyPolicyConfirmation": "I agree to the Terms & Conditions and <a class=\"text-white fw-6 text-decoration-underline opacity-50\" href=\"/Privacy\">Privacy Policy</a>.",
"WouldLikeToReceiveNotification": "I would like to receive the latest news from abp.io websites.",
"CommercialNewsletterConfirmationMessage": "I agree to the <a class=\"text-white fw-bolder text-decoration-underline\" href=\"https://commercial.abp.io/TermsConditions\">Terms & Conditions</a> and <a class=\"text-white fw-bolder text-decoration-underline\" href=\"https://commercial.abp.io/Privacy\">Privacy Policy</a>.",
"CommercialNewsletterConfirmationMessage": "I agree to the <a href=\"/TermsConditions\">Terms & Conditions</a> and <a href=\"/Privacy\">Privacy Policy</a>.",
"FreeDDDEBook": "Free DDD E-Book",
"AdditionalServices": "Additional Services",
"Learn": "Learn",
@ -118,7 +118,7 @@
"EULA": "EULA",
"ABPCommercialIntroductionMessage": "Pre-built application modules, advanced startup templates, rapid application development tooling, professional UI themes and premium support.",
"MasteringAbpFrameworkEBook": "Mastering ABP Framework",
"MasteringTheABPFrameworkExplanation": "Written by the creator of the ABP Framework, this book will help you gain a complete understanding of the framework and modern web application development techniques.",
"MasteringTheABPFrameworkExplanation": "Mastering ABP Framework e-book; written by the creator of the ABP Framework, will help you gain a complete understanding of the framework and modern web application development techniques.",
"Speakers": "Speakers",
"PreviousEvents": "Previous Events",
"WatchTheEvent": "Watch the Event",
@ -158,7 +158,7 @@
"SeePreviousEvents": "See Previous Events",
"CookieConsent_Accept": "Accept",
"CookieConsent_Explanation_1": "We use cookies to give you the best experience on our website.",
"CookieConsent_Explanation_2": "If you continue to browse, then you agree to our <a href=\"@Url.Page(\"/Privacy\")\">Privacy policy and cookie policy.</a>.",
"CookieConsent_Explanation_2": "If you continue to browse, then you agree to our <a href=\"/Privacy\">Privacy policy and cookie policy.</a>.",
"Error_Page_400_Title": "There was a problem serving the requested page.",
"Error_Page_400_Description_1": "Usually this means that an unexpected error happened while processing your request.",
"Error_Page_400_Description_2": "If the problem persists, contact us at <a href=\"mailto:info@abp.io\">info@abp.io</a> and we'll help get you on your way.",
@ -239,7 +239,7 @@
"Trainings": "Trainings",
"MeetTheABPCommunity": "Meet the ABP <span class=\"gradient-community\">Community</span>",
"DisplayName:CommunityIndexPagePoll": "Community Index Page Poll",
"ReturnOfInvestment": "Return Of Investment",
"ReturnOnInvestment": "Return on Investment",
"PromotionalOffers": "Promotional Offers",
"PromotionalOffersDefinition": "Discounts, seasonal campaigns, etc.",
"EventsDefinition": "Community Talks, Webinars, ABP .NET Conference, etc.",
@ -251,6 +251,7 @@
"VideoCourses": "Essential Videos",
"DoYouAgreePrivacyPolicy": "By clicking <b>Subscribe</b> button you agree to the <a href=\"https://account.abp.io/Account/TermsConditions\">Terms & Conditions</a> and <a href=\"https://account.abp.io/Account/Privacy\">Privacy Policy</a>.",
"AbpConferenceDescription": "ABP Conference is a virtual event for .NET developers to learn and connect with the community.",
"Mobile": "Mobile"
"Mobile": "Mobile",
"MetaTwitterCard": "summary_large_image"
}
}

5
abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/en.json

@ -1,8 +1,9 @@
{
"culture": "en",
"texts": {
"AbpTitle": "Read All Blog Posts",
"AbpTitle": "New Blog Post | ABP.IO",
"AbpDescription": "ABP is an open source application framework focused on AspNet Core based web application development. Don't repeat yourself, focus on your own business code.",
"AbpDefinition": "ABP blog for .NET development, cross-platform, ASP.NET application templates, ABP-related news and more..."
"AbpDefinition": "Create a new blog post and share your knowledge and experience with ABP.",
"Blogs": "Blog Posts"
}
}

10
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/AbpIoCommercialResource.cs

@ -1,10 +0,0 @@
using Volo.Abp.Localization;
namespace AbpIoLocalization.Commercial.Localization
{
[LocalizationResourceName("AbpIoCommercial")]
public class AbpIoCommercialResource
{
}
}

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (واجهة سطر الأوامر) هي أداة سطر أوامر لتنفيذ بعض العمليات الشائعة للحلول المستندة إلى ABP.",
"ABPSuiteEasilyCURD": "ABP Suite هي أداة تسمح لك بإنشاء صفحات CRUD بسهولة",
"WeAreHereToHelp": "نحن هنا من أجل <span class=\"zero-text\"> المساعدة </ span>",
"BrowseOrAskQuestion": "يمكنك تصفح مواضيع المساعدة الخاصة بنا أو البحث في الأسئلة الشائعة ، أو يمكنك طرح سؤال علينا باستخدام <a href=\"{0}\" class=\"text-success\"> نموذج الاتصال </a>.",
"BrowseOrAskQuestion": "يمكنك تصفح مواضيع المساعدة الخاصة بنا أو البحث في الأسئلة الشائعة ، أو يمكنك طرح سؤال علينا باستخدام <a href=\"{0}\"> نموذج الاتصال </a>.",
"SearchQuestionPlaceholder": "البحث في الأسئلة المتداولة",
"WhatIsTheABPCommercial": "ما هو برنامج ABP التجاري؟",
"WhatAreDifferencesThanAbpFramework": "ما هي الاختلافات بين إطار عمل ABP مفتوح المصدر وإطار عمل ABP التجاري؟",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) je nástroj příkazového řádku pro provádění některých běžných operací pro řešení založená na ABP.",
"ABPSuiteEasilyCURD": "ABP Suite je nástroj, který vám umožní snadno vytvářet stránky CRUD",
"WeAreHereToHelp": "Jsme tu, abychom vám <span class=\"zero-text\">Pomohli</span>",
"BrowseOrAskQuestion": "Můžete procházet naše témata nápovědy nebo vyhledávat v často kladených dotazech, případně nám můžete položit otázku pomocí <a href=\"{0}\" class=\"text-success\">kontaktního formuláře</a>.",
"BrowseOrAskQuestion": "Můžete procházet naše témata nápovědy nebo vyhledávat v často kladených dotazech, případně nám můžete položit otázku pomocí <a href=\"{0}\">kontaktního formuláře</a>.",
"SearchQuestionPlaceholder": "Hledejte v často kladených otázkách",
"WhatIsTheABPCommercial": "Co je ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Jaké jsou rozdíly mezi open source ABP Framework a ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) ist ein Befehlszeilentool zum Ausführen einiger allgemeiner Operationen für ABP-basierte Lösungen.",
"ABPSuiteEasilyCURD": "ABP Suite ist ein Tool, mit dem Sie einfach CRUD-Seiten erstellen können",
"WeAreHereToHelp": "Wir sind hier, um <span class=\"zero-text\">Hilfe</span>",
"BrowseOrAskQuestion": "Sie können unsere Hilfethemen durchsuchen oder in häufig gestellten Fragen suchen oder uns über das <a href=\"{0}\" class=\"text-success\">Kontaktformular</a> eine Frage stellen.",
"BrowseOrAskQuestion": "Sie können unsere Hilfethemen durchsuchen oder in häufig gestellten Fragen suchen oder uns über das <a href=\"{0}\" >Kontaktformular</a> eine Frage stellen.",
"SearchQuestionPlaceholder": "Suche in häufig gestellten Fragen",
"WhatIsTheABPCommercial": "Was ist der ABP-Werbespot?",
"WhatAreDifferencesThanAbpFramework": "Was sind die Unterschiede zwischen dem Open Source ABP Framework und dem ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) es una herramienta de línea de comandos para realizar algunas operaciones comunes para soluciones basadas en ABP.",
"ABPSuiteEasilyCURD": "ABP Suite es una herramienta que le permite crear fácilmente páginas CRUD",
"WeAreHereToHelp": "Estamos aquí para <span class=\"zero-text\"> Ayuda </span>",
"BrowseOrAskQuestion": "Puede explorar nuestros temas de ayuda o buscar preguntas frecuentes, o puede hacernos una pregunta mediante el <a href=\"{0}\" class=\"text-success\"> formulario de contacto </a>.",
"BrowseOrAskQuestion": "Puede explorar nuestros temas de ayuda o buscar preguntas frecuentes, o puede hacernos una pregunta mediante el <a href=\"{0}\" > formulario de contacto </a>.",
"SearchQuestionPlaceholder": "Buscar en preguntas frecuentes",
"WhatIsTheABPCommercial": "¿Qué es ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "¿Cuáles son las diferencias entre ABP Framework de código abierto y ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json

@ -160,7 +160,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) on komentorivityökalu joidenkin yleisten toimintojen suorittamiseen ABP-pohjaisiin ratkaisuihin.",
"ABPSuiteEasilyCURD": "ABP Suite on työkalu, jonka avulla voit helposti luoda CRUD-sivuja",
"WeAreHereToHelp": "<span class=\"zero-text\">Apua</span> olemme täällä",
"BrowseOrAskQuestion": "Voit selata ohjeaiheitamme tai etsiä usein kysyttyjä kysymyksiä tai voit esittää meille kysymyksiä <a href=\"{0}\" class=\"text-success\"> yhteydenottolomakkeella </a>.",
"BrowseOrAskQuestion": "Voit selata ohjeaiheitamme tai etsiä usein kysyttyjä kysymyksiä tai voit esittää meille kysymyksiä <a href=\"{0}\"> yhteydenottolomakkeella </a>.",
"SearchQuestionPlaceholder": "Hae usein kysyttyjä kysymyksiä",
"WhatIsTheABPCommercial": "Mikä on ABP-kauppa?",
"WhatAreDifferencesThanAbpFramework": "Mitä eroja on avoimen lähdekoodin ABP Frameworkilla ja ABP Commercialilla?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) est un outil de ligne de commande pour effectuer certaines opérations courantes pour les solutions basées sur ABP.",
"ABPSuiteEasilyCURD": "ABP Suite est un outil qui vous permet de créer facilement des pages CRUD",
"WeAreHereToHelp": "Nous sommes ici pour <span class=\"zero-text\"> Aide </span>",
"BrowseOrAskQuestion": "Vous pouvez parcourir nos rubriques d'aide ou rechercher dans les questions fréquemment posées, ou vous pouvez nous poser une question en utilisant le <a href=\"{0}\" class=\"text-success\"> formulaire de contact </a>.",
"BrowseOrAskQuestion": "Vous pouvez parcourir nos rubriques d'aide ou rechercher dans les questions fréquemment posées, ou vous pouvez nous poser une question en utilisant le <a href=\"{0}\"> formulaire de contact </a>.",
"SearchQuestionPlaceholder": "Rechercher dans les questions fréquemment posées",
"WhatIsTheABPCommercial": "Qu'est-ce que la publicité ABP?",
"WhatAreDifferencesThanAbpFramework": "Quelles sont les différences entre le Framework ABP open source et le ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (कमांड लाइन इंटरफेस) ABP आधारित समाधानों के लिए कुछ सामान्य ऑपरेशन करने के लिए एक कमांड लाइन टूल है।",
"ABPSuiteEasilyCURD": "एबीपी सूट एक उपकरण है जो आपको आसानी से CRUD पेज बनाने की अनुमति देता है",
"WeAreHereToHelp": "हम यहाँ हैं <span class=\"zero-text\"> मदद </span>",
"BrowseOrAskQuestion": "आप हमारे सहायता विषयों को ब्राउज़ कर सकते हैं या अक्सर पूछे जाने वाले प्रश्नों में खोज कर सकते हैं, या आप <a href=\"{0}\" class=\"text-success\">संपर्क फ़ॉर्म</a> का उपयोग करके हमसे एक प्रश्न पूछ सकते हैं।",
"BrowseOrAskQuestion": "आप हमारे सहायता विषयों को ब्राउज़ कर सकते हैं या अक्सर पूछे जाने वाले प्रश्नों में खोज कर सकते हैं, या आप <a href=\"{0}\">संपर्क फ़ॉर्म</a> का उपयोग करके हमसे एक प्रश्न पूछ सकते हैं।",
"SearchQuestionPlaceholder": "अक्सर पूछे जाने वाले प्रश्नों में खोजें",
"WhatIsTheABPCommercial": "ABP कमर्शियल क्या है?",
"WhatAreDifferencesThanAbpFramework": "ओपन सोर्स ABP फ्रेमवर्क और ABP कमर्शियल के बीच क्या अंतर हैं?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json

@ -160,7 +160,7 @@
"ABPCLIExplanation": "ABP CLI (sučelje naredbenog retka) alat je naredbenog retka za izvođenje nekih uobičajenih operacija za rješenja temeljena na ABP-u.",
"ABPSuiteEasilyCURD": "ABP Suite je alat koji vam omogućuje jednostavno stvaranje CRUD stranica",
"WeAreHereToHelp": "Ovdje smo da <span class=\"zero-text\">pomognemo</span>",
"BrowseOrAskQuestion": "Možete pregledavati naše teme pomoći ili pretraživati u često postavljanim pitanjima ili nam možete postaviti pitanje koristeći <a href=\"{0}\" class=\"text-success\">obrazac za kontakt</a> .",
"BrowseOrAskQuestion": "Možete pregledavati naše teme pomoći ili pretraživati u često postavljanim pitanjima ili nam možete postaviti pitanje koristeći <a href=\"{0}\">obrazac za kontakt</a> .",
"SearchQuestionPlaceholder": "Pretražite u često postavljanim pitanjima",
"WhatIsTheABPCommercial": "Što je ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Koje su razlike između open source ABP Framework i ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json

@ -160,7 +160,7 @@
"ABPCLIExplanation": "Az ABP CLI (Command Line Interface) egy parancssori eszköz az ABP alapú megoldások általános műveleteinek végrehajtására.",
"ABPSuiteEasilyCURD": "Az ABP Suite egy olyan eszköz, amellyel könnyedén hozhat létre CRUD oldalakat",
"WeAreHereToHelp": "Azért vagyunk itt, hogy <span class=\"zero-text\">segítsünk</span>",
"BrowseOrAskQuestion": "Böngésszen a súgótémáink között, kereshet a gyakran ismételt kérdések között, vagy feltehet nekünk kérdést a <a href=\"{0}\" class=\"text-success\">kapcsolatfelvételi űrlap</a> használatával.",
"BrowseOrAskQuestion": "Böngésszen a súgótémáink között, kereshet a gyakran ismételt kérdések között, vagy feltehet nekünk kérdést a <a href=\"{0}\">kapcsolatfelvételi űrlap</a> használatával.",
"SearchQuestionPlaceholder": "Keressen a gyakran ismételt kérdések között",
"WhatIsTheABPCommercial": "Mi az az ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Mi a különbség a nyílt forráskódú ABP Framework és az ABP Commercial között?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) er skipanalínutæki til að framkvæma nokkrar algengar aðgerðir fyrir ABP byggðar lausnir.",
"ABPSuiteEasilyCURD": "ABP Suite er tæki sem gerir þér kleift að búa til CRUD síður auðveldlega",
"WeAreHereToHelp": "Við erum hérna til að <span class=\"zero-text\">Hjálpa</span>",
"BrowseOrAskQuestion": "Þú getur skoðað hjálparefni okkar eða leitað í algengum spurningum, eða þú getur spurt okkur spurningar með því að nota <a href=\"{0}\" class=\"text-success\"> samskiptaform </a> .",
"BrowseOrAskQuestion": "Þú getur skoðað hjálparefni okkar eða leitað í algengum spurningum, eða þú getur spurt okkur spurningar með því að nota <a href=\"{0}\"> samskiptaform </a> .",
"SearchQuestionPlaceholder": "Leitaðu í algengum spurningum",
"WhatIsTheABPCommercial": "Hvað er ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Hver er munurinn á milli open source ABP Framework og ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) è uno strumento a riga di comando per eseguire alcune operazioni comuni per soluzioni basate su ABP.",
"ABPSuiteEasilyCURD": "ABP Suite è uno strumento che ti permette di creare facilmente pagine CRUD",
"WeAreHereToHelp": "Siamo qui per <span class=\"zero-text\">Aiutarti</span>",
"BrowseOrAskQuestion": "Puoi sfogliare i nostri argomenti della guida o cercare nelle domande frequenti oppure puoi farci una domanda utilizzando il <a href=\"{0}\" class=\"text-success\"> modulo di contatto </a>.",
"BrowseOrAskQuestion": "Puoi sfogliare i nostri argomenti della guida o cercare nelle domande frequenti oppure puoi farci una domanda utilizzando il <a href=\"{0}\"> modulo di contatto </a>.",
"SearchQuestionPlaceholder": "Cerca nelle domande frequenti",
"WhatIsTheABPCommercial": "Cos'è ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Quali sono le differenze tra ABP Framework open source e ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) is een opdrachtregelprogramma om een aantal veelvoorkomende bewerkingen uit te voeren voor op ABP gebaseerde oplossingen.",
"ABPSuiteEasilyCURD": "ABP Suite is een tool waarmee u eenvoudig CRUD-pagina's kunt maken",
"WeAreHereToHelp": "We zijn hier om <span class=\"zero-text\">Help</span>",
"BrowseOrAskQuestion": "U kunt door onze Help-onderwerpen bladeren of zoeken in veelgestelde vragen, of u kunt ons een vraag stellen via het <a href=\"{0}\" class=\"text-success\">contactformulier</a>.",
"BrowseOrAskQuestion": "U kunt door onze Help-onderwerpen bladeren of zoeken in veelgestelde vragen, of u kunt ons een vraag stellen via het <a href=\"{0}\">contactformulier</a>.",
"SearchQuestionPlaceholder": "Zoeken in veelgestelde vragen",
"WhatIsTheABPCommercial": "Wat is de ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Wat zijn de verschillen tussen het open source ABP Framework en de ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Interfejs wiersza poleceń) to narzędzie wiersza poleceń do wykonywania niektórych typowych operacji dla rozwiązań opartych na ABP.",
"ABPSuiteEasilyCURD": "ABP Suite to narzędzie, które pozwala łatwo tworzyć strony CRUD",
"WeAreHereToHelp": "Jesteśmy tutaj, aby <span class=\"zero-text\">pomoc</span>",
"BrowseOrAskQuestion": "Możesz przeglądać nasze tematy pomocy lub przeszukiwać często zadawane pytania albo możesz zadać nam pytanie, korzystając z <a href=\"{0}\" class=\"text-success\">formularza kontaktowego</a>.",
"BrowseOrAskQuestion": "Możesz przeglądać nasze tematy pomocy lub przeszukiwać często zadawane pytania albo możesz zadać nam pytanie, korzystając z <a href=\"{0}\">formularza kontaktowego</a>.",
"SearchQuestionPlaceholder": "Szukaj w często zadawanych pytaniach",
"WhatIsTheABPCommercial": "Co to jest reklama ABP?",
"WhatAreDifferencesThanAbpFramework": "Jakie są różnice między Open Source ABP Framework a ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) é uma ferramenta de linha de comando para realizar algumas operações comuns para soluções baseadas em ABP.",
"ABPSuiteEasilyCURD": "ABP Suite é uma ferramenta que permite criar facilmente páginas CRUD",
"WeAreHereToHelp": "Estamos aqui para <span class=\"zero-text\"> ajudar </span>",
"BrowseOrAskQuestion": "Você pode navegar em nossos tópicos de ajuda ou pesquisar as perguntas mais frequentes, ou pode nos fazer uma pergunta usando o <a href=\"{0}\" class=\"text-success\"> formulário de contato </a>.",
"BrowseOrAskQuestion": "Você pode navegar em nossos tópicos de ajuda ou pesquisar as perguntas mais frequentes, ou pode nos fazer uma pergunta usando o <a href=\"{0}\"> formulário de contato </a>.",
"SearchQuestionPlaceholder": "Pesquise nas perguntas mais frequentes",
"WhatIsTheABPCommercial": "O que é o comercial ABP?",
"WhatAreDifferencesThanAbpFramework": "Quais são as diferenças entre o ABP Framework de código aberto e o ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) este un instrument de linii de comandă pentru executarea unor operaţii comune pentru soluţiile ABP.",
"ABPSuiteEasilyCURD": "Suita ABP este un instrument care vă permite crearea cu uşurinţă a paginilor CRUD",
"WeAreHereToHelp": "Suntem aici să <span class=\"zero-text\">Ajutăm</span>",
"BrowseOrAskQuestion": "Puteţi răsfoi subiectele noastre de ajutor sau puteţi căuta în cadrul secţiunii întrebărilor frecvent adresate, sau ne puteţi adresa o întrebare folosind <a href=\"{0}\" class=\"text-success\">formularul de contact</a>.",
"BrowseOrAskQuestion": "Puteţi răsfoi subiectele noastre de ajutor sau puteţi căuta în cadrul secţiunii întrebărilor frecvent adresate, sau ne puteţi adresa o întrebare folosind <a href=\"{0}\">formularul de contact</a>.",
"SearchQuestionPlaceholder": "Caută în întrebările frecvent adresate",
"WhatIsTheABPCommercial": "Ce este ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Care sunt diferenţele dintre ABP Framework şi ABP Comercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json

@ -160,7 +160,7 @@
"ABPCLIExplanation": "ABP CLI (интерфейс командной строки) — это инструмент командной строки для выполнения некоторых распространенных операций для решений на основе ABP.",
"ABPSuiteEasilyCURD": "ABP Suite — это инструмент, который позволяет легко создавать страницы CRUD.",
"WeAreHereToHelp": "Мы здесь, чтобы <span class=\"zero-text\">Помощь</span>",
"BrowseOrAskQuestion": "Вы можете просмотреть разделы справки или выполнить поиск по часто задаваемым вопросам, либо задать нам вопрос, используя <a href=\"{0}\" class=\"text-success\">Форма обратной связи</a>.",
"BrowseOrAskQuestion": "Вы можете просмотреть разделы справки или выполнить поиск по часто задаваемым вопросам, либо задать нам вопрос, используя <a href=\"{0}\">Форма обратной связи</a>.",
"SearchQuestionPlaceholder": "Поиск в часто задаваемых вопросах",
"WhatIsTheABPCommercial": "Что такое ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Каковы различия между ABP Framework с открытым исходным кодом и ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Command Line Interface) je nástroj v príkazovom riadku na vykonávanie niektorých bežných operácií v riešeniach založených na ABP.",
"ABPSuiteEasilyCURD": "ABP Suite je nástroj, ktorý vám umožňuje jednoducho vytvárať CRUD stránky.",
"WeAreHereToHelp": "Sme tu, aby sme <span class=\"zero-text\">pomohli</span>",
"BrowseOrAskQuestion": "Môžete si prezerať témy našej nápovedy alebo vyhľadávať v často kladených otázkach, prípadne nám môžete položiť otázku pomocou <a href=\"{0}\" class=\"text-success\">kontaktného formulára</a>.",
"BrowseOrAskQuestion": "Môžete si prezerať témy našej nápovedy alebo vyhľadávať v často kladených otázkach, prípadne nám môžete položiť otázku pomocou <a href=\"{0}\">kontaktného formulára</a>.",
"SearchQuestionPlaceholder": "Vyhľadávanie v často kladených otázkach",
"WhatIsTheABPCommercial": "Čo je to ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Aké sú rozdiely medzi open source ABP Framework a ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (vmesnik ukazne vrstice) je orodje ukazne vrstice za izvajanje nekaterih običajnih operacij za rešitve, ki temeljijo na ABP.",
"ABPSuiteEasilyCURD": "ABP Suite je orodje, ki vam omogoča preprosto ustvarjanje strani CRUD",
"WeAreHereToHelp": "Tukaj smo za <span class=\"zero-text\">pomoč</span>",
"BrowseOrAskQuestion": "Brskate lahko po naših temah pomoči ali iščete po pogostih vprašanjih ali pa nam postavite vprašanje z uporabo <a href=\"{0}\" class=\"text-success\">kontaktnega obrazca</a>.",
"BrowseOrAskQuestion": "Brskate lahko po naših temah pomoči ali iščete po pogostih vprašanjih ali pa nam postavite vprašanje z uporabo <a href=\"{0}\">kontaktnega obrazca</a>.",
"SearchQuestionPlaceholder": "Iščite v pogosto zastavljenih vprašanjih",
"WhatIsTheABPCommercial": "Kaj je reklama ABP?",
"WhatAreDifferencesThanAbpFramework": "Kakšne so razlike med odprtokodnim okvirom ABP in ABP Commercial?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json

@ -153,7 +153,7 @@
"ABPCLIExplanation": "ABP CLI (Komut Satırı Arayüzü), ABP tabanlı projeler için bazı ortak işlemleri gerçekleştirmek için bir komut satırı aracıdır.",
"ABPSuiteEasilyCURD": "ABP Suite, kolayca CRUD sayfaları oluşturmanıza olanak sağlayan bir araçtır",
"WeAreHereToHelp": "<span class=\"zero-text\">Yardım</span> için buradayız",
"BrowseOrAskQuestion": "Yardım konularımıza göz atabilir veya sık sorulan sorularda arama yapabilir ya da <a href=\"{0}\" class=\"text-success\">iletişim formunu</a> kullanarak bize soru sorabilirsiniz.",
"BrowseOrAskQuestion": "Yardım konularımıza göz atabilir veya sık sorulan sorularda arama yapabilir ya da <a href=\"{0}\">iletişim formunu</a> kullanarak bize soru sorabilirsiniz.",
"SearchQuestionPlaceholder": "Sık sorulan sorularda ara",
"WhatIsTheABPCommercial": "ABP Commercial nedir?",
"WhatAreDifferencesThanAbpFramework": "Açık kaynaklı ABP Frameworkü ile ABP Commercial arasındaki farklar nelerdir?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json

@ -157,7 +157,7 @@
"ABPCLIExplanation": "ABP CLI (Giao diện dòng lệnh) là một công cụ dòng lệnh để thực hiện một số hoạt động phổ biến cho các giải pháp dựa trên ABP.",
"ABPSuiteEasilyCURD": "ABP Suite là một công cụ cho phép bạn dễ dàng tạo các trang CRUD",
"WeAreHereToHelp": "Chúng tôi ở đây để <span class=\"zero-text\"> Trợ giúp </span>",
"BrowseOrAskQuestion": "Bạn có thể duyệt qua các chủ đề trợ giúp của chúng tôi hoặc tìm kiếm trong các câu hỏi thường gặp hoặc bạn có thể đặt câu hỏi cho chúng tôi bằng cách sử dụng <a href=\"{0}\" class=\"text-success\"> biểu mẫu liên hệ </a>.",
"BrowseOrAskQuestion": "Bạn có thể duyệt qua các chủ đề trợ giúp của chúng tôi hoặc tìm kiếm trong các câu hỏi thường gặp hoặc bạn có thể đặt câu hỏi cho chúng tôi bằng cách sử dụng <a href=\"{0}\"> biểu mẫu liên hệ </a>.",
"SearchQuestionPlaceholder": "Tìm kiếm trong các câu hỏi thường gặp",
"WhatIsTheABPCommercial": "ABP thương mại là gì?",
"WhatAreDifferencesThanAbpFramework": "Sự khác biệt giữa Khung ABP nguồn mở và ABP Thương mại là gì?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json

@ -160,7 +160,7 @@
"ABPCLIExplanation": "ABP CLI(命令行界面)是一种命令行工具,用于执行基于 ABP 的解决方案的一些常用操作。",
"ABPSuiteEasilyCURD": "ABP Suite 是一款可让您轻松创建 CRUD 页面的工具",
"WeAreHereToHelp": "我们在这里<span class=\"zero-text\">帮助</span>",
"BrowseOrAskQuestion": "您可以浏览我们的帮助主题或搜索常见问题,也可以使用 <a href=\"{0}\" class=\"text-success\">联系表单</a>向我们提问。",
"BrowseOrAskQuestion": "您可以浏览我们的帮助主题或搜索常见问题,也可以使用 <a href=\"{0}\">联系表单</a>向我们提问。",
"SearchQuestionPlaceholder": "在常见问题中搜索",
"WhatIsTheABPCommercial": "ABP Commercial 是什么?",
"WhatAreDifferencesThanAbpFramework": "开源 ABP 框架与 ABP 商业版之间有哪些区别?",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json

@ -159,7 +159,7 @@
"ABPCLIExplanation": "ABP CLI(命令行頁面)是一個執行基於ABP解決方案的一些常見操作的命令行工具.",
"ABPSuiteEasilyCURD": "ABP Suite是一個使你輕松創建CURD頁面的工具",
"WeAreHereToHelp": "我們在這裏為你提供<span class=\"zero-text\">幫助</span>",
"BrowseOrAskQuestion": "你可以瀏覽我們的幫助主題或搜索常見的問題, 或者你可以使用<a href=\"{0}\" class=\"text-success\">聯系表單</a>向我們提問.",
"BrowseOrAskQuestion": "你可以瀏覽我們的幫助主題或搜索常見的問題, 或者你可以使用<a href=\"{0}\">聯系表單</a>向我們提問.",
"SearchQuestionPlaceholder": "搜索常見的問題",
"WhatIsTheABPCommercial": "什麽是ABP商業版?",
"WhatAreDifferencesThanAbpFramework": "ABP框架與ABP商業版有什麽不同?",

10
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/AbpIoCommunityResource.cs

@ -1,10 +0,0 @@
using Volo.Abp.Localization;
namespace AbpIoLocalization.Community.Localization
{
[LocalizationResourceName("AbpIoCommunity")]
public class AbpIoCommunityResource
{
}
}

3
abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/en.json

@ -4,6 +4,7 @@
"Buy": "Buy",
"SeeBookDetails": "See Book Details",
"MasteringAbpFrameworkEBookDescription": "This book will help you gain a complete understanding of the framework and modern web application development techniques.",
"Feedback": "Feedback"
"Feedback": "Feedback",
"DocumentationDescription": "Dive into ABP's latest documentation. Find guides, API references, and best practices to help you effectively build and manage modern web apps with ABP"
}
}

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ar.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "تطبيق ويب تقدمي",
"Preview": "معاينة",
"CreateANewSolution": "قم بإنشاء حل جديد",
"ABPFrameworkFeatures": "إطار عمل ABP <span class=\"gradient-framework\">ميزات</span>",
"FrameworkFeatures": "إطار عمل ABP <span class=\"gradient-framework\">ميزات</span>",
"Commercial": "تجاري",
"ThirdPartyTools": "أدوات الطرف الثالث",
"Back": "عودة",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/cs.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progresivní webová aplikace",
"Preview": "Náhled",
"CreateANewSolution": "Vytvořte nové řešení",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Funkce</span> rámce ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Funkce</span> rámce ABP",
"Commercial": "Komerční",
"ThirdPartyTools": "Nástroje třetích stran",
"Back": "Zadní",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/de.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progressive Webanwendung",
"Preview": "Vorschau",
"CreateANewSolution": "Erstellen Sie eine neue Lösung",
"ABPFrameworkFeatures": "ABP-Framework- <span class=\"gradient-framework\">Funktionen</span>",
"FrameworkFeatures": "ABP-Framework- <span class=\"gradient-framework\">Funktionen</span>",
"Commercial": "Kommerziell",
"ThirdPartyTools": "Tools von Drittanbietern",
"Back": "Zurück",

3
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en-GB.json

@ -153,6 +153,9 @@
"AndMore": "and more...",
"Code": "Code",
"Result": "Result",
"CommercialSupport": "Commercial Suport",
"GithubIssues": "GitHub Issues",
"TechnicalSupport": "Technical Support",
"SeeTheDocumentForMoreInformation": "See the <a href=\"{1}\">{0} document</a> for more information",
"IndexPageHeroSection": "<span class=\"first-line shine\"><strong>open source</strong></span><span class=\"second-line text-uppercase\">Web Application<br />Framework </span><span class=\"third-line shine2\"><strong>for asp.net core</strong></span>",
"UiFramework": "UI Framework",

1456
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json

File diff suppressed because it is too large

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/es.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Aplicación web progresiva",
"Preview": "Avance",
"CreateANewSolution": "Crear una nueva solución",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Características</span> del marco ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Características</span> del marco ABP",
"Commercial": "Comercial",
"ThirdPartyTools": "Herramientas de terceros",
"Back": "Atrás",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progressiivinen verkkosovellus",
"Preview": "Esikatsele",
"CreateANewSolution": "Luo uusi ratkaisu",
"ABPFrameworkFeatures": "ABP-kehyksen <span class=\"gradient-framework\">Ominaisuudet</span>",
"FrameworkFeatures": "ABP-kehyksen <span class=\"gradient-framework\">Ominaisuudet</span>",
"Commercial": "Kaupallinen",
"ThirdPartyTools": "Kolmannen osapuolen työkalut",
"Back": "Takaisin",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Application Web progressive",
"Preview": "Aperçu",
"CreateANewSolution": "Créer une nouvelle solution",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Fonctionnalités</span> du cadre ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Fonctionnalités</span> du cadre ABP",
"Commercial": "Commercial",
"ThirdPartyTools": "Outils tiers",
"Back": "Dos",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "प्रगतिशील वेब अनुप्रयोग",
"Preview": "पूर्व दर्शन",
"CreateANewSolution": "एक नया समाधान बनाएं",
"ABPFrameworkFeatures": "एबीपी फ्रेमवर्क <span class=\"gradient-framework\">विशेषताएं</span>",
"FrameworkFeatures": "एबीपी फ्रेमवर्क <span class=\"gradient-framework\">विशेषताएं</span>",
"Commercial": "व्यावसायिक",
"ThirdPartyTools": "तृतीय पक्ष उपकरण",
"Back": "पीछे",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hr.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progresivna web aplikacija",
"Preview": "Pregled",
"CreateANewSolution": "Napravite novo rješenje",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Značajke</span> ABP okvira",
"FrameworkFeatures": "<span class=\"gradient-framework\">Značajke</span> ABP okvira",
"Commercial": "Komercijalni",
"ThirdPartyTools": "Alati trećih strana",
"Back": "leđa",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hu.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progresszív webes alkalmazás",
"Preview": "Előnézet",
"CreateANewSolution": "Hozzon létre egy új megoldást",
"ABPFrameworkFeatures": "Az ABP keretrendszer <span class=\"gradient-framework\">jellemzői</span>",
"FrameworkFeatures": "Az ABP keretrendszer <span class=\"gradient-framework\">jellemzői</span>",
"Commercial": "Kereskedelmi",
"ThirdPartyTools": "Harmadik féltől származó eszközök",
"Back": "Vissza",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/is.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Framsækið vefforrit",
"Preview": "Forskoðun",
"CreateANewSolution": "Búðu til nýja lausn",
"ABPFrameworkFeatures": "ABP Framework <span class=\"gradient-framework\">Eiginleikar</span>",
"FrameworkFeatures": "ABP Framework <span class=\"gradient-framework\">Eiginleikar</span>",
"Commercial": "Auglýsing",
"ThirdPartyTools": "Verkfæri þriðja aðila",
"Back": "Til baka",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Applicazione Web progressiva",
"Preview": "Anteprima",
"CreateANewSolution": "Creare una nuova soluzione",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Caratteristiche</span> della struttura ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Caratteristiche</span> della struttura ABP",
"Commercial": "Commerciale",
"ThirdPartyTools": "Strumenti di terze parti",
"Back": "Indietro",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/nl.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progressieve webapplicatie",
"Preview": "Voorbeeld",
"CreateANewSolution": "Creëer een nieuwe oplossing",
"ABPFrameworkFeatures": "ABP Framework <span class=\"gradient-framework\">-functies</span>",
"FrameworkFeatures": "ABP Framework <span class=\"gradient-framework\">-functies</span>",
"Commercial": "Reclame",
"ThirdPartyTools": "Hulpmiddelen van derden",
"Back": "Rug",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pl-PL.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progresywna aplikacja internetowa",
"Preview": "Zapowiedź",
"CreateANewSolution": "Utwórz nowe rozwiązanie",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Funkcje</span> struktury ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Funkcje</span> struktury ABP",
"Commercial": "Handlowy",
"ThirdPartyTools": "Narzędzia stron trzecich",
"Back": "Z powrotem",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/pt-BR.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Aplicativo Web Progressivo",
"Preview": "Visualização",
"CreateANewSolution": "Crie uma nova solução",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Recursos</span> da estrutura ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Recursos</span> da estrutura ABP",
"Commercial": "Comercial",
"ThirdPartyTools": "Ferramentas de terceiros",
"Back": "Voltar",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ro-RO.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Aplicație web progresivă",
"Preview": "previzualizare",
"CreateANewSolution": "Creați o nouă soluție",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Caracteristicile</span> cadrului ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Caracteristicile</span> cadrului ABP",
"Commercial": "Comercial",
"ThirdPartyTools": "Instrumente de la terți",
"Back": "Înapoi",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/ru.json

@ -299,7 +299,7 @@
"ProgressiveWebApplication": "Прогрессивное веб-приложение",
"Preview": "Предварительный просмотр",
"CreateANewSolution": "Создать новое решение",
"ABPFrameworkFeatures": "Структура ABP <span class=\"gradient-framework\">Функции</span>",
"FrameworkFeatures": "Структура ABP <span class=\"gradient-framework\">Функции</span>",
"Commercial": "Коммерческий",
"ThirdPartyTools": "Сторонние инструменты",
"Back": "Назад",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sk.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progresívna webová aplikácia",
"Preview": "Náhľad",
"CreateANewSolution": "Vytvorte nové riešenie",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Funkcie</span> rámca ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Funkcie</span> rámca ABP",
"Commercial": "Komerčný",
"ThirdPartyTools": "Nástroje tretích strán",
"Back": "späť",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/sl.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Progresivna spletna aplikacija",
"Preview": "Predogled",
"CreateANewSolution": "Ustvarite novo rešitev",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Funkcije</span> ogrodja ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Funkcije</span> ogrodja ABP",
"Commercial": "Komercialno",
"ThirdPartyTools": "Orodja tretjih oseb",
"Back": "Nazaj",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json

@ -298,7 +298,7 @@
"SeparateIdentityServer": "Ayrı Kimlik Sunucusu",
"Preview": "Önizleme",
"CreateANewSolution": "Yeni bir çözüm oluşturun",
"ABPFrameworkFeatures": "ABP Framework <span class=\"gradient-framework\">Özellikleri</span>",
"FrameworkFeatures": "ABP Framework <span class=\"gradient-framework\">Özellikleri</span>",
"ThirdPartyTools": "Üçüncü taraf araçlar",
"Back": "Geri",
"SeeMore": "Daha fazla göster",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/vi.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "Ứng dụng web tiến bộ",
"Preview": "Xem trước",
"CreateANewSolution": "Tạo một giải pháp mới",
"ABPFrameworkFeatures": "<span class=\"gradient-framework\">Tính năng</span> của khung ABP",
"FrameworkFeatures": "<span class=\"gradient-framework\">Tính năng</span> của khung ABP",
"Commercial": "Thuộc về thương mại",
"ThirdPartyTools": "Công cụ của bên thứ ba",
"Back": "Mặt sau",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hans.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "渐进式Web应用程序",
"Preview": "预览",
"CreateANewSolution": "创建新解决方案",
"ABPFrameworkFeatures": "ABP 框架 <span class=\"gradient-framework\">特点</span",
"FrameworkFeatures": "ABP 框架 <span class=\"gradient-framework\">特点</span",
"Commercial": "商业版",
"ThirdPartyTools": "第三方工具",
"Back": "返回",

2
abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/zh-Hant.json

@ -301,7 +301,7 @@
"ProgressiveWebApplication": "漸進式網頁應用程式",
"Preview": "預覽",
"CreateANewSolution": "建立新的解決方案",
"ABPFrameworkFeatures": "ABP框架<span class=\"gradient-framework\">特點</span>",
"FrameworkFeatures": "ABP框架<span class=\"gradient-framework\">特點</span>",
"Commercial": "商業的",
"ThirdPartyTools": "第三方工具",
"Back": "後退",

4
common.props

@ -1,8 +1,8 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>8.3.4</Version>
<LeptonXVersion>3.3.4</LeptonXVersion>
<Version>9.0.2</Version>
<LeptonXVersion>4.0.3</LeptonXVersion>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
<PackageIconUrl>https://abp.io/assets/abp_nupkg.png</PackageIconUrl>
<PackageProjectUrl>https://abp.io/</PackageProjectUrl>

BIN
docs/en/Blog-Posts/2024-07-23-AbpIo-United-Is-Live/cover.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

62
docs/en/Blog-Posts/2024-07-23-AbpIo-United-Is-Live/post.md

@ -0,0 +1,62 @@
# The new ABP Platform is live!
We're thrilled to announce that the **new ABP.IO Platform is now live!** Our team has been hard at unifying and enhancing the entire platform to deliver a seamless, user-friendly experience. Here's what's new:
### Unified domain and enhanced navigation 🌍
All our services are now consolidated under a single domain; [abp.io](https://abp.io). This means you no longer need to navigate through multiple subdomains. The new mega menu makes finding what you need easier and faster.
### Modern design and improved UX 🎨
The platform boasts a fresh, modern design aimed at improving both aesthetics and functionality. This redesign enhances usability, making your interaction with ABP.IO more intuitive.
### Documentation in one place 📃
We’ve combined the ABP (open-source) and ABP Commercial (paid) documents into a single, comprehensive resource. This unified documentation will help you find what you're looking for more efficiently. The new documentation address is [abp.io/docs](https://abp.io/docs). When you switch to old ABP versions before v8.3, you will see the old documents are still available.
### Introducing "ABP Studio Community Edition" 🪄
We're excited to introduce the **ABP Studio Community Edition**, which is now **available for free**. This edition provides powerful tools to streamline your development process. You can easily create a new project with a configuration wizard in ABP Studio. It also provides module management, which means you can add/remove an ABP Module easily. You can also debug your microservice project and track the HTTP requests easily. Connecting your local development environment to a local or remote Kubernetes cluster is another cool feature of ABP Studio. We aim for ABP Studio to be the primary tool for ABP developers to manage their projects.
> Download ABP Studio 👉 [abp.io/studio](https://abp.io/studio).
### Enhanced "ABP CLI" 🚀
ABP CLI is also renewed. The new CLI is compatible with ABP Studio. It adds new commands. The new CLI is now available on NuGet at [nuget.org/packages/Volo.Abp.Studio.Cli](https://www.nuget.org/packages/Volo.Abp.Studio.Cli). It's a dotnet global tool. When you install ABP Studio, the new ABP CLI is automatically installed. You can still use the old ABP CLI commands. To use the legacy ABP CLI commands just add `--old` parameter to your commands.
> The docs of the new ABP CLI 👉 [abp.io/docs/latest/cli](https://abp.io/docs/latest/cli).
### 20% Celebration discount 💰
To celebrate the launch of the new platform, we're offering a **20% discount** for a limited time. This discount is valid for all new purchases, renewing existing licenses and buying additional developer seats.
> Discounted prices 👉 [abp.io/pricing](https://abp.io/pricing).
### Existing customers 🛂
In terms of licensing rules, existing customers will not be affected by this change. You can manage your license just like before at [abp.io/my-organizations](https://abp.io/my-organizations).
> The new support website address 👉 [abp.io/support](https://abp.io/support).
---
### Why choose the ABP Platform? 🙄
ABP Platform simplifies modern software development with well-architected startup templates, modular design infrastructure, multi-tenancy support, comprehensive security features, and a vibrant community. If you are starting a new web project or transforming your legacy application, ABP is the perfect solution! If you still wonder why you need such a solution, see [abp.io/why-choose-abp](https://abp.io/why-choose-abp).
There are several startup ASP.NET Core templates for your requirements. Read [abp.io/how-it-works](https://abp.io/how-it-works) page to understand ABP's approach. We have a FAQ page where you can find answers to many of your questions [abp.io/faq](https://abp.io/faq).
> Start your new ABP project -for free- 👉[abp.io/get-started](https://abp.io/get-started)!
### Join our community 👨‍👨‍👦
We invite developers, IT professionals, and businesses to join the ABP Community. Our community website is now [abp.io/community](https://abp.io/community). On this website, you can read ABP-related posts, watch live community shows and core team's fundamental video courses...
------
For more information, visit our newly unified platform at [abp.io](https://abp.io). We look forward to your feedback and continued support as we grow together!
> Found a bug in the new platform? Or if you have an idea, write to us 👉 [abp.io/contact](https://abp.io/contact).

BIN
docs/en/Blog-Posts/2024-07-25-Introducing-The-New-ABP-CLI/cover-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

81
docs/en/Blog-Posts/2024-07-25-Introducing-The-New-ABP-CLI/post.md

@ -0,0 +1,81 @@
# Introducing the New ABP CLI
![](cover-image.png)
📢 We're excited to introduce the [new ABP CLI](https://abp.io/docs/latest/cli/index) after the announcement of [the new unified ABP Platform](https://abp.io/blog/new-abp-platform-is-live).
As you know, we recently unified the ABP platform in a single domain ([abp.io](https://abp.io/)) and made some changes in our templating system to simplify your development. Also, we released more stable ABP Studio versions, which can dramatically improve and speed up your development time. Besides all of these changes, we have also introduced a new ABP CLI to bring you a more streamlined and efficient experience, which also extends the current commands.
Here is a brief overview of what's new, what's changed, and why this change is happening...
## The New ABP CLI
ABP CLI is a command line tool to perform some common operations for ABP based solutions or [ABP Studio](https://abp.io/docs/latest/studio) features. With v8.2+, the old/legacy ABP CLI has been replaced with a new CLI system to align with the new templating system and ABP Studio.
The new ABP CLI extends the old ABP CLI, adds more features that are used by ABP Studio behind the scenes, and is also fully compatible with the new templating system. Also, it allows you to use the old ABP CLI if you need, it by passing a single parameter.
To be able to use the new ABP CLI, you should first delete the existing/old CLI with the following command if you installed it before:
```bash
dotnet tool uninstall -g Volo.Abp.Cli
```
Then, to install the new ABP CLI, you can just simply execute the following command in your terminal:
```bash
dotnet tool install -g Volo.Abp.Studio.Cli
```
> Both old and new ABP CLI binary names use the same `abp` command as the executing command. Therefore, you should uninstall the old CLI first, if you installed it before.
> **Note**: Since the new ABP CLI uses the same `abp` command, you can use the same commands as you did before.
## Reason for the Change
ABP introduces a new templating system, which is fully compatible with the ABP Studio from v8.2+. Since, ABP Studio offers more and better features (such as tracking, monitoring, and deploying your applications from a single point), and the new templating system has a different versioning structure, we wanted to introduce a new ABP CLI by extending the current features and adding even more features that are compatible with the new templating system and ABP Studio.
This change allows you to create your application with the new templating system either by running the cross-platform ABP Studio application or ABP CLI and allows you to create automated pipelines with the power of the new ABP CLI.
## Using the Old ABP CLI
If you have an older version of ABP solutions and need to use the old ABP CLI for any reason, you can do it easily with the new ABP CLI.
You just need to put the `--old` command at the end of your command and execute the related CLI command as you would before. This allows you to use the old CLI commands with the new CLI without the need to uninstall the new CLI.
For example, if you want to create a new ABP v8.2.0 solution, you can execute the following command:
```bash
abp new Acme.BookStore --version 8.2.0 --old
```
When you run this command, the new ABP CLI installs the old CLI with `abp-old` name as the executing command within the latest version of ABP under the **%UserProfile%\\.abp\studio\cli\old** directory and allows you to use the old commands.
If you want to use a specific version of the old ABP CLI, it's also possible with the new ABP CLI. You can use the `install-old-cli` command of the new CLI to either install or update an old CLI, then you can directly execute any old ABP CLI command by simply passing the `--old` parameter to the end of your command:
```bash
# installing the old ABP CLI with v8.0
abp install-old-cli --version 8.0.0
abp new Acme.BookStore --version 8.0 --old # alternatively, you can use the `abp-old` command without need to pass the "--old" parameter
```
## New Commands
New ABP CLI extends the existing features of old ABP CLI and introduces new commands. Here are some of the new commands:
* `kube-connect`: Connects to Kubernetes environment. (Available for **Business or higher licenses**)
* `kube-intercept`: Intercepts a service running in Kubernetes environment. (Available for **Business or higher licenses**)
* `list-module-sources`: Lists the remote module sources.
* and more...
You can check the CLI documentation for all available commands and their usage.
## Conclusion
In this blog post, we briefly explained the new ABP CLI, what's the reason for this change, and how to use the old ABP CLI with the new ABP CLI.
If you have any further questions related to the new ABP CLI, you can always refer to the [CLI](https://abp.io/docs/latest/cli/index) and [Old ABP CLI vs New ABP CLI](https://abp.io/docs/latest/cli/differences-between-old-and-new-cli) documentation. Also, we listed some of the questions that you may have, which you can [check from here](https://abp.io/docs/latest/cli/differences-between-old-and-new-cli#common-questions).
Please try out the new ABP CLI, and provide feedback to help us release more stable versions, with additional features.
Thanks for being a part of the ABP Community!

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-helm-charts.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-license-comparison-table.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-new-layered-solution-template-wizard-options.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-new-layered-solution-template-wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-solution-runner-overall.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-studio-solution-runner-start-apps.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-suite-in-abp-studio.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/abp-suite-open-in-abp-studio.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

111
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/post.md

@ -0,0 +1,111 @@
# Announcing ABP Studio (beta) General Availability
ABP Framework makes your daily coding activities much easier, more convenient, and even more enjoyable. However, building a software product is not just about coding. We know that you need to build, run, test, debug and deploy your software, and trace errors on a failure. You also should to design architecture of your overall solution and perform many common operations on your solutions in addition to the coding activity.
We'd already provided tools like [ABP CLI](https://abp.io/cli) and [ABP Suite](https://abp.io/suite) for these kind of purposes before. [ABP Studio](https://abp.io/studio) takes this one long step further and offers a tool that you can use continuously throughout your coding activities, help you for non-coding activities to make you focus on your software development.
I am very excited to announce that the ABP Studio (beta) is generally available to everyone. It is now downloadable on the [get started page](https://abp.io/get-started) of the [new ABP Platform website](https://abp.io/blog/new-abp-platform-is-live).
## What is ABP Studio?
[ABP Studio](https://abp.io/docs/latest/studio) is a cross-platform desktop application for ABP and .NET developers. It aims to provide a comfortable development environment for you by automating things, providing insights about your solution, making develop, run, browse, monitor, trace and deploy your solutions much easier.
**From now on, ABP Studio is the default way to start with the ABP Platform**;
* The [get started page](https://abp.io/get-started) has updated so it offers to download ABP Studio to create a new ABP based solution.
* The ABP CLI ([Volo.Abp.Cli](https://nuget.org/packages/Volo.Abp.Cli)) is replaced by the ABP Studio CLI ([Volo.Abp.Studio.Cli](https://www.nuget.org/packages/Volo.Abp.Studio.Cli)). [The new ABP Studio CLI](https://abp.io/docs/latest/cli) is compatible with the old one, and extends it by introducing new commands.
* [Startup solution templates](https://abp.io/docs/latest/solution-templates) are completely renewed. The solution structures are similar to the old ones, but they are totally new templates built with the new templating engine.
* All the documentation and tutorials now uses ABP Studio and ABP Studio CLI.
> **ABP Studio is in beta stage now.** It is also in rapid development and release cycle. We frequently release new feature and patch versions. Please [file an issue](https://github.com/abpframework/abp/issues/new/choose) if you have any problem.
>
> If you want to continue to use the old CLI and old startup templates, please [refer that document](https://abp.io/docs/latest/cli/differences-between-old-and-new-cli).
## The Easiest Way to Start with the ABP Framework
As mentioned before, the [startup solution templates](https://abp.io/docs/latest/solution-templates) are completely renewed with ABP Studio. They provide much more options compared to the old startup templates. The following screenshot is taken from the New Solution wizard of ABP Studio, which provides an comfortable and easy way to create new solutions:
![abp-studio-new-layered-solution-template-wizard](abp-studio-new-layered-solution-template-wizard.png)
For example, you can now select most of the non-fundamental modules as optional while creating a new solution:
![abp-studio-new-layered-solution-template-wizard-options](abp-studio-new-layered-solution-template-wizard-options.png)
### Developing Microservices Solutions is Now Much Easier
The most important change is made on the [microservice startup template](https://abp.io/docs/latest/solution-templates/microservice) (which is available only for Business or higher license holders). We've designed the solution structure, integrations, Kubernetes/Helm configuration, database migrations and all others from scratch and well documented all the decisions we've applied. Developing microservice solutions with ABP Framework is now easier and more understandable than ever.
## Architecting Your Complex Solutions
One of the main purposes to build ABP Studio was to simplify to create multi-modular and distributed systems. Either you create a modular monolith application or a microservice solution, [ABP Studio's solution explorer](https://abp.io/docs/latest/studio/solution-explorer) provides a convenient way to design your high-level solution structure.
You see a microservice solution in the following screenshot:
![solution-explorer](solution-explorer.png)
That ABP Studio solution contains multiple separate .NET solutions (`.sln`) each has multiple .NET projects (`.csproj`). ABP Studio allows you to easily manage such a multi-solution system on a single view. You can create new packages and modules, import existing packages and modules, manage their dependencies and so on.
## Run and Test Your Multi-Application Solutions with a Single Click
One of the biggest shortcomings we face when developing distributed or complex solutions is being able to easily run all components of the solutions so that we can test and debug a single service or application without caring about all the runtime dependencies.
Here a screenshot from the ABP Studio's [Solution Runner](https://abp.io/docs/latest/studio/running-applications) view:
![abp-studio-solution-runner-overall](abp-studio-solution-runner-overall.png)
When you use ABP Studio, it is dramatically easier to run, monitor, test, debug and develop your applications and services. You can browse your web UI applications, monitor all the HTTP requests, distributed events, exceptions and logs in real time on a single screen. In this way, you can easily run all the systems and trace the problems when you have.
All you need to click the *Play* button or right-click and select the *Run* -> *Start All* command:
![abp-studio-solution-runner-start-apps](abp-studio-solution-runner-start-apps.png)
The nice thing is that you can create multiple profiles for each of your teams so that they can run only the applications they need to develop the application they are working on.
## Seamlessly Develop Your Service as Integrated to Kubernetes
Kubernetes is the de-facto tool to deploy, run and scale complex systems. However, it can also be a great tool to develop such solutions in a local environment.
With ABP Studio's [Kubernetes Integration](https://abp.io/docs/latest/studio/kubernetes) system, it is now possible to deploy and run a complex system in a Kubernetes cluster. Then you can establish a bridge between your local development environment and the Kubernetes cluster. In this way, you can develop, run, test and debug an application or service in your local development environment as it is running in the Kubernetes cluster. All incoming and outgoing traffic is properly routed and managed by ABP Studio. You just focus on the service you are responsible to develop and let the Kubernetes run rest of the system for you.
You can see all the Helm charts in a solution in the Kubernetes panel of ABP Studio:
![abp-studio-helm-charts](abp-studio-helm-charts.png)
Here, you can easily build, install and uninstall the Helm charts to your Kubernetes cluster. In the Kubernetes tab, you can connect to the Kubernetes cluster and intercept a service to develop it locally. See [the documentation](https://abp.io/docs/latest/studio/kubernetes) for more information.
The good news is that all the monitoring data (HTTP Requests, Events, Exceptions, Logs,...) is still visible in real time with the Kubernetes integration too.
## Use the ABP Suite as Integrated to ABP Studio
[ABP Suite](https://abp.io/suite) is a tool that is basically used to generate code for ABP Solutions. It has started by creating simple CRUD pages, and now it does much more. It can establish relations with existing entities, create complex user interfaces like parent/child tables and so on...
ABP Suite can be used directly inside ABP Studio by clicking the *ABP Suite* -> *Open* command:
![abp-suite-open-in-abp-studio](abp-suite-open-in-abp-studio.png)
This will open ABP Suite in a new tab for the current solution and focus on the CRUD page generation:
![abp-suite-in-abp-studio](abp-suite-in-abp-studio.png)
The new ABP Studio solution templates and ABP Suite code generation are compatible with each other. Here a screenshot from the generated CRUD UI for a very simple Book entity:
![suite-generated-entity](suite-generated-entity.png)
## The Community Edition vs Commercial Licenses
ABP Studio has a Community Edition which is completely free and available to everyone. As you can guess, there are come differences between the community edition and commercial editions. ABP Platform has 4 fundamental license types;
* Open source (free)
* Team
* Business
* Enterprise
Here, the comparison table for ABP Studio features for these license types:
![abp-studio-license-comparison-table](abp-studio-license-comparison-table.png)
Microservice startup template and Kubernetes integration features are available only for commercial licenses since these are considered more enterprise requirements. Also, the solution size is limited with the ABP Community edition. If you are building a large or distributed solution, consider to [purchase a commercial license](https://abp.io/pricing).
## Conclusion
I've introduced the ABP Studio General Availability with this post. It is still in the beta stage. You can expect frequent releases during the beta phase. We will add new features and fix issues quickly. Please [download](https://abp.io/studio) and use it now. If you find any problem, do not hesitate to open an [issue on GitHub](https://github.com/abpframework/abp/issues/new/choose).

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/solution-explorer.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
docs/en/Blog-Posts/2024-07-30-Announcing-ABP-Studio/suite-generated-entity.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cms-kit-faq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cmskit-module-comments-settings.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cmskit-module-markedItems.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/cover-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 MiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/docs-google-search.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/faq-section-public-web.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/google-search-results.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/new-abp-cli-cover-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/new-platform-cover-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

177
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/post.md

@ -0,0 +1,177 @@
# ABP Platform 8.3 RC Has Been Released
![](cover-image.png)
Today, we are happy to release [ABP](https://abp.io) version **8.3 RC** (Release Candidate). This blog post introduces the new features and important changes in this new version.
Try this version and provide feedback for a more stable version of ABP v8.3! Thanks to you in advance.
## Get Started with the 8.3 RC
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli).
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI:
![](studio-switch-to-preview.png)
## Migration Guide
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v8.2 or earlier: [ABP Version 8.3 Migration Guide](https://abp.io/docs/8.3/release-info/migration-guides/abp-8-3)
## What's New with ABP v8.3?
In this section, I will introduce some major features released in this version.
Here is a brief list of titles explained in the next sections:
* CMS Kit: Marked Items/Favorites
* CMS Kit: Approvement System for Comments
* Docs: Added Google Translation Support & Introducing the Single Project Mode
* Using DBFunction for Global Query Filters
* CMS Kit (PRO): FAQ
* Package Updates (NuGet & NPM)
### CMS Kit: Marked Items/Favorites
CMS Kit provides a marking system to mark any kind of resource, like a blog post or a product, as a favorite, starred, flagged, or bookmarked.
![](cmskit-module-markedItems.png)
This system is especially useful if you need to highlight some resources and differentiate them from other items. To use the marking system, you need to define an entity type with the icon name, by configuring the `CmsKitMarkedItemOptions`:
```csharp
Configure<CmsKitMarkedItemOptions>(options =>
{
options.EntityTypes.Add(
new MarkedItemEntityTypeDefinition(
entityType: "product",
icon: StandardMarkedItems.Favorite
)
);
});
```
You can select any of the standard marked item icons (as used in the example above) or easily customize the icons shown in the toggling components.
> Read the [CMS Kit: Marked Item System](https://abp.io/docs/8.3/modules/cms-kit/marked-items) documentation to learn more.
### CMS Kit: Approvement System for Comments
CMS Kit Module has been provided a [Commenting System](https://abp.io/docs/8.3/modules/cms-kit/comments) for a while. This system allows you to add the comment feature to any kind of resource, like blog posts, or products. However, this system wasn't providing an approvement system, that allows system administrations to review the comments before publishing them in their application.
In this version, we have introduced the [Approvement System](https://abp.io/docs/8.3/modules/cms-kit/comments#settings), which allows you to _require approval for comments to be published_. It's disabled by default, but you can make it enabled by simply checking the related setting on the settings page:
![](cmskit-module-comments-settings.png)
When you enable it, whenever a user submits a comment, it can be directly seen on the back-office application (in the _cms/comments_ page), and you can determine if the comment should be approved or rejected. If you approve the comment, then it will be shown in the comment section for the related resource.
> Read the [CMS Kit: Comments](https://abp.io/docs/8.3/modules/cms-kit/comments) documentation to learn more.
### Docs: Added Google Translation Support & Introducing the Single Project Mode
In this version, we made some improvements in the [Docs Module](https://abp.io/docs/8.3/modules/docs), added Google Translation support for better findings in the documentation, and introduced a single project mode to align our needs in the documentation system with [the unification of the ABP Platform](https://abp.io/blog/new-abp-platform-is-live).
The single project mode allows you to use a single name as a project name in your application. If you are not considering supporting multiple projects with their multiple docs and instead if you have a single project and want to have documentation for it, it's especially useful for you. You just need to configure the `DocsUiOptions`, set the single project mode as **enabled** and also define a constant project name:
```csharp
Configure<DocsUiOptions>(options =>
{
options.SingleProjectMode.Enable = true;
options.SingleProjectMode.ProjectName = "abp";
});
```
In addition to this feature, we also introduced Google Translation support for the documentation system and even integrated it into our [abp.io/docs](https://abp.io/docs/) website:
![](docs-google-search.png)
![](google-search-results.png)
Thanks to this system, you can either translate your documentation into your own language by Google Translation System or search specific keywords to easily find the related topic in the documentation.
### Using DBFunction for Global Query Filters
In this version, ABP has started using [User-defined function mapping](https://learn.microsoft.com/en-us/ef/core/querying/user-defined-function-mapping) for global filters to gain performance improvements and let EF Core generate more precise SQL commands under the hook.
> See the documentation for more info: [Using User-defined function mapping for global filters](https://abp.io/docs/8.3/framework/infrastructure/data-filtering#using-user-defined-function-mapping-for-global-filters)
### CMS Kit: FAQ
CMS Kit provides a [FAQ System](https://abp.io/docs/8.3/modules/cms-kit-pro/faq) to allow users to create, edit, and delete FAQs. Here is an example screenshot from the FAQ page on the admin side:
![](cms-kit-faq.png)
You can list, create, update, and delete sections and their questions on the admin side of your solution. Then, by using the `FaqViewComponent` in your public-web application, you can display FAQs, section by section:
![](faq-section-public-web.png)
> Read the [CMS Kit: FAQ System](https://abp.io/docs/8.3/modules/cms-kit-pro/faq) documentation to learn more.
### Package Updates
In this version, we also updated some of the core NuGet and NPM package versions. All of the removed or deprecated methods have already been updated at the framework level. However, if you used any methods from these packages, you should be aware of the change and update it in your code accordingly.
You can see the following list of the package version changes:
* [Updated Markdig.Signed from v0.33.0 to v0.37.0](https://github.com/abpframework/abp/pull/20195) - [NuGet](https://www.nuget.org/packages/Markdig.Signed)
* [Updated Hangfire from v1.8.6 to v1.8.12](https://github.com/abpframework/abp/pull/20009) - [NuGet](https://www.nuget.org/packages/Hangfire.AspNetCore)
* [Updated SixLabors.ImageSharp from v3.0.2 to v3.1.4](https://github.com/abpframework/abp/pull/19643) - [NuGet](https://www.nuget.org/packages/SixLabors.ImageSharp)
* [Updated Blazorise from v1.5.0 to v1.5.2](https://github.com/abpframework/abp/pull/19841) - [NuGet](https://www.nuget.org/packages/Blazorise)
* [Updated datatables.net from v1.11.4 to v2.0.2](https://github.com/abpframework/abp/pull/19340) - [NPM](https://www.npmjs.com/package/datatables.net)
## Community News
### The New ABP Platform Is Live!
![](new-platform-cover-image.png)
We're thrilled to announce that the **new ABP.IO Platform** is now live! Our team has been hard at unifying and enhancing the entire platform to deliver a seamless, user-friendly experience. We consolidated all our services under a single domain: [abp.io](https://abp.io/); added a new mega menu that makes finding what you need much easier and faster, and also improved the UX of our application and combined both ABP (open-source) and ABP Commercial (paid) documents into a single comprehensive resource.
> Read the blog post to learn more about this unification 👉 [The new ABP Platform is live!](https://abp.io/blog/new-abp-platform-is-live)
### Announcing ABP Studio (Beta) General Availability
We're really excited to announce that the **ABP Studio (beta)** is generally available to everyone. It is now downloadable on the [get started page](https://abp.io/get-started) of the [new ABP Platform website](https://abp.io/blog/new-abp-platform-is-live).
![](studio-beta-cover-image.png)
> Read the blog post to learn more about the ABP Studio (Beta) 👉 [Announcing ABP Studio (beta) General Availability](https://abp.io/blog/announcing-abp-studio-general-availability)
### Introducing the New ABP CLI
As described above, we recently [unified the ABP platform in a single domain (abp.io)](https://abp.io/blog/new-abp-platform-is-live) and made some changes in our templating system to simplify your development. Also, we released more stable **ABP Studio** versions, which can dramatically improve and speed up your development time.
Besides all of these changes, we have also introduced a [new ABP CLI](https://abp.io/docs/latest/cli/index) to bring you a more streamlined and efficient experience, which also extends the current commands.
![](new-abp-cli-cover-image.png)
The new ABP CLI extends the old ABP CLI, adds more features that are used by ABP Studio behind the scenes, and is also fully compatible with the new templating system. We created a blog post, which you can read at [https://abp.io/blog/introducing-the-new-abp-cli](https://abp.io/blog/introducing-the-new-abp-cli) to highlight the reason behind this change and insights into the new ABP CLI, you can check it out if you want to learn more.
### New ABP Community Articles
There are exciting articles contributed by the ABP community as always. I will highlight some of them here:
* [Ahmed Tarek](https://twitter.com/AhmedTarekHasa1) has created **three** new community articles:
* [🧪 Unit Testing Best Practices In .NET C# 🤷‍♂️](https://abp.io/community/articles/-unit-testing-best-practices-in-.net-c--mnx65npu)
* [Memory Management In .NET](https://abp.io/community/articles/memory-management-in-.net-rqwbtzvl)
* [🧵 How String In .NET C# Works 🤷‍♂️](https://abp.io/community/articles/-how-string-in-.net-c-works--vj6d2pnm)
* [Anto Subash](https://twitter.com/antosubash) has created **two** new community videos:
* [ABP React Template V2](https://abp.io/community/videos/abp-react-template-v2-ilc4cyqr)
* [Migrating Tye to Aspire - .NET Microservice with ABP](https://abp.io/community/videos/migrating-tye-to-aspire-.net-microservice-with-abp-ga1t4ckr)
* [HeadChannel Team](https://headchannel.co.uk/) has created **two** new community articles:
* [Managing Baseline Creation in Applications Based on ABP Framework](https://abp.io/community/articles/managing-baseline-creation-in-applications-based-on-abp-framework-yiacte5c)
* [How to Test The System Using PostgreSQL and TestContainers](https://abp.io/community/articles/how-to-test-the-system-using-postgresql-and-testcontainers-8yh8t0j8)
* [Create a Generic HTTP Service to Consume a Web API](https://abp.io/community/articles/create-a-generic-http-service-to-consume-a-web-api-yidme2kq) by [Bart Van Hoey](https://github.com/bartvanhoey)
* [Use User-Defined Function Mapping for Global Filter](https://abp.io/community/articles/use-userdefined-function-mapping-for-global-filter-pht26l07) by [Liming Ma](https://github.com/maliming)
* [How to use .NET Aspire with ABP framework](https://abp.io/community/articles/how-to-use-.net-aspire-with-abp-framework-h29km4kk) by [Berkan Şaşmaz](https://twitter.com/berkansasmazz)
* [Exciting New Feature in ABP.IO CMS Kit: Marked Item System](https://abp.io/community/articles/exciting-new-feature-in-abp.io-cms-kit-marked-item-system.-2hvpq0me) by [Suhaib Mousa](https://abp.io/community/members/suhaibmousa032@gmail.com)
Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/submit) to the ABP Community.
## Conclusion
This version comes with some new features and a lot of enhancements to the existing features. You can see the [Road Map](https://abp.io/docs/8.3/release-info/road-map) documentation to learn about the release schedule and planned features for the next releases. Please try ABP v8.3 RC and provide feedback to help us release a more stable version.
Thanks for being a part of this community!

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/studio-beta-cover-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
docs/en/Blog-Posts/2024-07-31 v8_3_Preview/studio-switch-to-preview.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/0.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

490
docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/POST.md

@ -0,0 +1,490 @@
# Switching Between Organization Units
In most companies, a user belongs to more than one organization. Also, in some applications, we need to filter the data shown depending on the logged-in user's organization. For such scenarios, allowing users to select one of the organizations they belong to is a good practice.
![0](0.png)
## Creating a Data Filter with Organization Units
### IHasOrganization
First, we need to create a data filter that filters data based on the organization unit.
The `IHasOrganization` interface is used to define the organization unit property in the entity classes, and used to filter the data based on the organization unit.
```csharp
public interface IHasOrganization
{
public Guid? OrganizationId { get; set; }
}
```
```csharp
public class Book : AggregateRoot<Guid>, IHasOrganization
{
public string Name { get; set; }
public string Isbn { get; set; }
public Guid? OrganizationId { get; set; }
}
```
### Entity Framework Core DbContext Implementation
We will override the `ShouldFilterEntity` and `CreateFilterExpression` methods in the `BookStoreDbContext` class to configure the data filter for the entity that implements the `IHasOrganization` interface.
```csharp
public class BookStoreDbContext : AbpDbContext<BookStoreDbContext>
{
// Your others DbSet properties...
public DbSet<Book> Books { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Your configure code...
builder.Entity<Book>(b =>
{
b.ToTable(BookStoreConsts.DbTablePrefix + "Book", BookStoreConsts.DbSchema);
b.ConfigureByConvention();
});
}
public CurrentOrganizationIdProvider CurrentOrganizationIdProvider => LazyServiceProvider.LazyGetRequiredService<CurrentOrganizationIdProvider>();
protected override bool ShouldFilterEntity<TEntity>(IMutableEntityType entityType)
{
if (typeof(IHasOrganization).IsAssignableFrom(typeof(TEntity)))
{
return true;
}
return base.ShouldFilterEntity<TEntity>(entityType);
}
protected override Expression<Func<TEntity, bool>> CreateFilterExpression<TEntity>(ModelBuilder modelBuilder)
{
var expression = base.CreateFilterExpression<TEntity>(modelBuilder);
if (typeof(IHasOrganization).IsAssignableFrom(typeof(TEntity)))
{
Expression<Func<TEntity, bool>> hasOrganizationIdFilter = e => EF.Property<Guid>(e, "OrganizationId") == CurrentOrganizationIdProvider.CurrentOrganizationId;
expression = expression == null ? hasOrganizationIdFilter : QueryFilterExpressionHelper.CombineExpressions(expression, hasOrganizationIdFilter);
}
return expression;
}
}
```
### The CurrentOrganizationIdProvider
This class is used to get the current `organization id`, We will use the `AsyncLocal` class to store the current `organization id`, The `Change` method is used to change the current `organization id`. This service is registered as a singleton service.
```csharp
public class CurrentOrganizationIdProvider : ISingletonDependency
{
private readonly AsyncLocal<Guid?> _currentOrganizationId = new AsyncLocal<Guid?>();
public Guid? CurrentOrganizationId => _currentOrganizationId.Value;
public virtual IDisposable Change(Guid? organizationId)
{
var parent = CurrentOrganizationId;
_currentOrganizationId.Value = organizationId;
return new DisposeAction(() =>
{
_currentOrganizationId.Value = parent;
});
}
}
```
## Domain Service Implementation
We will store the current `organization id` in the cache for the logged-in user. at the same time, we want to store it per browser. So we also add the different browser info for every logged-in user.
In the `BrowserInfoClaimsPrincipalContributor` class, We add a random `BrowserInfo` claim to the logged-in user. And we will use `user id` and `browser info `as a cache key.
```csharp
public static class CurrentUserExtensions
{
public static Guid? GetBrowserInfo(this ICurrentUser currentUser)
{
var claimValue = currentUser.FindClaimValue("BrowserInfo");
if (claimValue != null && Guid.TryParse(claimValue, out var result))
{
return result;
}
return null;
}
}
public class BrowserInfoClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency
{
public Task ContributeAsync(AbpClaimsPrincipalContributorContext context)
{
var identity = context.ClaimsPrincipal.Identities.FirstOrDefault();
identity?.AddClaim(new Claim("BrowserInfo", Guid.NewGuid().ToString()));
return Task.CompletedTask;
}
}
```
## Application Service Implementation
The `CurrentOrganizationAppService` to get/change the current organization for the logged-in user. `BookAppService` to get the books based on the current `organization id`.
```csharp
[Authorize]
public class CurrentOrganizationAppService : BookStoreAppService, ICurrentOrganizationAppService
{
private readonly IdentityUserManager _identityUserManager;
private readonly IDistributedCache<CurrentOrganizationIdCacheItem> _cache;
public CurrentOrganizationAppService(IdentityUserManager identityUserManager, IDistributedCache<CurrentOrganizationIdCacheItem> cache)
{
_identityUserManager = identityUserManager;
_cache = cache;
}
public virtual async Task<List<OrganizationDto>> GetOrganizationListAsync()
{
var user = await _identityUserManager.FindByIdAsync(CurrentUser.GetId().ToString());
var organizationUnits = await _identityUserManager.GetOrganizationUnitsAsync(user);
return organizationUnits.Select(ou => new OrganizationDto
{
Id = ou.Id,
DisplayName = ou.DisplayName
}).ToList();
}
public virtual async Task<Guid?> GetCurrentOrganizationIdAsync()
{
var cacheKey = CurrentUser.Id.ToString() + ":" + CurrentUser.GetBrowserInfo();
return (await _cache.GetAsync(cacheKey))?.OrganizationId;
}
public virtual async Task ChangeAsync(Guid? organizationId)
{
var cacheKey = CurrentUser.Id.ToString() + ":" + CurrentUser.GetBrowserInfo();
await _cache.SetAsync(cacheKey, new CurrentOrganizationIdCacheItem
{
OrganizationId = organizationId
});
}
}
```
```csharp
[Authorize]
public class BookAppService : BookStoreAppService, IBookAppService
{
private readonly IBasicRepository<Book, Guid> _bookRepository;
public BookAppService(IBasicRepository<Book, Guid> bookRepository)
{
_bookRepository = bookRepository;
}
public virtual async Task<List<BookDto>> GetListAsync()
{
var books = await _bookRepository.GetListAsync();
return books.Select(book => new BookDto
{
Id = book.Id,
Name = book.Name,
Isbn = book.Isbn,
OrganizationId = book.OrganizationId
}).ToList();
}
}
```
## Seed Sample Data
Let's seed some sample data for the `Book` and `Organization` entities.
We added two organization units, `USA Branch` and `Turkey Branch`, and some books to each organization unit. Also, we added the `admin` user to both organization units.
```csharp
public class BooksDataSeedContributor : IDataSeedContributor, ITransientDependency
{
public Guid UsaBranchId = Guid.Parse("00000000-0000-0000-0000-000000000001");
public Guid TurkeyBranchId = Guid.Parse("00000000-0000-0000-0000-000000000002");
private readonly IBasicRepository<Book, Guid> _bookRepository;
private readonly OrganizationUnitManager _organizationUnitManager;
private readonly IOrganizationUnitRepository _organizationUnitRepository;
private readonly IdentityUserManager _identityUserManager;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public BooksDataSeedContributor(
IBasicRepository<Book, Guid> bookRepository,
OrganizationUnitManager organizationUnitManager,
IOrganizationUnitRepository organizationUnitRepository,
IdentityUserManager identityUserManager,
IUnitOfWorkManager unitOfWorkManager)
{
_bookRepository = bookRepository;
_organizationUnitManager = organizationUnitManager;
_organizationUnitRepository = organizationUnitRepository;
_identityUserManager = identityUserManager;
_unitOfWorkManager = unitOfWorkManager;
}
public virtual async Task SeedAsync(DataSeedContext context)
{
using (var uow = _unitOfWorkManager.Begin())
{
var usa = await _organizationUnitRepository.FindAsync(UsaBranchId);
if (usa == null)
{
await _organizationUnitManager.CreateAsync(new OrganizationUnit(UsaBranchId, "USA Branch"));
}
var turkey = await _organizationUnitRepository.FindAsync(TurkeyBranchId);
if (turkey == null)
{
await _organizationUnitManager.CreateAsync(new OrganizationUnit(TurkeyBranchId, "Turkey Branch"));
}
await uow.SaveChangesAsync();
var admin = await _identityUserManager.FindByNameAsync("admin");
Check.NotNull(admin, "admin");
await _identityUserManager.AddToOrganizationUnitAsync(admin.Id, UsaBranchId);
await _identityUserManager.AddToOrganizationUnitAsync(admin.Id, TurkeyBranchId);
if (await _bookRepository.GetCountAsync() <= 0)
{
await _bookRepository.InsertAsync(new Book
{
Name = "1984",
Isbn = "978-0451524935",
OrganizationId = UsaBranchId
});
await _bookRepository.InsertAsync(new Book
{
Name = "Animal Farm",
Isbn = "978-0451526342",
OrganizationId = UsaBranchId
});
await _bookRepository.InsertAsync(new Book
{
Name = "Brave New World",
Isbn = "978-0060850524",
OrganizationId = UsaBranchId
});
await _bookRepository.InsertAsync(new Book
{
Name = "Fahrenheit 451",
Isbn = "978-1451673319",
OrganizationId = TurkeyBranchId
});
await _bookRepository.InsertAsync(new Book
{
Name = "The Catcher in the Rye",
Isbn = "978-0316769488",
OrganizationId = TurkeyBranchId
});
await _bookRepository.InsertAsync(new Book
{
Name = "To Kill a Mockingbird",
Isbn = "978-0061120084",
OrganizationId = TurkeyBranchId
});
}
await uow.CompleteAsync();
}
}
}
```
## Web Page Implementation
We will add a dropdown list to the top right corner of the page to allow users to select the organization they belong to. When the dropdown list changes, we will call the application service api to change the current `organization id`.
```csharp
public class OrganizationUnitComponent : AbpViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
var currentOrganizationAppService = LazyServiceProvider.GetRequiredService<ICurrentOrganizationAppService>();
var organizationDtos = await currentOrganizationAppService.GetOrganizationListAsync();
var currentOrganizationId = await currentOrganizationAppService.GetCurrentOrganizationIdAsync();
return View("/Components/OrganizationUnits/Default.cshtml", new OrganizationUnitComponentModel
{
CurrentOrganizationId = currentOrganizationId,
OrganizationDtos = organizationDtos
});
}
}
public class OrganizationUnitComponentModel
{
public Guid? CurrentOrganizationId { get; set; }
public List<OrganizationDto> OrganizationDtos { get; set; }
}
```
```html
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
@model BookStore.Web.Components.OrganizationUnits.OrganizationUnitComponentModel
<div class="dropstart">
<a href="#" class="btn mt-2" data-bs-toggle="dropdown" type="button">
<i class="fa fa-city m-auto"></i>
</a>
<ul class="dropdown-menu p-0" style="width: 200px">
<div class="list-group">
@foreach (var ou in Model.OrganizationDtos)
{
<button type="button" onclick="setOrganizationUnitId('@ou.Id')" class="list-group-item list-group-item-action @(ou.Id == Model.CurrentOrganizationId ? "active" : "")">@ou.DisplayName</button>
}
</div>
</ul>
</div>
<script>
function setOrganizationUnitId(id) {
bookStore.currentOrganization.currentOrganization.change(id).then(function () {
location.reload();
});
}
</script>
```
Add the `OrganizationUnitComponent` to the toolbar.
```csharp
public class BookStoreToolbarContributor : IToolbarContributor
{
public virtual Task ConfigureToolbarAsync(IToolbarConfigurationContext context)
{
// ...
if (context.Toolbar.Name == StandardToolbars.Main)
{
context.Toolbar.Items.Add(new ToolbarItem(typeof(OrganizationUnitComponent)).RequireAuthenticated());
}
return Task.CompletedTask;
}
}
```
In addition, we also need to add a middleware after `UseAuthorization` to change the current `organization id`.
```csharp
app.UseAuthorization();
app.Use(async (httpContext, next) =>
{
var currentUser = httpContext.RequestServices.GetRequiredService<ICurrentUser>();
var cacheKey = currentUser.Id.ToString() + ":" + currentUser.GetBrowserInfo();
var cache = httpContext.RequestServices.GetRequiredService<IDistributedCache<CurrentOrganizationIdCacheItem>>();
var cacheItem = await cache.GetAsync(cacheKey);
if (cacheItem != null)
{
var currentOrganizationIdProvider = httpContext.RequestServices.GetRequiredService<CurrentOrganizationIdProvider>();
currentOrganizationIdProvider.Change(cacheItem.OrganizationId);
}
await next(httpContext);
});
// ...
```
The `Index` page will show the books based on the current `organization id`.
```cshtml
public class IndexModel : BookStorePageModel
{
public List<BookDto> Books { get; set; } = new List<BookDto>();
public string? OrganizationName { get; set; }
protected readonly IBookAppService BookAppService;
protected readonly ICurrentOrganizationAppService CurrentOrganizationAppService;
protected readonly IOrganizationUnitRepository OrganizationUnitRepository;
public IndexModel(
IBookAppService bookAppService,
ICurrentOrganizationAppService currentOrganizationAppService,
IOrganizationUnitRepository organizationUnitRepository)
{
BookAppService = bookAppService;
CurrentOrganizationAppService = currentOrganizationAppService;
OrganizationUnitRepository = organizationUnitRepository;
}
public async Task OnGetAsync()
{
if (CurrentUser.IsAuthenticated)
{
var currentOrganizationId = await CurrentOrganizationAppService.GetCurrentOrganizationIdAsync();
if (currentOrganizationId.HasValue)
{
OrganizationName = (await OrganizationUnitRepository.GetAsync(currentOrganizationId.Value)).DisplayName;
}
Books = await BookAppService.GetListAsync();
}
}
}
```
```html
@page
@model BookStore.Web.Pages.IndexModel
@using Microsoft.AspNetCore.Mvc.Localization
@using BookStore.Localization
@inject IHtmlLocalizer<BookStoreResource> L
@if (!Model.OrganizationName.IsNullOrEmpty())
{
<h5>The books belonging to @Model.OrganizationName organization</h5>
}
<ul class="list-group">
@foreach(var book in Model.Books)
{
<li class="list-group-item">Book Name: @book.Name, ISBN: @book.Isbn</li>
}
</ul>
```
### Final UI
The final UI will look like this:
The index page will show empty if the current organization id is not set.
After selecting the organization unit, the index page will show the books based on the selected organization unit.
![1](1.png)
![2](2.png)
![3](3.png)
## Summary
In this blog post. We showd simple implementation of switching between organization units. You can extend this implementation to meet your requirements.
After [ABP 8.3](https://github.com/abpframework/abp/pull/20065) we introduced [User-defined function mapping](https://learn.microsoft.com/en-us/ef/core/querying/user-defined-function-mapping) feature for global filters which will gain performance improvements.
## References
- [Data Filtering](https://abp.io/docs/latest/framework/infrastructure/data-filtering)
- [Claims Principal Factory](https://abp.io/docs/latest/framework/fundamentals/authorization#claims-principal-factory)

BIN
docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/cover.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

78
docs/en/Blog-Posts/2024-08-13 New-ABP-Documentation-System/POST.md

@ -0,0 +1,78 @@
# New ABP Documentation System: Everything You Need In One Place 📣
We have combined the ABP (open-source) and ABP Commercial (paid) documents into a single, comprehensive resource. This unification brings you a better experience in the documentation system, helps you find what you're looking for more easily, allows you to read the documents that are related to each other one after the other, and also provides Google Search and Google Translation support for the documents.
![](blog-cover.png)
Let's see what's new with the unified documentation system in detail:
## All Documentation In One Place 📃
We decided to combine the ABP (open-source) and ABP Commercial (paid) documents into a single place, along with [the new ABP Platform Unification](https://abp.io/blog/new-abp-platform-is-live).
The new documentation address is [abp.io/docs](https://abp.io/docs) and seen like below:
![](abp-docs.png)
This unified documentation brings you a better search capability with Google Search support, allows you to not need to switch between documentation websites to read both framework and commercial features, look what you are looking for more easily from the unified menu structure, following new features and their documentation in a more stable and easier way.
## Accessing Documents with Older Versions🗃️
From v8.2, with the new documentation system, since we merged all documents into a single place, you don't need to select if you want to show a framework or commercial document. However, if you want to access an old document, for example, if you are using an older version of ABP or don't want to create the solutions from ABP Studio and instead prefer ABP CLI (in the getting started and startup template docs, ABP Studio is shown for project creation and other features, for instance), you can change the version from the version select-box (prior to v8.2), and select which document type (framework or commercial) you want to read and then find/choose the document that you want:
![](old-docs.png)
You can access any old-version document as you would before, by specifying the version. But we suggest you update your solution to v8.2+ and start using ABP Studio! By doing that, you can get more benefits from the new features, and edge-cutting features of ABP Studio and easily manage your application from development to production!
## Documentation Updates 🚀
With the [announcement of ABP Studio (beta) General Availability](https://abp.io/blog/announcing-abp-studio-general-availability), we made some improvements in our documents. Starting from v8.2, since ABP Studio is the suggested way to create and manage your applications, we updated the [Get started](https://abp.io/docs/latest/get-started) documentation and some other documents along with, and explained project creation via ABP Studio. If you prefer [creating a new solution with the ABP CLI](https://abp.io/docs/latest/cli), you can use the new ABP CLI as you did the old one before.
Besides that, we revised all of our documents, updated most of them according to the [new ABP Platform unification](https://abp.io/blog/new-abp-platform-is-live). For example, we merged our migration guide documents into single documents for each version and categorized the related topics you need to do when updating your solutions under the **open-source** and **pro** sections, so either you are an open-source template user or a license owner, you can easily jump to the related section and read them easily and accordingly:
![](in-this-document.png)
Since we combined ABP (framework) and ABP Commercial documents, we added information notes in each document that indicate if the related feature is in your license plan or not. An example screenshot from ABP Suite documentation can be seen as follow:
![](suite-license-note.png)
Also, for the application modules, we added **(PRO)** postfixes in the navigation menu for you to easily understand if the module is for license owners or open-source users. Thanks to that you can easily distinguish the related application modules and read the related module documentation to understand it:
![](pro-modules.png)
## New Navigation Tree 📚
With the documentation unification, we re-structured the navigation tree of the documents:
![](navigation-menu.png)
The new navigation tree allows you to find any document you want in a more desired way, in the related sub-menu. For example, if you want to learn more about *modularity*, you can find under the **Framework > Architecture > Modularity** menu items, or if you want to learn more about the ABP Studio, you can find the all related docs under the root **Tools** menu.
## Google Translate & Search Capabilities 🔎
In ABP v8.3, we made some improvements in the [Docs Module](https://abp.io/docs/8.3/modules/docs), added Google Search support for better findings in the documentation, and introduced Google Translation for the documentation system. After implementing these features, we integrated them into our documentation system and removed the languages select box from the menu:
![](google-translate-and-search.png)
From now on, we will provide documents in English only. The reason behind that is, that with the new Google Translate support, you can directly translate any documentation to the desired language (of course, must be one of the supported languages). Thanks to the Google Translate feature, you can read the official documentation in your own language, and we as the core team, don't need to synchronize the documentation between different languages, it was really hard to keep them up to date, and now they all will be available all the time in the all supported languages.
![](google-search-result.png)
Also, thanks to Google Search, now you can search specific keywords to easily find the related topic in the documentation. For example, if you search the **Validation** keyword, Google will list all related documents according to their importance and relevancy:
## Feedbacks 📝
Besides all changes, we also added a **feedback section** at the end of each document. You can share your thoughts, suggestions, or criticism for specific documentation. We would like to hear more from you about our documentation quality and get suggestions from each one of you to improve our documents and platform, so it will be much appreciated if you share your feedback for any documentation you want, please don't hesitate!
![](docs-feedbacks.png)
You can either directly scroll down to the bottom directly for a certain document, or click the **Feedback** action button to navigate to the feedbacks section, and provide feedback:
![](docs-feedback-section.png)
## Conclusion 🎯
To see the new ABP documentation system, please visit the [abp.io/docs](https://abp.io/docs/latest/) website. Check out the new navigation tree, read the documents you want, provide feedback to help us improve our documents, and more...
We look forward to your feedback and continued support as we grow together! Thanks in advance 🙏

BIN
docs/en/Blog-Posts/2024-08-13 New-ABP-Documentation-System/abp-docs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save