Browse Source

Merge branch 'dev' into dynamicFormTagHelper

pull/16111/head
Yunus Emre Kalkan 3 years ago
committed by GitHub
parent
commit
25a70c299c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      README.md
  2. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/ar.json
  3. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/cs.json
  4. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  5. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/fi.json
  6. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/fr.json
  7. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/hi.json
  8. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/it.json
  9. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/sl.json
  10. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json
  11. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json
  12. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hant.json
  13. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
  14. 16
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json
  15. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json
  16. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json
  17. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json
  18. 12
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
  19. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json
  20. 3
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json
  21. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json
  22. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json
  23. 7
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json
  24. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json
  25. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json
  26. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json
  27. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json
  28. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json
  29. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json
  30. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json
  31. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json
  32. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json
  33. 85
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
  34. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json
  35. 9
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json
  36. 6
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json
  37. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/tr.json
  38. 30
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/tr.json
  39. 2
      build/build-all-release.ps1
  40. 3
      build/common.ps1
  41. 15
      delete-bin-obj.ps1
  42. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/abp-essential-features.png
  43. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/abp-try-now.png
  44. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/cover.png
  45. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/cross-platform.png
  46. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/ddd-book.png
  47. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/developer-focused.png
  48. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/features.png
  49. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/key-features.png
  50. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/module-layers-and-packages.png
  51. BIN
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/open-source.png
  52. 85
      docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/post.md
  53. 297
      docs/en/Community-Articles/2023-03-20-Dapper/POST.md
  54. BIN
      docs/en/Community-Articles/2023-03-20-Dapper/book-class-in-rider.png
  55. BIN
      docs/en/Community-Articles/2023-03-20-Dapper/book-database-table.png
  56. BIN
      docs/en/Community-Articles/2023-03-20-Dapper/book-table-data.png
  57. BIN
      docs/en/Community-Articles/2023-03-20-Dapper/list-of-books.png
  58. 14
      docs/en/Community-Articles/2023-03-27-What-is-new-in-NET8/post.md
  59. 372
      docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/POST.md
  60. BIN
      docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/books-remove-methods.png
  61. BIN
      docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/books-remove-modals.png
  62. BIN
      docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/new.gif
  63. BIN
      docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/old.gif
  64. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/abp-framework.png
  65. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/abp-suite.png
  66. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/architecture-layers.png
  67. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/conclusion.png
  68. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/cover.png
  69. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/csharp-microservice-framework.png
  70. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/ddd.png
  71. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/essential-features.png
  72. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/essentials.png
  73. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/modular.png
  74. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/pre-built-modules.png
  75. BIN
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/the-abp-platform.png
  76. 118
      docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/post.md
  77. 60
      docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/Top 10 .NET Core Libraries Every Developer Should Know.md
  78. BIN
      docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/cover1.png
  79. BIN
      docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/cover2.png
  80. BIN
      docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/essential-10-net-libraries-every-developer-must-know.png
  81. 79
      docs/en/Dapper.md
  82. 2
      docs/en/Getting-Started-React-Native.md
  83. 4
      docs/en/Migration-Guides/Abp-7_1.md
  84. 13
      docs/en/Migration-Guides/Abp-7_2.md
  85. 1
      docs/en/Migration-Guides/Index.md
  86. 13
      docs/en/Modules/Cms-Kit/Comments.md
  87. 10
      docs/en/Themes/LeptonXLite/Angular.md
  88. 170
      docs/en/UI/Angular/Card-Component.md
  89. 56
      docs/en/UI/Angular/Modifying-the-Menu.md
  90. 17
      docs/en/UI/Angular/Page-Alerts.md
  91. BIN
      docs/en/UI/Angular/images/abp-card-body.png
  92. BIN
      docs/en/UI/Angular/images/abp-card-header-footer.png
  93. BIN
      docs/en/UI/Angular/images/abp-card-header.png
  94. BIN
      docs/en/UI/Angular/images/abp-card-image.png
  95. BIN
      docs/en/UI/Angular/images/abp-card-kitchen-sink.png
  96. BIN
      docs/en/UI/Angular/images/abp-card-list-group.png
  97. BIN
      docs/en/UI/Angular/images/abp-card-title-text-link.png
  98. BIN
      docs/en/UI/Angular/images/page-alert-with-html-example.png
  99. 223
      docs/en/UI/AspNetCore/Tag-Helpers/Form-elements.md
  100. 8
      framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs

4
README.md

@ -9,7 +9,7 @@
[![ABP Discord server](https://img.shields.io/discord/951497912645476422?label=Discord)](https://discord.gg/abp)
ABP Framework is a complete **infrastructure** based on the **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**. Check out https://abp.io
ABP Framework is a complete **infrastructure** based on **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**. Check out https://abp.io
## Getting Started
@ -49,7 +49,7 @@ ABP provides a **full stack developer experience**.
<img src="docs/en/images/ddd-microservice-simple.png">
ABP offers a complete, **modular** and **layered** software architecture based on **[Domain Driven Design](https://docs.abp.io/en/abp/latest/Domain-Driven-Design)** principles and patterns. It also provides the necessary infrastructure and guiding to [implement this architecture](https://docs.abp.io/en/abp/latest/Domain-Driven-Design-Implementation-Guide).
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).
ABP Framework is suitable for **[microservice solutions](https://docs.abp.io/en/abp/latest/Microservice-Architecture)** as well as monolithic applications.

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/ar.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "يمكن تحديد تاريخ الشراء فقط عند شراء الحالة!",
"Volo.AbpIo.Commercial:030009": "لم يتم العثور على المستخدم!",
"Volo.AbpIo.Commercial:030010": "لشراء الترخيص التجريبي ، تحتاج أولاً إلى تنشيط الترخيص التجريبي الخاص بك!",
"Volo.AbpIo.Commercial:030011": "لا يمكنك حذف ترخيص تجريبي عند شرائه!"
"Volo.AbpIo.Commercial:030011": "لا يمكنك حذف ترخيص تجريبي عند شرائه!",
"MoveWaitList": "الانتقال إلى قائمة الانتظار",
"CommunityLinkTitle": "افتح على موقع المجتمع",
"CommunityLink": "رابط المجتمع",
"ReloadFromSource": "إعادة التحميل من المصدر",
"ReloadFromSourceConfirmationMessage": "سيتم تحديث هذه المشاركة من \"{0}\". هل تريد الاستمرار؟"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/cs.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "Datum nákupu lze nastavit pouze ve stavu Zakoupeno!",
"Volo.AbpIo.Commercial:030009": "Uživatel nenalezen!",
"Volo.AbpIo.Commercial:030010": "Chcete-li zakoupit zkušební licenci, musíte nejprve aktivovat zkušební licenci!",
"Volo.AbpIo.Commercial:030011": "Po zakoupení zkušební licence nelze odstranit!"
"Volo.AbpIo.Commercial:030011": "Po zakoupení zkušební licence nelze odstranit!",
"MoveWaitList": "Přejít na čekací listinu",
"CommunityLinkTitle": "Otevřít na webu komunity",
"CommunityLink": "Odkaz na komunitu",
"ReloadFromSource": "Znovu načíst ze zdroje",
"ReloadFromSourceConfirmationMessage": "Tento příspěvek bude obnoven z „{0}“. Chceš pokračovat?"
}
}

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

@ -452,6 +452,11 @@
"WhoWeAreItem": "Who We Are Item",
"FieldIsRequired": "{0} is required.",
"FieldIsNotValid": " {0} is not valid.",
"InterestedLicenseType": "Interested License Type"
"InterestedLicenseType": "Interested License Type",
"MoveWaitList": "Move to wait list",
"CommunityLinkTitle": "Open on the community website",
"CommunityLink": "Community Link",
"ReloadFromSource": "Reload From the Source",
"ReloadFromSourceConfirmationMessage": "This post will be refreshed from \"{0}\". Do you want to continue?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/fi.json

@ -452,6 +452,11 @@
"WhoWeAreItem": "Keitä me olemme -tuote",
"FieldIsRequired": "{0} vaaditaan.",
"FieldIsNotValid": " {0} ei kelpaa.",
"InterestedLicenseType": "Kiinnostunut lisenssityyppi"
"InterestedLicenseType": "Kiinnostunut lisenssityyppi",
"MoveWaitList": "Siirrä jonotuslistalle",
"CommunityLinkTitle": "Avaa yhteisön verkkosivuilla",
"CommunityLink": "Yhteisön linkki",
"ReloadFromSource": "Lataa uudelleen lähteestä",
"ReloadFromSourceConfirmationMessage": "Tämä viesti päivitetään kohteesta \"{0}\". Haluatko jatkaa?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/fr.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "La date d'achat ne peut être définie que lorsque le statut est Acheté !",
"Volo.AbpIo.Commercial:030009": "Utilisateur non trouvé!",
"Volo.AbpIo.Commercial:030010": "Pour acheter la licence d'essai, vous devez d'abord activer votre licence d'essai !",
"Volo.AbpIo.Commercial:030011": "Vous ne pouvez pas supprimer une licence d'essai lorsqu'elle est achetée !"
"Volo.AbpIo.Commercial:030011": "Vous ne pouvez pas supprimer une licence d'essai lorsqu'elle est achetée !",
"MoveWaitList": "Passer à la liste d'attente",
"CommunityLinkTitle": "Ouvert sur le site communautaire",
"CommunityLink": "Lien communautaire",
"ReloadFromSource": "Recharger à partir de la source",
"ReloadFromSourceConfirmationMessage": "Ce message sera actualisé à partir de \"{0}\". Voulez-vous continuer?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/hi.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "खरीद की तारीख तभी निर्धारित की जा सकती है जब स्थिति खरीदी गई हो!",
"Volo.AbpIo.Commercial:030009": "उपयोगकर्ता नहीं मिला!",
"Volo.AbpIo.Commercial:030010": "परीक्षण लाइसेंस खरीदने के लिए, पहले आपको अपना परीक्षण लाइसेंस सक्रिय करना होगा!",
"Volo.AbpIo.Commercial:030011": "जब आप एक परीक्षण लाइसेंस खरीदा जाता है तो आप उसे हटा नहीं सकते हैं!"
"Volo.AbpIo.Commercial:030011": "जब आप एक परीक्षण लाइसेंस खरीदा जाता है तो आप उसे हटा नहीं सकते हैं!",
"MoveWaitList": "प्रतीक्षा सूची में ले जाएँ\n",
"CommunityLinkTitle": "सामुदायिक वेबसाइट पर खोलें",
"CommunityLink": "सामुदायिक लिंक",
"ReloadFromSource": "स्रोत से पुनः लोड करें",
"ReloadFromSourceConfirmationMessage": "यह पोस्ट \"{0}\" से ताज़ा की जाएगी। क्या आप जारी रखना चाहते हैं?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/it.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "La data di acquisto può essere impostata solo quando lo stato è Acquistato!",
"Volo.AbpIo.Commercial:030009": "Utente non trovato!",
"Volo.AbpIo.Commercial:030010": "Per acquistare la licenza di prova, devi prima attivare la tua licenza di prova!",
"Volo.AbpIo.Commercial:030011": "Non è possibile eliminare una licenza di prova al momento dell'acquisto!"
"Volo.AbpIo.Commercial:030011": "Non è possibile eliminare una licenza di prova al momento dell'acquisto!",
"MoveWaitList": "Passa alla lista d'attesa",
"CommunityLinkTitle": "Apri sul sito web della comunità",
"CommunityLink": "Collegamento comunitario",
"ReloadFromSource": "Ricarica dalla sorgente",
"ReloadFromSourceConfirmationMessage": "Questo post verrà aggiornato da \"{0}\". Volete continuare?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/sl.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "Datum nakupa je mogoče nastaviti samo, če je status Kupljeno!",
"Volo.AbpIo.Commercial:030009": "Uporabnik ni najden!",
"Volo.AbpIo.Commercial:030010": "Za nakup preizkusne licence morate najprej aktivirati preizkusno licenco!",
"Volo.AbpIo.Commercial:030011": "Preskusne licence ne morete izbrisati, ko je kupljena!"
"Volo.AbpIo.Commercial:030011": "Preskusne licence ne morete izbrisati, ko je kupljena!",
"MoveWaitList": "Presuňte sa na zoznam čakateľov",
"CommunityLinkTitle": "Otvorte na webovej stránke komunity",
"CommunityLink": "Odkaz na komunitu",
"ReloadFromSource": "Znovu načítať zo zdroja",
"ReloadFromSourceConfirmationMessage": "Tento príspevok bude obnovený z „{0}“. Chceš pokračovať?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json

@ -412,6 +412,11 @@
"CustomPaymentFlexSwitchDescription": "Lisanslı",
"AllowFeatureUpgradeOnLicenseExpire": "Lisans süresi dolunca özellik yükseltmesine izin ver",
"Deleted{0}": "[{0} silindi]",
"Permission:BookDiscount": "Kitap indirimleri"
"Permission:BookDiscount": "Kitap indirimleri",
"MoveWaitList": "Bekleme listesine geç",
"CommunityLinkTitle": "Topluluk web sitesinde açın",
"CommunityLink": "Topluluk Bağlantısı",
"ReloadFromSource": "Kaynaktan Yeniden Yükle",
"ReloadFromSourceConfirmationMessage": "Bu gönderi \"{0}\" adresinden yenilenecek. Devam etmek istiyor musun?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json

@ -452,6 +452,11 @@
"WhoWeAreItem": "关于我们",
"FieldIsRequired": "{0}是必须的。",
"FieldIsNotValid": "{0}是无效的。",
"InterestedLicenseType": "感兴趣的许可证类型"
"InterestedLicenseType": "感兴趣的许可证类型",
"MoveWaitList": "移至候补名单",
"CommunityLinkTitle": "在社区网站上打开",
"CommunityLink": "在社区网站上打开",
"ReloadFromSource": "从源重新加载",
"ReloadFromSourceConfirmationMessage": "此帖子将从“{0}”刷新。 你想继续吗?"
}
}

7
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hant.json

@ -348,6 +348,11 @@
"Volo.AbpIo.Commercial:030008": "購買日期只能在狀態為已購買時設置!",
"Volo.AbpIo.Commercial:030009": "未找到用戶!",
"Volo.AbpIo.Commercial:030010": "要購買試用許可證,首先您需要激活您的試用許可證!",
"Volo.AbpIo.Commercial:030011": "購買試用許可證後,您無法刪除它!"
"Volo.AbpIo.Commercial:030011": "購買試用許可證後,您無法刪除它!",
"MoveWaitList": "移至候补名单",
"CommunityLinkTitle": "在社区网站上打开",
"CommunityLink": "社区链接",
"ReloadFromSource": "從源重新加載",
"ReloadFromSourceConfirmationMessage": "此帖子將從“{0}”刷新。 你想繼續嗎?"
}
}

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

@ -28,6 +28,7 @@
"Volo.AbpIo.Domain:030011": "You cannot delete a trial license when it is purchased!",
"Volo.AbpIo.Domain:030012": "A user is entitled to have only 1 free trial period. You already used your trial license.",
"Volo.AbpIo.Domain:030013": "A user with an active license cannot start a trial license.",
"Volo.AbpIo.Domain:040000": "Telemetry already exists!.",
"Volo.AbpIo.Domain:070000": "The organization name can only contain latin letters, numbers, dots and hyphens!",
"Volo.AbpIo.Domain:070001": "The company name can only contain latin letters, numbers, dots, space and hyphens!",
"WantToLearn?": "Want to learn?",
@ -178,6 +179,7 @@
"BuyNewLicenseBetweenDatesToGetBenefit": "Buy a new license between {0} and {1} to get benefit for extra 2 months!",
"CheckAllCommunityTalks": "Check All Community Posts",
"ReadMore": "Read More",
"ContinueReading": "Continue Reading",
"Post": "Post",
"ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "Explore the contents created by the core ABP team and the ABP community.",
"WelcomeFallCampaign": "Welcome Fall Campaign!",

16
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/tr.json

@ -22,17 +22,13 @@
"Features": "Özellikler",
"GetStarted": "Başlayın",
"Documents": "Dokümanlar",
"Community": "Topluluk",
"ContributionGuide": "Katkı Rehberi",
"Blog": "Blog",
"Commercial": "Ticari",
"MyAccount": "Hesabım",
"Permission:License": "Lisans",
"Permission:UserInfo": "kullanıcı bilgisi",
"SeeDocuments": "Dokümanlara Göz Atın",
"Samples": "örnekler",
"Framework": "Çerçeve",
"Support": "Destek",
"Samples": "Örnekler",
"FreeDDDBook": "Ücretsiz DDD Kitabı",
"New": "Yeni",
"Volo.AbpIo.Domain:020005": "Lisans uzatma yılı {MinExtendLicenseYear} yıldan az {MaxExtendLicenseYear} yıldan fazla olamaz.",
@ -96,7 +92,7 @@
"MySupportQuestions": "Destek Sorularım",
"MyProfile": "Profilim",
"Logout": "Çıkış Yap",
"Home": "Ev",
"Home": "Ana Sayfa",
"Posts": "Gönderiler",
"JoinTheABPCommunity": "ABP Topluluğuna Katılın",
"SubmitYourPost": "Gönderinizi Gönderin",
@ -166,6 +162,12 @@
"ABPCommunityTalks": "ABP Topluluk Konuşmaları",
"ABPCommunityPosts": "ABP Topluluk Gönderileri",
"WelcomeFallCampaign": "Hoş Geldin Sonbahar Kampanyası!",
"GiveAwayForNewPurchases": "Yeni alımlar için Uygulama Geliştirme Sınıfı Eğitimi hediye edilecektir!"
"GiveAwayForNewPurchases": "Yeni alımlar için Uygulama Geliştirme Sınıfı Eğitimi hediye edilecektir!",
"ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "ABP ekibi ve ABP topluluğu tarafından oluşturulan içerikleri keşfedin.",
"CheckAllCommunityTalks": "Tüm Topluluk Gönderilerine Göz Atın",
"ExploreTheBook": "Kitabı Keşfedin",
"ExploreTheEBook": "E-Kitabı Keşfedin",
"LatestVideos": "Son Videolar",
"Videos": "Videolar"
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "هل يمكنني تغيير المطورين المسجلين لمنظمتي في المستقبل؟",
"ChangingDevelopersExplanation": "بالإضافة إلى إضافة مطورين جدد إلى الترخيص الخاص بك ، يمكنك أيضًا تغيير المطورين الحاليين (يمكنك إزالة مطور وإضافة مطور جديد إلى نفس المقعد) دون أي تكلفة إضافية.",
"WhenShouldIRenewMyLicense": "متى يجب أن أجدد رخصتي؟",
"WhenShouldIRenewMyLicenseExplanation": "إذا قمت بتجديد ترخيصك في غضون <strong> شهر واحد </ strong> بعد انتهاء صلاحية ترخيصك ، فسيتم تطبيق الخصومات التالية: ترخيص الفريق {0}؛ رخصة تجارية {1} ؛ ترخيص المؤسسة {2}. ومع ذلك ، إذا جددت ترخيصك بعد <strong> شهر واحد </ strong> من تاريخ انتهاء صلاحية الترخيص ، فسيكون سعر التجديد هو نفسه سعر شراء الترخيص ولن يكون هناك خصم على التجديد.",
"WhenShouldIRenewMyLicenseExplanation": "إذا قمت بتجديد ترخيصك في غضون <strong> {3} يوما</ strong> بعد انتهاء صلاحية رخصتك ، فسيتم تطبيق الخصومات التالية: رخصة الفريق {0}؛ الرخصة التجارية {1} ؛ رخصة المؤسسة {2}. ومع ذلك ، إذا جددت رخصتك بعد <strong>{3} يوما </ strong> من تاريخ انتهاء صلاحية الرخصة ، فسيكون سعر التجديد هو نفسه سعر شراء الرخصة ولن يكون هناك خصم على التجديد.",
"TrialPlan": "هل لديك خطة تجريبية؟",
"DoYouAcceptBankWireTransfer": "هل تقبل التحويل البنكي؟",
"DoYouAcceptBankWireTransferExplanation": "نعم ، نحن نقبل التحويل البنكي. <br /> بعد إرسال رسوم الترخيص عبر التحويل المصرفي ، أرسل لنا بريدًا إلكترونيًا على accounting@abp.io إيصالك ونوع الترخيص المطلوب. معلومات حسابنا المصرفي الدولي:",
@ -515,6 +515,7 @@
"Pricing_Page_Testimonial_3": "نحن نحب ABP. ليس علينا كتابة كل شيء من الصفر. نبدأ من الميزات الجاهزة ونركز فقط على ما نحتاج حقًا إلى كتابته. أيضًا ، ABP مصمم جيدًا والشفرة عالية الجودة مع عدد أقل من الأخطاء. إذا كان علينا كتابة كل ما نحتاجه بمفردنا ، فقد نضطر إلى قضاء سنوات. مرة أخرى نحب أن الإصدار الجديد ، أو إصلاح المشكلة ، أو التحسين يأتي قريبًا جدًا كل أسبوعين. نحن لا ننتظر طويلا.",
"Pricing_Page_Testimonial_4": "ABP التجاري منتج رائع يوصى به. تسويق المنتجات التجارية لعملائنا في منصة واحدة قابلة للتكوين. البداية السريعة التي يوفرها إطار العمل والأدوات لأي فريق تستحق كل سنت. كانت ABP هي الأنسب لاحتياجاتنا.",
"Pricing_Page_Testimonial_5": "إطار عمل ABP ليس مجرد إطار عمل ، ولكنه أيضًا دليل لتطوير / إدارة المشروع ، لأنه يوفر تدريب DDD و GenericRepository و DI و Microservice و Modularity. حتى إذا كنت لن تستخدم الإطار نفسه ، يمكنك تطوير نفسك باستخدام docs.abp.io المُعد جيدًا ومهنيًا (OpenIdict و Redis و Quartz وما إلى ذلك). نظرًا لأن العديد من الأشياء مبنية مسبقًا ، فإنها تقصر وقت تطوير المشروع بشكل كبير (مثل صفحة تسجيل الدخول ، ومعالجة الاستثناءات ، وتصفية البيانات ، والبذر ، وتسجيل التدقيق ، والترجمة ، ووحدة التحكم في واجهة برمجة التطبيقات التلقائية ، وما إلى ذلك). كمثال من تطبيقنا ، لقد استخدمت Local Event Bus للتحكم في المخزون. لذلك ، أنا قادر على إدارة حركات الأوامر عن طريق كتابة معالج الأسهم. إنه لأمر رائع ألا تضيع الوقت من أجل CreationTime ، CreatorId. يتم ملؤها تلقائيًا.",
"Pricing_Page_Testimonial_6": "إطار عمل ABP هو إطار عمل جيد ولكنه يحتاج إلى وقت لفهم الطبقات والفئات والمكتبات المختلفة التي يستخدمها (خاصة ABP). قضيت الكثير من الوقت في قراءة قاعدة الكود ، لكن ABP Commercial توفر لنا الوقت لإنشاء كيانات تخصص المشروع (AR) والمستودع المرتبط بكل منها. أعجبني أيضًا أن النهج المستخدم في ABP ناضج جدًا ، ونعلم أنه يعتمد على DDD و monolith.",
"AbpBookDownloadArea_ClaimYourEBook": "احصل على كتاب <span class='gradient-framework'>إتقان إطار عمل ABP</span> الالكتروني الخاص بك",
"AddMemberModal_Warning_1": "اذا كان <strong>المستخدم</strong> الذي تحاول اضافته لا يوجد في النظام, يرجى مطالبة عضو فريقك بالتسجيل في <a href='{0}/Account/Register'>{0}</a> ومشاركة اسم المستخدم الخاص بحسابه معك.",
"MyOrganizations_Detail_WelcomeMessage": "مرحبًا بك في مؤسستك، {0}",
@ -780,7 +781,7 @@
"SupportPolicyFaqTitle": "ما هي سياسة الدعم الخاصة بك؟",
"SupportPolicyFaqExplanation": "نحن ندعم فقط الإصدار الرئيسي النشط والسابق. لا نضمن إصدار تصحيح للإصدارات الرئيسية الثالثة والأقدم. على سبيل المثال ، إذا كان الإصدار النشط هو 7.0.0 ، فسنصدر إصدارات تصحيح لكل من 6.x.x و 7.x.x. إلى جانب ذلك ، نحن نقدم الدعم فقط لإطار عمل ABP والقضايا التجارية المتعلقة بـ ABP. هذا يعني أنه لا يتم تقديم أي دعم لتطبيقات الطرف الثالث والخدمات السحابية والمكتبات الطرفية الأخرى التي تستخدمها منتجات ABP. سنبذل جهودًا معقولة تجاريًا لتزويد عملائنا بالدعم الفني خلال ساعات العمل الرسمية لـ \"Volosoft Bilisim A.S\". من ناحية أخرى ، نحن لا نلتزم بوقت استجابة اتفاقية مستوى الخدمة (SLA) ، لكننا سنحاول الرد على المشكلات الفنية في أسرع وقت ممكن خلال ساعات العمل الرسمية لدينا. ما لم يتم إبرام اتفاقية خاصة مع العميل ، فإننا نقدم الدعم فقط على https://support.abp.io. لدينا أيضًا دعم خاص بالبريد الإلكتروني ، وهو متاح فقط لحاملي تراخيص المؤسسة.",
"WhyUseAbpIoPlatform": "لماذا يجب علي استخدام منصة ABP.IO بدلاً من إنشاء حل جديد من البداية؟",
"WhyUseAbpIoPlatformFaqExplanation": "انظر الى <a href=\"https://docs.abp.io/en/commercial/latest/why-abp-io-platform \"> هذا المستند </a> للحصول على شرح مفصل لسبب استخدام ABP.IO Platform لفائدته الكبيرة بدلًا من القيام بكل شيء بنفسك.",
"WhyUseAbpIoPlatformFaqExplanation": "انظر الى <a href=\"https://docs.abp.io/en/commercial/latest/why-abp-io-platform \"> هذا المستند </a> للحصول على شرح مفصل لسبب استخدام ABP.IO Platform لفائدته الكبيرة بدلًا من القيام بكل شيء بنفسك.",
"EulaPageTitle": "اتفاقية ترخيص المستخدم النهائي (EULA)",
"PrivacyPolicyPageTitle": "سياسة الخصوصية - سياسة ملفات تعريف الارتباط",
"TermsConditionsPageTitle": "الأحكام والشروط",

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Mohu v budoucnu změnit registrované vývojáře své organizace?",
"ChangingDevelopersExplanation": "Kromě přidání nových vývojářů do vaší licence můžete také změnit stávající vývojáře (můžete odebrat vývojáře a přidat nového na stejné místo) bez jakýchkoli dalších nákladů.",
"WhenShouldIRenewMyLicense": "Kdy bych měl obnovit licenci?",
"WhenShouldIRenewMyLicenseExplanation": "Pokud si licenci obnovíte do <strong>1 měsíce</strong> po vypršení platnosti licence, budou uplatněny následující slevy: Týmová licence {0}; Obchodní licence {1}; Enterprise Licence {2}. Pokud však licenci obnovíte po <strong>1 měsíci</strong> od data vypršení platnosti vaší licence, cena za obnovení bude stejná jako cena za zakoupení licence a na obnovení nebude poskytnuta žádná sleva.",
"WhenShouldIRenewMyLicenseExplanation": "Pokud si licenci obnovíte do <strong>{3} dní</strong> po vypršení platnosti licence, budou uplatněny následující slevy: Týmová licence {0}; Obchodní licence {1}; Enterprise Licence {2}. Pokud však licenci obnovíte po <strong>{3} měsíci</strong> od data vypršení platnosti vaší licence, cena za obnovení bude stejná jako cena za zakoupení licence a na obnovení nebude poskytnuta žádná sleva.",
"TrialPlan": "Máte zkušební plán?",
"DoYouAcceptBankWireTransfer": "Přijímáte bankovní převod?",
"DoYouAcceptBankWireTransferExplanation": "Ano, přijímáme bankovní převod.<br />Po zaslání licenčního poplatku bankovním převodem nám zašlete e-mail na adresu accounting@abp.io potvrzení a požadovaný typ licence. Informace o našem mezinárodním bankovním účtu:",
@ -399,9 +399,8 @@
"WhatHappensWhenLicenseEndsExplanation4": "Po skončení platnosti licence nelze instalovat nové moduly a motivy přidané do platformy ABP Commercial.",
"WhatHappensWhenLicenseEndsExplanation5": "Sadu ABP Suite nelze použít.",
"WhatHappensWhenLicenseEndsExplanation6": "Již nelze získat <a href=\"{0}\">prémiovou podporu</a>.",
"WhatHappensWhenLicenseEndsExplanation7": "Pokud chcete i nadále využívat tyto výhody, můžete svou licenci prodloužit (obnovit). Pokud prodloužíte licenci do <strong>1 měsíce</strong> po vypršení platnosti licence, budou uplatněny následující slevy: Týmová licence {0}; Obchodní licence {1}; Enterprise Licence {2}.",
"WhatHappensWhenLicenseEndsExplanation7": "Pokud chcete i nadále využívat tyto výhody, můžete svou licenci prodloužit (obnovit). Pokud prodloužíte licenci do <strong>{3} dní</strong> po vypršení platnosti licence, budou uplatněny následující slevy: Týmová licence {0}; Obchodní licence {1}; Enterprise Licence {2}.",
"BlazoriseLicense": "Musíme si koupit licenci Blazorise?",
"BlazoriseLicenseExplanation": "Máme dohodu mezi společnostmi Volosoft a Megabit, na základě této dohody je licence Blazorise přibalena k produktům ABP Commercial, proto si naši zákazníci nemusí kupovat další licenci Blazorise."
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Kann ich die registrierten Entwickler meiner Organisation in Zukunft ändern?",
"ChangingDevelopersExplanation": "Sie können nicht nur neue Entwickler zu Ihrer Lizenz hinzufügen, sondern auch die vorhandenen Entwickler ändern (Sie können einen Entwickler entfernen und einen neuen zum selben Arbeitsplatz hinzufügen) ohne zusätzliche Kosten.",
"WhenShouldIRenewMyLicense": "Wann sollte ich meine Lizenz erneuern?",
"WhenShouldIRenewMyLicenseExplanation": "Wenn Sie Ihre Lizenz innerhalb von <strong>1 Monat</strong> nach Ablauf Ihrer Lizenz erneuern, werden die folgenden Rabatte gewährt: Team-Lizenz {0}% Rabatt, Business-Lizenz {1}% Rabatt, Enterprise-Lizenz {2}% Rabatt . Wenn Sie Ihre Lizenz <strong>1 Monat</strong> nach dem Ablaufdatum Ihrer Lizenz verlängern, entspricht der Verlängerungspreis dem Lizenzkaufpreis und es wird kein Rabatt auf Ihre Verlängerung gewährt.",
"WhenShouldIRenewMyLicenseExplanation": "Wenn Sie Ihre Lizenz innerhalb von <strong>{3} Tage</strong> nach Ablauf Ihrer Lizenz erneuern, werden die folgenden Rabatte gewährt: Team-Lizenz {0}% Rabatt, Business-Lizenz {1}% Rabatt, Enterprise-Lizenz {2}% Rabatt . Wenn Sie Ihre Lizenz <strong>{3} Tage</strong> nach dem Ablaufdatum Ihrer Lizenz verlängern, entspricht der Verlängerungspreis dem Lizenzkaufpreis und es wird kein Rabatt auf Ihre Verlängerung gewährt.",
"TrialPlan": "Hast du einen Probeplan?",
"DoYouAcceptBankWireTransfer": "Akzeptieren Sie Banküberweisungen?",
"DoYouAcceptBankWireTransferExplanation": "Ja, wir akzeptieren Banküberweisungen.<br />Nachdem Sie die Lizenzgebühr per Banküberweisung gesendet haben, senden Sie uns Ihre Quittung und den gewünschten Lizenztyp per E-Mail an accounting@abp.io. Unsere internationale Bankverbindung:",

12
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json

@ -202,11 +202,11 @@
"WhatHappensWhenLicenseEndsExplanation4": "You can not install new modules and themes added to the ABP Commercial platform after your license ends.",
"WhatHappensWhenLicenseEndsExplanation5": "You can not use the ABP Suite.",
"WhatHappensWhenLicenseEndsExplanation6": "You can not get the <a href=\"{0}\">premium support</a> anymore.",
"WhatHappensWhenLicenseEndsExplanation7": "You can extend (renew) your license if you want to continue getting these benefits. If you extend your license within <strong>1 month</strong> after your license expires, the following discounts will be applied: Team License {0}; Business License {1}; Enterprise License {2}.",
"WhatHappensWhenLicenseEndsExplanation7": "You can extend (renew) your license if you want to continue getting these benefits. If you extend your license within <strong>{3} days</strong> after your license expires, the following discounts will be applied: Team License {0}; Business License {1}; Enterprise License {2}.",
"discountForYears": "{0}% discount for {1} year(s)",
"WhatHappensWhenLicenseEndsExplanation8": "The ABP projects you generated are not stored on our servers. Therefore, it is your responsibility to keep the source code you download. When your license expires, there's no way to get your generated ABP project source code.",
"WhenShouldIRenewMyLicense": "When should I renew my license?",
"WhenShouldIRenewMyLicenseExplanation": "If you renew your license within <strong>1 month</strong> after your license expires, the following discounts will be applied: Team License {0}; Business License {1}; Enterprise License {2}. However, if you renew your license after <strong>1 month</strong> since the expiry date of your license, the renewal price will be the same as the license purchase price and there will be no discount on your renewal.",
"WhenShouldIRenewMyLicenseExplanation": "If you renew your license within <strong>{3} days</strong> after your license expires, the following discounts will be applied: Team License {0}; Business License {1}; Enterprise License {2}. However, if you renew your license after <strong>{3} days</strong> since the expiry date of your license, the renewal price will be the same as the license purchase price and there will be no discount on your renewal.",
"TrialPlan": "Do you have a trial plan?",
"TrialPlanExplanation": "No, there is no trial version for ABP Commercial. You can check the community edition to understand the code quality and approaches. We also offer a 30-day money-back guarantee for the Team license, no questions asked! You can request a refund within the first 30 days. We provide a 60% refund within 30 days for Business and Enterprise licenses. This is because the Business and Enterprise licenses contain the full source-code of all the modules and themes.",
"DoYouAcceptBankWireTransfer": "Do you accept bank wire transfers?",
@ -537,6 +537,7 @@
"Pricing_Page_Testimonial_3": "We love ABP. We don't have to write everything from scratch. We start from out-of-the-box features and just focus on what we really need to write. Also, ABP is well-architected and the code is high quality with fewer bugs. If we would have to write everything we needed on our own, we might have to spend years. Once more things we like is that the new version, or issue fixing, or improvement come out very soon every other week. We don't wait too long.",
"Pricing_Page_Testimonial_4": "ABP Commercial is a fantastic product would recommend. Commercial products to market for our customers in a single configurable platform. The jump start that the framework and tooling provide any team is worth every cent. ABP Commercial was the best fit for our needs.",
"Pricing_Page_Testimonial_5": "ABP Framework is not only a framework, but it is also a guide for project development/management, because it provides DDD, GenericRepository, DI, Microservice, and Modularity training. Even if you are not going to use the framework itself, you can develop yourself with docs.abp.io which is well and professionally prepared (OpenIddict, Redis, Quartz etc.). Because many things are pre-built, it shortens project development time significantly (Such as login page, exception handling, data filtering, seeding, audit logging, localization, auto API controller etc.). As an example from our application, I have used Local Event Bus for stock control. So, I am able to manage order movements by writing stock handler. It is wonderful not to lose time for CreationTime, CreatorId. They are being filled automatically.",
"Pricing_Page_Testimonial_6": "ABP Framework is a good framework but it needs time to understand the different layers, classes, and libraries it used (specially ABP). I spent a lot of time reading the code base, but ABP Commercial save us time to create the project specialty entities (AR) and the repository linked to each of them. I liked also the approach used in ABP is very mature, we know is based on DDD and monolith.",
"AbpBookDownloadArea_ClaimYourEBook": "Claim your <span class='gradient-framework'>Mastering ABP Framework</span> E-Book",
"AddMemberModal_Warning_1": "If the <strong>username</strong> you are trying to add doesn't exist in the system, please ask your team member to register on <a href='{0}/Account/Register'>{0}</a> and share the username of his/her account with you.",
"MyOrganizations_Detail_WelcomeMessage": "Welcome to your organization, {0}",
@ -759,6 +760,7 @@
"ViewLiveDemo": "View Live Theme Demo",
"GetLeptonX": "Get LeptonX Now",
"SeeLeptonXDocumentation": "See LeptonX Documentation",
"SeeLeptonDocumentation": "See Lepton Documentation",
"SimplifiedMenu": "Simplified menu",
"SimplifiedMenuDescription": "You can easily find the page you are looking for by filtering the menu",
"YourFavoritePages": "Your favorite pages at your reach",
@ -825,6 +827,10 @@
"PrivacyPolicyPageTitle": "Privacy Policy - Cookie Policy",
"TermsConditionsPageTitle": "Terms and Conditions",
"TrainingsPageTitle": "ABP Training Packages",
"ModulesPageTitle": "ABP Pre-Built Application Modules"
"ModulesPageTitle": "ABP Pre-Built Application Modules",
"Volo.AbpIo.Commercial:040001": "API Access Key is incorrect.",
"GetLepton": "Get Lepton Now",
"MyOrganizations_Detail_LicenseStartDate": "License Start Date",
"MyOrganizations_Detail_LicenseExpiryDate": "Expiry Date"
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "¿Puedo cambiar los desarrolladores registrados de mi organización en el futuro?",
"ChangingDevelopersExplanation": "Además de agregar nuevos desarrolladores a su licencia, también puede cambiar los desarrolladores existentes (puede eliminar un desarrollador y agregar uno nuevo al mismo puesto) sin ningún costo adicional.",
"WhenShouldIRenewMyLicense": "¿Cuándo debo renovar mi licencia?",
"WhenShouldIRenewMyLicenseExplanation": "Si renueva su licencia dentro de <strong> 1 mes </strong> después de su vencimiento, se aplicarán los siguientes descuentos: Licencia de equipo {0}% de descuento, Licencia comercial {1}% de descuento, Licencia empresarial {2}% de descuento . Si renueva su licencia <strong> 1 mes </strong> después de la fecha de vencimiento de su licencia, el precio de renovación será el mismo que el precio de compra de la licencia y no habrá descuento en su renovación.",
"WhenShouldIRenewMyLicenseExplanation": "Si renueva su licencia dentro de <strong> {3} dias </strong> después de su vencimiento, se aplicarán los siguientes descuentos: Licencia de equipo {0}% de descuento, Licencia comercial {1}% de descuento, Licencia empresarial {2}% de descuento . Si renueva su licencia <strong> {3} dias </strong> después de la fecha de vencimiento de su licencia, el precio de renovación será el mismo que el precio de compra de la licencia y no habrá descuento en su renovación.",
"TrialPlan": "¿Tiene un plan de prueba?",
"DoYouAcceptBankWireTransfer": "¿Aceptan transferencia bancaria?",
"DoYouAcceptBankWireTransferExplanation": "Sí, aceptamos transferencia bancaria. <br /> Después de enviar la tarifa de la licencia mediante transferencia bancaria, envíenos un correo electrónico a accounting@abp.io con su recibo y el tipo de licencia solicitada. Nuestra información de cuenta bancaria internacional:",

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

@ -202,7 +202,7 @@
"WhatHappensWhenLicenseEndsExplanation4": "Et voi asentaa uusia moduuleja ja teemoja, jotka on lisätty ABP Commercial -alustaan lisenssisi päätyttyä.",
"WhatHappensWhenLicenseEndsExplanation5": "Et voi käyttää ABP Suitea.",
"WhatHappensWhenLicenseEndsExplanation6": "Et voi enää saada <a href=\"{0}\">premium-tukea</a>.",
"WhatHappensWhenLicenseEndsExplanation7": "Voit jatkaa (uusia) lisenssiäsi, jos haluat jatkaa näiden etujen saamista. Jos jatkat lisenssiäsi <strong>yhden kuukauden</strong> kuluessa lisenssin vanhenemisesta, seuraavat alennukset sovelletaan: Tiimilisenssi {0}; Toimilupa {1}; Yrityslisenssi {2}.",
"WhatHappensWhenLicenseEndsExplanation7": "Voit jatkaa (uusia) lisenssiäsi, jos haluat jatkaa näiden etujen saamista. Jos jatkat lisenssiäsi <strong>{3} päivää</strong> kuluessa lisenssin vanhenemisesta, seuraavat alennukset sovelletaan: Tiimilisenssi {0}; Toimilupa {1}; Yrityslisenssi {2}.",
"discountForYears": "{0}% de remise pendant {1} an(s)",
"WhatHappensWhenLicenseEndsExplanation8": "Luomiasi ABP-projekteja ei tallenneta palvelimillemme. Siksi on sinun vastuullasi säilyttää lataamasi lähdekoodi. Kun lisenssisi vanhenee, luotua ABP-projektin lähdekoodia ei ole mahdollista saada.",
"WhenShouldIRenewMyLicense": "Milloin minun pitäisi uusia lisenssini?",
@ -537,6 +537,7 @@
"Pricing_Page_Testimonial_3": "Rakastamme ABP:tä. Meidän ei tarvitse kirjoittaa kaikkea tyhjästä. Aloitamme valmiista ominaisuuksista ja keskitymme vain siihen, mitä todella tarvitsemme kirjoittaa. Lisäksi ABP on hyvin suunniteltu ja koodi on korkealaatuista ja siinä on vähemmän bugeja. Jos joutuisimme kirjoittamaan kaiken tarvitsemamme itse, joudumme ehkä viettämään vuosia. Jälleen kerran pidämme siitä, että uusi versio, ongelmankorjaus tai parannus ilmestyy hyvin pian joka toinen viikko. Emme odota liian kauan.",
"Pricing_Page_Testimonial_4": "ABP Commercial on loistava tuote, jota suosittelen. Kaupalliset tuotteet markkinoille asiakkaillemme yhdellä konfiguroitavalla alustalla. Kehyksen ja työkalujen tarjoama aloitus jokaiselle joukkueelle on jokaisen sentin arvoinen. ABP Commercial sopi parhaiten tarpeisiimme.",
"Pricing_Page_Testimonial_5": "ABP Framework ei ole vain viitekehys, vaan se on myös opas projektin kehittämiseen/hallintaan, koska se tarjoaa DDD-, GenericRepository-, DI-, Microservice- ja Modularity-koulutusta. Vaikka et itse käyttäisikään kehystä, voit kehittää itseäsi docs.abp.io:lla, joka on hyvin ja ammattimaisesti valmisteltu (OpenIddict, Redis, Quartz jne.). Koska monet asiat on rakennettu valmiiksi, se lyhentää projektin kehitysaikaa merkittävästi (kuten kirjautumissivu, poikkeusten käsittely, tietojen suodatus, kylvö, tarkastusloki, lokalisointi, automaattinen API-ohjain jne.). Esimerkkinä sovelluksestamme olen käyttänyt paikallista tapahtumaväylää varastonhallintaan. Pystyn siis hallitsemaan tilausliikkeitä kirjoittamalla varastokäsittelijäksi. On hienoa olla hukkaamatta aikaa CreationTimelle, CreatorId:lle. Ne täytetään automaattisesti.",
"Pricing_Page_Testimonial_6": "ABP Framework on hyvä kehys, mutta sen käyttämien eri kerrosten, luokkien ja kirjastojen (erityisesti ABP:n) ymmärtäminen vaatii aikaa. Käytin paljon aikaa koodikannan lukemiseen, mutta ABP Commercial säästää aikaa projektin erityiskokonaisuuksien (AR) ja kuhunkin niistä linkitetyn arkiston luomiseen. Pidin myös ABP:ssä käytetystä lähestymistavasta, joka on hyvin kypsä, sillä se perustuu DDD:hen ja monoliittisuuteen.",
"AbpBookDownloadArea_ClaimYourEBook": "Lunasta <span class='gradient-framework'>Mastering ABP Framework</span> -e-kirja",
"AddMemberModal_Warning_1": "Jos <strong>käyttäjätunnusta</strong>, jota yrität lisätä, ei ole järjestelmässä, pyydä tiimisi jäsentä rekisteröitymään osoitteessa <a href='{0}/Account/Register'>{0}</ a> ja jakaa hänen tilinsä käyttäjätunnus kanssasi.",
"MyOrganizations_Detail_WelcomeMessage": "Tervetuloa organisaatioosi, {0}",

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Puis-je changer les développeurs enregistrés de mon organisation à l'avenir?",
"ChangingDevelopersExplanation": "En plus d'ajouter de nouveaux développeurs à votre licence, vous pouvez également modifier les développeurs existants (vous pouvez supprimer un développeur et en ajouter un nouveau sur le même siège) sans aucun coût supplémentaire.",
"WhenShouldIRenewMyLicense": "Quand dois-je renouveler ma licence?",
"WhenShouldIRenewMyLicenseExplanation": "Si vous renouvelez votre licence dans <strong>1 mois</strong> après l'expiration de votre licence, les remises suivantes seront appliquées : licence d'équipe {0} ; licence commerciale {1} ; licence d'entreprise {2}. Toutefois, si vous renouveler votre licence après <strong>1 mois</strong> depuis la date d'expiration de votre licence, le prix de renouvellement sera le même que le prix d'achat de la licence et il n'y aura pas de remise sur votre renouvellement.",
"WhenShouldIRenewMyLicenseExplanation": "Si vous renouvelez votre licence dans <strong>{3} jours</strong> après l'expiration de votre licence, les remises suivantes seront appliquées : licence d'équipe {0} ; licence commerciale {1} ; licence d'entreprise {2}. Toutefois, si vous renouveler votre licence après <strong>{3} jours</strong> depuis la date d'expiration de votre licence, le prix de renouvellement sera le même que le prix d'achat de la licence et il n'y aura pas de remise sur votre renouvellement.",
"TrialPlan": "Avez-vous un plan d'essai?",
"DoYouAcceptBankWireTransfer": "Acceptez-vous les virements bancaires?",
"DoYouAcceptBankWireTransferExplanation": "Oui, nous acceptons les virements bancaires.<br />Après avoir envoyé les frais de licence par virement bancaire, envoyez-nous par e-mail à accounting@abp.io votre reçu et le type de licence demandé. Nos coordonnées bancaires internationales :",
@ -399,7 +399,7 @@
"WhatHappensWhenLicenseEndsExplanation4": "Vous ne pouvez pas installer les nouveaux modules et thèmes ajoutés à la plateforme ABP Commercial après l'expiration de votre licence.",
"WhatHappensWhenLicenseEndsExplanation5": "Vous ne pouvez pas utiliser la suite ABP.",
"WhatHappensWhenLicenseEndsExplanation6": "Vous ne pouvez plus bénéficier du <a href=\"{0}\">support premium</a>.",
"WhatHappensWhenLicenseEndsExplanation7": "Vous pouvez prolonger (renouveler) votre licence si vous souhaitez continuer à bénéficier de ces avantages. Si vous prolongez votre licence dans <strong>1 mois</strong> après l'expiration de votre licence, les remises suivantes seront appliquées : Licence d'équipe {0} ; Licence commerciale {1} ; Licence Entreprise {2}.",
"WhatHappensWhenLicenseEndsExplanation7": "Vous pouvez prolonger (renouveler) votre licence si vous souhaitez continuer à bénéficier de ces avantages. Si vous prolongez votre licence dans <strong>{3} jours</strong> après l'expiration de votre licence, les remises suivantes seront appliquées : Licence d'équipe {0} ; Licence commerciale {1} ; Licence Entreprise {2}.",
"BlazoriseLicense": "Faut-il acheter une licence Blazorise ?",
"BlazoriseLicenseExplanation": "Nous avons conclu un accord entre Volosoft et Megabit, dans le cadre duquel la licence Blazorise est intégrée aux produits ABP Commercial, de sorte que nos clients n'ont pas besoin d'acheter une licence Blazorise supplémentaire."
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "क्या मैं भविष्य में अपने संगठन के पंजीकृत डेवलपर्स को बदल सकता हूं?",
"ChangingDevelopersExplanation": "अपने लाइसेंस में नए डेवलपर्स को जोड़ने के अलावा, आप मौजूदा डेवलपर्स को भी बदल सकते हैं (आप एक डेवलपर को हटा सकते हैं और एक ही सीट पर एक नया जोड़ सकते हैं) बिना किसी अतिरिक्त लागत के।",
"WhenShouldIRenewMyLicense": "मुझे अपना लाइसेंस कब नवीनीकृत करना चाहिए?",
"WhenShouldIRenewMyLicenseExplanation": "यदि आप अपने लाइसेंस की समय सीमा समाप्त होने के बाद <strong>1 महीने</strong> के भीतर अपना लाइसेंस नवीनीकृत करते हैं, तो निम्नलिखित छूटें लागू होंगी: टीम लाइसेंस {0} ; व्यवसाय लाइसेंस {1} ; एंटरप्राइज़ लाइसेंस {2} . यदि आप अपने लाइसेंस की समाप्ति तिथि के बाद <strong>1 महीने</strong> अपने लाइसेंस का नवीनीकरण करते हैं, तो नवीनीकरण मूल्य लाइसेंस खरीद मूल्य के समान होगा और आपके नवीनीकरण पर कोई छूट नहीं होगी।",
"WhenShouldIRenewMyLicenseExplanation": "यदि आप अपने लाइसेंस की समय सीमा समाप्त होने के बाद <strong>{3} दिन</strong> के भीतर अपना लाइसेंस नवीनीकृत करते हैं, तो निम्नलिखित छूटें लागू होंगी: टीम लाइसेंस {0} ; व्यवसाय लाइसेंस {1} ; एंटरप्राइज़ लाइसेंस {2} . यदि आप अपने लाइसेंस की समाप्ति तिथि के बाद <strong>{3} दिन</strong> अपने लाइसेंस का नवीनीकरण करते हैं, तो नवीनीकरण मूल्य लाइसेंस खरीद मूल्य के समान होगा और आपके नवीनीकरण पर कोई छूट नहीं होगी।",
"TrialPlan": "क्या आपके पास एक परीक्षण योजना है?",
"DoYouAcceptBankWireTransfer": "क्या आप बैंक वायर ट्रांसफर स्वीकार करते हैं?",
"DoYouAcceptBankWireTransferExplanation": "हां, हम बैंक वायर ट्रांसफर स्वीकार करते हैं।<br />बैंक हस्तांतरण के माध्यम से लाइसेंस शुल्क भेजने के बाद, हमें अपनी रसीद और अनुरोधित लाइसेंस के प्रकार accounting@abp.io पर ईमेल करें। हमारे अंतरराष्ट्रीय बैंक खाते की जानकारी:",
@ -398,7 +398,7 @@
"WhatHappensWhenLicenseEndsExplanation4": "आपका लाइसेंस समाप्त होने के बाद आप ABP कमर्शियल प्लेटफॉर्म में जोड़े गए नए मॉड्यूल और थीम इंस्टॉल नहीं कर सकते।",
"WhatHappensWhenLicenseEndsExplanation5": "आप एबीपी सूट का उपयोग नहीं कर सकते।",
"WhatHappensWhenLicenseEndsExplanation6": "अब आप <a href=\"{0}\">प्रीमियम समर्थन</a> प्राप्त नहीं कर सकते।",
"WhatHappensWhenLicenseEndsExplanation7": "यदि आप इन लाभों को प्राप्त करना जारी रखना चाहते हैं तो आप अपने लाइसेंस का विस्तार (नवीनीकरण) कर सकते हैं। यदि आप अपना लाइसेंस समाप्त होने के बाद <strong>1 महीने</strong> के भीतर अपना लाइसेंस बढ़ाते हैं, तो निम्नलिखित छूट लागू होंगी: टीम लाइसेंस {0}; व्यवसाय लाइसेंस {1}; उद्यम लाइसेंस {2}।",
"WhatHappensWhenLicenseEndsExplanation7": "यदि आप इन लाभों को प्राप्त करना जारी रखना चाहते हैं तो आप अपने लाइसेंस का विस्तार (नवीनीकरण) कर सकते हैं। यदि आप अपना लाइसेंस समाप्त होने के बाद <strong>{3} दिन</strong> के भीतर अपना लाइसेंस बढ़ाते हैं, तो निम्नलिखित छूट लागू होंगी: टीम लाइसेंस {0}; व्यवसाय लाइसेंस {1}; उद्यम लाइसेंस {2}।",
"BlazoriseLicense": "क्या हमें ब्लेज़ोराइज़ लाइसेंस खरीदने की ज़रूरत है?",
"BlazoriseLicenseExplanation": "हमारे पास Volosoft और Megabit के बीच एक समझौता है, इस समझौते के साथ Blazorise लाइसेंस को ABP वाणिज्यिक उत्पादों के साथ बंडल किया गया है, इसलिए हमारे ग्राहकों को एक अतिरिक्त Blazorise लाइसेंस खरीदने की आवश्यकता नहीं है।"
}

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

@ -206,9 +206,9 @@
"discountForYears": "{0}% kedvezmény {1} évre",
"WhatHappensWhenLicenseEndsExplanation8": "Az Ön által generált ABP projekteket nem tároljuk a szervereinken. Ezért az Ön felelőssége a letöltött forráskód megőrzése. Amikor a licensze lejár, nincs mód a generált ABP projekt forráskódjának lekérésére.",
"WhenShouldIRenewMyLicense": "Mikor kell megújítanom a jogosítványomat?",
"WhenShouldIRenewMyLicenseExplanation": "Ha a licenc lejártát követő <strong>1 hónapon belül</strong> megújítja a licencet, a következő kedvezmények érvényesek: Csapatlicenc {0}; Üzleti engedély {1}; Vállalati licenc {2}. Ha azonban a licenc lejárati dátuma óta <strong>1 hónap</strong> után megújítja a licencet, a megújítási ár megegyezik a licenc vásárlási árával, és nem jár kedvezmény a megújításra.",
"WhenShouldIRenewMyLicenseExplanation": "Ha a licenc lejártát követő <strong>{3} nap</strong> megújítja a licencet, a következő kedvezmények érvényesek: Csapatlicenc {0}; Üzleti engedély {1}; Vállalati licenc {2}. Ha azonban a licenc lejárati dátuma óta <strong>1 hónap</strong> után megújítja a licencet, a megújítási ár megegyezik a licenc vásárlási árával, és nem jár kedvezmény a megújításra.",
"TrialPlan": "Van próbaterv?",
"TrialPlanExplanation": "14 napos próbaidővel rendelkezik az ABP Commercial csapat licenszéhez. További információért látogasson el <a href={0} target='_blank'>ide</a> . Továbbá a Team licenszekre 30 napos pénz-visszafizetési garanciát biztosítunk. Az első 30 napban csak visszatérítést kérhet. A Business és Enterprise licenszek esetén 30 napon belül 60%-os visszatérítést biztosítunk. Ennek az az oka, hogy a Business és Enterprise licenszek tartalmazzák az összes modul és téma teljes forráskódját.",
"TrialPlanExplanation": "Nem, az ABP Commercialhoz nincs próbaverzió. Tekintse meg a közösségi kiadást, hogy megértse a kód minőségét és megközelítéseit. A Team licencre 30 napos pénz-visszafizetési garanciát is vállalunk, kérdés nélkül! Az első 30 napon belül kérheti a visszatérítést. Üzleti és vállalati licencek esetén 60% visszatérítést biztosítunk 30 napon belül. Ennek az az oka, hogy a Business és Enterprise licencek tartalmazzák az összes modul és téma teljes forráskódját.",
"DoYouAcceptBankWireTransfer": "Elfogadja a banki átutalást?",
"DoYouAcceptBankWireTransferExplanation": "Igen, elfogadunk banki átutalást.<br />Miután banki átutalással elküldte a licencdíjat, küldje el nekünk e-mailben az accounting@abp.io címre nyugtát és a kért engedély típusát. Nemzetközi bankszámlánk információi:",
"HowToUpgrade": "Hogyan lehet frissíteni a meglévő alkalmazásokat, ha új verzió érhető el?",
@ -538,6 +538,7 @@
"Pricing_Page_Testimonial_3": "Szeretjük az ABP-t. Nem kell mindent a nulláról írnunk. A beépített funkciókból indulunk ki, és csak arra koncentrálunk, amit valóban meg kell írnunk. Ezenkívül az ABP jól felépített, és a kód kiváló minőségű, kevesebb hibával. Ha magunknak kellene megírnunk mindent, amire szükségünk van, akkor lehet, hogy éveket kellene töltenünk. Még egyszer, amit szeretünk, az az, hogy az új verzió, a hibajavítás vagy a fejlesztés nagyon hamar, minden második héten megjelenik. Nem várunk túl sokáig.",
"Pricing_Page_Testimonial_4": "Az ABP Commercial egy fantasztikus termék, amelyet ajánlunk. Kereskedelmi termékek, amelyeket ügyfeleink számára egyetlen konfigurálható platformon értékesíthetnek. Az ugrásszerű indítás, amelyet a keret és az eszközök biztosítanak bármely csapat számára, minden centet megér. Az ABP Commercial volt a legjobban megfelelő az igényeinknek.",
"Pricing_Page_Testimonial_5": "Az ABP Framework nem csak keretrendszer, hanem útmutató is a projektfejlesztéshez/menedzsmenthez, mert DDD, GenericRepository, DI, Microservice és Modularity képzést biztosít. Ha magát a keretrendszert nem is használja, fejlesztheti magát a docs.abp.io-val, amely jól és professzionálisan elkészített (OpenIddict, Redis, Quartz stb.) leírás. Mivel sok minden előre be van építve, jelentősen lerövidíti a projektfejlesztési időt (például bejelentkezési oldal, kivételkezelés, adatszűrés, aéapadatok, audit naplózás, lokalizáció, automatikus API vezérlő stb.). Alkalmazásunkból példaként a Helyi Event Bus-t használtam az állomány karbantartására. Így a rendelési mozgásokat eseményekkel tudom a készlethez igazítani. Csodálatos, hogy nem veszítünk időt a CreationTime-ra, a CreatorId-re. Automatikusan feltöltődnek.",
"Pricing_Page_Testimonial_6": "Az ABP Framework egy jó keretrendszer, de időre van szükség a különböző rétegek, osztályok és könyvtárak (különösen az ABP) megértéséhez. Sok időt töltöttem a kódbázis elolvasásával, de az ABP Commercial időt takarít meg nekünk a projekt speciális entitások (AR) és a mindegyikhez kapcsolódó tároló létrehozására. Tetszett az ABP-ben használt megközelítés is nagyon érett, tudjuk, hogy a DDD-n és a monoliton alapul.",
"AbpBookDownloadArea_ClaimYourEBook": "Igényelje <span class='gradient-framework'>Mastering ABP Framework</span> e-könyvét",
"AddMemberModal_Warning_1": "Ha a hozzáadni kívánt <strong>felhasználónév</strong> nem létezik a rendszerben, kérje meg csapattagját, hogy regisztráljon a <a href='{0}/Account/Register'>(z) {0}</a> webhelyen, és ossza meg fiókja felhasználónevét Önnel.",
"MyOrganizations_Detail_WelcomeMessage": "Üdvözöljük szervezetében, {0}",
@ -749,4 +750,4 @@
"TotalNetPrice": "Total Net Price",
"BlackFridayDiscount": "Black Friday Kedvezmény"
}
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Get ég breytt skráðum forriturum fyrirtækisins míns í framtíðinni?",
"ChangingDevelopersExplanation": "Til viðbótar við að bæta nýjum verktaka við leyfi þitt geturðu einnig breytt núverandi forriturum (þú getur fjarlægt verktaka og bætt nýjum við) án aukakostnaðar.",
"WhenShouldIRenewMyLicense": "Hvenær ætti ég að endurnýja leyfið mitt?",
"WhenShouldIRenewMyLicenseExplanation": "Ef þú endurnýjar leyfið þitt innan <strong>eins mánaðar</strong> eftir að leyfið þitt rennur út verða eftirfarandi afslættir notaðir: Team Leyfi {0}% afsláttur, Business License {1}% afsláttur, Enterprise License {2}% afsláttur . Ef þú endurnýjar leyfið þitt <strong>1 mánuði</strong> eftir að leyfið rennur út, verður endurnýjunarverðið það sama og kaupverð leyfisins og enginn afsláttur af endurnýjun þinni.",
"WhenShouldIRenewMyLicenseExplanation": "Ef þú endurnýjar leyfið þitt innan <strong>{3} dagar</strong> eftir að leyfið þitt rennur út verða eftirfarandi afslættir notaðir: Team Leyfi {0}% afsláttur, Business License {1}% afsláttur, Enterprise License {2}% afsláttur . Ef þú endurnýjar leyfið þitt <strong>{3} dagar</strong> eftir að leyfið rennur út, verður endurnýjunarverðið það sama og kaupverð leyfisins og enginn afsláttur af endurnýjun þinni.",
"TrialPlan": "Ertu með prufuáætlun?",
"DoYouAcceptBankWireTransfer": "Samþykki þið bankamillifærslu?",
"DoYouAcceptBankWireTransferExplanation": "Já, við tökum við bankamillifærslu.<br />Eftir að hafa sent leyfisgjaldið með millifærslu skaltu senda okkur tölvupóst á accounting@abp.io kvittun þína og tegund leyfis sem óskað er eftir. Upplýsingar um alþjóðlega bankareikninginn okkar:",

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Posso cambiare gli sviluppatori registrati della mia organizzazione in futuro?",
"ChangingDevelopersExplanation": "Oltre ad aggiungere nuovi sviluppatori alla tua licenza, puoi anche Modifica gli sviluppatori esistenti (puoi rimuovere uno sviluppatore e aggiungerne uno nuovo alla stessa postazione) senza alcun costo aggiuntivo.",
"WhenShouldIRenewMyLicense": "Quando devo rinnovare la mia licenza?",
"WhenShouldIRenewMyLicenseExplanation": "Se rinnovi la licenza entro <strong>1 mese</strong> dopo la scadenza della licenza, verranno applicati i seguenti sconti: Licenza Team {0} ; Licenza Business {1} ; Licenza Enterprise {2} . Se rinnovi la licenza <strong>1 mese</strong> dopo la data di scadenza della licenza, il prezzo di rinnovo sarà lo stesso del prezzo di acquisto della licenza e non ci saranno sconti sul rinnovo.",
"WhenShouldIRenewMyLicenseExplanation": "Se rinnovi la licenza entro <strong>{3} giorni</strong> dopo la scadenza della licenza, verranno applicati i seguenti sconti: Licenza Team {0} ; Licenza Business {1} ; Licenza Enterprise {2} . Se rinnovi la licenza <strong>{3} giorni</strong> dopo la data di scadenza della licenza, il prezzo di rinnovo sarà lo stesso del prezzo di acquisto della licenza e non ci saranno sconti sul rinnovo.",
"TrialPlan": "Hai un piano di prova?",
"DoYouAcceptBankWireTransfer": "Accettate bonifici bancari?",
"DoYouAcceptBankWireTransferExplanation": "Sì, accettiamo bonifico bancario.<br />Dopo aver inviato il canone tramite bonifico bancario, inviaci un'e-mail a accounting@abp.io con la ricevuta e il tipo di licenza richiesta. Le nostre informazioni sul conto bancario internazionale:",
@ -398,7 +398,7 @@
"WhatHappensWhenLicenseEndsExplanation4": "Non è possibile installare nuovi moduli e temi aggiunti alla piattaforma ABP Commercial dopo la scadenza della licenza.",
"WhatHappensWhenLicenseEndsExplanation5": "Non è possibile utilizzare la suite ABP.",
"WhatHappensWhenLicenseEndsExplanation6": "Non è più possibile ottenere il <a href=\"{0}\">supporto premium</a>.",
"WhatHappensWhenLicenseEndsExplanation7": "Puoi estendere (rinnovare) la tua licenza se desideri continuare a ottenere questi vantaggi. Se estendi la licenza entro <strong>1 mese</strong> dalla scadenza della licenza, verranno applicati i seguenti sconti: Licenza Team {0}; Licenza commerciale {1}; Licenza aziendale {2}.",
"WhatHappensWhenLicenseEndsExplanation7": "Puoi estendere (rinnovare) la tua licenza se desideri continuare a ottenere questi vantaggi. Se estendi la licenza entro <strong>{3} giorni</strong> dalla scadenza della licenza, verranno applicati i seguenti sconti: Licenza Team {0}; Licenza commerciale {1}; Licenza aziendale {2}.",
"BlazoriseLicense": "Dobbiamo acquistare la licenza di Blazorise?",
"BlazoriseLicenseExplanation": "Abbiamo un accordo tra Volosoft e Megabit, con il quale la licenza di Blazorise viene fornita in bundle con i prodotti commerciali ABP, pertanto i nostri clienti non hanno bisogno di acquistare una licenza Blazorise aggiuntiva."
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Kan ik de geregistreerde ontwikkelaars van mijn organisatie in de toekomst wijzigen?",
"ChangingDevelopersExplanation": "Naast het toevoegen van nieuwe ontwikkelaars aan uw licentie, kunt u ook de bestaande ontwikkelaars wijzigen (u kunt een ontwikkelaar verwijderen en een nieuwe toevoegen aan dezelfde stoel) zonder extra kosten.",
"WhenShouldIRenewMyLicense": "Wanneer moet ik mijn licentie verlengen?",
"WhenShouldIRenewMyLicenseExplanation": "Als u uw licentie verlengt binnen <strong>1 maand</strong> nadat uw licentie is verlopen, worden de volgende kortingen toegepast: Teamlicentie {0}% korting, Zakelijke licentie {1}% korting, Enterprise-licentie {2}% korting . Als u uw licentie <strong>1 maand</strong> na de vervaldatum van uw licentie verlengt, is de verlengingsprijs gelijk aan de aankoopprijs van de licentie en wordt er geen korting op uw verlenging gegeven.",
"WhenShouldIRenewMyLicenseExplanation": "Als u uw licentie verlengt binnen <strong>{3} dagen</strong> nadat uw licentie is verlopen, worden de volgende kortingen toegepast: Teamlicentie {0}% korting, Zakelijke licentie {1}% korting, Enterprise-licentie {2}% korting . Als u uw licentie <strong>{3} dagen</strong> na de vervaldatum van uw licentie verlengt, is de verlengingsprijs gelijk aan de aankoopprijs van de licentie en wordt er geen korting op uw verlenging gegeven.",
"TrialPlan": "Heb je een proefplan?",
"DoYouAcceptBankWireTransfer": "Accepteert u bankoverschrijvingen?",
"DoYouAcceptBankWireTransferExplanation": "Ja, we accepteren bankoverschrijvingen.<br />Nadat u de licentievergoeding via bankoverschrijving heeft verzonden, stuurt u een e-mail naar accounting@abp.io met uw kwitantie en het type licentie dat u heeft aangevraagd. Onze internationale bankrekeninggegevens:",

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Czy mogę w przyszłości zmienić zarejestrowanych programistów mojej organizacji?",
"ChangingDevelopersExplanation": "Oprócz dodawania nowych programistów do swojej licencji możesz również zmieniać istniejących programistów (możesz usunąć programistę i dodać nowego do tego samego stanowiska) bez żadnych dodatkowych kosztów.",
"WhenShouldIRenewMyLicense": "Kiedy powinienem odnowić licencję?",
"WhenShouldIRenewMyLicenseExplanation": "Jeśli odnowisz licencję w ciągu <strong>1 miesiąca</strong> po wygaśnięciu licencji, zostaną zastosowane następujące rabaty: licencja zespołowa {0}% rabatu, licencja biznesowa {1}% rabatu, licencja Enterprise {2}% rabatu . Jeśli odnowisz licencję <strong>1 miesiąc</strong> po dacie wygaśnięcia licencji, cena odnowienia będzie taka sama jak cena zakupu licencji i nie będzie rabatu na odnowienie.",
"WhenShouldIRenewMyLicenseExplanation": "Jeśli odnowisz licencję w ciągu <strong>{3} dni</strong> po wygaśnięciu licencji, zostaną zastosowane następujące rabaty: licencja zespołowa {0}% rabatu, licencja biznesowa {1}% rabatu, licencja Enterprise {2}% rabatu . Jeśli odnowisz licencję <strong>1 miesiąc</strong> po dacie wygaśnięcia licencji, cena odnowienia będzie taka sama jak cena zakupu licencji i nie będzie rabatu na odnowienie.",
"TrialPlan": "Czy masz plan próbny?",
"DoYouAcceptBankWireTransfer": "Czy akceptujesz przelew bankowy?",
"DoYouAcceptBankWireTransferExplanation": "Tak, akceptujemy przelew bankowy.<br />Po wysłaniu opłaty licencyjnej przelewem bankowym wyślij nam e-mail na adres accounting@abp.io z potwierdzeniem odbioru i rodzajem żądanej licencji. Informacje o naszych międzynarodowych kontach bankowych:",

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

@ -191,7 +191,7 @@
"ChangingDevelopers": "Posso mudar os desenvolvedores registrados da minha organização no futuro?",
"ChangingDevelopersExplanation": "Além de adicionar novos desenvolvedores à sua licença, você também pode alterar os desenvolvedores existentes (você pode remover um desenvolvedor e adicionar um novo ao mesmo assento) sem nenhum custo adicional.",
"WhenShouldIRenewMyLicense": "Quando devo renovar minha licença?",
"WhenShouldIRenewMyLicenseExplanation": "Se você renovar sua licença em <strong> 1 mês </strong> após a expiração da licença, os seguintes descontos serão aplicados: Licença de equipe {0} ; Licença de negócios {1} ; Licença empresarial {2} . Se você renovar sua licença <strong> 1 mês </strong> após a data de expiração de sua licença, o preço de renovação será o mesmo que o preço de compra da licença e não haverá desconto em sua renovação.",
"WhenShouldIRenewMyLicenseExplanation": "Se você renovar sua licença em <strong> {3} dias </strong> após a expiração da licença, os seguintes descontos serão aplicados: Licença de equipe {0} ; Licença de negócios {1} ; Licença empresarial {2} . Se você renovar sua licença <strong> {3} dias </strong> após a data de expiração de sua licença, o preço de renovação será o mesmo que o preço de compra da licença e não haverá desconto em sua renovação.",
"TrialPlan": "Você tem um plano experimental?",
"DoYouAcceptBankWireTransfer": "Você aceita transferência bancária?",
"DoYouAcceptBankWireTransferExplanation": "Sim, aceitamos transferência bancária. <br /> Após enviar a taxa de licença por transferência bancária, envie-nos um e-mail para accounting@abp.io com seu recibo e o tipo de licença solicitada. Nossas informações de conta bancária internacional:",
@ -402,6 +402,6 @@
"WhatHappensWhenLicenseEndsExplanation4": "Você não pode instalar novos módulos e temas adicionados à plataforma comercial da ABP após o término de sua licença.",
"WhatHappensWhenLicenseEndsExplanation5": "Você não pode usar o ABP Suite",
"WhatHappensWhenLicenseEndsExplanation6": "Você não pode mais obter o <a href==\"{0}\">apoio de premium</a>.",
"WhatHappensWhenLicenseEndsExplanation7": "Você pode estender (renovar) sua licença se quiser continuar obtendo esses benefícios. Se você estender sua licença dentro de <strong>1 mês</strong> após a expiração de sua licença, os seguintes descontos serão aplicados: Licença de equipe {0}; Licença Comercial {1}; Licença empresarial {2}."
"WhatHappensWhenLicenseEndsExplanation7": "Você pode estender (renovar) sua licença se quiser continuar obtendo esses benefícios. Se você estender sua licença dentro de <strong>{3} dias</strong> após a expiração de sua licença, os seguintes descontos serão aplicados: Licença de equipe {0}; Licença Comercial {1}; Licença empresarial {2}."
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Pe viitor, pot schimba dezvoltatorii ataşaţi organizaţiei mele?",
"ChangingDevelopersExplanation": "În plus faţă de adăugarea de noi dezvoltatori la licenţa dumneavoastră, puteţi schimba şi dezvoltatorii existenţi(puteţi elimina un dezvoltator şi adăuga unul nou în locul lui) fără costuri suplimentare.",
"WhenShouldIRenewMyLicense": "Când ar trebui să-mi reînnoiesc licenţa?",
"WhenShouldIRenewMyLicenseExplanation": "Dacă vă reînnoiți licența în termen de <strong>o lună</strong> de la expirarea licenței, se vor aplica următoarele reduceri: Licență de echipă {0}% reducere, Licență de afaceri {1}% reducere, Licență Enterprise {2}% reducere . Dacă vă reînnoiți licența la <strong>1 lună</strong> după data de expirare a licenței, prețul de reînnoire va fi același cu prețul de achiziție a licenței și nu va exista nicio reducere la reînnoirea dvs.",
"WhenShouldIRenewMyLicenseExplanation": "Dacă vă reînnoiți licența în termen de <strong>{3} de zile</strong> de la expirarea licenței, se vor aplica următoarele reduceri: Licență de echipă {0}% reducere, Licență de afaceri {1}% reducere, Licență Enterprise {2}% reducere . Dacă vă reînnoiți licența la <strong>{3} de zile</strong> după data de expirare a licenței, prețul de reînnoire va fi același cu prețul de achiziție a licenței și nu va exista nicio reducere la reînnoirea dvs.",
"TrialPlan": "Aveţi un plan de încercare?",
"DoYouAcceptBankWireTransfer": "Acceptaţi transfer bancar?",
"DoYouAcceptBankWireTransferExplanation": "Da, acceptăm transfer bancar.<br />După ce ați trimis taxa de licență prin transfer bancar, trimiteți-ne un e-mail la accounting@abp.io chitanța dvs. și tipul de licență solicitat. Informațiile noastre internaționale despre contul nostru bancar:",
@ -381,4 +381,4 @@
"CommercialNewsletterConfirmationMessage": "Sunt de acord cu <a href=\"https://commercial.abp.io/TermsConditions\">Termenii și condițiile</a> și cu <a href=\"https://commercial.abp.io/Privacy\">Politica de confidențialitate </a>.",
"BlackFridayDiscount": "Black Friday Discount"
}
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Могу ли я сменить зарегистрированных разработчиков моей организации в будущем?",
"ChangingDevelopersExplanation": "Помимо добавления новых разработчиков к вашей лицензии, вы также можете изменить существующих разработчиков (вы можете удалить разработчика и добавить нового на то же место) без каких-либо дополнительных затрат.",
"WhenShouldIRenewMyLicense": "Когда мне следует продлить лицензию?",
"WhenShouldIRenewMyLicenseExplanation": "Если вы продлите лицензию в течение <strong> 1 месяца </strong> после истечения срока действия лицензии, будут применяться следующие скидки: групповая лицензия {0}% скидка, бизнес-лицензия {1}% скидка, корпоративная лицензия {2}% скидка . Если вы продлеваете лицензию <strong> через 1 месяц </strong> после даты истечения срока действия лицензии, цена продления будет такой же, как цена покупки лицензии, и при продлении скидки не будет.",
"WhenShouldIRenewMyLicenseExplanation": "Если вы продлите лицензию в течение <strong> {3} дней </strong> после истечения срока действия лицензии, будут применяться следующие скидки: групповая лицензия {0}% скидка, бизнес-лицензия {1}% скидка, корпоративная лицензия {2}% скидка . Если вы продлеваете лицензию <strong> {3} дней </strong> после даты истечения срока действия лицензии, цена продления будет такой же, как цена покупки лицензии, и при продлении скидки не будет.",
"TrialPlan": "У вас есть пробный план?",
"DoYouAcceptBankWireTransfer": "Вы принимаете банковский перевод?",
"DoYouAcceptBankWireTransferExplanation": "Да, мы принимаем банковский перевод. <br /> После отправки платы за лицензию банковским переводом отправьте нам электронное письмо по адресу accounting@abp.io, квитанцию и тип запрошенной лицензии. Информация о нашем международном банковском счете:",

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Môžem v budúcnosti zmeniť registrovaných vývojárov svojej organizácie?",
"ChangingDevelopersExplanation": "Okrem pridávania nových vývojárov do licencie môžete tiež meniť existujúcich vývojárov (môžete odstrániť vývojára a pridať nového na to isté miesto) bez akýchkoľvek ďalších nákladov.",
"WhenShouldIRenewMyLicense": "Kedy si mám obnoviť licenciu?",
"WhenShouldIRenewMyLicenseExplanation": "Ak si licenciu obnovíte do <strong>1 mesiaca</strong> po vypršaní platnosti licencie, budú sa uplatňovať tieto zľavy: Tímová licencia {0} ; Obchodná licencia {1} ; Enterprise licencia {2} . Ak si licenciu obnovíte <strong>1 mesiac</strong> po dátume skončenia platnosti licencie, cena za obnovenie bude rovnaká ako cena za nákup licencie a na obnovenie nebude poskytnutá žiadna zľava.",
"WhenShouldIRenewMyLicenseExplanation": "Ak si licenciu obnovíte do <strong>30 dní</strong> po vypršaní platnosti licencie, budú sa uplatňovať tieto zľavy: Tímová licencia {0} ; Obchodná licencia {1} ; Enterprise licencia {2} . Ak si licenciu obnovíte <strong>30 dní</strong> po dátume skončenia platnosti licencie, cena za obnovenie bude rovnaká ako cena za nákup licencie a na obnovenie nebude poskytnutá žiadna zľava.",
"TrialPlan": "Máte skúšobný plán?",
"DoYouAcceptBankWireTransfer": "Prijímate bankový prevod?",
"DoYouAcceptBankWireTransferExplanation": "Áno, akceptujeme bankový prevod.<br />Po odoslaní licenčného poplatku bankovým prevodom nám pošlite e-mail na adresu accounting@abp.io svoje potvrdenie a požadovaný typ licencie. Informácie o našom medzinárodnom bankovom účte:",
@ -396,7 +396,7 @@
"WhatHappensWhenLicenseEndsExplanation4": "Po skončení platnosti vašej licencie nemôžete inštalovať nové moduly a témy pridané do platformy ABP Commercial.",
"WhatHappensWhenLicenseEndsExplanation5": "Balík ABP Suite nemôžete používať.",
"WhatHappensWhenLicenseEndsExplanation6": "Už nemôžete získať <a href=\"{0}\">prémiovú podporu</a>.",
"WhatHappensWhenLicenseEndsExplanation7": "Ak chcete naďalej využívať tieto výhody, môžete si licenciu predĺžiť (obnoviť). Ak predĺžite svoju licenciu do <strong>1 mesiaca</strong> po vypršaní platnosti licencie, budú sa uplatňovať nasledujúce zľavy: Tímová licencia {0}; Obchodná licencia {1}; Podniková licencia {2}",
"WhatHappensWhenLicenseEndsExplanation7": "Ak chcete naďalej využívať tieto výhody, môžete si licenciu predĺžiť (obnoviť). Ak predĺžite svoju licenciu do <strong>30 dní</strong> po vypršaní platnosti licencie, budú sa uplatňovať nasledujúce zľavy: Tímová licencia {0}; Obchodná licencia {1}; Podniková licencia {2}",
"BlazoriseLicense": "Musíme si kúpiť licenciu Blazorise?",
"BlazoriseLicenseExplanation": "Máme dohodu medzi spoločnosťami Volosoft a Megabit, na základe ktorej je licencia Blazorise pribalená k produktom ABP Commercial, preto si naši zákazníci nemusia kupovať ďalšiu licenciu Blazorise."
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Ali lahko v prihodnosti spremenim registrirane razvijalce svoje organizacije?",
"ChangingDevelopersExplanation": "Poleg dodajanja novih razvijalcev vaši licenci lahko spremenite tudi obstoječe razvijalce (lahko odstranite razvijalca in dodate novega na isto mesto) brez dodatnih stroškov.",
"WhenShouldIRenewMyLicense": "Kdaj naj podaljšam licenco?",
"WhenShouldIRenewMyLicenseExplanation": "Če licenco podaljšate v <strong>1 mesecu</strong> po poteku licence, bodo uporabljeni naslednji popusti: licenca za ekipo {0} % popusta, poslovna licenca {1} % popusta, licenca za podjetje {2} % popusta . Če podaljšate licenco <strong>1 mesec</strong> po datumu poteka veljavnosti licence, bo cena podaljšanja enaka nakupni ceni licence in pri podaljšanju ne bo popusta.",
"WhenShouldIRenewMyLicenseExplanation": "Če licenco podaljšate v <strong>{3} dni</strong> po poteku licence, bodo uporabljeni naslednji popusti: licenca za ekipo {0} % popusta, poslovna licenca {1} % popusta, licenca za podjetje {2} % popusta . Če podaljšate licenco <strong>{3} dni</strong> po datumu poteka veljavnosti licence, bo cena podaljšanja enaka nakupni ceni licence in pri podaljšanju ne bo popusta.",
"TrialPlan": "Ali imate poskusni načrt?",
"DoYouAcceptBankWireTransfer": "Ali sprejemate bančno nakazilo?",
"DoYouAcceptBankWireTransferExplanation": "Da, sprejemamo bančno nakazilo.<br />Ko pošljete licenčnino prek bančnega nakazila, nam pošljite e-pošto na accounting@abp.io vaše potrdilo o prejemu in vrsto zahtevane licence. Naši podatki o mednarodnem bančnem računu:",

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

@ -95,7 +95,7 @@
"LanguageManagement": "Dil Yönetimi",
"TextTemplateManagement": "Metin Şablonu Yönetimi",
"See All Modules": "SeeAllModüller",
"ABPSuite": "ABP Süiti",
"ABPSuite": "ABP Suite",
"AbpSuiteShortDescription": "ABP Suite, ABP Commercial için tamamlayıcı bir araçtır.",
"AbpSuiteExplanation": "Birkaç dakika içinde web sayfaları oluşturmanıza olanak tanır. Komut satırından yüklenebilen bir .NET Core Global aracıdır. Yeni bir ABP çözümü oluşturabilir, veritabanından ön uca kadar CRUD sayfaları oluşturabilir.",
"Details": "Detaylar",
@ -193,7 +193,7 @@
"ChangingDevelopers": "Gelecekte kuruluşumun kayıtlı geliştiricilerini değiştirebilir miyim?",
"ChangingDevelopersExplanation": "Lisansınıza yeni geliştiriciler eklemenin yanı sıra mevcut geliştiricileri de herhangi bir ek ücret ödemeden değiştirebilirsiniz (bir geliştiriciyi kaldırıp aynı koltuğa yeni bir tane ekleyebilirsiniz).",
"WhenShouldIRenewMyLicense": "Ehliyetimi ne zaman yenilemeliyim?",
"WhenShouldIRenewMyLicenseExplanation": "Lisansınızın süresi dolduktan sonra <strong>1 ay</strong> içinde lisansınızı yenilerseniz, aşağıdaki indirimler uygulanacaktır: Takım Lisansı %{0} indirim, İşletme Lisansı %{1} indirim, Kurumsal Lisans %{2} indirim . Lisansınızın sona erme tarihinden <strong>1 ay</strong> sonra lisansınızı yenilerseniz, yenileme fiyatı lisans satın alma fiyatı ile aynı olacak ve yenilemenizde indirim yapılmayacaktır.",
"WhenShouldIRenewMyLicenseExplanation": "Lisansınızın süresi dolduktan sonra <strong>{3} gün</strong> içinde lisansınızı yenilerseniz, aşağıdaki indirimler uygulanacaktır: Takım Lisansı %{0} indirim, İşletme Lisansı %{1} indirim, Kurumsal Lisans %{2} indirim . Lisansınızın sona erme tarihinden <strong>{3} gün</strong> sonra lisansınızı yenilerseniz, yenileme fiyatı lisans satın alma fiyatı ile aynı olacak ve yenilemenizde indirim yapılmayacaktır.",
"TrialPlan": "Deneme planınız var mı?",
"DoYouAcceptBankWireTransfer": "Banka havalesini kabul ediyor musunuz?",
"DoYouAcceptBankWireTransferExplanation": "Evet, banka havalesini kabul ediyoruz.<br />Lisans ücretini banka havalesi yoluyla gönderdikten sonra, dekontunuzu ve talep edilen lisans türünü accounting@abp.io adresinden bize e-posta ile gönderin. Uluslararası banka hesap bilgilerimiz:",
@ -393,16 +393,16 @@
"LastNameField": "Soyad",
"AbpCommercialMetaTitle": " {0} | ABP Commercial",
"AbpCommercialMetaDescription": "ABP Commercial, açık kaynaklı ABP çerçevesinin üzerine inşa edilmiş önceden oluşturulmuş uygulama modülleri, hızlı geliştirme araçları, kullanıcı arayüzü temaları ve hizmetlerinden oluşan bir settir.",
"WhatHappensWhenLicenseEnds": "Lisans sürem sona erdiğinde ne olacak?",
"WhatHappensWhenLicenseEnds": "Lisans sürem sona erdiğinde ne olacak?",
"WhatHappensWhenLicenseEndsExplanation1": "ABP Ticari lisansı <a href=\"{0}\" target=\"_blank\">kalıcı bir lisanstır</a>. Lisansınızın süresi dolduktan sonra projenizi geliştirmeye devam edebilirsiniz. Ve lisansınızı yenilemek zorunda değilsiniz. Lisansınız kutudan bir yıllık güncelleme ve destek planı ile birlikte gelir. Yeni özellikler, performans geliştirmeleri, hata düzeltmeleri, destek almaya devam etmek ve ABP Suite'i kullanmaya devam etmek için lisansınızı yenilemeniz gerekir. Lisansınızın süresi dolduğunda aşağıdaki avantajlardan yararlanamazsınız:",
"WhatHappensWhenLicenseEndsExplanation2": "ABP Ticari'yi kullanarak yeni çözümler oluşturamazsınız, ancak mevcut uygulamalarınızı sonsuza kadar geliştirmeye devam edebilirsiniz.",
"WhatHappensWhenLicenseEndsExplanation3": "MINOR sürümünüzdeki modüller ve temalar için güncellemeleri alabileceksiniz (RC veya Önizleme sürümleri hariç). Örneğin: bir modülün v3.2.0 sürümünü kullanıyorsanız, bu modülün v3.2.x (v3.2.1, v3.2.5... vb.) sürümleri için güncellemeleri almaya devam edebilirsiniz. Ancak bir sonraki büyük veya küçük sürüm için güncelleme alamazsınız (v3.3.0, v3.3.3, 4.x.x... gibi). Örneğin, lisansınızın süresi dolduğunda, en son sürüm v4.4.3 idi ve daha sonra hem 4.4.4 sürümünü hem de 4.5.0 sürümünü yayınladı, v4.4.X'e erişebilirsiniz, ancak v4.5.X'e erişemezsiniz.",
"WhatHappensWhenLicenseEndsExplanation4": "Lisansınız sona erdikten sonra ABP Ticari platformuna eklenen yeni modülleri ve temaları yükleyemezsiniz.",
"WhatHappensWhenLicenseEndsExplanation5": "ABP Suite'i kullanamazsınız.",
"WhatHappensWhenLicenseEndsExplanation6": "Artık <a href=\"{0}\">premium desteği</a> alamazsınız.",
"WhatHappensWhenLicenseEndsExplanation7": "Bu avantajlardan yararlanmaya devam etmek istiyorsanız lisansınızı uzatabilirsiniz (yenileyebilirsiniz). Lisansınızın süresi dolduktan sonra <strong>1 ay</strong> içinde lisansınızı uzatırsanız, aşağıdaki indirimler uygulanacaktır: Takım Lisansı {0} % indirim, İşletme Lisansı %{1} indirim, Kurumsal Lisans %{2} indirim.",
"WhatHappensWhenLicenseEndsExplanation7": "Bu avantajlardan yararlanmaya devam etmek istiyorsanız lisansınızı uzatabilirsiniz (yenileyebilirsiniz). Lisansınızın süresi dolduktan sonra <strong>{3} gün</strong> içinde lisansınızı uzatırsanız, aşağıdaki indirimler uygulanacaktır: Takım Lisansı {0} % indirim, İşletme Lisansı %{1} indirim, Kurumsal Lisans %{2} indirim.",
"WhatHappensWhenLicenseEndsExplanation8": "Oluşturduğunuz ABP projeleri sunucularımızda saklanmamaktadır. Bu nedenle indirdiğiniz kaynak kodunu saklamak sizin sorumluluğunuzdadır. Lisansınızın süresi dolduğunda, oluşturulan ABP proje kaynak kodunuzu almanın bir yolu yoktur.",
"TrialPlanExplanation": "ABP Ticari takım lisansı için 14 günlük deneme süresi var. Daha fazla bilgi için <a href={0} target='_blank'>burayı</a> ziyaret edin. Ayrıca, Takım lisansları için 30 günlük para iade garantisi veriyoruz. Sadece ilk 30 gün içinde geri ödeme talebinde bulunabilirsiniz. İşletme ve Kurumsal lisansları için 30 gün içinde %60 geri ödeme sağlıyoruz. Bunun nedeni, İşletme ve Kurumsal lisanslarının tüm modüllerin ve temaların tam kaynak kodunu içermesidir.",
"TrialPlanExplanation": "Hayır, ABP Commercial için deneme sürümü yoktur. Kod kalitesini ve yaklaşımları anlamak için topluluk sürümünü kontrol edebilirsiniz. Ayrıca, Takım lisansları için 30 günlük para iade garantisi veriyoruz. Sadece ilk 30 gün içinde geri ödeme talebinde bulunabilirsiniz. İşletme ve Kurumsal lisansları için 30 gün içinde %60 geri ödeme sağlıyoruz. Bunun nedeni, İşletme ve Kurumsal lisanslarının tüm modüllerin ve temaların tam kaynak kodunu içermesidir.",
"ContactUsQuestions": "Herhangi bir sorunuz varsa bizimle iletişime geçin",
"ActivationRequirement": "Denemenizi başlatmanıza son bir adım kaldı.<br>Bilgilerinizi kontrol ettikten sonra lisansınızı etkinleştireceğiz. Lisansınız etkinleştirildiğinde, <b>{0}</b> adresine bir e-posta göndereceğiz. Merak etmeyin bu süreç uzun sürmeyecek!",
"PurchaseNow": "Şimdi satın al",
@ -417,9 +417,8 @@
"RenewLicenseEarly": "Lisansımı erken yenilersem, tüm yılı alacak mıyım?",
"RenewLicenseEarylExplanation": "Lisansınızı lisans bitiş tarihinizden önce yenilediğinizde, lisans bitiş tarihinize 1 yıl eklenecektir. Örneğin, lisansınızın süresi {0}-06-06 tarihinde doluyorsa ve lisansınızı {0}-01-01 tarihinde yenilediyseniz, yeni lisans bitiş tarihiniz {1}-06-06 olacaktır.",
"OpenSourceWebApplication": "Açık Kaynak Web Uygulaması",
"CompleteWebDevelopment": "Tam Web Geliştirme",
"ABPFrameworkDescription": "ABP Framework, yazılım geliştirme ve sözleşmelerin en iyi uygulamalarını takip ederek modern web uygulamaları oluşturmak için eksiksiz bir altyapıdır.",
"CommunityDescription": "ABP Çerçevesi ile ilgili deneyimlerinizi paylaşın!",
"CommunityDescription": "ABP Çerçevesi ile ilgili deneyimlerinizi paylaşın!",
"GetStarted": "Başlayın",
"Views": "Görünümler",
"LatestPosts": "Son Gönderiler",
@ -441,7 +440,7 @@
"ModularArchitectureExplanation": "Bu başlangıç şablonu, temiz ve sürdürülebilir bir kod tabanı oluşturmak için katmanlı, modüler ve DDD tabanlı bir çözüm mimarisi sağlar.",
"SeeDetails": "Ayrıntıları Gör",
"SeeDocumentation": "Belgelere göz atın",
"Bs5Compatible": "Bootstrap 5 uyumlu profesyonel tema, yönetici web siteniz için mükemmel.",
"Bs5Compatible": "Bootstrap 5 uyumlu profesyonel tema, yönetici web siteniz için mükemmel.",
"LeptonXTheme": "LeptonX Tema",
"LeptonXDark": "LeptonX Koyu",
"LeptonXLight": "LeptonX Açık",
@ -454,7 +453,7 @@
"EasilyInstallAndUpgrade": "Kolay kurulum ve yükseltme",
"SupportForum": "Destek Forumu",
"TrustedBy": "Güvenenler",
"OurPricing": "<span class=\"gradient-commercial\">Fiyatlandırmamız</span>",
"OurPricing": "<span class=\"gradient-commercial\">Fiyatlandırmamız</span>",
"Plans": "Planlar",
"NameSurname": "Ad Soyad",
"Unspecified": "Belirtilmemiş",
@ -465,7 +464,7 @@
"License": "Lisans",
"Development": "Geliştirme",
"Payment": "Ödeme",
"WatchExplainerVideo": "Hadi Tanışalım! Açıklayıcı Videoyu İzleyin",
"WatchExplainerVideo": "Hadi Tanışalım! Açıklayıcı Videoyu İzleyin",
"LightDarkAndSemiDarkThemes": "Açık, koyu ve yarı koyu temalar",
"LeptonXThemeExplanation": "Lepton Teması, temanızı sistem ayarlarınıza göre değiştirebilir.",
"PRO": "PRO",
@ -548,6 +547,7 @@
"Pricing_Page_Testimonial_3": "ABP'yi seviyoruz. Her şeyi sıfırdan yazmak zorunda kalmıyoruz. Kullanıma hazır özelliklerden başlıyoruz ve sadece gerçekten yazmamız gerekenlere odaklanıyoruz. Ayrıca, ABP iyi tasarlanmış ve kod daha az hata ile yüksek kalitede. İhtiyaç duyduğumuz her şeyi kendi başımıza yazmak zorunda kalsaydık, yıllarımızı harcamak zorunda kalabilirdik. Hoşumuza giden bir diğer şey de yeni sürümün, sorun düzeltmenin ya da iyileştirmenin iki haftada bir çıkması. Çok uzun süre beklemiyoruz.",
"Pricing_Page_Testimonial_4": "ABP Commercial harika bir ürün, tavsiye ederim. Müşterilerimiz için ticari ürünleri tek bir yapılandırılabilir platformda pazara sunuyor. Çerçeve ve araçların herhangi bir ekibe sağladığı hızlı başlangıç her kuruşa değer. ABP Commercial ihtiyaçlarımız için en uygun üründü.",
"Pricing_Page_Testimonial_5": "ABP Framework sadece bir framework değil, aynı zamanda bir proje geliştirme/yönetme rehberi, çünkü DDD, GenericRepository, DI, Microservice ve Modularity eğitimleri veriyor. Framework'ün kendisini kullanmayacak olsanız bile, iyi ve profesyonelce hazırlanmış docs.abp.io ile kendinizi geliştirebilirsiniz (OpenIddict, Redis, Quartz vb.). Birçok şey önceden hazır olduğu için proje geliştirme süresini önemli ölçüde kısaltıyor (Giriş sayfası, istisna işleme, veri filtreleme, tohumlama, denetim günlüğü, yerelleştirme, otomatik API denetleyicisi vb.) Uygulamamızdan bir örnek olarak, stok kontrolü için Local Event Bus kullandım. Böylece stok işleyicisi yazarak sipariş hareketlerini yönetebiliyorum. CreationTime, CreatorId için zaman kaybetmemek harika. Bunlar otomatik olarak dolduruluyor.",
"Pricing_Page_Testimonial_6": "ABP Framework iyi bir çerçeve ancak kullandığı farklı katmanları, sınıfları ve kütüphaneleri (özellikle ABP) anlamak için zaman gerekiyor. Kod tabanını okumak için çok zaman harcadım, ancak ABP Commercial, proje özel varlıklarını (AR) ve her birine bağlı depoyu oluşturmak için bize zaman kazandırdı. ABP'de kullanılan yaklaşımın çok olgun olduğunu da beğendim, DDD ve monolith'e dayandığını biliyoruz.",
"AbpBookDownloadArea_ClaimYourEBook": "<span class='gradient-framework'>Mastering ABP Framework</span> E-Kitabınızı talep edin",
"AddMemberModal_Warning_1": "Eklemeye çalıştığınız <strong>kullanıcı adı</strong> sistemde yoksa, lütfen ekip üyenizden <a href='{0}/Account/Register'>{0}</a> adresine kaydolmasını ve hesabının kullanıcı adını sizinle paylaşmasını isteyin.",
"MyOrganizations_Detail_WelcomeMessage": "Organizasyonunuza hoş geldiniz, {0}",
@ -654,7 +654,7 @@
"UpgradePaymentInfoSection_LicenseUpgradeDescription": "Lisansınızı yükselterek, ek avantajlar elde etmenizi sağlayacak daha yüksek bir lisans türüne terfi edeceksiniz. Lisans türleri arasındaki farkları kontrol etmek için <a href=\"/Pricing\" target=\"_blank\">lisans karşılaştırma tablosuna</a> bakın.",
"Landing_Page_CustomerStories": "Müşteri Hikayeleri",
"Landing_Page_OurGreatCustomers": "Büyük Müşterilerimiz",
"Landing_Page_WebApplicationFramework": "Web Uygulama Çerçevesi",
"Landing_Page_WebApplicationFramework": "Web Uygulama Çerçevesi",
"Landing_Page_WebDevelopmentPlatform": "Web Geliştirme Platformu",
"Landing_Page_CompleteWebDevelopmentPlatform": "Tam Web Geliştirme Platformu",
"Landing_Page_TryFreeDemo": "Ücretsiz Demo Dene",
@ -721,7 +721,7 @@
"Landing_Page_DocsModuleDescription_9": "GitHub kaynağına ek olarak, dokümantasyon kaynağı olarak bir klasörün kullanılmasına izin verir.",
"Landing_Page_FileManagementModuleDescription_1": "Dosyaları hiyerarşik bir klasör yapısı içinde yükleyin, indirin ve düzenleyin.",
"Landing_Page_FileManagementModuleDescription_2": "Bu modül, dosyaları hiyerarşik bir klasör yapısında yüklemek, indirmek ve düzenlemek için kullanılır. Ayrıca çoklu kiracılığa uyumludur ve kiracılarınız için toplam boyut sınırını belirleyebilirsiniz.",
"Landing_Page_FileManagementModuleDescription_3": "Bu modül <a href=\"https://docs.abp.io/en/abp/latest/Blob-Storing\">BLOB Depolama</a> sistemine dayanmaktadır, bu nedenle dosya içeriklerini depolamak için farklı depolama sağlayıcıları kullanabilir.",
"Landing_Page_FileManagementModuleDescription_3": "Bu modül <a href=\"https://docs.abp.io/en/abp/latest/Blob-Storing\">BLOB Depolama</a> sistemine dayanmaktadır, bu nedenle dosya içeriklerini depolamak için farklı depolama sağlayıcıları kullanabilir.",
"Landing_Page_IdentityModuleDescription_1": "Bu modül bir uygulamanın Kullanıcı ve Rol sistemini uygular;",
"Landing_Page_IdentityModuleDescription_2": "<a href=\"https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity\">Microsoft'un ASP.NET Core Identity</a> kütüphanesi üzerine inşa edilmiştir.",
"Landing_Page_IdentityModuleDescription_3": "Sistemdeki <strong>rolleri</strong> ve <strong>kullanıcıları</strong> yönetin. Bir kullanıcının <strong>birden çok role</strong> sahip olmasına izin verilir.",
@ -744,12 +744,67 @@
"ConfirmedEmailAddressRequiredToStartTrial": "Deneme lisansı başlatmak için onaylanmış bir e -posta adresiniz olmalı.",
"EmailVerificationMailNotSent": "E-posta doğrulama postası gönderilemedi.",
"GetConfirmationEmail": "Daha önce bir onay e-postası almadıysanız <a href=\"javascript:void(0);\" id=\"{0}\" class=\"text-decoration-underline\"> almak için buraya tıklayın.</a>",
"WhichLicenseTypeYouAreInterestedIn": "Hangi lisans türüyle ilgileniyorsunuz?",
"WhichLicenseTypeYouAreInterestedIn": "Hangi lisans türüyle ilgileniyorsunuz?",
"BlackFridayDiscount": "Kara Cuma İndirimi",
"EulaPageTitle": "Son Kullanıcı Lisans Sözleşmesi (EULA)",
"PrivacyPolicyPageTitle": "Gizlilik Politikası - Çerez Politikası",
"TermsConditionsPageTitle": "Şartlar ve Koşullar",
"TrainingsPageTitle": "ABP Eğitim Paketleri",
"ModulesPageTitle": "ABP Önceden Oluşturulmuş Uygulama Modülleri"
"ModulesPageTitle": "ABP Hazır Uygulama Modülleri",
"Testimonial_ShortDescription_1": "ABP'nin modülerliği, ekibin zamanında teslimat yapmasını mümkün kıldı.",
"Testimonial_ShortDescription_2": "Yeni özellikleri eskisinden daha hızlı oluşturun.",
"Testimonial_ShortDescription_3": "Kullanıma hazır özelliklerden başlıyoruz ve sadece yazmamız gerekenlere odaklanıyoruz.",
"Testimonial_ShortDescription_4": "ABP Commercial ihtiyaçlarımız için en uygun olanıydı.",
"DontTakeOurWordForIt": "Bizim sözümüze güvenmeyin...",
"ReadAbpCommercialUsersWantYouToKnow": "ABP Commercial kullanıcılarının bilmenizi istediklerini okuyun.",
"OnlineReviewersOnAbpCommercial": "ABP Commercial Hakkında Çevrimiçi Yorumlar",
"SeeWhatToldAboutAbpCommercial": "ABP Commercial hakkında neler söylendiğini görün ve isterseniz düşüncelerinizi yazın.",
"YouDeserveGoodUXUI": "İyi bir kullanıcı arayüzünü ve daha iyi bir kullanıcı deneyimini hak ediyorsunuz. ABP'nin LeptonX Teması size hizmet etmek için burada.",
"ViewLiveDemo": "Canlı Tema Demosunu Görüntüle",
"LeptonXThemeForDashboard": "Yönetici Kontrol Paneliniz için LeptonX Teması",
"GetLeptonX": "LeptonX'i Şimdi Alın",
"SimplifiedMenu": "Basitleştirilmiş menü",
"SimplifiedMenuDescription": "Menüyü filtreleyerek aradığınız sayfayı kolayca bulabilirsiniz",
"YourFavoritePages": "Favori sayfalarınız elinizin altında",
"YourFavoritePagesDescription": "Sayfanın sağ üst köşesindeki yıldız simgesine tıklayarak sayfayı kolayca favorilere ekleyin veya favorilerden kaldırın.",
"BreadCrumbs": "Kesintisiz geçiş için Breadcrumb",
"BreadCrumbsDescription": "Breadcrumb'ı kullanarak, sol menü kapalıyken bile tek tıklamayla aynı seviyedeki sayfalara geçebilirsiniz, üstelik tablet ve mobil uyumlu çalışır!",
"YourMenu": "Menünüz dilediğiniz gibi",
"YourMenuDescription": "Kullanıcı menüsündeki doğrudan tıklanabilir simgeleri ve açılır kutuları istediğiniz gibi özelleştirin. Kullanıcı menüsü ihtiyaçlarınıza göre tamamen özelleştirilebilir",
"RtlSupport": "Diliniz için RTL desteği",
"RtlSupportDescription": "LeptonX Teması, diliniz için RTL'yi destekler. Dili değiştirmeniz için dil seçenekleri ayarlar menüsündedir.",
"YourColors": "Yönetici kontrol paneli kullanıcı arayüzünüzdeki renkleriniz",
"YourColorsDescription": "LeptonX Tema, sistem tercihlerinize göre çalışır ve gösterge paneli açık tema, gösterge paneli koyu tema ve gösterge paneli yarı koyu tema seçeneklerine sahiptir.",
"ArrangeContentWidth": "İçerik genişliğinizi kolayca düzenleyin",
"ArrangeContentWidthDescription": "İçerik alanınızın genişliğini kolayca değiştirin.",
"LeptonXCompatibleWith": "LeptonX Teması aşağıdakilerle uyumludur",
"MobileResponsiveTemplate": "Mobil Uyumlu Şablon",
"MobileResponsiveTemplateDescription1": "LeptonX yönetici kontrol panelinize istediğiniz cihazdan erişin.",
"MobileResponsiveTemplateDescription2": "Her cihazınızda rahatlıkla kullanabilmeniz için tasarlanmıştır. Mobil cihazlara ve tablet boyutlarına duyarlıdır.",
"TopMenuLayoutOption": "Üst Menü Düzeni Seçeneği",
"TopMenuLayoutOptionDescription1": "Web sitenizi aynı yönetici kontrol paneliyle kurmak istiyorsanız, LeptonX Teması ile bunu yapmanız mümkün!",
"TopMenuLayoutOptionDescription2": "Bunu gerçekleştirmek için LeptonX üst menü düzenini deneyin!",
"EasilyCustomizable": "Marka renkleriniz için kolayca özelleştirilebilir",
"EasilyCustomizableDescription1": "LeptonX temasını sadece birkaç SCSS değişkeni kullanarak özelleştirebilirsiniz. Geçersiz kılma yok, ekstra CSS yükü yok!",
"EasilyCustomizableDescription2": "LeptonX ile yönetici panelinizi istediğiniz gibi düzenleyebilirsiniz.",
"IndependentLayout": "Bağımsız düzen ve içerik alanı",
"IndependentLayoutDescription1": "LeptonX'in yerleşim altyapısı içerikten tamamen ayrı olarak tasarlandı.",
"IndependentLayoutDescription2": "Bu, isterseniz projenizi Bootstrap dışında bir içerik yapısı ile özgürce tasarlayabileceğiniz anlamına gelir.",
"MostUsedLibraries": "LeptonX ile entegre edilmiş en çok kullanılan kütüphaneler",
"MostUsedLibrariesDescription1": "LeptonX en çok kullandığınız kütüphaneleri içerir. ApexCharts, DataTables, DropZone, FullCalender, JSTree, Select2, Toastr gibi kütüphaneleri zahmetsizce kullanmanızı sağlar.",
"MostUsedLibrariesDescription2": "LeptonX ayrıca MVC Angular ve Blazor'a özgü kütüphaneleri de destekler.",
"CreateAndCustomize": "LeptonX özel sayfaları ile ihtiyacınız olan sayfaları saniyeler içinde oluşturun ve özelleştirin",
"CreateAndCustomizeDescription": "LeptonX Temasını kullanarak önceden hazırlanmış birçok html sayfasına da erişebilirsiniz. Bunlar arasında giriş sayfası, blog, SSS, abonelik listesi, fatura, fiyatlandırma, dosya yönetimi gibi birçok sayfa bulunmaktadır.",
"LeptonThemeForAdmin": "Yönetici kontrol paneliniz için Lepton Teması",
"LeptonThemeForAdminDescription": "Lepton Teması hala kullanılabilir durumdadır ve bakımı yapılacaktır. Bir Lepton Teması kullanıcısı olarak LeptonX Temasına geçmek istiyorsanız, nasıl yapılacağını öğrenmek için belgelere bakabilirsiniz.",
"LeptonCompatibleWith": "Lepton Teması aşağıdakilerle uyumludur",
"SeeLeptonDocumentation": "Lepton Dokümantasyonuna Bakın",
"GetLepton": "Lepton'u Şimdi Alın",
"WhyUseAbpIoPlatform": "Sıfırdan yeni bir çözüm oluşturmak yerine neden ABP.IO Platformunu kullanmalıyım?",
"WhyUseAbpIoPlatformFaqExplanation": "ABP.IO Platformunu kullanmanın her şeyi kendiniz yapmaya göre neden önemli bir avantaja sahip olduğuna dair ayrıntılı bir açıklama için <a href=\"https://docs.abp.io/en/commercial/latest/why-abp-io-platform\"> bu belgeye </a> bakın.",
"SupportPolicyFaqTitle": "Destek politikanız nedir?",
"SupportPolicyFaqExplanation": "Yalnızca etkin ve önceki ana sürümü destekliyoruz. Üçüncü ve daha eski ana sürümler için bir yama sürümünü garanti etmiyoruz. Örneğin, etkin sürüm 7.0.0 ise, hem 6.x.x hem de 7.x.x için yama sürümleri yayınlayacağız. Ayrıca, yalnızca ABP Framework ve ABP Commercial ile ilgili sorunlar için destek sağlıyoruz. Bu, ABP ürünleri tarafından kullanılan 3. taraf uygulamalar, bulut hizmetleri ve diğer çevresel kütüphaneler için destek verilmediği anlamına gelir. Müşterilerimize \"Volosoft Bilişim A.Ş\"nin resmi çalışma saatleri içinde teknik destek sağlamak için ticari olarak makul çabayı göstereceğiz. Öte yandan, bir hizmet seviyesi anlaşması (SLA) yanıt süresi taahhüt etmiyoruz, ancak teknik sorunlara resmi çalışma saatlerimiz içinde mümkün olduğunca çabuk yanıt vermeye çalışacağız. Müşteri ile özel bir anlaşma yapılmadığı sürece, yalnızca https://support.abp.io adresinden destek sağlıyoruz. Ayrıca, yalnızca Kurumsal Lisans sahiplerinin kullanabildiği özel e-posta desteğimiz de bulunmaktadır.",
"BlazoriseLicense": "Blazorise lisansı satın almamız gerekiyor mu?",
"BlazoriseLicenseExplanation": "Volosoft ve Megabit arasında bir anlaşmamız var, bu anlaşma ile Blazorise lisansı ABP Ticari ürünleri ile birlikte geliyor, bu nedenle müşterilerimizin ekstra bir Blazorise lisansı satın almasına gerek kalmıyor."
}
}
}

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

@ -190,7 +190,7 @@
"ChangingDevelopers": "Tôi có thể thay đổi các nhà phát triển đã đăng ký của tổ chức của mình trong tương lai không?",
"ChangingDevelopersExplanation": "Ngoài việc thêm các nhà phát triển mới vào giấy phép của mình, bạn cũng có thể thay đổi các nhà phát triển hiện có (bạn có thể xóa một nhà phát triển và thêm một nhà phát triển mới vào cùng một chỗ ngồi) mà không phải trả thêm bất kỳ chi phí nào.",
"WhenShouldIRenewMyLicense": "Khi nào tôi nên gia hạn giấy phép của mình?",
"WhenShouldIRenewMyLicenseExplanation": "Nếu bạn gia hạn giấy phép của mình trong vòng <strong> 1 tháng </strong> sau khi giấy phép của bạn hết hạn, các chiết khấu sau sẽ được áp dụng: Giảm giá {0}% cho Giấy phép Nhóm, Giảm giá {1}% Giấy phép Kinh doanh, Giảm giá {2}% Giấy phép Doanh nghiệp . Nếu bạn gia hạn giấy phép <strong> 1 tháng </strong> sau ngày giấy phép hết hạn, giá gia hạn sẽ giống như giá mua giấy phép và sẽ không có chiết khấu khi gia hạn của bạn.",
"WhenShouldIRenewMyLicenseExplanation": "Nếu bạn gia hạn giấy phép của mình trong vòng <strong> {3} ngày </strong> sau khi giấy phép của bạn hết hạn, các chiết khấu sau sẽ được áp dụng: Giảm giá {0}% cho Giấy phép Nhóm, Giảm giá {1}% Giấy phép Kinh doanh, Giảm giá {2}% Giấy phép Doanh nghiệp . Nếu bạn gia hạn giấy phép <strong> {3} ngày </strong> sau ngày giấy phép hết hạn, giá gia hạn sẽ giống như giá mua giấy phép và sẽ không có chiết khấu khi gia hạn của bạn.",
"TrialPlan": "Bạn có kế hoạch dùng thử không?",
"DoYouAcceptBankWireTransfer": "Bạn có chấp nhận chuyển khoản ngân hàng không?",
"DoYouAcceptBankWireTransferExplanation": "Có, chúng tôi chấp nhận chuyển khoản ngân hàng. <br /> Sau khi gửi phí cấp phép qua chuyển khoản ngân hàng, hãy gửi email cho chúng tôi theo địa chỉ accounting@abp.io biên lai của bạn và loại giấy phép được yêu cầu. Thông tin tài khoản ngân hàng quốc tế của chúng tôi:",

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

@ -202,13 +202,13 @@
"WhatHappensWhenLicenseEndsExplanation4": "你不能在你的许可证到期后安装ABP商业平台上添加的新模块和主题。",
"WhatHappensWhenLicenseEndsExplanation5": "你不能使用ABP Suite。",
"WhatHappensWhenLicenseEndsExplanation6": "你不能再获得<a href=\"{0}\">高级支持</a>。",
"WhatHappensWhenLicenseEndsExplanation7": "如果您想继续获得这些好处,您可以延长(续订)您的许可证。 如果您在许可证到期后 <strong>1 个月</strong>内延长许可证,将应用以下折扣:团队许可证 {0}; 营业执照{1}; 企业许可证 {2}。",
"WhatHappensWhenLicenseEndsExplanation7": "如果您想继续获得这些好处,您可以延长(续订)您的许可证。 如果您在许可证到期后 <strong>{3} 天</strong>内延长许可证,将应用以下折扣:团队许可证 {0}; 营业执照{1}; 企业许可证 {2}。",
"discountForYears": "{0}% 折扣 {1} 年",
"WhatHappensWhenLicenseEndsExplanation8": "您生成的 ABP 项目未存储在我们的服务器上。 因此,您有责任保留下载的源代码。 当您的许可证到期时,将无法获取您生成的 ABP 项目源代码。",
"WhenShouldIRenewMyLicense": "我什么时候应该续订我的许可?",
"WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后 <strong>1 个月</strong> 内续订许可证,将适用以下折扣:团队许可证 {0}; 营业执照{1}; 企业许可证 {2}。 但是,如果您在许可证到期后 <strong>1 个月</strong> 后续订许可证,则续订价格将与许可证购买价格相同,并且您的续订不会有任何折扣。",
"WhenShouldIRenewMyLicenseExplanation": "如果您在许可证到期后 <strong>{3} 天</strong> 内续订许可证,将适用以下折扣:团队许可证 {0}; 营业执照{1}; 企业许可证 {2}。 但是,如果您在许可证到期后 <strong>{3} 天</strong> 后续订许可证,则续订价格将与许可证购买价格相同,并且您的续订不会有任何折扣。",
"TrialPlan": "你们有试用计划吗?",
"TrialPlanExplanation": "ABP商业团队许可证有14天的试用期。若要了解更多信息,请访问<a href={0} target='_blank'>这里</a>。此外,我们为团队许可证提供30天的金额返还保证。你只需要在30天内请求退款。商业和企业许可证将提供60%的金额返还保证。这是因为商业和企业许可证包含了所有模块和主题的全部源代码。",
"TrialPlanExplanation": "不,ABP商业版没有试用版。您可以通过查看社区版了解代码质量和方法。我们还为团队许可证提供30天无条件退款保证!您可以在前30天内申请退款。对于商业和企业许可证,我们在30天内提供60%的退款。这是因为商业和企业许可证包含所有模块和主题的完整源代码。",
"DoYouAcceptBankWireTransfer": "你们接受银行电汇吗?",
"DoYouAcceptBankWireTransferExplanation": "是的,我们接受银行电汇。<br />在通过银行转账发送许可费后,将您的收据和所需的许可类型通过电子邮件发送至accounting@abp.io。 我们的国际银行账户信息:",
"HowToUpgrade": "可用新版本时如何升级现有应用程序?",
@ -537,6 +537,7 @@
"Pricing_Page_Testimonial_3": "我们大爱 ABP。 我们不必从头开始编写所有内容。 我们从\"开箱即用\"的功能开始,只需关注我们真正需要编写的内容。 此外,ABP 架构良好,代码质量高,错误少。 如果我们需要自己来编写所需的一切,我们可能需要花费数年时间。 另一点让我们喜欢的是新版本、问题修复或改进每隔一周很快地就会出现。 我们不会等太久。",
"Pricing_Page_Testimonial_4": "ABP 商业版 是一款很值得推荐的出色产品。 是在一个可配置的平台上为我们的客户推向市场的商业产品。 其框架和工具为任何团队提供的快速启动值得每一分钱。 ABP 商业版 最适合我们的需求。",
"Pricing_Page_Testimonial_5": "ABP Framework 不仅是一个框架,它还是项目开发/管理的指南,因为它提供了 DDD、GenericRepository、DI、微服务和模块化培训。 即使你不打算使用框架本身,你也可以通过 docs.abp.io 进行自己的开发,该文档已经做好了专业的准备(OpenIddict、Redis、Quartz 等)。 因为很多东西都是预先构建的,它大大缩短了项目开发时间(例如登录页面、异常处理、数据过滤、种子、审计日志、本地化、自动 API 控制器等)。 作为我们应用程序的一个示例,我使用本地事件总线进行库存控制。 因此我可以通过编写库存处理程序来管理订单移动。 不为 CreationTime,CreatorId 浪费时间真是太好了。 它们正在自动填充。",
"Pricing_Page_Testimonial_6": "ABP Framework 是一个很好的框架,但它需要时间来理解它使用的不同层、类和库(特别是 ABP)。 我花了很多时间阅读代码库,但是 ABP Commercial 为我们节省了创建项目专业实体 (AR) 和链接到每个实体的存储库的时间。 我也喜欢 ABP 中使用的方法非常成熟,我们知道它基于 DDD 和单体。",
"AbpBookDownloadArea_ClaimYourEBook": "领取您的<span class='gradient-framework'>掌握ABP框架</span>电子书",
"AddMemberModal_Warning_1": "如果您尝试添加的<strong>用户名</strong>在系统中不存在,请让您的团队成员在 <a href='{0}/账户/注册'>{0}</ 上注册 a> 并与您分享他/她帐户的用户名。",
"MyOrganizations_Detail_WelcomeMessage": "欢迎加入您的组织,{0}",
@ -815,7 +816,7 @@
"Other": "其他",
"WhereDidYouHearAboutUs_explain": "请说明...",
"DeletingMemberWarningMessage": "\"{0}\"将从开发者列表中删除。如果您愿意,您可以将此空位分配给另一个开发者。",
"AdditionalInfo": "如果开发者席位高于您的要求,您可以减少它们。您可以发送电子邮件至<a href=\"mailto:info@abp.io\">info@abp.io</a>以删除一些开发人员席位。清理未使用的开发人员席位将降低许可证续期成本。如果您愿意,您可以在有效许可期内重新购买额外的开发人员席位。请注意,由于此许可证包中有{0}个开发人员,因此无法减少此数量。",
"AdditionalInfo": "如果开发人员席位超出您的要求,您可以减少它们。 您可以发送电子邮件至 <a href=\"mailto:info@abp.io\">info@abp.io</a> 以删除您的一些开发人员席位。 清除未使用的开发人员席位将降低许可证续订成本。 如果需要,您可以在有效许可期限内重新购买额外的开发人员席位。 请注意,由于此许可证中有 {0} 个开发人员,因此您无法减少此数量。",
"LinkExpiredErrorMessage": "您正在尝试访问的链接已过期。",
"ExpirationDate": "过期时间",
"SpringCampaignDiscount": "春季促销折扣",

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

@ -192,7 +192,7 @@
"ChangingDevelopers": "我將來可以更改我組織的註冊開發人員嗎?",
"ChangingDevelopersExplanation": "除了將新的開發人員添加到你的許可中之外,你還可以更改現有的開發人員(可以刪除一個開發人員並將新的開發人員添加到同一位置),而無需任何額外費用.",
"WhenShouldIRenewMyLicense": "我什麽時候應該續訂我的許可?",
"WhenShouldIRenewMyLicenseExplanation": "如果您在許可證到期後 <strong>1 個月</strong>內續訂許可證,將享受以下折扣:團隊許可證 {0} ; 商業許可證 {1} ;企業許可證 {2}. 如果您在許可證到期後 <strong>1 個月</strong>續訂許可證,續訂價格將與許可證購買價格相同,並且續訂不會有折扣。",
"WhenShouldIRenewMyLicenseExplanation": "如果您在許可證到期後 <strong>{3} 天</strong>內續訂許可證,將享受以下折扣:團隊許可證 {0} ; 商業許可證 {1} ;企業許可證 {2}. 如果您在許可證到期後 <strong>{3} 天</strong>續訂許可證,續訂價格將與許可證購買價格相同,並且續訂不會有折扣。",
"TrialPlan": "你們有試用計劃嗎?",
"DoYouAcceptBankWireTransfer": "你們接受銀行電匯嗎?",
"DoYouAcceptBankWireTransferExplanation": "是的,我們接受銀行電匯。<br />在通過銀行轉賬發送許可費後,將您的收據和所需的許可類型通過電子郵件發送至accounting@abp.io。 我們的國際銀行賬戶信息:",
@ -402,6 +402,6 @@
"WhatHappensWhenLicenseEndsExplanation4": "許可證到期後,您將無法安裝添加到 ABP 商業平台的新模塊和主題。",
"WhatHappensWhenLicenseEndsExplanation5": "您不能使用 ABP 套件。",
"WhatHappensWhenLicenseEndsExplanation6": "您無法再獲得<a href=\"{0}\">高級支持</a>。",
"WhatHappensWhenLicenseEndsExplanation7": "如果您想繼續獲得這些好處,您可以延長(更新)您的許可證。如果您在許可到期後 <strong>1 個月</strong> 內延長許可,將應用以下折扣:團隊許可 {0};營業執照{1};企業許可證{2}。"
"WhatHappensWhenLicenseEndsExplanation7": "如果您想繼續獲得這些好處,您可以延長(更新)您的許可證。如果您在許可到期後 <strong>{3} 天</strong> 內延長許可,將應用以下折扣:團隊許可 {0};營業執照{1};企業許可證{2}。"
}
}
}

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

@ -93,7 +93,6 @@
"NoThanks": "Hayır teşekkürler",
"MaybeLater": "Belki sonra",
"JoinOurPostNewsletter": "Makale bültenimize katılın",
"Community": "Toplum",
"Marketing": "Pazarlama",
"CommunityPrivacyPolicyConfirmation": "Şartlar ve Koşullar ile <a href=\"https://commercial.abp.io/Privacy\">Gizlilik Politikası</a>'nı kabul ediyorum.",
"PostRequestMessageTitle": "Bu web sitesinde görmek istediğiniz bir makaleyi/eğiticiyi istemek için GitHub'da <a href=\"https://github.com/abpframework/abp/issues/new\">bir sorun açın</a>.",
@ -143,7 +142,6 @@
"Volo.AbpIo.Domain:060002": "Makale İçeriği Github(\"{PostUrl}\") kaynağında mevcut değil.",
"Volo.AbpIo.Domain:060003": "Makale içeriği bulunamadı!",
"MemberNotPublishedPostYet": "Bu üye henüz bir gönderi yayınlamadı.",
"WelcomeToABP": "ABP'ye Hoşgeldiniz",
"Browse": "Göz at",
"ArticleRequestsDescription": "Burada belirli bir içerik mi görmek istiyorsunuz? Topluluktan bunu oluşturmasını isteyebilirsiniz!",
"LatestContentRequests": "Son İçerik Talepleri",

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

@ -1,7 +1,7 @@
{
"culture": "tr",
"texts": {
"GetStarted": "Başlamak - Başlangıç Templateleri",
"GetStarted": "Başlangıç Şablonları",
"Create": "Oluştur",
"NewProject": "Yeni Proje",
"DirectDownload": "Doğrudan İndir",
@ -82,7 +82,7 @@
"CLI_CommandLineInterface": "CLI (Command Line Interface)",
"CLI_CommandLineInterfaceExplanation": "CLI yeni proje oluşturma ve uygulamanıza modüller ekleme işlemlerini otomatik hale getirir.",
"StartupTemplates": "Başlangıç Templateler",
"StartupTemplatesExplanation": "Çeşitli başlangıç templateleri size geliştirme başlatmak için tam yapılandırılmış bir çözüm sağlar.",
"StartupTemplatesExplanation": "Çeşitli başlangıç şablonları size geliştirme başlatmak için tam yapılandırılmış bir çözüm sağlar.",
"BasedOnFamiliarTools": "Bilinen Araçlara Dayalı ",
"BasedOnFamiliarToolsExplanation": "Zaten bildiğiniz popüler araçlar ile geliştirilme ve egtegre edilmiştir. Düşük öğrenme eğrisi, koaly adaptasyon, rahat geliştirme.",
"ORMIndependent": "ORM Bağımsız",
@ -139,8 +139,8 @@
"AggregateRootEntity": "Aggregate Root, Entity",
"AutoRESTAPIsExplanation": "ABP, application servislerinizi otomatik olarak API Controller olarak kurallı bir şekilde yapılandırabilir.",
"DynamicClientProxiesExplanation": "Apilerinizi, JavaScript ve C# clients tarafından kolaylıkla kullanın.",
"DistributedEventBusWithRabbitMQIntegrationExplanation": "Easily publish & consume distributed events using built-in Distributed Event Bus with RabbitMQ integration available.",
"TestInfrastructureExplanation": "The framework has been developed unit & integration testing in mind. Provides you base classes to make it easier. Startup templates come with pre-configured for testing.",
"DistributedEventBusWithRabbitMQIntegrationExplanation": "RabbitMQ entegrasyonu ile yerleşik Dağıtılmış Event Bus kullanarak dağıtılmış olayları kolayca yayınlayın ve tüketin.",
"TestInfrastructureExplanation": "Çerçeve, birim ve entegrasyon testleri göz önünde bulundurularak geliştirilmiştir. İşinizi kolaylaştırmak için size temel sınıflar sağlar. Başlangıç şablonları test için önceden yapılandırılmış olarak gelir.",
"AuditLoggingEntityHistoriesExplanation": "İş açısından kritik uygulamalar için yerleşik denetim günlüğü. Özellik düzeyinde ayrıntılarla istek, hizmet, yöntem düzeyinde denetim günlüğü ve varlık geçmişleri.",
"EmailSMSAbstractionsWithTemplatingSupportExplanation": "IEmailSender ve ISmsSender soyutlamaları, uygulama mantığınızı altyapıdan ayırır. Gelişmiş e-posta şablon sistemi, e-posta şablonları oluşturmanıza ve yerelleştirmenize ve gerektiğinde kolayca kullanmanıza olanak tanır.",
"LocalizationExplanation": "Yerelleştirme sistemi, düz JSON dosyalarında kaynaklar oluşturmanıza ve bunları UI'nizi yerelleştirmek için kullanmanıza olanak tanır. AspNet Core'un yerelleştirme sistemi ile tam uyumlu iken kalıtım, uzantılar ve JavaScript entegrasyonu gibi gelişmiş senaryoları destekler.",
@ -163,7 +163,7 @@
"Strong": "Güçlü",
"Complete": "Tamamlayınız",
"BasedLayeringModel": "Tabanlı Katmanlama Modeli",
"Microservice": "mikro hizmet",
"Microservice": "Mikroservis",
"Compatible": "Uyumlu",
"MeeTTheABPCommunityInfo": "Misyonumuz, geliştiricilerin makaleler, öğreticiler, vaka çalışmaları vb. ile birbirlerine yardımcı olabilecekleri ve benzer düşünen insanlarla tanışabilecekleri bir ortam yaratmaktır.",
"JoinTheABPCommunityInfo": "Canlı bir topluluğa katılın ve ABP Çerçevesine katkıda bulunun!",
@ -178,7 +178,7 @@
"ProgressiveWebApplication": "Progresif Web Uygulaması",
"UseslatestPreVersion": "En son yayın öncesi sürümünü kullanır",
"ReadTheDocumentation": "<span class=\"text-primary\">Belgeleri okuyun</span><span class=\"text-success\"></span>",
"Documentation": "belgeler",
"Documentation": "Dökümanlar",
"GettingStartedTutorial": "Başlarken Eğitimi",
"ApplicationDevelopmentTutorial": "Uygulama Geliştirme Eğitimi",
"TheStartupTemplate": "Başlangıç Şablonu",
@ -285,7 +285,6 @@
"Database": "Veritabanı",
"Saas": "Saas",
"OpenSourceWebApp": " Açık <span class=\"forever\">kaynak </span> <br/> web uygulaması",
"Framework": "Çerçeve",
"AuditLoggingExplanation": "Sisteminizdeki tüm işlemleri ve veri değişikliklerini otomatik olarak izleyin.",
"AbpNewCommandExplanation": "ABP başlangıç şablonlarını kullanarak yeni çözümler oluşturur.",
"AbpAddModuleCommandExplanation": "Çözümünüze önceden oluşturulmuş uygulama modülleri yükler",
@ -300,10 +299,8 @@
"Preview": "Önizleme",
"CreateANewSolution": "Yeni bir çözüm oluşturun",
"ABPFrameworkFeatures": "ABP Çerçevesi <span class=\"gradient-framework\">Özellikleri</span>",
"Commercial": "Ticari",
"ThirdPartyTools": "Üçüncü taraf araçlar",
"Back": "Geri",
"Community": "Topluluk",
"SeeMore": "Daha fazla göster",
"DetailsOfTheEBook": "E-kitap detayları",
"JoinOurMarketingNewsletter": "Pazarlama bültenimize katılın",
@ -377,7 +374,18 @@
"CreateSolutionFolder": "Çözüm Klasörü Oluşturun",
"CreateSolutionFolderOption": "Projenin çıktı klasöründe yeni bir klasörde mi yoksa doğrudan çıktı klasöründe mi olacağını belirtir.",
"SelectUITheme": "UI Temasını Seçin",
"BooksPageTitle": "ABP Kitapları"
"BooksPageTitle": "ABP Kitapları",
"InstallAbpCliMessage": "Daha önce yüklemediyseniz, ABP CLI'yi bir komut satırı terminaline yükleyin:",
"RunTheFollowingCommand": "Aşağıdaki komutu bir komut satırı terminalinde çalıştırın:",
"ChangeSolutionOptionsBelow": "Aşağıdaki çözüm seçeneklerini değiştirebilirsiniz.",
"MultiLayerApplicationExplanation1": "Domain Driven Design uygulamalarına dayalı olarak tamamen katmanlı bir çözüm oluşturur.",
"MultiLayerApplicationExplanation2": "Sürdürülebilir ve genişletilebilir bir kod tabanına ihtiyaç duyan uzun vadeli projeler için önerilir.",
"SingleLayerApplicationExplanation1": "Tek katmanlı bir web uygulaması oluşturur.",
"SingleLayerApplicationExplanation2": "Daha basit ve anlaşılması kolay bir mimariye sahip bir uygulama oluşturmak için önerilir.",
"ApplicationModuleExplanation1": "Yeniden kullanılabilir, tamamen katmanlı bir uygulama modülü çözümü oluşturur.",
"ApplicationModuleExplanation2": "Modüler uygulamanız için modüller oluşturmak üzere bu seçeneği kullanabilirsiniz.",
"LeptonXLiteThemeInfo": " Modern ve şık bir Bootstrap UI teması. Üretime hazır bir UI temasına sahip olmak istiyorsanız idealdir. Bu en yeni temadır ve varsayılandır.",
"BasicThemeInfo": "Sade Bootstrap renkleri ve stilleri ile minimalist UI teması. Kendi UI temanızı oluşturacaksanız idealdir.",
"Details": "Detaylar"
}
}

2
build/build-all-release.ps1

@ -5,7 +5,7 @@
foreach ($solutionPath in $solutionPaths) {
$solutionAbsPath = (Join-Path $rootFolder $solutionPath)
Set-Location $solutionAbsPath
dotnet build --configuration Release
dotnet build --configuration Release -- /maxcpucount
if (-Not $?) {
Write-Host ("Build failed for the solution: " + $solutionPath)
Set-Location $rootFolder

3
build/common.ps1

@ -36,7 +36,8 @@ if ($full -eq "-f")
"../templates/console",
"../templates/wpf",
"../templates/app-nolayers/aspnet-core",
"../abp_io/AbpIoLocalization"
"../abp_io/AbpIoLocalization",
"../source-code"
)
}else{
Write-host ""

15
delete-bin-obj.ps1

@ -0,0 +1,15 @@
Clear-Host
Write-Host "Deleting all BIN and OBJ folders..." -ForegroundColor Cyan
Get-ChildItem -Path . -Include bin,obj -Recurse -Directory | ForEach-Object {
if ($_.FullName -notmatch "\\node_modules\\") {
Write-Host "Deleting:" $_.FullName -ForegroundColor Yellow
Remove-Item $_.FullName -Recurse -Force
} else {
Write-Host "Skipping:" $_.FullName -ForegroundColor Magenta
}
}
Write-Host "BIN and OBJ folders have been successfully deleted." -ForegroundColor Green

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/abp-essential-features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/abp-try-now.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/cover.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/cross-platform.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/ddd-book.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/developer-focused.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/key-features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/module-layers-and-packages.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/images/open-source.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

85
docs/en/Blog-Posts/2023-04-07_Ultimate_NET_Framework_ABP/post.md

@ -0,0 +1,85 @@
Building robust web applications has become more important than ever as the world is becoming more web-focused. With the rise of new tools and frameworks, choosing the right web development framework can be challenging. Especially if you are a .NET developer, there not so many popular ASPNET Framework around. However, the ABP Framework has become popular for many developers due to its flexibility, scalability, feature set and performance. Let's mention what's ABP Framework and what it promises to .NET developers.
## ASP.NET Core Architecture Best Practices
![ABP Key Features](images/key-features.png)
ABP Framework is an application design framework that provides developers with a powerful set of tools to build web applications quickly and efficiently. It is an open-source, cross-platform framework supporting monolithic and microservices architectures. ABP Framework is built on top of the ASP.NET Core architecture and incorporates best practices for developing web applications.
## ASP.NET Platform
The framework includes a wide range of features, such as an angular code generator with the help of [ABP Suite](https://commercial.abp.io/tools/suite), project templates, and web application themes. These features enable developers to create web applications that are both functional and visually appealing without spending much time on coding. Moreover, ABP Framework provides a common application framework that can be used for different applications, including SAAS, e-commerce, and social media platforms.
ABP Framework also supports the domain-driven design, which means that the framework is designed to be flexible and adaptable to different business requirements. This approach allows developers to build applications aligned with business needs, ensuring that they are efficient and effective.
## Open Source Dot Net Framework
One of the major advantages of ABP Framework is its open-source nature. Many developers continuously improve and update the framework, making it more reliable and secure. Moreover, the ABP Framework is compatible with multiple .NET frameworks, including ASP.NET and .NET Core. When starting your project on top of a solid Microsoft web framework, the ABP Framework is one of the best choices.
![ABP is cross platform](images\cross-platform.png)
Another advantage of ABP Framework is that it provides rapid web application development tools that are easy to use. The framework includes project templates that developers can use as a starting point for their web applications, which can significantly reduce the development time. ABP Framework also provides a web app builder that developers can use to create web applications quickly and efficiently.
## ASPNET Core Architecture
ABP Framework is also compatible with Microsoft's Clean Architecture, a software design pattern that promotes separation of concerns and maintainability. This integration ensures that the applications developed using ABP Framework are well-structured, easy to maintain, and scalable. Many application marketplace reviewers commented about ABP as the best web application framework. While ABP supports multiple UI choices like MVC, Angular, Blazor Web Assembly and Blazor Server, the most downloaded one is MVC microservice architecture. If you are here to find a NET application framework for your next NET Core application, you are in the right place!
![ABP Framework Project Hierarchy](images/module-layers-and-packages.png)
Clean Architecture is a design pattern that emphasizes the separation of concerns, ensuring that the code is organized in independent layers. This helps developers to write code that is easy to maintain, test and refactor. ABP Framework uses this pattern to structure its application code and ensure that it is easy to manage.
## Open Source Web Framework
ABP Framework is an open-source web framework that is free to use and distribute. The framework is licensed under the MIT license, meaning developers can use it for commercial and non-commercial purposes without any restrictions.
ABP Framework provides different templates, which are ASPNET Core web app compatible with various platforms, including Windows, Linux, and macOS.
## Domain Driven Design DotNet
The ABP Framework also implements Domain-Driven Design (DDD), a software design methodology that emphasizes the importance of the domain model. The framework provides a guide for implementing DDD through an implementing domain-driven design. It helps developers to create a domain model that is easy to understand, test, and maintain. As ABP is a C# framework, it supports most of the common application framework features for a core framework.
![ABP Framework - Domain Driven Design e-book](images/ddd-book.png)
There is also a free PDF e-book for Dotnet developers that explains the Domain Driven Design principle with real-world examples. You can download this e-book at https://abp.io/books/implementing-domain-driven-design
## It's a Dotnet Web Framework
ABP Framework is a dotnet web framework that is designed with C# and provides developers with a set of tools that makes it easy to build modern web applications. Whether you want to start a new dotnet monolithic solution or dotnet microservice solution, you can start with ABP. Creating your own dotnet framework architecture may be hard if you don't have many years of experience. The brain team of the ABP Framework specializes in ASP.NET framework architecture and ASP.NET application frameworks.
![Developer Focused](images/developer-focused.png)
## Essential Features of the ABP Framework:
ASP.NET Core modularity, ASP.NET Core modular development, ASP.NET Core localization, ASP.NET Core SaaS framework, ASP.NET Core distributed, event, bus, ASP.NET Core cross-cutting concerns, ASP.NET Core blob storing, ASP.NET Core audit logging, ASP.NET Core microservice, ASP.NET Core microservice solution, ASP.NET Core microservice example, ASP.NET Core API gateway, ASP.NET Core domain, driven, design, ASP.NET Core layered architecture, ASP.NET Core layering, ASP.NET Core clean architecture, ASP.NET Core authentication, ASP.NET Core authorization, ASP.NET Core UI theme, ASP.NET Core tag helpers, ASP.NET Core identity, ASP.NET Core, identity, server, ASP.NET Core IdentityServer, ASP.NET Core payment module, ASP.NET Core best practices, ASP.NET Core design patterns, ASP.NET Core background jobs, ASP.NET Core exception handling, ASP.NET Core, background, workers, ASP.NET Core repository, ASP.NET Core repository pattern, ASP.NET Core unit of work, ASP.NET Core domain services, ASP.NET Core Swagger, ASP.NET Core content management system, ASP.NET Core CMS module, ASP.NET Core user management, ASP.NET Core Role management, ASP.NET Core permission management
![ABP Essential Features](images/abp-essential-features.png)
## Open Source Web Application Framework
ABP Framework is an open-source web application development framework that is free to use and distribute. The framework is licensed under the MIT license, meaning developers can use it for commercial and non-commercial purposes without any restrictions.
![ABP Framework is open-source](images\open-source.png)
## C# Web Application Framework
ABP Framework is built using C#, which is a modern programming language that is widely used in the development of web applications. C# provides developers with features that make it easy to write clean and maintainable code. ABP Framework is a web framework designed to work with C# and provides developers with tools that make it easy to build modern web applications.
## Key Features
The following .NET features are available in the ABP Framework:
.NET modular development, .NET localization, .NET multi-tenancy, .NET SaaS framework, .NET distributed event bus, .NET cross-cutting concerns, .NET,microservice, .NET microservice solution, .NET microservice example, .NET domain driven design, .NET clean architecture, .NET authentication, .NET authorization, .NET best practices, .NET design,patterns, .NET exception handling, .NET background workers, .NET unit of work, .NET domain services, .NET user management, .NET role management, .NET permission management
![ABP Framework Features](images/features.png)
The following keywords best describe the ABP Framework;
Open source backend framework, open source development framework, open source web app builder, open source web applications, open source web development, web application development framework, web application framework, web application framework software, web application infrastructure, web application open source, asp net framework, asp net open source, ASP.NET application, ASP.NET software, ASP.NET web app, ASP.NET web development, web app builder open source, web app framework, Dotnet framework, Dotnet UI framework, Dotnet web application themes.
## Conclusion
ABP Framework is a powerful and flexible web application framework that provides developers with the tools to build high-quality web applications quickly and efficiently. It is an open-source, cross-platform framework that supports multiple .NET frameworks, including ASP.NET and .NET Core. ABP Framework provides rapid web application development tools, project templates, and web application themes that enable developers to create visually appealing and functional applications in no time.
![Try ABP now](images\abp-try-now.png)

297
docs/en/Community-Articles/2023-03-20-Dapper/POST.md

@ -0,0 +1,297 @@
# Using Dapper with the ABP Framework
[Dapper](https://github.com/DapperLib/Dapper) is a simple and lightweight object mapper for .NET. A key feature of Dapper is its [high performance](https://github.com/DapperLib/Dapper#performance) compared to other ORMs. In this article, I will show how to use it in your ABP projects. But, we'll see when to use it first.
### Source Code
You can find the [full source code of the demo application here](https://github.com/abpframework/abp-samples/tree/master/Dapper).
## When to Use Dapper?
In the ABP Framework, we suggest to use Dapper in combination with Entity Framework Core (EF Core) for the following reasons:
* EF Core is much easier to use (you don't need to manually write SQL queries and work with low level database objects).
* EF Core abstracts different DBMS dialects, so it will be easier to change your DBMS later.
* The EF Core's change tracking system automatically updates the changes in the database.
* EF Core is better compatible with Object Oriented Programming (OOP) practices and is more type safe to work with. So, the EF Core code is more understandable and maintainable.
In most of your use cases, you typically work with one or a few entities and a maintainable codebase can be chosen instead of a slight performance difference. However, there may be certain places in your application where it matters:
* You may work with a lot of entities, so you'd like to query faster (Indeed, EF Core's [AsNoTracking()](https://learn.microsoft.com/en-us/ef/core/querying/tracking) extension can help in most cases).
* You may be performing too many database operations in a single request.
* EF Core may not create an optimized SQL query and you may want to manually write it for better performance.
For such cases, Dapper can be a good choice. You can easily write SQL queries and bind the result to your objects.
## Creating a new ABP Solution
To demonstrate the useage of Dapper, I've created an ABP solution. You can find the [full source code of the demo application here](https://github.com/abpframework/abp-samples/tree/master/Dapper). If you want to create the same solution from scratch, follow the steps below:
Install the ABP CLI if you haven't installed it before:
````bash
dotnet tool install -g Volo.Abp.Cli
````
Create a new solution with the ABP Framework's non-layered startup template with MVC UI and EF Core database:
````bash
abp new DapperDemo -t app-nolayers
````
> The startup template and UI selection don't matter for this article. I selected these options to keep the demo solution simple.
After creating the solution, run the following command to migrate the database (run the command in the folder of the `.csproj` file:
````csharp
dotnet run --migrate-database
````
> If you've created a layered solution, then run the `DbMigrator` application inside the solution. If you have trouble by creating the solution, please refer to the [Quick Start](https://docs.abp.io/en/abp/latest/Tutorials/Todo/Single-Layer/Index) document.
## Setting Up the Entity Framework Core Part
We will use EF Core with Dapper, so we need to configure EF Core first. I will use the following `Book` entity as an example:
````csharp
public class Book : AuditedAggregateRoot<Guid>
{
public string Name { get; set; }
public DateTime PublishDate { get; set; }
public float Price { get; set; }
}
````
If you are using a layered solution, entities are located in the `Domain` project. For my demo solution, I just placed it in the `Entities` folder of the single-layer project:
![book-class-in-rider](book-class-in-rider.png)
Once I created the `Book` entity, I should add it to my `DbContext` class:
````csharp
public class DapperDemoDbContext : AbpDbContext<DapperDemoDbContext>
{
// 1: ADD A DBSET PROPERTY
public DbSet<Book> Books { get; set; }
public DapperDemoDbContext(DbContextOptions<DapperDemoDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
//...other code parts
// 2: MAP YOUR ENTITY TO A DATABASE TABLE
builder.Entity<Book>(b =>
{
b.ToTable("Books");
b.Property(x => x.Name).IsRequired().HasMaxLength(128);
});
}
}
````
Now, we can add a new database migration:
````bash
dotnet ef migrations add Added_Book
````
And apply the changes to the database:
````bash
dotnet ef database update
````
At this point, you should be able to see the Books table if you check your database:
![book-database-table](book-database-table.png)
> As you see, the `Books` table contains more fields than the `Book` entity's property count. Other properties are inherited from the `AuditedAggregateRoot` table. You could inherit from the `BasicAggregateRoot` class if you don't want these properties.
## Seeding the Database
ABP's [data seeding](https://docs.abp.io/en/abp/latest/Data-Seeding) system is a great way to add some test data to the database. The following class inserts two books to the `Books` table when I migrate the database:
````csharp
public class DapperDemoDataSeederContributor : IDataSeedContributor, ITransientDependency
{
private readonly IRepository<Book, Guid> _bookRepository;
public DapperDemoDataSeederContributor(IRepository<Book, Guid> bookRepository)
{
_bookRepository = bookRepository;
}
public async Task SeedAsync(DataSeedContext context)
{
if (await _bookRepository.GetCountAsync() > 0)
{
return;
}
await _bookRepository.InsertAsync(
new Book
{
Name = "1984",
PublishDate = new DateTime(1949, 6, 8),
Price = 19.84f
}
);
await _bookRepository.InsertAsync(
new Book
{
Name = "The Hitchhiker's Guide to the Galaxy",
PublishDate = new DateTime(1995, 9, 27),
Price = 42.0f
}
);
}
}
````
After creating the `DapperDemoDataSeederContributor` class, I can re-run the following command:
````bash
dotnet run --migrate-database
````
Now, I can see the records in the database:
![book-table-data](book-table-data.png)
Now, everything is ready to try querying from the `Books` table with Dapper.
## Using Dapper Without the Integration Package
ABP provides an integration package for Dapper. However, I first want to demonstrate using Dapper without the integration package.
### Installing the Dapper Package
First, install the [Dapper](https://www.nuget.org/packages/Dapper) package to your project. You can use a command-line terminal, locate the root path of your project (`.csproj` file that you want to install it in) and run the following command:
````bash
dotnet add package Dapper
````
> If your application is layered, then we suggest to add the `Dapper` package to your `EntityFrameworkCore` integration project in your solution.
### Executing a Dapper Query
I will query from the `Books` table, but I don't want to use the `Book` entity to map the result (because I don't need all the properties). So, I am creating a new class for the query result:
````csharp
public class BookDataView
{
public Guid Id { get; set; }
public string Name { get; set; }
public float Price { get; set; }
}
````
Now, we can use Dapper's `QueryAsync` extension method as shown below:
````csharp
public class DemoService : ITransientDependency
{
private readonly IRepository<Book, Guid> _bookRepository;
public DemoService(IRepository<Book, Guid> bookRepository)
{
_bookRepository = bookRepository;
}
[UnitOfWork]
public virtual async Task<List<BookDataView>> GetListAsync()
{
var database = (await _bookRepository.GetDbContextAsync()).Database;
var dbConnection = database.GetDbConnection();
var dbTransaction = database.CurrentTransaction?.GetDbTransaction();
var queryResult = await dbConnection.QueryAsync<BookDataView>(
"SELECT Id, Name, Price FROM Books",
transaction: dbTransaction
);
return queryResult.ToList();
}
}
````
Let's examine this class:
* I've injected the ABP's standard [generic repository](https://docs.abp.io/en/abp/latest/Repositories) service into the `DemoService` constructor.
* `_bookRepository.GetDbContextAsync()` returns the underlying `DbContext` object of EF Core. We need to have the [Volo.Abp.EntityFrameworkCore](https://www.nuget.org/packages/Volo.Abp.EntityFrameworkCore) package reference to be able to access that method. If you have created a single-layer solution, the reference will already have existed. If you have created a layered solution you may need to manually add this package to the project that contains the `DemoService` class. Because the layered solution isolates the EF Core dependency from the rest of the solution.
* Dapper needs a `DbConnection` and a `DbTransaction` object (as optional) to execute a query. We are getting them over the `database` object obtained from the `DbContext`. We suggest to always pass the current `DbTransaction` object while working with Dapper. Because, if there is a database transaction on the same database connection that you execute queries on, and you don't pass the transaction object, you'll get an exception.
* Finally, we can use Dapper's `QueryAsync` extension method to execute the database query.
* Notice that the `GetListAsync` method is made as `virtual` and marked with the `UnitOfWork` attribute to enable the [Unit Of Work](https://docs.abp.io/en/abp/latest/Unit-Of-Work) for that method. It ensures the database connection is available in the body of the `GetListAsync` method.
That's all. You can execute any Dapper operation using the `DbConnection` and `DbTransaction` objects obtained from the `_bookRepository` object. Please refer to Dapper's documentation for other operations.
> We've obtained the `DbContext` object from a repository. However, a repository is not required to obtain a `DbContext`. Instead, you could inject the `IDbContextProvider<T>` service (`IDbContextProvider<DapperDemoDbContext>` for this demo) and call its `GetDbContextAsync` method.
## Using the Volo.Abp.Dapper Package
In the previous section, you saw that you don't need an ABP integration package to be able to use Dapper in your ABP applications. However, there is an integration package here: [Volo.Abp.Dapper](https://www.nuget.org/packages/Volo.Abp.Dapper). In fact, that package doesn't contain much services. It just provides a convenient base class to create Dapper based repository classes.
### Installing the Volo.Abp.Dapper Package
You can use the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI#add-package) to easily install ABP packages to your projects. Execute the following command in the folder of the `.csproj` file that you want to install the package on:
````bash
abp add-package Volo.Abp.Dapper
````
> You can check the [ABP Dapper document](https://docs.abp.io/en/abp/latest/Dapper) for alternative installation options.
### Creating a Repository Class
In the `DemoService` example, we used database objects out of a [repository](https://docs.abp.io/en/abp/latest/Repositories) class. If you want to implement layering to your solution and abstracting database operations, it can be better to create a repository class to execute the Dapper operations.
Here's a repository class that executes the same database query:
````csharp
public class BookRepository : DapperRepository<DapperDemoDbContext>, ITransientDependency
{
public BookRepository(IDbContextProvider<DapperDemoDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
public virtual async Task<List<BookDataView>> GetListAsync()
{
var connection = await GetDbConnectionAsync();
var queryResult = await connection.QueryAsync<BookDataView>(
"SELECT Id, Name, Price FROM Books",
transaction: await GetDbTransactionAsync()
);
return queryResult.ToList();
}
}
````
Let's examine this class:
* It inherits from the `DapperRepository` class, which provides useful methods and properties for database operations. It also implements the `IUnitOfWorkEnabled` interface, so ABP makes the database connection (and transaction if requested) available in the method body by implementing dynamic proxies (a.k.a. interception).
* The `GetListAsync` method's been made `virtual`. That's needed to make the interception process working. It wouldn't be needed if we introduce `IBookRepository` to that class and always use it by injecting the `BookRepository` class (in this case, it will use interface proxying - however, this is too much details for the purpose of this article).
* We've used the `GetDbConnectionAsync` and `GetDbTransactionAsync` methods to obtain the current database connection and transaction (that is managed by ABP's [unit of work](https://docs.abp.io/en/abp/latest/Unit-Of-Work) system).
You can then inject the `BookRepository` class when you want to get a list of `BookDataView` whenever it is needed. In the demo project, I used it inside the `IndexModel.cshtml.cs` to show a list of books on the page:
![list-of-books](list-of-books.png)
## Conclusion
In this article, I've explained ABP's Dapper integration and demonstrated how you can execute Dapper operations in your applications. I suggest to use Dapper when it is really needed and adds any significant value (generally a performance gain) to your application. Otherwise, EF Core is much more convenient for most of the database operations and you will have a more maintainable codebase using EF Core.
## Source Code
You can find the [full source code of the demo application here](https://github.com/abpframework/abp-samples/tree/master/Dapper).
## See Also
* [ABP Dapper documentation](https://docs.abp.io/en/abp/latest/Dapper)

BIN
docs/en/Community-Articles/2023-03-20-Dapper/book-class-in-rider.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
docs/en/Community-Articles/2023-03-20-Dapper/book-database-table.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
docs/en/Community-Articles/2023-03-20-Dapper/book-table-data.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
docs/en/Community-Articles/2023-03-20-Dapper/list-of-books.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

14
docs/en/Community-Articles/2023-03-27-What-is-new-in-NET8/post.md

@ -15,7 +15,7 @@ dotnet publish -p:PublishRelease=false -> /app/bin/Debug/net8.0/app.dll
## `System.Text.Json` Serialization 🧱
## System.Text.Json Serialization 🧱
[System.Text.Json](https://learn.microsoft.com/en-us/dotnet/api/system.text.json) replaced Newtonsoft.Json in the recent versions. We are also using `System.Text.Json` in the [ABP Framework](https://abp.io) now. There are several enhancements to object serialization and deserialization.
@ -25,7 +25,9 @@ The latest version of the [source generator](https://learn.microsoft.com/en-us/d
## Randomness
## Randomness
AI programming is very popular these days. And the need to produce more random content arose.
### GetItems<T>() 🧮
@ -110,7 +112,7 @@ In .NET 8, various new types have been introduced to enhance application perform
## Improvements in `System.Numerics` and `System.Runtime.Intrinsics` 🔥
## Improvements in System.Numerics and System.Runtime.Intrinsics 🔥
There are several enhancements made to the [System.Numerics](https://learn.microsoft.com/en-us/dotnet/api/system.numerics) and [System.Runtime.Intrinsics](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics) namespaces. These improvements include better hardware acceleration for [Vector256](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.intrinsics.vector256-1), [Matrix3x2](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.matrix3x2), and [Matrix4x4](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.matrix4x4) in .NET 8.
@ -183,7 +185,7 @@ In .NET 8, the support for native AOT now encompasses the `x64` and `Arm64` arch
## .NET 8 Devops Improvements 📦
## .NET 8 DevOps Improvements 📦
### NET Container Image Changes
@ -210,7 +212,9 @@ The support requirements for Linux have been updated for .NET 8, with changes to
For further details, please refer to the [support for Red Hat Enterprise Linux Family](https://github.com/dotnet/core/blob/main/linux-support.md#red-hat-enterprise-linux-family-support) page.
〰️〰️〰️
---
Become a pioneer and try the new features of .NET 8 now.
Adapt it to your project or start a new .NET 8 project.

372
docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/POST.md

@ -0,0 +1,372 @@
# Convert Create/Edit Modals to Page
In this document we will explain how to convert BookStore's Books create & edit modals to regular blazor pages.
## Before
![bookstore-crud-before](images/old.gif)
## After
![bookstore-crud-after](images/new.gif)
# Books.razor Page
Books.razor page is the main page of the books management. Create & Update operations are done in this page. So we'll remove create & update operations from this page and move a separate blazor component for each operation. Each component will be a page.
- Remove both Create & Update modals.
![remove-all-modals](images/books-remove-modals.png)
- Replace **NewBook** button with a link to **CreateBook** page.
```html
<Button Color="Color.Primary" Type="ButtonType.Link" To="books/new">
@L["NewBook"]
</Button>
```
- Inject `NavigationManager` to `Books.razor` page.
```csharp
@inject NavigationManager NavigationManager
```
- Replace **Edit** button with a link to **UpdateBook** page.
```html
<Button Color="Color.Primary" Type="ButtonType.Link" OnClick="() => NavigateToEdit(book.Id)">
@L["Edit"]
</Button>
```
```csharp
private void NavigateToEdit(Guid id)
{
NavigationManager.NavigateTo($"books/{id}/edit");
}
```
- Remove all methods in the `Books.razor` page except constructor. And add `GoToEditPage` as below:
```csharp
protected void GoToEditPage(BookDto book)
{
NavigationManager.NavigateTo($"books/{book.Id}");
}
```
![bookstore-remove-methods](images/books-remove-methods.png)
- Change Edit button to a link in the table.
```html
<EntityAction TItem="BookDto"
Text="@L["Edit"]"
Visible=HasUpdatePermission
Clicked="() => GoToEditPage(context)" />
```
# CreateBooks Page
Create new `CreateBook.razor` and `CreateBook.razor.cs` files in your project.
- `CreateBook.razor`
```html
@page "/books/new"
@attribute [Authorize(BookStorePermissions.Books.Create)]
@inherits BookStoreComponentBase
@using Acme.BookStore.Books;
@using Acme.BookStore.Localization;
@using Acme.BookStore.Permissions;
@using Microsoft.Extensions.Localization;
@using Volo.Abp.AspNetCore.Components.Web;
@inject IStringLocalizer<BookStoreResource> L
@inject AbpBlazorMessageLocalizerHelper<BookStoreResource> LH
@inject IBookAppService AppService
@inject NavigationManager NavigationManager
<Card>
<CardHeader>
<HeadContent>
<ModalTitle>@L["NewBook"]</ModalTitle>
</HeadContent>
</CardHeader>
<CardBody>
<Validations @ref="@CreateValidationsRef" Model="@NewEntity" ValidateOnLoad="false">
<Validation MessageLocalizer="@LH.Localize">
<Field>
<FieldLabel>@L["Author"]</FieldLabel>
<Select TValue="Guid" @bind-SelectedValue="@NewEntity.AuthorId">
@foreach (var author in authorList)
{
<SelectItem TValue="Guid" Value="@author.Id">
@author.Name
</SelectItem>
}
</Select>
</Field>
<Field>
<FieldLabel>@L["Name"]</FieldLabel>
<TextEdit @bind-Text="@NewEntity.Name">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</Field>
</Validation>
<Field>
<FieldLabel>@L["Type"]</FieldLabel>
<Select TValue="BookType" @bind-SelectedValue="@NewEntity.Type">
@foreach (int bookTypeValue in Enum.GetValues(typeof(BookType)))
{
<SelectItem TValue="BookType" Value="@((BookType) bookTypeValue)">
@L[$"Enum:BookType.{bookTypeValue}"]
</SelectItem>
}
</Select>
</Field>
<Field>
<FieldLabel>@L["PublishDate"]</FieldLabel>
<DateEdit TValue="DateTime" @bind-Date="NewEntity.PublishDate" />
</Field>
<Field>
<FieldLabel>@L["Price"]</FieldLabel>
<NumericEdit TValue="float" @bind-Value="NewEntity.Price" />
</Field>
</Validations>
</CardBody>
<CardFooter>
<Button Color="Color.Secondary" Type="ButtonType.Link" To="books">
@L["Cancel"]
</Button>
<Button Color="Color.Primary"
Type="@ButtonType.Submit"
PreventDefaultOnSubmit="true"
Clicked="CreateEntityAsync">
@L["Save"]
</Button>
</CardFooter>
</Card>
```
- `CreateBook.razor.cs`
```csharp
using Acme.BookStore.Books;
using Blazorise;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
namespace Acme.BookStore.Blazor.Pages;
public partial class CreateBook
{
protected Validations CreateValidationsRef;
protected CreateUpdateBookDto NewEntity = new();
IReadOnlyList<AuthorLookupDto> authorList = Array.Empty<AuthorLookupDto>();
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
authorList = (await AppService.GetAuthorLookupAsync()).Items;
if (!authorList.Any())
{
throw new UserFriendlyException(message: L["AnAuthorIsRequiredForCreatingBook"]);
}
NewEntity.AuthorId = authorList.First().Id;
if (CreateValidationsRef != null)
{
await CreateValidationsRef.ClearAll();
}
}
protected virtual async Task CreateEntityAsync()
{
try
{
var validate = true;
if (CreateValidationsRef != null)
{
validate = await CreateValidationsRef.ValidateAll();
}
if (validate)
{
await AppService.CreateAsync(NewEntity);
NavigationManager.NavigateTo("books");
}
}
catch (Exception ex)
{
await HandleErrorAsync(ex);
}
}
}
```
# EditBooks Page
Create new `EditBook.razor` and `EditBook.razor.cs` files in your project.
- `EditBook.razor`
```html
@page "/books/{Id}"
@attribute [Authorize(BookStorePermissions.Books.Edit)]
@inherits BookStoreComponentBase
@using Acme.BookStore.Books;
@using Acme.BookStore.Localization;
@using Acme.BookStore.Permissions;
@using Microsoft.Extensions.Localization;
@using Volo.Abp.AspNetCore.Components.Web;
@inject IStringLocalizer<BookStoreResource> L
@inject AbpBlazorMessageLocalizerHelper<BookStoreResource> LH
@inject IBookAppService AppService
@inject NavigationManager NavigationManager
<Card>
<CardHeader>
<HeadContent>
<ModalTitle>@EditingEntity.Name</ModalTitle>
</HeadContent>
</CardHeader>
<CardBody>
<Validations @ref="@EditValidationsRef" Model="@EditingEntity" ValidateOnLoad="false">
<Validation MessageLocalizer="@LH.Localize">
<Field>
<FieldLabel>@L["Author"]</FieldLabel>
<Select TValue="Guid" @bind-SelectedValue="@EditingEntity.AuthorId">
@foreach (var author in authorList)
{
<SelectItem TValue="Guid" Value="@author.Id">
@author.Name
</SelectItem>
}
</Select>
</Field>
<Field>
<FieldLabel>@L["Name"]</FieldLabel>
<TextEdit @bind-Text="@EditingEntity.Name">
<Feedback>
<ValidationError />
</Feedback>
</TextEdit>
</Field>
</Validation>
<Field>
<FieldLabel>@L["Type"]</FieldLabel>
<Select TValue="BookType" @bind-SelectedValue="@EditingEntity.Type">
@foreach (int bookTypeValue in Enum.GetValues(typeof(BookType)))
{
<SelectItem TValue="BookType" Value="@((BookType) bookTypeValue)">
@L[$"Enum:BookType.{bookTypeValue}"]
</SelectItem>
}
</Select>
</Field>
<Field>
<FieldLabel>@L["PublishDate"]</FieldLabel>
<DateEdit TValue="DateTime" @bind-Date="EditingEntity.PublishDate" />
</Field>
<Field>
<FieldLabel>@L["Price"]</FieldLabel>
<NumericEdit TValue="float" @bind-Value="EditingEntity.Price" />
</Field>
</Validations>
</CardBody>
<CardFooter>
<Button Color="Color.Secondary" Type="ButtonType.Link" To="books">
@L["Cancel"]
</Button>
<Button Color="Color.Primary"
Type="@ButtonType.Submit"
PreventDefaultOnSubmit="true"
Clicked="UpdateEntityAsync">
@L["Save"]
</Button>
</CardFooter>
</Card>
```
- `EditBook.razor.cs`
```csharp
using Acme.BookStore.Books;
using Blazorise;
using Microsoft.AspNetCore.Components;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
namespace Acme.BookStore.Blazor.Pages;
public partial class EditBook
{
protected CreateUpdateBookDto EditingEntity = new();
protected Validations EditValidationsRef;
IReadOnlyList<AuthorLookupDto> authorList = Array.Empty<AuthorLookupDto>();
[Parameter]
public string Id { get; set; }
public Guid EditingEntityId { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
// Blazor can't parse Guid as route constraint currently.
// See https://github.com/dotnet/aspnetcore/issues/19008
EditingEntityId = Guid.Parse(Id);
authorList = (await AppService.GetAuthorLookupAsync()).Items;
if (!authorList.Any())
{
throw new UserFriendlyException(message: L["AnAuthorIsRequiredForCreatingBook"]);
}
var entityDto = await AppService.GetAsync(EditingEntityId);
EditingEntity = ObjectMapper.Map<BookDto,CreateUpdateBookDto>(entityDto);
if (EditValidationsRef != null)
{
await EditValidationsRef.ClearAll();
}
}
protected virtual async Task UpdateEntityAsync()
{
try
{
var validate = true;
if (EditValidationsRef != null)
{
validate = await EditValidationsRef.ValidateAll();
}
if (validate)
{
await AppService.UpdateAsync(EditingEntityId, EditingEntity);
NavigationManager.NavigateTo("books");
}
}
catch (Exception ex)
{
await HandleErrorAsync(ex);
}
}
}
```
You can check the following commit for details:
https://github.com/abpframework/abp-samples/commit/aae61ad6d66ebf6191dd4dcfb4e23d30bd680a4e

BIN
docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/books-remove-methods.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/books-remove-modals.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/new.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
docs/en/Community-Articles/2023-03-28-Converting-Create-Edit-Modal-To-Page/images/old.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/abp-framework.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/abp-suite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/architecture-layers.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/conclusion.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/cover.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/csharp-microservice-framework.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/ddd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/essential-features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/essentials.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/modular.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/pre-built-modules.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/images/the-abp-platform.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

118
docs/en/Community-Articles/2023-04-03-What-is-ABP-Framework/post.md

@ -0,0 +1,118 @@
# ABP Framework: An Open Source Web Application Development Framework
## What is ABP Framework?
![ABP Framework](images/abp-framework.png)
ABP Framework is an open-source web application development framework that provides developers with a set of tools to build modern, scalable, and maintainable web applications. ABP Framework is also a C# web framework that is based on the ASP.NET web framework. It is one of the [most popular repository](https://github.com/abpframework/abp) for open source application framework.
ABP Framework is a modular and extensible framework that uses the clean architecture principles and is built on top of the latest .NET technologies. The framework comes with a set of pre-built modules, including user management, role management, permission management, content management system (CMS) modules, which makes it easier for developers to create line of business applications.
## Clean Architecture
When you want to start a new scratch project, you first google for Dotnet Framework Architecture. There are some boilerplate dotnet startup templates but these are only an orchestration of some popular tools. ABP is not a template but it's a full stack open source application development framework.
When you say "Clean Architecture ASP.NET Core", the first web development framework that comes to mind is undoubtedly the ABP Framework. It is built using clean architecture principles, which help developers build scalable and maintainable applications. Clean architecture separates the application into distinct layers, each with a clear responsibility. The dotnet architecture layers include the presentation layer, application layer, domain layer, and infrastructure layer. Each layer has a clear responsibility, which helps in separating concerns and keeping the code organized. This makes ABP Framework one of the best asp net frameworks.
![Clean architecture - ABP Layers](images/architecture-layers.png)
## C# Web Framework for Web Development
ABP Framework is built using C#, which is a modern programming language that is widely used in the development of web applications. C# provides developers with a set of features that make it easy to write clean and maintainable code. ABP Framework is a web framework that is designed to work with C# and provides developers with a set of tools that makes it easy to build modern web applications. If you are looking for an ASP NET Core shared framework download, then go to https://abp.io/get-started and create your project.
![ABP Framework Essentials](images/essentials.png)
## Yet another ASP.NET Web Framework
There are a few full stack AspNet Core frameworks around. Many of them are one developer projects which can be risky for you to start a long running project. ABP Framework is built on top of the latest ASP NET Core Framework, which provides developers with a set of features that makes it easy to build modern web applications. And most important part is, ABP is backed with a large group of developers and it has almost 10K stars on GitHub. ASP.NET provides developers with a set of tools that makes it easy to build web applications using a model-view-controller (MVC) architecture.
![ABP.io Platform](images/the-abp-platform.png)
## Implementing Domain Driven Design with C#
ABP Framework provides developers with a set of tools that make it easy to implement domain-driven design principles. The framework comes with a set of pre-built modules, including user management, role management, permission management, and content management system (CMS) modules, which makes it easier for developers to create complex applications.
![Implementing Domain Driven Design with C#](images/ddd.png)
## Open Source Web Application
ABP Framework is an open-source web application development framework that is free to use and distribute. The framework is licensed under the MIT license, which means that developers can use it for commercial and non-commercial purposes without any restrictions.
## .NET Application Framework with Pre-Built Modules
ABP Framework is built using the latest .NET technologies and provides developers with a set of tools that makes it easy to build modern web applications. ABP contains several important modules of a line of business applications.
![ABP Pre-built Modules](images/pre-built-modules.png)
## C# Microservice Framework
ABP Framework is a C# microservices framework that is designed to help developers build scalable and maintainable microservices. The framework is also known as .NET .net microservices framework. It provides developers with a set of tools that makes it easy to build microservices using clean architecture principles.
![C# Microservice Framework](images/csharp-microservice-framework.png)
## CRUD Tool Dotnet
ABP Framework has a commercial version as well. The paid version comes with a premium support, rich themes and there's a very handy tool called [ABP Suite](https://commercial.abp.io/tools/suite) for "CRUD page generation ASP.NET". While ABP is not a low-code or no-code platform, ABP Suite provides ASP NET rapid application development. There are many ASP.NET rapid development tools but these are only tools without a framework support. If you are looking for web based rapid application development tools (also open-source), ABP is the way to go!
![ABP Suite](images/abp-suite.png)
## Modular Development
One of the best sides of the ABP Framework is the modular development side. It's born as a modular system. There are several open source web frameworks around but many of them lack of modularity.
![Modular Development](images/modular.png)
Let's see the key features of the ABP Framework:
- Multi-tenancy support
- Cross-cutting concerns implemented
- Full-stack microservice solution
- SaaS framework
- ASP.NET modular monolith
- Has an ASP.NET user management module
- Distributed events
- Layered architecture
- Free framework for website
- Several framework templates
## The Essential Features of ABP
ABP Framework is an open source SaaS framework. This crucial feature distinguishes it from other open source web development frameworks.
![Essential Features](images/essential-features.png)
The following essential ASP.NET features are available in the ABP Framework:
ASP.NET modularity, ASP.NET modular development, ASP.NET localization, ASP.NET multi-tenancy, ASP.NET SaaS, ASP.NET SaaS framework, ASP.NET distributed events, ASP.NET distributed event bus, ASP.NET cross-cutting concerns, ASP.NET blob storing, ASP.NET audit logging, ASP.NET microservice, ASP.NET microservice solution, ASP.NET microservice example, ASP.NET API gateway, ASP.NET domain driven design, ASP.NET layered architecture, ASP.NET layering, ASP.NET clean architecture, ASP.NET authentication, ASP.NET authorization, ASP.NET identity, ASP.NET identity server, ASP.NET IdentityServer, ASP.NET payment module, ASP.NET best practices, ASP.NET design patterns, ASP.NET background jobs, ASP.NET exception handling, ASP.NET background workers, ASP.NET repository, ASP.NET repository pattern, ASP.NET unit of work, ASP.NET domain services, ASP.NET swagger, ASP.NET content management system, ASP.NET user management, ASP.NET role management, ASP.NET permission management
## Microservice Example: eShopOnAbp
[eShopOnAbp](https://www.eshoponabp.com/) is a microservice example built on top ABP. It is a sample net application, similar to the Microsoft's [eShopOnContainer](https://github.com/dotnet-architecture/eShopOnContainers) project. It is a reference microservice solution built with the ABP Framework and .NET, runs on Kubernetes with Helm configuration, includes API Gateways, Angular and ASP.NET Core MVC applications with PostgreSQL and MongoDB databases. For more information, check out https://github.com/abpframework/eShopOnAbp.
## Conclusion
In conclusion, ABP Framework is an open-source web development framework that offers many features and benefits for building modern and scalable web applications. Its modular and extensible architecture, implementation of Domain-Driven Design, and compatibility with various platforms make it a popular choice for developers. Whether you're building a web application, microservices, or modular monoliths, ABP Framework has everything you need to get started.
![conclusion](images/conclusion.png)
Whether you're building a dot net website, a web app infrastructure, or a webpage framework, open source web application frameworks are a cost-effective and flexible option for web development. If you are looking for an open source web application builder which contains project framework template with web application development tools (open source), [ABP Framework](https://abp.io/) is the right choice.

60
docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/Top 10 .NET Core Libraries Every Developer Should Know.md

@ -0,0 +1,60 @@
# Top 10 .NET Core Libraries Every Developer Should Know
> *Brief Summary*:
>
> This article is intended for .NET Core developers who wish to create a robust and useful.NET core application. It is a list of the most popular and widely used .NET Core libraries that have been carefully vetted. Go up the GitHub reference link for the DotNet libraries and see how many stars the .NET community has rewarded.
## Best .NET libraries — Top useful libraries every .NET developers use
.NET Core has become one of the most popular frameworks for developing modern applications. One of the reasons for its popularity is the wide range of libraries available to developers. .NET Core got new updates in its features with lesser coding, deploying high-accomplishment, and extremely scalable applications. Making the underlying architecture functions more effective and efficient without having to reinvent the wheel will free up your time to focus on more crucial tasks, including making your application stand out from the competition.
In this article, we'll take a closer look at **The Most Popular .NET Libraries Every Developer Should Know**. As a software developer, you're likely familiar with the .NET framework and the many libraries it offers. With so many options available, it can be overwhelming to know which ones to choose for your project. This is the main reason I have compiled a list of the **Top 10 .NET Libraries That Developers Should Use** to make their development process more efficient and effective. A list of Top 10 .NET Core Libraries will let developers understand these so that they can pick appropriate libraries for their projects.
If you're a .NET Core developer, there are **10 important .NET Core libraries** that you should be familiar with. While creating these **Essential 10 .NET Libraries Every Developer Must Know**, I used NuGet and GitHub.com popular repositories. And all the libraries listed here are also open-source. The list is filtered with only to .NET Core related libraries. Also I excluded the Microsoft .NET Core Framework libraries from this **Top 10 Unique .NET Core Libraries Developers Must Utilize**. So, without further ado, let’s get right into it:
------
## Top 10 best libraries for .NET developers
1. **Newtonsoft.Json:** This library is widely used for working with JSON data in .NET applications. It provides high performance and ease of use, making it a go-to solution for serialization and deserialization of JSON data.
2. **Dapper:** It is a simple and efficient ORM that offers high performance and flexibility when working with relational databases. It is easy to use and offers a fast and efficient way to interact with databases.
3. **Polly:** Polly is a library that helps handle transient errors and faults in .NET applications. It offers an easy-to-use policy-based approach to handling retries, timeouts, and circuit breakers, making it a valuable tool for building reliable applications.
4. **AutoMapper**: This .NET Core library simplifies object-to-object mapping by automatically mapping properties from one object to another. This library is especially useful in larger projects where mapping can become time-consuming and tedious.
5. **FluentValidation:** It is a library that provides a fluent API for building validation rules. It makes it easy to create complex validation logic and supports a wide range of validation scenarios, making it a valuable tool for ensuring data integrity in your applications.
6. **Serilog**: This library is a structured logging library that makes it easy to collect and analyze logs from your application. It offers flexibility and extensibility, and supports a variety of sinks for storing logs, including Elasticsearch, SQL Server, and more.
7. **Swashbuckle.AspNetCore.Swagger:** This library generates OpenAPI documentation for your ASP.NET Core Web API. It makes it easy to understand the functionality of your API and allows you to easily generate client code for your API.
8. **NLog**: It is is a free logging platform for .NET with rich log routing and management capabilities. It makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity.
9. **Moq4**: It is is a popular mocking framework for .NET applications. It makes it easy to create mock objects for unit testing, reducing the need for expensive and time-consuming integration testing.
10. **StackExchange.Redis**: This is a library for working with Redis databases in .NET applications. It provides a simple and efficient way to interact with Redis, and offers high performance and scalability.
------
![10 important .NET Core Libraries](essential-10-net-libraries-every-developer-must-know.png)
## Top 10 .NET Core Libraries List That Every Developer Must Know
Here you can see them in table with the GitHub stars, GitHub release counts, recent release frequency, NuGet download counts and per day NuGet download counts:
| GitHub URL | NuGet URL | Stars | Releases | Last release | Downloads | Download Per Day |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ----- | -------- | ------------ | --------- | ---------------- |
| [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) | [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json) | 10K | 65 | 1 month ago | 3B | 680K |
| [Dapper](https://github.com/DapperLib/Dapper) | [Dapper](https://www.nuget.org/packages/Dapper) | 16K | 70 | 2 years ago | 216M | 50K |
| [Polly](https://github.com/App-vNext/Polly) | [Polly](https://www.nuget.org/packages/polly) | 12K | 26 | 1 year ago | 335M | 92K |
| [AutoMapper](https://github.com/AutoMapper/AutoMapper) | [AutoMapper](https://www.nuget.org/packages/AutoMapper) | 9K | 41 | 6 months ago | 400M | 90K |
| [FluentValidation](https://github.com/FluentValidation/FluentValidation) | [FluentValidation](https://www.nuget.org/packages/FluentValidation) | 8K | 68 | 3 days ago | 250M | 56K |
| [Serilog](https://github.com/serilog/serilog) | [Serilog](https://www.nuget.org/packages/Serilog) | 6K | 15 | 1 month ago | 722M | 197K |
| [Swashbuckle.AspNetCore.Swagger](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) | [Swashbuckle.AspNetCore.Swagger](https://www.nuget.org/packages/Swashbuckle.AspNetCore.Swagger) | 5K | 28 | 4 months ago | 386M | 168K |
| [NLog](https://github.com/NLog/NLog) | [NLog](https://www.nuget.org/packages/Nlog) | 6K | 125 | 1 week ago | 217M | 48K |
| [Moq](https://github.com/moq/moq4) | [Moq](https://www.nuget.org/packages/Moq) | 5K | 33 | 4 months ago | 418M | 93K |
| [StackExchange.Redis](https://github.com/StackExchange/StackExchange.Redis) | [StackExchange.Redis](https://www.nuget.org/packages/StackExchange.Redis) | 5K | 34 | 11 days ago | 244M | 74K |
In conclusion, these 10 .NET Core libraries are essential tools for any .NET Core developer. They offer a wide range of functionality, from handling errors to mocking for unit testing and simplifying object mapping. Whether you're working on a large-scale enterprise application or a small project, these libraries can help you build more reliable, efficient, and effective applications.

BIN
docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/cover1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 KiB

BIN
docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/cover2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

BIN
docs/en/Community-Articles/2023-04-11-Top-10-NET-Core-Libraries-Every-Developer-Should-Know/essential-10-net-libraries-every-developer-must-know.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

79
docs/en/Dapper.md

@ -1,68 +1,69 @@
# Dapper Integration
Dapper is a light-weight and simple database provider. The major benefit of using Dapper is writing T-SQL queries. It provides some extension methods for `IDbConnection` interface.
[Dapper](https://github.com/DapperLib/Dapper) is a simple and lightweight object mapper for .NET. A key feature of Dapper is its [high performance](https://github.com/DapperLib/Dapper#performance) compared to other ORMs.
ABP does not encapsulate many functions for Dapper. ABP Dapper library provides a `DapperRepository<TDbContext>` base class based on ABP EntityFrameworkCore module, which provides the `IDbConnection` and `IDbTransaction` properties required by Dapper.
While you can use Dapper as is in your ABP applications, there is also an integration package that simplifies creating repository classes using Dapper.
`IDbConnection` and `IDbTransaction` works well with the [ABP Unit-Of-Work](Unit-Of-Work.md).
> ABP's Dapper integration package is based on Entity Framework Core (EF Core). That means it assumes you will use Dapper mixed with EF Core where EF Core is the primary database provider and you use Dapper when you need to fine-tune your quires and get the maximum performance. See [this article](https://community.abp.io/posts/using-dapper-with-the-abp-framework-shp74p2l) if you want to know why it is like that.
## Installation
Install and configure EF Core according to [EF Core's integrated documentation](Entity-Framework-Core.md).
You can use the [ABP CLI](CLI.md) to install the [Volo.Abp.Dapper](https://www.nuget.org/packages/Volo.Abp.Dapper) package to your project. Execute the following command in the folder of the `.csproj` file that you want to install the package on:
`Volo.Abp.Dapper` is the main nuget package for the Dapper integration.
You can find it on NuGet Gallery: https://www.nuget.org/packages/Volo.Abp.Dapper
Install it to your project (for a layered application, to your data/infrastructure layer):
```shell
Install-Package Volo.Abp.Dapper
```
Then add `AbpDapperModule` module dependency (with `DependsOn` attribute) to your [module](Module-Development-Basics.md):
````C#
using Volo.Abp.Dapper;
using Volo.Abp.Modularity;
namespace MyCompany.MyProject
{
[DependsOn(typeof(AbpDapperModule))]
public class MyModule : AbpModule
{
//...
}
}
````bash
abp add-package Volo.Abp.Dapper
````
## Implement Dapper Repository
> If you haven't done it yet, you first need to install the ABP CLI. For other installation options, see [the package description page](https://abp.io/package-detail/Volo.Abp.Dapper).
>
> If you have a layered solution, it is suggested to install that package to your database layer of the solution.
The following code creates the `PersonRepository`, which requires EF Core's `DbContext` (MyAppDbContext).
You can inject `PersonDapperRepository` to your services for your database operations.
## Implement a Dapper Repository
`DbConnection` and `DbTransaction` comes from the `DapperRepository` base class.
The best way to interact with Dapper is to create a [repository](Repositories.md) class that abstracts your Dapper database operations. The following example creates a new repository class that works with the `People` table:
```C#
public class PersonDapperRepository : DapperRepository<MyAppDbContext>, ITransientDependency
public class PersonDapperRepository :
DapperRepository<MyAppDbContext>, ITransientDependency
{
public PersonDapperRepository(IDbContextProvider<MyAppDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
public virtual async Task<List<string>> GetAllPersonNames()
public virtual async Task<List<string>> GetAllPersonNamesAsync()
{
var dbConnection = await GetDbConnectionAsync();
return (await dbConnection.QueryAsync<string>("select Name from People", transaction: await GetDbTransactionAsync()))
.ToList();
return (await dbConnection.QueryAsync<string>(
"select Name from People",
transaction: await GetDbTransactionAsync())
).ToList();
}
public virtual async Task<int> UpdatePersonNames(string name)
public virtual async Task<int> UpdatePersonNamesAsync(string name)
{
var dbConnection = await GetDbConnectionAsync();
return await dbConnection.ExecuteAsync("update People set Name = @NewName", new { NewName = name },
await GetDbTransactionAsync());
return await dbConnection.ExecuteAsync(
"update People set Name = @NewName",
new { NewName = name },
await GetDbTransactionAsync()
);
}
}
```
Let's examine this class:
- It inherits from the `DapperRepository` class, which provides useful methods and properties for database operations. It also implements the `IUnitOfWorkEnabled` interface, so ABP makes the database connection (and transaction if requested) available in the method body by implementing dynamic proxies (a.k.a. interception).
- It gets an `IDbContextProvider<MyAppDbContext>` object where `MyAppDbContext` is type of your Entity Framework Core `DbContext` class. It should be configured as explained in the [EF Core document](Entity-Framework-Core.md). If you've created by ABP's startup template, then it should already be configured.
- The `GetAllPersonNamesAsync` and `UpdatePersonNamesAsync` method's been made `virtual`. That's needed to make the interception process working.
- We've used the `GetDbConnectionAsync` and `GetDbTransactionAsync` methods to obtain the current database connection and transaction (that is managed by ABP's [Unit of Work](Unit-Of-Work.md) system).
Then you can [inject](Dependency-Injection.md) `PersonDapperRepository` to any service to perform these database operations. If you want to implement a layered solution, we suggest to introduce an `IPersonDapperRepository` interface in your domain layer, implement it in your database later, then inject the interface to use the repository service.
> If you want to learn more details and examples of using Dapper with the ABP Framework, [check this community article](https://community.abp.io/posts/using-dapper-with-the-abp-framework-shp74p2l).
## See Also
* [Community Article: Using Dapper with the ABP Framework](https://community.abp.io/posts/using-dapper-with-the-abp-framework-shp74p2l)
* [Entity Framework Core integration document](Entity-Framework-Core.md)

2
docs/en/Getting-Started-React-Native.md

@ -56,7 +56,7 @@ Please do the following:
> When you are using OpenIddict, You should remove 'clientSecret' on Environment.js (if exists) and disable "HTTPS-only" settings. (Openiddict has default since Version 6.0)
### How to disable Https-only in Openiddict.
You should add this code on `MyProjectName`HttpApiHostModule.
You should add this code on {{ if Tiered == "No" }}`MyProjectNameHttpApiHostModule`{{ else if Tiered == "Yes" }}`MyProjectNameAuthServerModule`{{ end }}.
```csharp
public override void PreConfigureServices(ServiceConfigurationContext context)

4
docs/en/Migration-Guides/Abp-7_1.md

@ -2,6 +2,8 @@
This document is a guide for upgrading ABP v7.0 solutions to ABP v7.1. There are a few changes in this version that may affect your applications, please read it carefully and apply the necessary changes to your application.
> **Note**: Entity Framework developers may need to add a new code-first database migration to their projects since we made some improvements to the existing entities of some application modules.
## Navigation Menu - `CustomData` type changed to `Dictionary<string, object>`
`ApplicationMenu` and `ApplicationMenuItem` classes' `CustomData` property type has been changed to `Dictionary<string, object>`. So, if you use the optional `CustomData` property of these classes, change it accordingly. See [#15608](https://github.com/abpframework/abp/pull/15608) for more information.
@ -16,4 +18,4 @@ var menu = new ApplicationMenu("Home", L["Home"], "/", customData: new MyCustomD
```csharp
var menu = new ApplicationMenu("Home", L["Home"], "/").WithCustomData("CustomDataKey", new MyCustomData());
```
```

13
docs/en/Migration-Guides/Abp-7_2.md

@ -0,0 +1,13 @@
# ABP Version 7.2 Migration Guide
This document is a guide for upgrading ABP v7.1 solutions to ABP v7.2. There are a few changes in this version that may affect your applications, please read it carefully and apply the necessary changes to your application.
## `LastPasswordChangeTime` and `ShouldChangePasswordOnNextLogin` Properties Added to the `IdentityUser` Class
In this version, two new properties, which are `LastPasswordChangeTime` and `ShouldChangePasswordOnNextLogin` have been added to the `IdentityUser` class and to the corresponding entity. Therefore, you may need to create a new migration and apply it to your database.
## Renamed `OnRegistered` Method
There was a typo in an extension method, named as `OnRegistred`. In this version, we have fixed the typo and renamed the method as `OnRegistered`. Also, we have updated the related places in our modules that use this method.
However, if you have used this method in your projects, you need to rename it as `OnRegistered` in your code.

1
docs/en/Migration-Guides/Index.md

@ -2,6 +2,7 @@
The following documents explain how to migrate your existing ABP applications. We write migration documents only if you need to take an action while upgrading your solution. Otherwise, you can easily upgrade your solution using the [abp update command](../Upgrading.md).
- [7.1 to 7.2](Abp-7_2.md)
- [7.0 to 7.1](Abp-7_1.md)
- [6.0 to 7.0](Abp-7_0.md)
- [5.3 to 6.0](Abp-6_0.md)

13
docs/en/Modules/Cms-Kit/Comments.md

@ -19,6 +19,16 @@ Configure<CmsKitCommentOptions>(options =>
{
options.EntityTypes.Add(new CommentEntityTypeDefinition("Product"));
options.IsRecaptchaEnabled = true; //false by default
options.AllowedExternalUrls = new Dictionary<string, List<string>>
{
{
"quote",
new List<string>
{
"https://abp.io/"
}
}
};
});
```
@ -28,6 +38,7 @@ Configure<CmsKitCommentOptions>(options =>
- `EntityTypes`: List of defined entity types(`CmsKitCommentOptions`) in the comment system.
- `IsRecaptchaEnabled`: This flag enables or disables the reCaptcha for the comment system. You can set it as **true** if you want to use reCaptcha in your comment system.
- `AllowedExternalUrls`: Indicates the allowed external URLs by entity types, which can be included in a comment. If it's specified for a certain entity type, then only the specified external URLs are allowed in the comments.
`CommentEntityTypeDefinition` properties:
@ -46,7 +57,7 @@ The comment system provides a commenting [widget](../../UI/AspNetCore/Widgets.md
})
```
`entityType` was explained in the previous section. `entityId` should be the unique id of the product, in this example. If you have a Product entity, you can use its Id here. `referralLinks` is an optional parameter. You can use this parameter to add values (such as "nofollow", "noreferrer", or any other values) to the [rel attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) of links.
`entityType` was explained in the previous section. `entityId` should be the unique id of the product, in this example. If you have a Product entity, you can use its Id here. `referralLinks` is an optional parameter. You can use this parameter to add values (such as "nofollow", "noreferrer", or any other values) to the [rel attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) of links.
## User Interface

10
docs/en/Themes/LeptonXLite/Angular.md

@ -28,12 +28,8 @@ yarn add bootstrap-icons
* [Styles - Angular UI](../../UI/Angular/Theme-Configurations.md)
Add the following style
```json
"node_modules/bootstrap-icons/font/bootstrap-icons.css",
```
Note: You should remove the old theme styles from "angular.json" if you are switching from "ThemeBasic" or "Lepton."
Look at the [Theme Configurations](../../UI/Angular/Theme-Configurations) list of styles. Depending on your theme, you can alter your styles in angular.json.
- Finally, remove `ThemeBasicModule` from `app.module.ts`, and import the related modules in `app.module.ts`
```js
@ -44,7 +40,7 @@ import { SideMenuLayoutModule } from "@abp/ng.theme.lepton-x/layouts";
imports: [
// ...
// do not forget to remove ThemeBasicModule
// do not forget to remove ThemeBasicModule or other old theme module
// ThemeBasicModule.forRoot(),
ThemeLeptonXModule.forRoot(),
SideMenuLayoutModule.forRoot(),

170
docs/en/UI/Angular/Card-Component.md

@ -1,8 +1,27 @@
# Card Component
The ABP Card Component is a wrapper component for the Bootstrap card class.
It supports all the features that Bootstrap card component provides.
## Usage
ABP Card Component has three main components, `CardHeader`, `CardBody` and `CardFooter`. These components have their own class and style inputs
|Component |Selector |Input Properties |
|--------- |-----------------|------------------------------------|
|CardHeader|`abp-card-header`| `cardHeaderClass`,`cardHeaderStyle`|
|CardBody |`abp-card-body` | `cardBodyClass`,`cardBodyStyle` |
|CardFooter|`abp-card-footer`| `cardFooterClass`,`cardFooterStyle`|
In addition to these components, the Card component provides directives like `CardHeader`,`CardTitle`,`CardSubtitle`,`CardImgTop`.
|Directive |Selector |
|-------------|-------------------------------------------------------------|
|CardHeader |`abp-card-header`,`[abp-card-header]`,`[abpCardHeader]` |
|CardTitle |`abp-card-title`,`[abp-card-title]`,`[abpCardTitle]` |
|CardSubtitle |`abp-card-subtitle`,`[abp-card-subtitle]`,`[abpCardSubtitle]`|
|CardImgTop |`abp-card-img-top`,`[abp-card-img-top]`,`[abpCardImgTop]` |
# Usage
ABP Card Component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, you don't need to import it again. If not, first import it as shown below:
@ -24,29 +43,164 @@ export class MyFeatureModule {}
```
Then, the `abp-card` component can be used. See the example below:
```ts
Then, the `abp-card` component can be used. See the examples below:
## CardBody
```ts
// card-demo.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-card-demo',
template: `
<abp-card [cardStyle]="{width: '18rem'}">
<abp-card-body>This is some text within a card body</abp-card-body>
</abp-card>
`,
})
export class CardDemoComponent { }
```
See the card body result below:
![abp-card-body](./images/abp-card-body.png)
## Titles, Text and Links
```ts
//card-demo.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-card-demo',
template: `
<abp-card [cardStyle]="{width: '18rem'}">
<abp-card-body>
<abp-card-title>Lorem Ipsum</abp-card-title>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo condimentum ligula, sed varius nibh eleifend sit amet. Maecenas facilisis vel arcu nec maximus.
<h5 abpCardTitle>Card Title</h5>
<h6 abpCardSubtitle class="mb-2 text-muted">Card subtitle</h6>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="card-link" >Card link</a>
<a href="#" class="card-link" >Another link</a>
</abp-card-body>
</abp-card>
`,
})
export class CardDemoComponent { }
```
See the card title, text and link result below:
![abp-card-title-text-link](./images/abp-card-title-text-link.png)
## Images
```ts
//card-demo.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-card-demo',
template: `
<abp-card [cardStyle]="{width:'18rem'}">
<img abpCardImgTop src="..." alt="...">
<abp-card-body>
<p class="card-text" >Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</abp-card-body>
</abp-card>
`,
})
export class CardDemoComponent { }
```
See the card image result below:
![abp-card-image-top](./images/abp-card-image.png)
## List Groups
```ts
//card-demo.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-card-demo',
template: `
<abp-card [cardStyle]="{width:'18rem'}">
<ul class="list-group list-group-flush">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
</abp-card>
`,
})
export class CardDemoComponent { }
```
See the group list result below:
See the result below:
![abp-card-list-group](./images/abp-card-list-group.png)
![abp-card-component](./images/abp-card-component.png)
## Kitchen Sink
```ts
//card-demo.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-card-demo',
template: `
<abp-card [cardStyle]="{width:'18rem'}">
<img abpCardImgTop src="../../assets/thinh-nguyen-aRrS37GKlVA-unsplash.jpg" alt="...">
<abp-card-body>
<h5 abpCardTitle>Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</abp-card-body>
<ul class="list-group list-group-flush">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
<abp-card-body>
<a href="#" class="card-link">Card link</a>
<a href="#" class="card-link">Another link</a>
</abp-card-body>
</abp-card>
`,
})
export class CardDemoComponent { }
```
See kitchen sink result below:
![abp-card-kitchen-sink](./images/abp-card-kitchen-sink.png)
## Header and Footer
```ts
//card-demo.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-card-demo',
template: `
<abp-card class="text-center">
<abp-card-header>Featured</abp-card-header>
<abp-card-body>
<h5 abpCardTitle>Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
<a class="card-link" href="#" class="btn btn-primary">Go somewhere</a>
</abp-card-body>
<abp-card-footer class="text-muted">
2 days ago
</abp-card-footer>
</abp-card>
`,
})
export class CardDemoComponent { }
```
See the header and footer result below:
As you can see in the example above, you can customize your card component's style with the `cardStyle` input. You can also add your custom classes with the `cardClass` input.
![abp-card-header-footer](./images/abp-card-header-footer.png)

56
docs/en/UI/Angular/Modifying-the-Menu.md

@ -88,14 +88,65 @@ function configureRoutes(routes: RoutesService) {
}
```
We can also define a group for navigation elements. It's an optional property
- **Note:** It'll also include groups that were defined at the modules
```js
// route.provider.ts
import { RoutesService } from '@abp/ng.core';
function configureRoutes(routes: RoutesService) {
return () => {
routes.add([
{
//etc..
group: 'ModuleName::GroupName'
},
{
path: '/your-path/child',
name: 'Your child navigation',
parentName: 'Your navigation',
requiredPolicy: 'permission key here',
order: 1,
},
]);
};
}
```
To get the route items as grouped we can use the `groupedVisible` (or Observable one `groupedVisible$`) getter methods
- It returns `RouteGroup<T>[]` if there is any group in the route tree, otherwise it returns `undefined`
```js
import { ABP, RoutesService, RouteGroup } from "@abp/ng.core";
import { Component } from "@angular/core";
@Component(/* component metadata */)
export class AppComponent {
visible: RouteGroup<ABP.Route>[] | undefined = this.routes.groupedVisible;
//Or
visible$:Observable<RouteGroup<ABP.Route>[] | undefined> = this.routes.groupedVisible$;
constructor(private routes: RoutesService) {}
}
```
...and then in app.module.ts...
- The `groupedVisible` method will return the `Others` group for ungrouped items, the default key is `AbpUi::OthersGroup`, we can change this `key` via the `OTHERS_GROUP` injection token
```js
import { NgModule } from '@angular/core';
import { OTHERS_GROUP } from '@abp/ng.core';
import { APP_ROUTE_PROVIDER } from './route.provider';
@NgModule({
providers: [APP_ROUTE_PROVIDER],
providers: [
APP_ROUTE_PROVIDER,
{
provide: OTHERS_GROUP,
useValue: 'ModuleName::MyOthersGroupKey',
},
],
// imports, declarations, and bootstrap
})
export class AppModule {}
@ -109,8 +160,9 @@ Here is what every property works as:
- `requiredPolicy` is the permission key to access the page. See the [Permission Management document](./Permission-Management.md)
- `order` is the order of the navigation element. "Administration" has an order of `100`, so keep that in mind when ordering top level menu items.
- `iconClass` is the class of the `i` tag, which is placed to the left of the navigation label.
- `layout` defines in which layout the route will be loaded. (default: `eLayoutType.empty`)
- `layout` defines in which layout the route is loaded. (default: `eLayoutType.empty`)
- `invisible` makes the item invisible in the menu. (default: `false`)
- `group` is an optional property that is used to group together related routes in an application. (type: `string`, default: `AbpUi::OthersGroup`)
### Via `routes` Property in `AppRoutingModule`

17
docs/en/UI/Angular/Page-Alerts.md

@ -61,4 +61,21 @@ this.service.show({
![angular-page-alert-with-params-example](./images/page-alert-with-params-example.png)
## Render HTML content
We can pass html content to the `title` and `message` parameters
* It allows static message or localization key
* [abpSafeHtml](https://github.com/abpframework/abp/blob/37b59a7f05202264505d002397dbb27d275740e1/npm/ng-packs/packages/core/src/lib/pipes/safe-html.pipe.ts#L6) pipe will sanitize html values
```typescript
this.service.show({
type: 'success',
title: `New <i><u>blog</u></i> published`,
message: 'AbpApp::HtmlMessageWithParams{0}',
messageLocalizationParams: ['admin'],
});
```
![angular-page-alert-with-html-example](./images/page-alert-with-html-example.png)

BIN
docs/en/UI/Angular/images/abp-card-body.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
docs/en/UI/Angular/images/abp-card-header-footer.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
docs/en/UI/Angular/images/abp-card-header.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/en/UI/Angular/images/abp-card-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
docs/en/UI/Angular/images/abp-card-kitchen-sink.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

BIN
docs/en/UI/Angular/images/abp-card-list-group.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
docs/en/UI/Angular/images/abp-card-title-text-link.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/en/UI/Angular/images/page-alert-with-html-example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

223
docs/en/UI/AspNetCore/Tag-Helpers/Form-elements.md

@ -58,49 +58,49 @@ Model:
### Attributes
You can set some of the attributes on your c# property, or directly on html tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
You can set some of the attributes on your c# property, or directly on HTML tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
#### Property Attributes
- `[TextArea()]`: Converts the input into a text area.
* `[Placeholder()]`: Sets placeholder for input. You can use a localization key directly.
* `[InputInfoText()]`: Sets a small info text for input. You can use a localization key directly.
* `[FormControlSize()]`: Sets size of form-control wrapper element. Available values are
* `[Placeholder()]`: Sets the description are of the input. You can use a localization key directly.
* `[InputInfoText()]`: Sets text for the input. You can directly use a localization key.
* `[FormControlSize()]`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
- `AbpFormControlSize.Large`
* `[DisabledInput]` : Input is disabled.
* `[ReadOnlyInput]`: Input is read-only.
* `[DisabledInput]` : Sets the input as disabled.
* `[ReadOnlyInput]`: Sets the input as read-only.
#### Tag Attributes
* `info`: Sets a small info text for input. You can use a localization key directly.
* `auto-focus`: If true, browser auto focuses on the element.
* `size`: Sets size of form-control wrapper element. Available values are
* `info`: Sets text for the input. You can directly use a localization key.
* `auto-focus`: It lets the browser set focus to the element when its value is true.
* `size`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
- `AbpFormControlSize.Large`
* `disabled`: Input is disabled.
* `readonly`: Input is read-only.
* `label`: Sets the label for input.
* `display-required-symbol`: Adds the required symbol (*) to label if input is required. Default `True`.
* `disabled`: Sets the input as disabled.
* `readonly`: Sets the input as read-only.
* `label`: Sets the label of input.
* `required-symbol`: Adds the required symbol `(*)` to the label when the input is required. The default value is `True`.
`asp-format`, `name` and `value` attributes of [Asp.Net Core Input Tag Helper](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-7.0#the-input-tag-helper) are also valid for `abp-input` tag helper.
### Label & Localization
You can set label of your input in different ways:
You can set the label of the input in several ways:
- You can use `Label` attribute and directly set the label. But it doesn't auto localize your localization key. So use it as `label="@L["{LocalizationKey}"].Value"`.
- You can set it using `[Display(name="{LocalizationKey}")]` attribute of Asp.Net Core.
- You can use the `Label` attribute to set the label directly. This property does not automatically localize the text. To localize the label, use `label="@L["{LocalizationKey}"].Value"`.
- You can set it using `[Display(name="{LocalizationKey}")]` attribute of ASP.NET Core.
- You can just let **abp** find the localization key for the property. It will try to find "DisplayName:{PropertyName}" or "{PropertyName}" localization keys, if `label` or `[DisplayName]` attributes are not set.
## abp-select
`abp-select` tag creates a Bootstrap form select for a given c# property. It uses [Asp.Net Core Select Tag Helper](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-7.0#the-select-tag-helper) in background, so every data annotation attribute of `select` tag helper of Asp.Net Core is also valid for `abp-select`.
`abp-select` tag creates a Bootstrap form select for a given c# property. It uses [ASP.NET Core Select Tag Helper](https://docs.microsoft.com/tr-tr/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-3.1#the-select-tag-helper) in background, so every data annotation attribute of `select` tag helper of ASP.NET Core is also valid for `abp-select`.
`abp-select` tag needs a list of `Microsoft.AspNetCore.Mvc.Rendering.SelectListItem ` to work. It can be provided by `asp-items` attriube on the tag or `[SelectItems()]` attribute on c# property. (if you are using [abp-dynamic-form](Dynamic-forms.md), c# attribute is the only way.)
@ -170,14 +170,14 @@ Model:
### Attributes
You can set some of the attributes on your c# property, or directly on html tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
You can set some of the attributes on your c# property, or directly on HTML tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
#### Property Attributes
* `[SelectItems()]`: Sets the select data. Parameter should be the name of the data list. (see example above)
- `[InputInfoText()]`: Sets a small info text for input. You can use a localization key directly.
- `[FormControlSize()]`: Sets size of form-control wrapper element. Available values are
- `[InputInfoText()]`: Sets text for the input. You can directly use a localization key.
- `[FormControlSize()]`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
@ -186,21 +186,21 @@ You can set some of the attributes on your c# property, or directly on html tag.
#### Tag Attributes
- `asp-items`: Sets the select data. This Should be a list of SelectListItem.
- `info`: Sets a small info text for input. You can use a localization key directly.
- `size`: Sets size of form-control wrapper element. Available values are
- `info`: Sets text for the input. You can directly use a localization key.
- `size`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
- `AbpFormControlSize.Large`
- `label`: Sets the label for input.
- `display-required-symbol`: Adds the required symbol (*) to label if input is required. Default `True`.
- `label`: Sets the label of input.
- `required-symbol`: Adds the required symbol `(*)` to the label when the input is required. The default value is `True`.
### Label & Localization
You can set label of your input in different ways:
You can set the label of the input in several ways:
- You can use `Label` attribute and directly set the label. But it doesn't auto localize your localization key. So use it as `label="@L["{LocalizationKey}"].Value".`
- You can set it using `[Display(name="{LocalizationKey}")]` attribute of Asp.Net Core.
- You can set it using `[Display(name="{LocalizationKey}")]` attribute of ASP.NET Core.
- You can just let **abp** find the localization key for the property. It will try to find "DisplayName:{PropertyName}" or "{PropertyName}" localization keys.
Localizations of combobox values are set by `abp-select` for **Enum** property. It searches for "{EnumTypeName}.{EnumPropertyName}" or "{EnumPropertyName}" localization keys. For instance, in the example above, it will use "CarType.StationWagon" or "StationWagon" keys for localization when it localizes combobox values.
@ -251,7 +251,7 @@ Model:
### Attributes
You can set some of the attributes on your c# property, or directly on html tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
You can set some of the attributes on your c# property, or directly on HTML tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
#### Property Attributes
@ -261,3 +261,172 @@ You can set some of the attributes on your c# property, or directly on html tag.
- `asp-items`: Sets the select data. This Should be a list of SelectListItem.
- `Inline`: If true, radio buttons will be in single line, next to each other. If false, they will be under each other.
## abp-date-picker & abp-date-range-picker
`abp-date-picker` and `abp-date-range-picker` tags creates a Bootstrap form date picker for a given c# property. `abp-date-picker` is for single date selection, `abp-date-range-picker` is for date range selection. It uses [datepicker](https://www.daterangepicker.com/) jQuery plugin.
Usage:
````xml
<abp-date-picker asp-for="@Model.MyModel.MyDate" />
<abp-date-range-picker asp-for-start="@Model.MyModel.MyDateRangeStart" asp-for-end="@Model.MyModel.MyDateRangeEnd" />
<abp-dynamic-form abp-model="DynamicFormExample"></abp-dynamic-form>
````
Model:
````csharp
public class FormElementsModel : PageModel
{
public SampleModel MyModel { get; set; }
public DynamicForm DynamicFormExample { get; set; }
public void OnGet()
{
MyModel = new SampleModel();
DynamicFormExample = new DynamicForm();
}
public class SampleModel
{
public DateTime MyDate { get; set; }
public DateTime MyDateRangeStart { get; set; }
public DateTime MyDateRangeEnd { get; set; }
}
public class DynamicForm
{
[DateRangePicker("MyPicker",true)]
public DateTime StartDate { get; set; }
[DateRangePicker("MyPicker",false)]
[DatePickerOptions(nameof(DatePickerOptions))]
public DateTime EndDate { get; set; }
public DateTime DateTime { get; set; }
public DynamicForm()
{
StartDate = DateTime.Now;
EndDate = DateTime.Now;
DateTime = DateTime.Now;
}
}
public AbpDatePickerOptions DatePickerOptions { get; set; }
}
````
### Attributes
You can set some of the attributes on your c# property, or directly on HTML tag. If you are going to use this property in a [abp-dynamic-form](Dynamic-forms.md), then you can only set these properties via property attributes.
#### Property Attributes
* `[Placeholder()]`: Sets the description are of the input. You can use a localization key directly.
* `[InputInfoText()]`: Sets text for the input. You can directly use a localization key.
* `[FormControlSize()]`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
- `AbpFormControlSize.Large`
* `[DisabledInput]` : Sets the input as disabled.
* `[ReadOnlyInput]`: Sets the input as read-only.
- `[DatePickerOptions()]`: Sets the predefined options of the date picker. Parameter should be the name of the options property (see example above). See the available [datepicker options](https://www.daterangepicker.com/#options). You can use a localization key directly.
##### abp-date-picker
`[DatePicker]` : Sets the input as datepicker. Especially for string properties.
##### abp-date-range-picker
`[DateRangePicker()]` : Sets the picker id for the date range picker. You can set the property as a start date by setting IsStart=true or leave it as default/false to set it as an end date.
#### Tag Attributes
* `info`: Sets text for the input. You can directly use a localization key.
* `auto-focus`: It lets the browser set focus to the element when its value is true.
* `size`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
- `AbpFormControlSize.Large`
* `disabled`: Sets the input as disabled.
* `readonly`: Sets the input as read-only.
* `label`: Sets the label of input.
* `required-symbol`: Adds the required symbol `(*)` to the label when the input is required. The default value is `True`.
* `open-button`: A button to open the datepicker will be added when its `True`. The default value is `True`.
* `clear-button`: A button to clear the datepicker will be added when its `True`. The default value is `True`.
* `single-open-and-clear-button`: Shows the open and clear buttons in a single button when it's `True`. The default value is `True`.
* `is-utc`: Converts the date to UTC when its `True`. The default value is `False`.
* `is-iso`: Converts the date to ISO format when its `True`. The default value is `False`.
* `date-format`: Sets the date format of the input. The default format is the user's culture date format. You need to provide a JavaScript date format convention. Eg: `YYYY-MM-DDTHH:MM:SSZ`.
* `date-separator`: Sets a character to separate start and end dates. The default value is `-`
* Other non-mapped attributes will be automatically added to the input element as is. See the available [datepicker options](https://www.daterangepicker.com/#options). Eg: `data-start-date="2020-01-01"`
##### abp-date-picker
* `asp-date`: Sets the date value. This should be a `DateTime`, `DateTime?`, `DateTimeOffset`, `DateTimeOffset?` or `string` value.
##### abp-date-range-picker
* `asp-for-start`: Sets the start date value. This should be a `DateTime`, `DateTime?`, `DateTimeOffset`, `DateTimeOffset?` or `string` value.
* `asp-for-end`: Sets the end date value. This should be a `DateTime`, `DateTime?`, `DateTimeOffset`, `DateTimeOffset?` or `string` value.
### Label & Localization
You can set the label of the input in several ways:
- You can use the `Label` attribute to set the label directly. This property does not automatically localize the text. To localize the label, use `label="@L["{LocalizationKey}"].Value"`.
- You can set it using `[Display(name="{LocalizationKey}")]` attribute ASP.NET Core.
- You can just let **abp** find the localization key for the property. If the `label` or `[DisplayName]` attributes are not set, it tries to find the localization by convention. For example `DisplayName:{YourPropertyName}` or `{YourPropertyName}`. If your property name is FullName, it will search for `DisplayName:FullName` or `{FullName}`.
### JavaScript Usage
````javascript
var newPicker = abp.libs.bootstrapDateRangePicker.createDateRangePicker(
{
label: "New Picker",
}
);
newPicker.insertAfter($('body'));
````
````javascript
var newPicker = abp.libs.bootstrapDateRangePicker.createSinglePicker(
{
label: "New Picker",
}
);
newPicker.insertAfter($('body'));
````
#### Options
* `label`: Sets the label of the input.
* `placeholder`: Sets the placeholder of the input.
* `value`: Sets the value of the input.
* `name`: Sets the name of the input.
* `id`: Sets the id of the input.
* `required`: Sets the input as required.
* `disabled`: Sets the input as disabled.
* `readonly`: Sets the input as read-only.
* `size`: Sets the size of the form-control wrapper element. Available values are
- `AbpFormControlSize.Default`
- `AbpFormControlSize.Small`
- `AbpFormControlSize.Medium`
- `AbpFormControlSize.Large`
* `openButton`: A button to open the datepicker will be added when its `True`. The default value is `True`.
* `clearButton`: A button to clear the datepicker will be added when its `True`. The default value is `True`.
* `singleOpenAndClearButton`: Shows the open and clear buttons in a single button when it's `True`. The default value is `True`.
* `isUtc`: Converts the date to UTC when its `True`. The default value is `False`.
* `isIso`: Converts the date to ISO format when its `True`. The default value is `False`.
* `dateFormat`: Sets the date format of the input. The default format is the user's culture date format. You need to provide a JavaScript date format convention. Eg: `YYYY-MM-DDTHH:MM:SSZ`.
* `dateSeparator`: Sets a character to separate start and end dates. The default value is `-`.
* `startDateName`: Sets the name of the hidden start date input.
* `endDateName`: Sets the name of the hidden end date input.
* `dateName`: Sets the name of the hidden date input.
* Other [datepicker options](https://www.daterangepicker.com/#options). Eg: `startDate: "2020-01-01"`.

8
framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs

@ -10,14 +10,22 @@ public class TableColumn
{
public string Title { get; set; }
public string Data { get; set; }
public string PropertyName { get; set; }
[CanBeNull]
public string DisplayFormat { get; set; }
public IFormatProvider DisplayFormatProvider { get; set; } = CultureInfo.CurrentCulture;
[CanBeNull]
public Type Component { get; set; }
public List<EntityAction> Actions { get; set; }
[CanBeNull]
public Func<object, string> ValueConverter { get; set; }
public bool Sortable { get; set; }
public TableColumn()

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

Loading…
Cancel
Save