diff --git a/.github/ISSUE_TEMPLATE/04_article_request.yml b/.github/ISSUE_TEMPLATE/04_article_request.yml index 34082596c5..282ac107bf 100644 --- a/.github/ISSUE_TEMPLATE/04_article_request.yml +++ b/.github/ISSUE_TEMPLATE/04_article_request.yml @@ -6,7 +6,7 @@ body: id: searched attributes: label: Is there an existing article or article request for this? - description: Please search to see if there is an article or article request related to your article request ([community.abp.io](https://community.abp.io/posts), [abp/issues](https://github.com/abpframework/abp/issues?q=is%3Aopen+is%3Aissue+label%3Acommunity-article-request)) + description: Please search to see if there is an article or article request related to your article request ([abp.io/community](https://abp.io/community/articles), [abp/issues](https://github.com/abpframework/abp/issues?q=is%3Aopen+is%3Aissue+label%3Acommunity-article-request)) options: - label: I have searched the existing resources required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 2261ab7bab..9fca40ba4f 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: true contact_links: - name: Issue with ABP Commercial - url: https://support.abp.io/QA/Questions - about: Please open ABP Commercial related issues at https://support.abp.io. + url: https://abp.io/support/questions + about: Please open ABP Commercial related issues at https://abp.io/support/questions. - name: Ask a question (community support) url: https://stackoverflow.com/questions/tagged/abp about: Ask a question that will be answered by the ABP community diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 696d401fed..0bfa3e0711 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -51,7 +51,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-dotnet@master with: - dotnet-version: 8.0.100 + dotnet-version: 9.0.100-rc.1.24452.12 - name: chown run: | diff --git a/Directory.Packages.props b/Directory.Packages.props index 8f741e93b8..f045baf184 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -51,69 +51,69 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + @@ -127,7 +127,7 @@ - + @@ -154,17 +154,17 @@ - + - + - - - + + + @@ -174,5 +174,6 @@ + diff --git a/NuGet.md b/NuGet.md index 1073e17b8c..29b17f9e03 100644 --- a/NuGet.md +++ b/NuGet.md @@ -11,21 +11,21 @@ ABP offers an opinionated architecture to build enterprise software solutions wi 🔗GitHub Repository: https://github.com/abpframework/abp -🔗Samples: https://docs.abp.io/en/abp/latest/Samples/Index +🔗Samples: https://abp.io/docs/latest/samples/ 🔗Official Theme: https://www.LeptonTheme.com -🔗Documentation: https://docs.abp.io +🔗Documentation: https://abp.io/docs/latest/ -🔗Community: https://community.abp.io +🔗Community: https://abp.io/community/ -🔗Blog: https://blog.abp.io +🔗Blog: https://abp.io/blog/ 🔗Books: https://abp.io/books 🔗Twitter: https://twitter.com/abpframework -🔗Discord: https://community.abp.io/discord +🔗Discord: https://abp.io/community/discord 🔗Stackoverflow: https://stackoverflow.com/questions/tagged/abp @@ -124,8 +124,8 @@ Support for open-source ABP Framework client-side packages is available at [GitH If you are building an enterprise-level application with pro support, extra tools like a code generator, fancy themes and a microservice template, time to invest in the commercial version! -To understand how it works, see [How it Works]( https://commercial.abp.io/how-it-works) page. +To understand how it works, see [How it Works]( https://abp.io/how-it-works) page. -If you wonder why you should choose ABP Commercial, check out [Why ABP.IO Platform](https://docs.abp.io/en/commercial/latest/why-abp-io-platform) page. +If you wonder why you should choose ABP, check out [Why ABP.IO Platform](https://abp.io/docs/latest/others/why-abp-platform) page. -Official website: [https://commercial.abp.io](https://commercial.abp.io/) +Official website: [https://abp.io](https://abp.io/) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj b/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj index 267ace87f2..6e7bbc184e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/AbpIoLocalization.csproj @@ -1,7 +1,7 @@ - netstandard2.0;netstandard2.1;net8.0 + netstandard2.0;netstandard2.1;net8.0;net9.0 diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en-GB.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en-GB.json index 48cba301a9..7e2642e88b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en-GB.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en-GB.json @@ -33,12 +33,15 @@ "Name": "Name", "DisplayName": "Display name", "ShortDescription": "Short description", + "LongDescription": "Long description", "NameFilter": "Name", "CreationTime": "Creation time", - "IsPro": "Is pro", + "IsPro": "Pro package", "ShowOnModuleList": "Show in module list", "EfCoreConfigureMethodName": "Configure method name", "IsProFilter": "Is pro", + "ShowOnModuleFilter": "Show on module list", + "ShowOnModuleListFilter": "Show on module list", "ApplicationType": "Application type", "Target": "Target", "TargetFilter": "Target", @@ -57,8 +60,10 @@ "Refresh": "Refresh", "NpmPackages": "NPM Packages", "NugetPackages": "Nuget Packages", + "NuGetPackages": "NuGet Packages", "NpmPackageCount": "NPM Package Count", "NugetPackageCount": "Nuget Package Count", + "NuGetPackageCount": "NuGet Package Count", "Module": "Modules", "ModuleInfo": "Module info", "CreateANpmPackage": "Create a NPM package", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 703c158dea..9fb30d3fda 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -28,17 +28,21 @@ "Menu:DiscountRequests": "Discount Requests", "NpmPackageDeletionWarningMessage": "This NPM Package will be deleted. Do you confirm that?", "NugetPackageDeletionWarningMessage": "This Nuget Package will be deleted. Do you confirm that?", + "NuGetPackages": "NuGet Packages", "ModuleDeletionWarningMessage": "This Module will be deleted. Do you confirm that?", "Name": "Name", "DisplayName": "Display name", "ShortDescription": "Short description", + "LongDescription": "Long description", "NameFilter": "Name", "CreationTime": "Creation time", - "IsPro": "Is pro", + "IsPro": "Pro package", "IsFreeToActiveLicenseOwners": "Free to license owners", "ShowOnModuleList": "Show on module list", "EfCoreConfigureMethodName": "Configure method name", - "IsProFilter": "Is pro", + "IsProFilter": "Pro package", + "ShowOnModuleFilter": "Show on module list", + "ShowOnModuleListFilter": "Show on module list", "ApplicationType": "Application type", "Target": "Target", "TargetFilter": "Target", @@ -59,6 +63,7 @@ "NugetPackages": "Nuget Packages", "NpmPackageCount": "NPM Package Count", "NugetPackageCount": "Nuget Package Count", + "NuGetPackageCount": "NuGet Package Count", "Module": "Modules", "ModuleInfo": "Module info", "CreateANpmPackage": "Create a NPM package", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json index 09a56dffa1..82aabed272 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json @@ -239,7 +239,7 @@ "Trainings": "Trainings", "MeetTheABPCommunity": "Meet the ABP Community", "DisplayName:CommunityIndexPagePoll": "Community Index Page Poll", - "ReturnOnInvestment": "Return On Investment", + "ReturnOnInvestment": "Return on Investment", "PromotionalOffers": "Promotional Offers", "PromotionalOffersDefinition": "Discounts, seasonal campaigns, etc.", "EventsDefinition": "Community Talks, Webinars, ABP .NET Conference, etc.", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/en.json index 2da5698215..880cb53a9e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Blog/Localization/Resources/en.json @@ -1,8 +1,9 @@ { "culture": "en", "texts": { - "AbpTitle": "Read All Blog Posts", + "AbpTitle": "New Blog Post | ABP.IO", "AbpDescription": "ABP is an open source application framework focused on AspNet Core based web application development. Don't repeat yourself, focus on your own business code.", - "AbpDefinition": "ABP blog for .NET development, cross-platform, ASP.NET application templates, ABP-related news and more..." + "AbpDefinition": "Create a new blog post and share your knowledge and experience with ABP.", + "Blogs": "Blog Posts" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json index 075ba850c0..5e3a26f6fb 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ar.json @@ -161,7 +161,7 @@ "SearchQuestionPlaceholder": "البحث في الأسئلة المتداولة", "WhatIsTheABPCommercial": "ما هو برنامج ABP التجاري؟", "WhatAreDifferencesThanAbpFramework": "ما هي الاختلافات بين إطار عمل ABP مفتوح المصدر وإطار عمل ABP التجاري؟", - "ABPCommercialExplanation": "ABP Commercial عبارة عن مجموعة من الوحدات النمطية والأدوات والسمات والخدمات المتميزة التي تم إنشاؤها فوق إطار عمل ABP مفتوح المصدر. يتم تطوير ودعم ABP Commercial من قبل نفس الفريق الذي يقف وراء إطار عمل ABP.", + "ABPCommercialExplanation": "ABP Commercial عبارة عن مجموعة من الوحدات النمطية والأدوات والسمات والخدمات المتميزة التي تم إنشاؤها فوق إطار عمل ABP مفتوح المصدر. يتم تطوير ودعم ABP من قبل نفس الفريق الذي يقف وراء إطار عمل ABP.", "WhatAreDifferencesThanABPFrameworkExplanation": "

إطار عمل ABP عبارة عن إطار عمل لتطوير تطبيقات معياري وقابل للتخصيص ومتوافق مع خدمة دقيقة لـ ASP.NET Core. إنه يوفر بنية كاملة وبنية تحتية قوية لتجعلك تركز على رمز عملك الخاص بدلاً من تكرار نفسك لكل مشروع جديد. يعتمد على أفضل ممارسات تطوير البرامج والأدوات الشائعة التي تعرفها بالفعل.

إطار عمل ABP مجاني تمامًا ومفتوح المصدر وقائم على المنتدى. كما أنه يوفر سمة مجانية وبعض الوحدات النمطية مسبقة الصنع (مثل إدارة الهوية وإدارة المستأجر). ", "VisitTheFrameworkVSCommercialDocument": "قم بزيارة الرابط التالي للحصول على مزيد من المعلومات {1} ", "ABPCommercialFollowingBenefits": "يضيف ABP Commercial المزايا التالية إلى جانب إطار عمل ABP ؛", @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "أنت تستخدم الترخيص التجريبي وستنتهي صلاحية الترخيص التجريبي في {0}.", "TryForFree": "حاول مجانا", "TrialLicenseExpiredInfo": "انتهت فترة الترخيص التجريبي الخاص بك!", - "CommercialNewsletterConfirmationMessage": "أوافق على البنود والشروط و سياسة الخصوصية .", + "CommercialNewsletterConfirmationMessage": "أوافق على البنود والشروط و سياسة الخصوصية .", "RenewLicenseEarly": "إذا قمت بتجديد رخصتي في وقت مبكر ، هل سأحصل على السنة كاملة؟", "RenewLicenseEarylExplanation": "عند تجديد الترخيص الخاص بك قبل تاريخ انتهاء الترخيص الخاص بك ، ستتم إضافة سنة واحدة إلى تاريخ انتهاء الترخيص الخاص بك. على سبيل المثال ، إذا انتهت صلاحية ترخيصك في {0} -06-06 وقمت بتجديده في {0} -01-01 ، فسيكون تاريخ انتهاء صلاحية الترخيص الجديد {1} -06-06.", "discountForYears": "{0}٪ خصم لمدة {1} سنة (سنوات)", @@ -694,7 +694,7 @@ "Landing_Page_DocsModuleDescription_9": "بالإضافة إلى مصدر GitHub، يسمح ببساطة باستخدام مجلد كمصدر توثيق.", "Landing_Page_FileManagementModuleDescription_1": "تحميل وتنزيل وتنظيم الملفات في هيكل مجلد هرمي.", "Landing_Page_FileManagementModuleDescription_2": "تُستخدم هذه الوحدة لتحميل الملفات وتنزيلها وتنظيمها في هيكل مجلد هرمي. كما أنه متوافق مع تعددية الإيجارات ويمكنك تحديد الحجم الإجمالي للمستأجرين.", - "Landing_Page_FileManagementModuleDescription_3": "تعتمد هذه الوحدة على نظام BLOB تخزين، لذا يمكنها استخدام موفري تخزين مختلفين لتخزين محتويات الملف.", + "Landing_Page_FileManagementModuleDescription_3": "تعتمد هذه الوحدة على نظام BLOB تخزين، لذا يمكنها استخدام موفري تخزين مختلفين لتخزين محتويات الملف.", "Landing_Page_IdentityModuleDescription_1": "تطبق هذه الوحدة نظام المستخدم والدور للتطبيق:", "Landing_Page_IdentityModuleDescription_2": "مبني على مكتبة Microsoft's ASP.NET Core Identity.", "Landing_Page_IdentityModuleDescription_3": "إدارة الأدوار و المستخدمين في النظام. يُسمح للمستخدم بأن يكون له أدوار متعددة .", @@ -710,7 +710,7 @@ "Landing_Page_PaymentModuleDescription_1": "يوفر تكاملاً لبوابات الدفع المختلفة.", "Landing_Page_PaymentModuleDescription_2": "توفر هذه الوحدة تكاملاً لبوابات الدفع ، بحيث يمكنك بسهولة الحصول على مدفوعات من عملائك.", "Landing_Page_PaymentModuleDescription_3": "تدعم هذه الوحدة بوابات الدفع التالية", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "استخدم نفس بيانات الاعتماد لكلا commercial.abp.io و support.abp.io.", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "استخدم نفس بيانات الاعتماد لكلا commercial.abp.io و support.abp.io.", "WatchCrudPagesVideo": "شاهد فيديو \"Creating CRUD Pages with ABP Suite\"!", "WatchGeneratingFromDatabaseVideo": "Watch the \"ABP Suite: Generating CRUD Pages From Existing Database Tables\" Video!", "WatchTakeCloserLookVideo": "شاهد فيديو \"Take a closer look at the code generation: ABP Suite\"!", @@ -784,9 +784,9 @@ "UpgradePaymentInfoSection_LicenseRenewalPrice": "تجديد الرخصة", "Total": "المجموع", "SupportPolicyFaqTitle": "ما هي سياسة الدعم الخاصة بك؟", - "SupportPolicyFaqExplanation": "نحن ندعم فقط الإصدار الرئيسي النشط والسابق. لا نضمن إصدار تصحيح للإصدارات الرئيسية الثالثة والأقدم. على سبيل المثال ، إذا كان الإصدار النشط هو 7.0.0 ، فسنصدر إصدارات تصحيح لكل من 6.x.x و 7.x.x. إلى جانب ذلك ، نحن نقدم الدعم فقط لإطار عمل ABP والقضايا التجارية المتعلقة بـ ABP. هذا يعني أنه لا يتم تقديم أي دعم لتطبيقات الطرف الثالث والخدمات السحابية والمكتبات الطرفية الأخرى التي تستخدمها منتجات ABP. سنبذل جهودًا معقولة تجاريًا لتزويد عملائنا بالدعم الفني خلال ساعات العمل الرسمية لـ \"Volosoft Bilisim A.S\". من ناحية أخرى ، نحن لا نلتزم بوقت استجابة اتفاقية مستوى الخدمة (SLA) ، لكننا سنحاول الرد على المشكلات الفنية في أسرع وقت ممكن خلال ساعات العمل الرسمية لدينا. ما لم يتم إبرام اتفاقية خاصة مع العميل ، فإننا نقدم الدعم فقط على https://support.abp.io. لدينا أيضًا دعم خاص بالبريد الإلكتروني ، وهو متاح فقط لحاملي تراخيص المؤسسة.", + "SupportPolicyFaqExplanation": "نحن ندعم فقط الإصدار الرئيسي النشط والسابق. لا نضمن إصدار تصحيح للإصدارات الرئيسية الثالثة والأقدم. على سبيل المثال ، إذا كان الإصدار النشط هو 7.0.0 ، فسنصدر إصدارات تصحيح لكل من 6.x.x و 7.x.x. إلى جانب ذلك ، نحن نقدم الدعم فقط لإطار عمل ABP والقضايا التجارية المتعلقة بـ ABP. هذا يعني أنه لا يتم تقديم أي دعم لتطبيقات الطرف الثالث والخدمات السحابية والمكتبات الطرفية الأخرى التي تستخدمها منتجات ABP. سنبذل جهودًا معقولة تجاريًا لتزويد عملائنا بالدعم الفني خلال ساعات العمل الرسمية لـ \"Volosoft Bilisim A.S\". من ناحية أخرى ، نحن لا نلتزم بوقت استجابة اتفاقية مستوى الخدمة (SLA) ، لكننا سنحاول الرد على المشكلات الفنية في أسرع وقت ممكن خلال ساعات العمل الرسمية لدينا. ما لم يتم إبرام اتفاقية خاصة مع العميل ، فإننا نقدم الدعم فقط على https://abp.io/support/questions. لدينا أيضًا دعم خاص بالبريد الإلكتروني ، وهو متاح فقط لحاملي تراخيص المؤسسة.", "WhyUseAbpIoPlatform": "لماذا يجب علي استخدام منصة ABP.IO بدلاً من إنشاء حل جديد من البداية؟", - "WhyUseAbpIoPlatformFaqExplanation": "انظر الى هذا المستند للحصول على شرح مفصل لسبب استخدام ABP.IO Platform لفائدته الكبيرة بدلًا من القيام بكل شيء بنفسك.", + "WhyUseAbpIoPlatformFaqExplanation": "انظر الى هذا المستند للحصول على شرح مفصل لسبب استخدام ABP.IO Platform لفائدته الكبيرة بدلًا من القيام بكل شيء بنفسك.", "EulaPageTitle": "اتفاقية ترخيص المستخدم النهائي (EULA)", "PrivacyPolicyPageTitle": "سياسة الخصوصية - سياسة ملفات تعريف الارتباط", "TermsConditionsPageTitle": "الأحكام والشروط", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json index 9f7d48d78c..30500aab9b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/cs.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Používáte zkušební licenci a platnost vaší zkušební licence vyprší dne {0}.", "TryForFree": "Zkus zadarmo", "TrialLicenseExpiredInfo": "Vaše zkušební licenční období vypršelo!", - "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy.", + "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy.", "ContinueWithNewOrganization": "Pokračujte s novou organizací", "RenewLicenseEarly": "Pokud si předčasně obnovím licenci, dostanu celý rok?", "RenewLicenseEarylExplanation": "Když obnovíte licenci před datem vypršení platnosti licence, bude k datu vypršení platnosti licence přidán 1 rok. Pokud například platnost vaší licence vyprší dne {0}-06-06 a obnovíte ji dne {0}-01-01, bude vaše nové datum vypršení platnosti licence {1}-06-06.", @@ -391,7 +391,7 @@ "OnboardingTrainingFaqTitle": "Máte školení ABP onboarding?", "OnboardingTrainingFaqExplanation": "Ano, máme školicí služby ABP, které vám pomohou rychle zahájit váš projekt ABP. Dozvíte se o ABP od hlavního člena týmu ABP a získáte dovednosti pro zahájení vašeho projektu ABP. Na onboarding školení si vysvětlíme, jak nastavit vaše vývojové prostředí, nainstalovat požadované nástroje, vytvořit plně funkční stránku CRUD. Školení bude probíhat živě a bude se používat aplikace Zoom a jsme otevřeni využití dalších online platforem pro setkávání. Jazykem školení bude angličtina. Během sezení můžete také klást otázky týkající se ABP. Pro obě strany bude naplánován vhodný čas a datum. Chcete-li získat další informace, kontaktujte nás na adrese info@abp.io.", "SupportPolicyFaqTitle": "Jaká je vaše politika podpory?", - "SupportPolicyFaqExplanation": "Podporujeme pouze aktivní a předchozí hlavní verzi. Nezaručujeme vydání opravy pro třetí a starší hlavní verzi. Například pokud je aktivní verze 7.0.0, vydáme opravné verze pro verzi 6.x.x i 7.x.x. Kromě toho poskytujeme podporu pouze pro problémy související s ABP Framework a ABP Commercial. To znamená, že neposkytujeme žádnou podporu aplikacím třetích stran, cloudovým službám a dalším periferním knihovnám používaným produkty ABP. Vynaložíme komerčně přiměřené úsilí, abychom našim zákazníkům poskytli technickou podporu během oficiální pracovní doby společnosti \"Volosoft Bilisim A.S\". Na druhou stranu se nezavazujeme k době odezvy podle dohody o úrovni služeb (SLA), ale budeme se snažit reagovat na technické problémy co nejrychleji v rámci naší oficiální pracovní doby. Pokud není se zákazníkem uzavřena zvláštní dohoda, poskytujeme podporu pouze na adrese https://support.abp.io. Máme také soukromou e-mailovou podporu, která je k dispozici pouze držitelům licence Enterprise.", + "SupportPolicyFaqExplanation": "Podporujeme pouze aktivní a předchozí hlavní verzi. Nezaručujeme vydání opravy pro třetí a starší hlavní verzi. Například pokud je aktivní verze 7.0.0, vydáme opravné verze pro verzi 6.x.x i 7.x.x. Kromě toho poskytujeme podporu pouze pro problémy související s ABP Framework a ABP Commercial. To znamená, že neposkytujeme žádnou podporu aplikacím třetích stran, cloudovým službám a dalším periferním knihovnám používaným produkty ABP. Vynaložíme komerčně přiměřené úsilí, abychom našim zákazníkům poskytli technickou podporu během oficiální pracovní doby společnosti \"Volosoft Bilisim A.S\". Na druhou stranu se nezavazujeme k době odezvy podle dohody o úrovni služeb (SLA), ale budeme se snažit reagovat na technické problémy co nejrychleji v rámci naší oficiální pracovní doby. Pokud není se zákazníkem uzavřena zvláštní dohoda, poskytujeme podporu pouze na adrese https://abp.io/support/questions. Máme také soukromou e-mailovou podporu, která je k dispozici pouze držitelům licence Enterprise.", "DowngradeLicensePlan": "Mohu v budoucnu přejít na nižší licenční plán?", "DowngradeLicensePlanExplanation": "Stávající licenční plán nelze snížit. Můžete si však zakoupit nový nižší licenční plán a pokračovat ve vývoji s novou licencí. Po zakoupení nižší licence se stačí přihlásit k novému licenčnímu plánu pomocí příkazu ABP CLI: abp login -o `.", "LicenseTransfer": "Lze licenci převést z jednoho vývojáře na druhého?", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json index 0f599be1ff..210f46ff8b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/de.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Sie verwenden die Testlizenz und Ihre Testlizenz läuft am {0} ab.", "TryForFree": "Kostenlos testen", "TrialLicenseExpiredInfo": "Ihr Testlizenzzeitraum ist abgelaufen!", - "CommercialNewsletterConfirmationMessage": "Ich stimme den Allgemeinen Geschäftsbedingungen und der Datenschutzerklärung . zu .", + "CommercialNewsletterConfirmationMessage": "Ich stimme den Allgemeinen Geschäftsbedingungen und der Datenschutzerklärung . zu .", "ContinueWithNewOrganization": "Weiter mit einer neuen Organisation", "RenewLicenseEarly": "Erhalte ich das ganze Jahr, wenn ich meine Lizenz vorzeitig erneuere?", "RenewLicenseEarylExplanation": "Wenn Sie Ihre Lizenz vor dem Ablaufdatum Ihrer Lizenz erneuern, wird Ihr Lizenzablaufdatum um 1 Jahr verlängert. Wenn Ihre Lizenz beispielsweise am {0}-06-06 abläuft und Sie sie am {0}-01-01 erneuern, ist das neue Ablaufdatum der Lizenz der {1}-06-06.", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json index 1336c8ae0b..fb5064b9a6 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json @@ -95,14 +95,14 @@ "Or": "Or", "TellUsAboutYourself": "Tell us little bit about yourself", "Surname": "Surname", - "DoYouAgreePrivacyPolicy": "I agree to the Terms & Conditions and Privacy Policy.", + "DoYouAgreePrivacyPolicy": "I agree to the Terms & Conditions and Privacy Policy.", "VolosoftMarketingInformationMessage": "I would like information, tips, and offers about Solutions for Businesses and Organizations and other Volosoft products and services.", "VolosoftSharingInformationMessage": "I would like Volosoft to share my information with select partners so I can receive relevant information about their products and services.", "WeWillSendYouADownloadLink": "We've sent the file to {0}.", "InvalidFormInputs": "Please, type the valid information specified on the form.", "DDDBookEmailBody": "Thank you.
To download your book, click here.", "FreeDDDEBook": "Free DDD E-Book", - "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy.", + "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy.", "RemoveCurrentUserFromOrganizationWarningMessage": "You are removing yourself from your own organization. You will no longer be able to manage this organization, do you confirm?", "RenewExistingOrganizationOrCreateNewOneMessage": "You can renew the license of your organization(s) by clicking the below \"Extend Now\" button(s) and thus you can extend the license expiry date by 1 year. If you continue to checkout, you will have a new organization. Do you want to continue with a new organization?", "ExtendNow": "Extend / Renew", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index d0cfe5dbcd..ae040e7fd2 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -47,7 +47,7 @@ "UnsubscribeLicenseExpirationEmailSuccessTitle": "Successfully unsubscribed", "UnsubscribeLicenseExpirationEmailSuccessMessage": "You will not receive license expiration date reminder emails anymore.", "IndexPageHeroSection": "A complete web development platformbuilt-on framework", - "AbpCommercialShortDescription": "ABP provides pre-built application modules, rapid application development tooling, professional UI themes, premium support and more.", + "AbpCommercialShortDescription": "ABP Commercial provides pre-built application modules, rapid application development tooling, professional UI themes, premium support and more.", "LiveDemo": "Live Demo", "LiveDemoLead": "{1} using your ABP account, {3} to abp.io or fill the form below to create a live demo now", "ThereIsAlreadyAnAccountWithTheGivenEmailAddress": "There is already an account with the given email address: {0}
You should login with your account to proceed.", @@ -67,7 +67,7 @@ "Send": "Send", "WhatIsABPFramework": "WHAT IS THE ABP FRAMEWORK?", "OpenSourceBaseFramework": "Open Source Base Framework", - "ABPFrameworkExplanation": "

ABP commercial version is based on the ABP Framework, an open source and community driven web application framework for ASP.NET Core.

ABP Framework provides an excellent infrastructure to write maintainable, extensible and testable code with the best practices.

Built on and integrated to popular tools you already know. Low learning curve, easy adaptation, comfortable development.

", + "ABPFrameworkExplanation": "

ABP Commercial is based on the ABP Framework, an open source and community driven web application framework for ASP.NET Core.

ABP Framework provides an excellent infrastructure to write maintainable, extensible and testable code with the best practices.

Built on and integrated to popular tools you already know. Low learning curve, easy adaptation, comfortable development.

", "Modular": "Modular", "MicroserviceCompatible": "Microservice compatible", "DomainDrivenDesignInfrastructure": "Domain Driven Design Infrastructure", @@ -81,8 +81,8 @@ "AdvancedLocalization": "Advanced Localization", "ManyMore": "Many more", "ExploreTheABPFramework": "Explore the ABP Framework", - "WhyUseTheABPCommercial": "Why Use The ABP Platform?", - "WhyUseTheABPCommercialExplanation": "

Building enterprise-grade web applications can be complex and time-consuming.

ABP offers the perfect base infrastructure necessary for all the modern enterprise-grade ASP.NET Core based solutions. Right from the design to deployment, the entire development cycle is empowered by the ABP's built-in features & modules.

", + "WhyUseTheABPCommercial": "Why Use The ABP Commercial?", + "WhyUseTheABPCommercialExplanation": "

Building enterprise-grade web applications can be complex and time-consuming.

ABP Commercial offers the perfect base infrastructure necessary for all the modern enterprise-grade ASP.NET Core based solutions. Right from the design to deployment, the entire development cycle is empowered by the ABP's built-in features & modules.

", "StartupTemplatesShortDescription": "Startup templates make you jump-start your project in a few seconds.", "UIFrameworksOptions": "UI frameworks options;", "DatabaseProviderOptions": "Database provider options;", @@ -97,7 +97,7 @@ "TextTemplateManagement": "Text Template Management", "See All Modules": "SeeAllModules", "ABPSuite": "ABP Suite", - "AbpSuiteShortDescription": "ABP Suite is a complementary tool to ABP projects.", + "AbpSuiteShortDescription": "ABP Suite is a complementary tool to ABP Commercial.", "AbpSuiteExplanation": "It allows you to build web pages in a matter of minutes. It's a .NET Core Global tool that can be installed from the command line. It can create a new ABP solution and generate CRUD pages from the database to the front-end.", "Details": "Details", "LeptonTheme": "Lepton Theme", @@ -110,7 +110,7 @@ "DarkBlueTheme": "Dark Blue Theme", "LightTheme": "Light Theme", "ProudToWorkWith": "Proud to Work With", - "OurConsumers": "Thousands of enterprises and developers over 70 countries worldwide rely on ABP.", + "OurConsumers": "Thousands of enterprises and developers over 70 countries worldwide rely on ABP Commercial.", "JoinOurConsumers": "Join them and build amazing products fast.", "AdditionalServicesExplanation": "Do you need additional or custom services? We and our partners can provide;", "CustomProjectDevelopment": "Custom Project Development", @@ -160,50 +160,50 @@ "ABPCLIExplanation": "ABP CLI (Command Line Interface) is a command line tool to perform some common operations for ABP-based solutions.", "ABPSuiteEasilyCURD": "ABP Suite is a tool which allows you to easily create CRUD pages", "WeAreHereToHelp": "We are Here to Help", - "BrowseOrAskQuestion": "You can browse our help topics or search in the frequently asked questions, or you can ask us a question by using the contact form.", + "BrowseOrAskQuestion": "You can browse our help topics or search in the frequently asked questions, or you can ask us a question by using the contact form.", "SearchQuestionPlaceholder": "Search in frequently asked questions", - "WhatIsTheABPCommercial": "What is ABP?", - "WhatAreDifferencesThanAbpFramework": "What are the differences between the open-source ABP and commercial version of ABP?", - "AbpCommercialMetaTitle": " {0} | ABP", + "WhatIsTheABPCommercial": "What is ABP Commercial?", + "WhatAreDifferencesThanAbpFramework": "What are the differences between the open source ABP Framework and ABP Commercial?", + "AbpCommercialMetaTitle": " {0} | ABP Commercial", "AbpCommercialMetaDescription": "A comprehensive web development platform on ABP Framework with pre-built modules, startup templates, rapid dev tools, pro UI themes & premium support.", - "ABPCommercialExplanation": "ABP Platform is a set of premium modules, tools, themes and services that are built on top of the open source ABP framework. ABP is being developed and supported by the same team behind the ABP framework.", + "ABPCommercialExplanation": "ABP Commercial is a set of premium modules, tools, themes and services that are built on top of the open source ABP framework. ABP Commercial is being developed and supported by the same team behind the ABP framework.", "WhatAreDifferencesThanABPFrameworkExplanation": "

ABP framework is a modular, themeable, microservice compatible application development framework for ASP.NET Core. It provides a complete architecture and a strong infrastructure to let you focus on your own business code rather than repeating yourself for every new project. It is based on the best practices of software development and popular tools you already know.

ABP framework is completely free, open source and community-driven. It also provides a free theme and some pre-built modules (e.g. identity management and tenant management).

", "VisitTheFrameworkVSCommercialDocument": "Visit the following link for more information {1} ", - "ABPCommercialFollowingBenefits": "ABP commercial version adds the following benefits on top of the ABP framework:", + "ABPCommercialFollowingBenefits": "ABP Commercial adds the following benefits on top of the ABP framework:", "Professional": "Professional", "UIThemes": "UI Themes", "EnterpriseModules": "Enterprise ready, feature-rich, pre-built Application Modules (e.g. Identity Server management, SaaS management, language management)", "ToolingToSupport": "Tooling to support your development productivity (e.g. ABP Suite)", "PremiumSupportLink": "Premium Support", - "WhatDoIDownloadABPCommercial": "What do I download when I purchase the ABP commercial version?", + "WhatDoIDownloadABPCommercial": "What do I download when I purchase the ABP Commercial?", "CreateUnlimitedSolutions": "Once you purchase an ABP Commercial license, you will be able to create unlimited solutions like described in the Getting Started document.", "ABPCommercialSolutionExplanation": "When you create a new application, you get a Visual Studio solution (a startup template) based on your preferences. The downloaded solution has commercial modules and themes already installed and configured for you. You can remove a pre-installed module or add another module if you like. All modules and themes use NuGet/NPM packages by default.", "StartDevelopWithTutorials": "The downloaded solution is well architected and documented. You can start developing your own business code based on it following the tutorials.", - "TryTheCommercialDemo": "You can try the Live Demo to see a sample application created using the ABP startup template.", - "HowManyProducts": "How many different products/solutions can I build using the ABP?", + "TryTheCommercialDemo": "You can try the Live Demo to see a sample application created using the ABP Commercial startup template.", + "HowManyProducts": "How many different products/solutions can I build using the ABP Commercial?", "HowManyProductsExplanation": "You can create as many projects as you want during your active license period; there is no limit! After your license expires, you cannot create new projects, but you can continue to develop the projects you have downloaded and deploy them to an unlimited count of servers.", - "HowManyDevelopers": "How many developers can work on the ABP?", - "HowManyDevelopersExplanation": "ABP licenses are per developer. Different license types have different developer limits. However, you can add more developers to any license type whenever you need. Check out the Plans & Pricing page for license types, developer limits and additional developer costs.", + "HowManyDevelopers": "How many developers can work on the ABP Commercial?", + "HowManyDevelopersExplanation": "ABP Commercial licenses are per developer. Different license types have different developer limits. However, you can add more developers to any license type whenever you need. Check out the Plans & Pricing page for license types, developer limits and additional developer costs.", "ChangingLicenseType": "Can I upgrade my license type later?", - "ChangingLicenseTypeExplanation": "You can upgrade to a higher license by paying the difference within your active license period. When you upgrade to a higher license plan, you get the benefits of the new plan, but the license upgrade does not change the license expiry date. Besides, you can also add new developer seats to your existing license, check out the \"How many developers can work on the ABP?\" FAQ.", + "ChangingLicenseTypeExplanation": "You can upgrade to a higher license by paying the difference within your active license period. When you upgrade to a higher license plan, you get the benefits of the new plan, but the license upgrade does not change the license expiry date. Besides, you can also add new developer seats to your existing license, check out the \"How many developers can work on the ABP Commercial?\" FAQ.", "LicenseExtendUpgradeDiff": "What is the difference between license extend and upgrade?", "LicenseExtendUpgradeDiffExplanation": "Extending: By extending/renewing your license, you will continue to get premium support and get major or minor updates for the modules and themes. Besides, you will be able to continue creating new projects. And you will still be able to use ABP Suite, which speeds up your development. When you extend your license, 1 year is added to your license expiry date.
Upgrading: By upgrading your license, you will be promoted to a higher license plan, which will allow you to get additional benefits. Check out the license comparison table to see the differences between the license plans. On the other hand, when you upgrade, your license expiry date will not change! To extend your license end date, you need to extend your license.", "LicenseRenewalCost": "What is the license renewal cost after 1 year?", "LicenseRenewalCostExplanation": "The renewal (extend) price of the standard Team License is ${0}, standard Business License is ${1} and standard Enterprise License is ${2}. If you are already a customer, log into your account to review the current renewal pricing.", "HowDoIRenewMyLicense": "How do I renew my license?", "HowDoIRenewMyLicenseExplanation": "You can renew your license by navigating to the organization management page. In order to take advantage of our discounted Early Renewal rates, ensure you renew before your license expires. Don't worry about not knowing when your Early Renewal opportunity closes; you'll receive 3 reminder e-mails before your subscription expires. We'll send them 30 days, 7 days and 1 day before expiration.", - "IsSourceCodeIncluded": "Does my license include the source code of the pro modules and themes?", + "IsSourceCodeIncluded": "Does my license include the source code of the commercial modules and themes?", "IsSourceCodeIncludedExplanation1": "Depends on the license type you've purchased:", "IsSourceCodeIncludedExplanation2": "Team: Your solution uses the modules and themes as NuGet and NPM packages. It doesn't include their source code. This way, you can easily upgrade these modules and themes whenever a new version is available. However, you can not get the source code of these modules and themes.", "IsSourceCodeIncludedExplanation3": "Business/Enterprise: In addition to the Team license, you are able to download the source code of any module or theme you need. You can even remove the NuGet/NPM package references for a particular module and add its source code directly to your solution to fully change it.", - "IsSourceCodeIncludedExplanation4": "

Including the source code of a module to your solution gives you the maximum freedom to customize that module. However, it will then not be possible to automatically upgrade the module when a new version is released.

None of the licenses include the ABP Suite and ABP Studio source code, which is external tools that generates code for you and assists your development.

Check out the Plans & Pricing page for other differences between the license types.

", + "IsSourceCodeIncludedExplanation4": "

Including the source code of a module to your solution gives you the maximum freedom to customize that module. However, it will then not be possible to automatically upgrade the module when a new version is released.

None of the licenses include the ABP Suite source code, which is an external tool that generates code for you and assists your development.

Check out the Plans & Pricing page for other differences between the license types.

", "ChangingDevelopers": "Can I change the registered developers of my organization in the future?", "ChangingDevelopersExplanation": "In addition to adding new developers to your license, you can also change the existing developers (you can remove a developer and add a new one to the same seat) without any additional cost.", "WhatHappensWhenLicenseEnds": "What happens when my license period ends?", - "WhatHappensWhenLicenseEndsExplanation1": "The ABP license is a perpetual license. After your license expires, you can continue developing your project. And you are not obliged to renew your license. Your license comes with a one-year update and support plan out of the box. In order to continue to get new features, performance enhancements, bug fixes, support and continue using ABP Suite, you need to renew your license. When your license expires;", - "WhatHappensWhenLicenseEndsExplanation2": "You can not create new solutions using the ABP commercial version, but you can continue developing your existing applications forever.", + "WhatHappensWhenLicenseEndsExplanation1": "The ABP Commercial license is a perpetual license. After your license expires, you can continue developing your project. And you are not obliged to renew your license. Your license comes with a one-year update and support plan out of the box. In order to continue to get new features, performance enhancements, bug fixes, support and continue using ABP Suite, you need to renew your license. When your license expires;", + "WhatHappensWhenLicenseEndsExplanation2": "You can not create new solutions using the ABP Commercial, but you can continue developing your existing applications forever.", "WhatHappensWhenLicenseEndsExplanation3": "You will be able to get updates for the modules and themes within your MINOR version (except RC or Preview versions). For example, if you are using v3.2.0 of a module, you can still get updates for v3.2.x (v3.2.1, v3.2.5... etc.) of that module. But you cannot get updates for the next major or minor version (like v3.3.0, v3.3.3, 4.x.x.. etc.). For example, when your license expired, the latest release was v4.4.3, and later, it published both 4.4.4 version and 4.5.0 version, you would be able to access the v4.4.X but you wouldn't be access the v4.5.X.", - "WhatHappensWhenLicenseEndsExplanation4": "You can not install new modules and themes added to the ABP commercial platform after your license ends.", + "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 premium support anymore.", "WhatHappensWhenLicenseEndsExplanation7": "You can extend (renew) your license if you want to continue getting these benefits. If you extend your license within {3} days after your license expires, the following discounts will be applied: Team License {0}; Business License {1}; Enterprise License {2}.", @@ -212,11 +212,11 @@ "WhenShouldIRenewMyLicense": "When should I renew my license?", "WhenShouldIRenewMyLicenseExplanation": "If you renew your license within {3} days 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 {3} days 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": "Yes, to start your free trial, contact marketing@volosoft.com. We also offer a 30-day money-back guarantee for the Team license, no questions asked! You can request a full refund within the first 30 days of the license purchase. 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.", + "TrialPlanExplanation": "Yes, to start your free trial, contact marketing@volosoft.com. We also offer a 30-day money-back guarantee for the Team license, no questions asked! You can request a full refund within the first 30 days of the license purchase. 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?", "DoYouAcceptBankWireTransferExplanation": "Yes, we accept bank wire transfers.
After sending the license fee via bank transfer, send your receipt and requested license type to accounting@volosoft.com.
Our international bank account information:", "HowToUpgrade": "How to upgrade existing applications when a new version is available?", - "HowToUpgradeExplanation1": "When you create a new application using ABP, all the modules and themes are used as NuGet and NPM packages. So, you can easily upgrade the packages when a new version is available.", + "HowToUpgradeExplanation1": "When you create a new application using ABP Commercial, all the modules and themes are used as NuGet and NPM packages. So, you can easily upgrade the packages when a new version is available.", "HowToUpgradeExplanation2": "In addition to the standard NuGet/NPM upgrades, ABP CLI provides an update command that automatically finds and upgrades all ABP-related packages in your solution.", "DatabaseSupport": "Which database systems are supported?", "DatabaseSupportExplanation": "ABP Framework itself is database agnostic and can work with any database provider by its nature. Check out the Data Access document for a list of currently implemented providers.", @@ -225,15 +225,15 @@ "UISupportExplanation": "ABP Framework itself is UI framework agnostic and can work with any UI framework. However, startup templates, module UIs and themes were not implemented for all UI frameworks. Check out the Getting Started document for the up-to-date list of UI options.", "MicroserviceSupport": "Does it support the microservice architecture?", "MicroserviceSupportExplanation1": "One of the major goals of the ABP framework is to provide a convenient infrastructure to create microservice solutions. Check out the Microservice Architecture document to understand how it helps with creating microservice systems.", - "MicroserviceSupportExplanation2": "All the ABP modules are designed to support microservice deployment scenarios (with its own API and database) by following the Module Development Best Practices document.", + "MicroserviceSupportExplanation2": "All the ABP Commercial modules are designed to support microservice deployment scenarios (with its own API and database) by following the Module Development Best Practices document.", "MicroserviceSupportExplanation3": "We provide a sample Microservice Demo Solution that demonstrates a microservice architecture implementation to help you create your own solution.", "MicroserviceSupportExplanation4": "So, the short answer is: \"Yes, it supports microservice architecture\".", "MicroserviceSupportExplanation5": "However, a microservice system is a solution, and every solution will have different requirements, network topology, communication scenarios, authentication possibilities, database sharding/partitioning decisions, runtime configurations, 3rd party system integrations and many more.", - "MicroserviceSupportExplanation6": "ABP provides infrastructure for microservice scenarios, microservice compatible modules, samples and documentation to help you build your own solution. But don't expect to directly download your dream solution pre-built for you. You will need to understand it and bring specific parts together based on your requirements.", + "MicroserviceSupportExplanation6": "The ABP Framework and ABP Commercial provide infrastructure for microservice scenarios, microservice compatible modules, samples and documentation to help you build your own solution. But don't expect to directly download your dream solution pre-built for you. You will need to understand it and bring specific parts together based on your requirements.", "WhereCanIDownloadSourceCode": "Where can I download the source-code?", "WhereCanIDownloadSourceCodeExplanation": "You can download the source code of all the ABP modules, Angular packages and themes via ABP Suite or ABP CLI. Check out How to download the source-code?", "ComputerLimitation": "How many computers can a developer login when developing ABP?", - "ComputerLimitationExplanation": "We specifically permit {0} computers per individual/licensed developer. Whenever there is a need for a developer to develop ABP based products on a third machine, an e-mail should be sent to license@abp.io explaining the situation, and we will then make the appropriate allocation in our system.", + "ComputerLimitationExplanation": "We specifically permit {0} computers per individual/licensed developer. Whenever there is a need for a developer to develop ABP Commercial products on a third machine, an e-mail should be sent to license@abp.io explaining the situation, and we will then make the appropriate allocation in our system.", "RefundPolicy": "Do you have a refund policy?", "RefundPolicyExplanation": "You can request a refund within 30 days of your license purchase. The Business and Enterprise license types have source-code download options; therefore, we provide a 60% refund within 30 days for Business and Enterprise licenses. In addition, no refunds are made for renewals and second license purchases.", "HowCanIRefundVat": "How can I refund VAT?", @@ -243,7 +243,7 @@ "HowCanIGetMyInvoice": "How can I get my invoice?", "HowCanIGetMyInvoiceExplanation": "There are 2 payment gateways for purchasing a license: Iyzico and 2Checkout. If you purchase your license through the 2Checkout gateway, it sends the PDF invoice to your email address; check out 2Checkout invoicing. If you purchase through the Iyzico gateway, with a custom purchase link or via a bank wire transfer, we will prepare and send your invoice. You can request or download your invoice from the organization management page. Before contacting us for the invoice, check your organization management page!", "Forum": "Forum", - "SupportExplanation": "ABP license provides a premium forum support by a team consisting of the ABP Framework experts.", + "SupportExplanation": "ABP Commercial license provides a premium forum support by a team consisting of the ABP Framework experts.", "PrivateTicket": "Private Ticket", "PrivateTicketExplanation": "Enterprise License also includes a private support with e-mail and ticket system.", "AbpSuiteExplanation1": "ABP Suite allows you to build web pages in a matter of minutes. It's a .NET Core Global tool that can be installed from the command line.", @@ -271,7 +271,7 @@ "Document": "Document", "UsingABPSuiteToCURD": "Using ABP Suite for CRUD Page Generation & Tooling", "SeeABPSuiteDocument": "Check out the ABP Suite document to learn the usage of ABP Suite.", - "AskQuestionsOnSupport": "You can ask questions on ABP Support.", + "AskQuestionsOnSupport": "You can ask questions on ABP Commercial Support.", "Documentation": "Documentation", "SeeModulesDocument": "See the modules page for a list of all the PRO modules.", "Pricing": "Pricing", @@ -322,7 +322,7 @@ "GithubUsername": "GitHub username", "PhoneNumber": "Phone number", "Country": "Country", - "DescribeABPCommercialUsage": "Describe the project you are planning to develop based on APB", + "DescribeABPCommercialUsage": "Describe the project you are planning to develop based on APB Commercial", "DiscountRequestCertifyInformationMessage": "I certify that all information is true and correct.", "DiscountRequestReceived": "We have received your discount request.", "DiscountRequestStatusMessage": "We will respond to you after checking the information you have provided.", @@ -371,7 +371,7 @@ "DDDBookEmailBody": "Thank you.
To download your book, click here.", "StartFree": "Start free", "FreeTrial": "Free Trial", - "AcceptsMarketingCommunications": " Yes, I`d like to receive ABP related marketing news.", + "AcceptsMarketingCommunications": " Yes, I`d like to receive ABP Commercial marketing communications.", "PurposeOfUsage": "Purpose of usage", "Choose": "- Choose -", "CompanyOrganizationName": "Company / Organization name", @@ -400,8 +400,8 @@ "DowngradeLicensePlanExplanation": "You cannot downgrade your existing license plan. But you can purchase a new lower license plan and continue your development on the new license. After you purchase a lower license, you just need to login to your new license plan via ABP CLI command: ` abp login -o `.", "LicenseTransfer": "Can a license be transferred from one developer to another?", "LicenseTransferExplanation": "Yes! When you purchase a license, you become the license holder, hence you will have access to the organization management page. An organization has owner and developer roles. Owners can manage the developer seats and assign developers. Each assigned developer will log in via ABP CLI command into the system and will have development and support permissions.", - "UserOwnerDescription": "The 'Owner' of the organization is the admin of this account. He/she manages the organization by purchasing licenses and allocating developers. An 'Owner' cannot write code in the ABP projects, cannot download the ABP sample projects, and cannot ask questions on the support website. If you want to do all these, you have to add yourself as a developer too.", - "UserDeveloperDescription": "The 'Developers' can write code in the ABP projects, download the ABP sample projects, and ask questions on the support website. On the other hand, the 'Developers' cannot manage this organization.", + "UserOwnerDescription": "The 'Owner' of the organization is the admin of this account. He/she manages the organization by purchasing licenses and allocating developers. An 'Owner' cannot write code in the ABP Commercial projects, cannot download the ABP sample projects, and cannot ask questions on the support website. If you want to do all these, you have to add yourself as a developer too.", + "UserDeveloperDescription": "The 'Developers' can write code in the ABP Commercial projects, download the ABP sample projects, and ask questions on the support website. On the other hand, the 'Developers' cannot manage this organization.", "RemoveCurrentUserFromOrganizationWarningMessage": "You are removing yourself from your own organization. You will no longer be able to manage this organization, do you confirm?", "RenewExistingOrganizationOrCreateNewOneMessage": "You can renew the license of your organization(s) by clicking the below \"Extend Now\" button(s) and thus you can extend the license expiration date by 1 year. If you continue to checkout, you will have a new organization. Do you want to continue with a new organization?", "PurchaseTrialOrganizationOrCreateNewOneMessage": "You have a trial license. To purchase your trial license click the Purchase Now button. If you continue to checkout, you will have a new organization. Do you want to continue with a new organization?", @@ -421,7 +421,7 @@ "UIFrameworks": "UI Frameworks", "UsefulLinks": "Useful Links", "Platform": "Platform", - "CoolestCompaniesUseABPCommercial": "The coolest companies already use ABP.", + "CoolestCompaniesUseABPCommercial": "The coolest companies already use ABP Commercial.", "UserInterface": "User Interface", "APIGateway": "API Gateway", "Microservice": "Microservice", @@ -462,12 +462,12 @@ "LightDarkAndSemiDarkThemes": "Light, Dark and Semi-Dark", "LeptonXThemeExplanation": "Lepton Theme can change your theme according to your system settings.", "PRO": "PRO", - "WelcomeToABPCommercial": "Welcome to ABP Platform!", + "WelcomeToABPCommercial": "Welcome to ABP Commercial!", "YourAccountDetails": "Your Account Details", "OrganizationName": "Organization Name", "AddDevelopers": "Add Developers", "StartDevelopment": "Start Development", - "CreateAndRunApplicationUsingStartupTemplate": "Learn how to create and run a new web application using the ABP startup templates.", + "CreateAndRunApplicationUsingStartupTemplate": "Learn how to create and run a new web application using the ABP Commercial startup template.", "CommunityDescription2": "community.abp.io is a place where people can share ABP-related articles. Search for articles, tutorials, code samples, case studies and meet people in the same lane as you.", "UseABPSuiteExplanation": "Use ABP Suite to download the source-code of the modules and themes.", "ManageModulesWithSuite": "You can also manage your ABP modules with Suite.", @@ -480,9 +480,9 @@ "MultipleUIOptionsExplanation": "We love different ways to create the User Interface. This startup solution provides three different UI framework options for your business application.", "MultipleDatabaseOptions": "Multiple Database Options", "MultipleDatabaseOptionsExplanation": "You have two database provider options (in addition to using both in a single application). Use Entity Framework Core to work with any relational database and optionally use Dapper when you need to write low-level queries for better performance. MongoDB is another option if you need to use a document-based NoSQL database. While these providers are well-integrated, abstracted and pre-configured, you can actually interact with any database system that you can use with .NET.", - "ModularArchitectureExplanation2": "Modularity is a first-class citizen in the ABP.IO platform. All the application functionalities are split into well-isolated optional modules. The startup solution already comes with the fundamental ABP modules pre-installed. You can also create your own modules to build a modular system for your own application.", + "ModularArchitectureExplanation2": "Modularity is a first-class citizen in the ABP.IO platform. All the application functionalities are split into well-isolated optional modules. The startup solution already comes with the fundamental ABP Commercial modules pre-installed. You can also create your own modules to build a modular system for your own application.", "MultiTenancyForSaasBusiness": "Multi-Tenancy for your SaaS Business", - "MultiTenancyForSaasBusinessExplanation": "ABP provides a complete, end-to-end multi-tenancy system to create your SaaS (Software-as-a-Service) systems. It allows the tenants to share or have their own databases with on-the-fly database creation and migration system.", + "MultiTenancyForSaasBusinessExplanation": "ABP Commercial provides a complete, end-to-end multi-tenancy system to create your SaaS (Software-as-a-Service) systems. It allows the tenants to share or have their own databases with on-the-fly database creation and migration system.", "MicroserviceStartupSolution": "Microservice Startup Solution", "MicroserviceArchitectureExplanation2": "You can get it for your next microservice system to take advantage of the pre-built base solution and distilled experience.", "PreIntegratedTools": "Pre-Integrated to popular tools", @@ -496,7 +496,7 @@ "LandingWebsite": "Landing Website", "LandingWebsiteExplanation": "A generic landing/public website that can be used for several purposes, like introducing your company, selling your products, etc.", "ABPFrameworkEBook": "Mastering ABP Framework e-book", - "MasteringAbpFrameworkEBookDescription": "Included within your ABP license", + "MasteringAbpFrameworkEBookDescription": "Included within your ABP Commercial license", "FullName": "Full Name", "LicenseTypeNotCorrect": "The license type is not correct!", "Trainings": "Trainings", @@ -517,7 +517,7 @@ "SendTrainingRequest": "Send Training Request", "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* The English version of this document is the most up-to-date, and the English version will prevail in any dispute.", "Pricing_Page_Title": "Pricing & Plans", - "Pricing_Page_Description": "Choose the features and functionality your business needs today. Buy an ABP license and create unlimited projects.", + "Pricing_Page_Description": "Choose the features and functionality your business needs today. Buy an ABP Commercial license and create unlimited projects.", "Pricing_Page_HurryUp": "Hurry Up!", "Pricing_Page_BuyLicense": "Buy a license at 2021 prices until January 16!", "Pricing_Page_ValidForExistingCustomers": "Also valid for existing customers and license renewals.", @@ -537,16 +537,16 @@ "Pricing_Page_Hint14": "Team and Business licenses have incident/question count limit. If you buy additional developer licenses, your incident limit increases by {0} (for the Team License) or {1} (for the Business License) per developer.", "Pricing_Page_Hint15": "Only Enterprise License includes private support. You can send an e-mail directly to the ABP Team or ask questions on support.abp.io with a private ticket option. The private tickets are not visible to the public.", "Pricing_Page_Hint16": "You can download the source-code of all ABP themes. You may want to add the source code to your solution to make radical changes or just keep it for yourself for security reasons.", - "Pricing_Page_Testimonial_1": "ABP allowed SC Ventures to deliver a bank-grade multi-tenant silo-database SaaS platform in 9 months to support the accounts receivable / accounts payable supply chain financing of significant value invoices from multiple integrated anchors. The modularity of ABP made it possible for the team to deliver in record time, pass all VAPT, and deploy the containerized microservices stack via full CI/CD and pipelines into production.", - "Pricing_Page_Testimonial_2": "We see the value of using ABP to reduce the overhead of custom development projects. The team is able to unify the code pattern in different project streams. We see more potential in the framework for us to build new features faster than before. We trust we will be constantly seeing the value of leveraging ABP.", + "Pricing_Page_Testimonial_1": "ABP Commercial allowed SC Ventures to deliver a bank-grade multi-tenant silo-database SaaS platform in 9 months to support the accounts receivable / accounts payable supply chain financing of significant value invoices from multiple integrated anchors. The modularity of ABP made it possible for the team to deliver in record time, pass all VAPT, and deploy the containerized microservices stack via full CI/CD and pipelines into production.", + "Pricing_Page_Testimonial_2": "We see the value of using ABP Commercial to reduce the overhead of custom development projects. The team is able to unify the code pattern in different project streams. We see more potential in the framework for us to build new features faster than before. We trust we will be constantly seeing the value of leveraging ABP Commercial.", "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 had to write everything we needed on our own, we might have to spend years. One more thing we like is that the new version, issue fixing, or improvement comes out very soon every other week. We don't wait too long.", - "Pricing_Page_Testimonial_4": "ABP is a fantastic product would recommend. Commercial products to market for our customers in a single configurable platform. The jump starts that the framework and tooling provide any team is worth every cent. ABP was the best fit for our needs.", + "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 starts 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 uses (especially ABP). I spent a lot of time reading the code base, but ABP saved us time in creating 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.", + "Pricing_Page_Testimonial_6": "ABP Framework is a good framework but it needs time to understand the different layers, classes, and libraries it uses (especially ABP). I spent a lot of time reading the code base, but ABP Commercial saved us time in creating 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.", "Pricing_Page_Testimonial_7": "As a startup, we need to iterate quickly and spend minimal time on boilerplate and non-core features.\nOur engineers range from highly experienced to junior engineers, and we needed a common understanding and a way to share technical and domain knowledge, ABP allowed us to do this due to their great guides and documentation. \nThere are things we haven't had to worry about since they work out of the box with ABP. \nABP helped us streamline rapid prototyping and development, less than 4 weeks from feature inception to production. With all its premium features included in the license, ABP has given us, \"Startup in a Box\" on the Software Engineering Side.", - "Pricing_Page_Testimonial_8": "I would recommend ABP to all those who want to expand the range of products available to their customers. It's fantastic when need to use a distributed enterprise environment (Angular, WPF, Win&Linux). In addition to their products, we love their support, which makes our job faster and easier. We already know that we have found a great partner for the future who will support us in expanding our business.", - "Pricing_Page_Testimonial_9": "We are a company of 2 employees that's been in business for over 20 years.\nIn terms of our experience with ABP, we were approached by a client who requested that we develop a new human resources application in a modern environment to replace their 25-year-old Access application. We decided to transition from a desktop solution to a web-based one.\n\nAt the time, we had very little knowledge of web applications and .NET, but we stumbled upon ABP, and with the help of ABP Framework, technical documentation, and ABP Suite, we were able to not only develop the application to the client's specifications but also successfully work within a .NET environment within a year.", - "AbpBookDownloadArea_ClaimYourEBook": "Claim your ABP Framework E-book", + "Pricing_Page_Testimonial_8": "I would recommend ABP commercial to all those who want to expand the range of products available to their customers. It's fantastic when need to use a distributed enterprise environment (Angular, WPF, Win&Linux). In addition to their products, we love their support, which makes our job faster and easier. We already know that we have found a great partner for the future who will support us in expanding our business.", + "Pricing_Page_Testimonial_9": "We are a company of 2 employees that's been in business for over 20 years.\nIn terms of our experience with ABP Commercial, we were approached by a client who requested that we develop a new human resources application in a modern environment to replace their 25-year-old Access application. We decided to transition from a desktop solution to a web-based one.\n\nAt the time, we had very little knowledge of web applications and .NET, but we stumbled upon ABP Commercial, and with the help of ABP Framework, technical documentation, and ABP Suite, we were able to not only develop the application to the client's specifications but also successfully work within a .NET environment within a year.", + "AbpBookDownloadArea_ClaimYourEBook": "Claim your Mastering ABP Framework E-Book", "AddMemberModal_Warning_1": "If the username you are trying to add doesn't exist in the system, please ask your team member to register on {0} and share the username of his/her account with you.", "MyOrganizations_Detail_WelcomeMessage": "Welcome to your organization, {0}", "MyOrganizations_Detail_OrganizationManagement": "Organization Management", @@ -607,7 +607,7 @@ "Purchase_IncludedDeveloperInfo": "{0} {1} included.", "Purchase_LicenseExtraDeveloperPurchaseMessage": "The {0} License includes {1} developers. You can add additional developers.", "StartupTemplates_Page_Title": "ABP Startup Templates", - "StartupTemplates_Page_Description": "ABP allows you to build solutions with any level of complexity. It provides two main pre-built startup solutions. You can select the one close to your requirements and build your own custom solution on top of it.", + "StartupTemplates_Page_Description": "ABP Commercial allows you to build solutions with any level of complexity. It provides two main pre-built startup solutions. You can select the one close to your requirements and build your own custom solution on top of it.", "MicroserviceStartupSolutionForDotnet": "Microservice Startup Solution for .NET", "MonolithSolutionForDotnet": "Monolith (modular) Solution for .NET", "TrainingDetailsHeaderInfo_TrainingHour": "{0} hours", @@ -619,9 +619,9 @@ "Contact_Page_Title": "Contact with ABP Development Team", "Contact_Page_Description": "Contact with ABP Development team, if you need any help or share your thoughts and opinions! ABP Support Team is ready to help.", "Demo_Page_Title": "Create a Demo", - "Demo_Page_Description": "Create a free demo to see a sample application created using the ABP startup templates. Don't repeat yourself for common application requirements.", + "Demo_Page_Description": "Create a free demo to see a sample application created using the ABP Commercial startup template. Don't repeat yourself for common application requirements.", "Discounted_Page_Title": "Discounted pricing", - "Discounted_Page_Description": "Choose the features and functionality your business needs today. Buy an ABP license and create unlimited projects", + "Discounted_Page_Description": "Choose the features and functionality your business needs today. Buy an ABP Commercial license and create unlimited projects", "Faq_Page_Title": "Frequently Asked Questions (FAQ)", "Faq_Page_Description": "Do you have any questions? Search frequently asked questions or ask us a question using the contact form.", "Faq_Page_SwiftCode": "SWIFT Code", @@ -634,11 +634,11 @@ "ProjectCreatedSuccess_Page_Title": "Your project created", "ProjectCreatedSuccess_Page_Description": "Your ABP project created successfully!", "Suite_Page_Title": "ABP Suite", - "Suite_Page_Description": "ABP provides rapid application development tooling to increase developer productivity. ABP Suite allows you to create CRUD pages easily.", + "Suite_Page_Description": "ABP Commercial provides rapid application development tooling to increase developer productivity. ABP Suite allows you to create CRUD pages easily.", "Themes_Page_Title": "ABP Themes", - "Themes_Page_Description": "ABP provides multiple professional, modern UI themes. Create a free demo to have a quick view of what the UI looks like.", + "Themes_Page_Description": "ABP Commercial provides multiple professional, modern UI themes. Create a free demo to have a quick view of what the UI looks like.", "Tools_Page_Title": "Rapid Application Development Tools", - "Tools_Page_Description": "ABP provides rapid application development tooling to increase developer productivity. ABP Suite allows you to create CRUD pages easily.", + "Tools_Page_Description": "ABP Commercial provides rapid application development tooling to increase developer productivity. ABP Suite allows you to create CRUD pages easily.", "DeveloperPrice": "Developer Price", "AdditionalDeveloperPaymentInfoSection_AdditionalDevelopers": "{0} developers", "LicenseRemainingDays": "for {0} days", @@ -669,10 +669,10 @@ "Landing_Page_ChatModule": "Chat", "Landing_Page_DocsModule": "Docs", "Landing_Page_FileManagementModule": "File Management", - "Landing_Page_CustomerStory_1": "ABP allowed SC Ventures to deliver a bank-grade multi-tenant silo-database SaaS platform in 9 months to support the accounts receivable / accounts payable supply chain financing of significant value invoices from multiple integrated anchors. The modularity of ABP made it possible for the team to deliver in record time, pass all VAPT, and deploy the containerized microservices stack via full CI/CD and pipelines into production.", - "Landing_Page_CustomerStory_2": "We see the value of using ABP to reduce the overhead of custom development projects. The team can unify the code pattern in different project streams. We see more potential in the framework for us to build new features faster than before. We trust we will be constantly seeing the value of leveraging ABP.", + "Landing_Page_CustomerStory_1": "ABP Commercial allowed SC Ventures to deliver a bank-grade multi-tenant silo-database SaaS platform in 9 months to support the accounts receivable / accounts payable supply chain financing of significant value invoices from multiple integrated anchors. The modularity of ABP made it possible for the team to deliver in record time, pass all VAPT, and deploy the containerized microservices stack via full CI/CD and pipelines into production.", + "Landing_Page_CustomerStory_2": "We see the value of using ABP Commercial to reduce the overhead of custom development projects. The team can unify the code pattern in different project streams. We see more potential in the framework for us to build new features faster than before. We trust we will be constantly seeing the value of leveraging ABP Commercial.", "Landing_Page_CustomerStory_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 had to write everything we needed on our own, we might have to spend years. One more thing we like is that the new version, or issue fixing, or improvement comes out very soon\n every other week. We don't wait too long.", - "Landing_Page_CustomerStory_4": "ABP is a fantastic product would recommend. Commercial products to market for our customers in a single configurable platform. The jump starts that the framework and tooling provide any team is worth every cent. ABP was the best fit for our needs.", + "Landing_Page_CustomerStory_4": "ABP Commercial is a fantastic product would recommend. Commercial products to market for our customers in a single configurable platform. The jump starts that the framework and tooling provide any team is worth every cent. ABP Commercial was the best fit for our needs.", "Landing_Page_AdditionalServices": "Custom or volume license, onboarding, live training & support, custom project development, porting existing projects and more...", "Landing_Page_IncludedDeveloperLicenses": "Included {0} developer licenses", "Landing_Page_SeeOnDemo": "See on Demo", @@ -720,7 +720,7 @@ "Landing_Page_DocsModuleDescription_9": "In addition to the GitHub source, allows to simply use a folder as the documentation source.", "Landing_Page_FileManagementModuleDescription_1": "Upload, download and organize files in a hierarchical folder structure.", "Landing_Page_FileManagementModuleDescription_2": "This module is used to upload, download and organize files in a hierarchical folder structure. It is also compatible with multi-tenancy and you can determine the total size limit for your tenants.", - "Landing_Page_FileManagementModuleDescription_3": "This module is based on the BLOB Storing system, so it can use different storage providers to store the file contents.", + "Landing_Page_FileManagementModuleDescription_3": "This module is based on the BLOB Storing system, so it can use different storage providers to store the file contents.", "Landing_Page_IdentityModuleDescription_1": "This module implements the User and Role system of an application;", "Landing_Page_IdentityModuleDescription_2": "Built on the Microsoft's ASP.NET Core Identity library.", "Landing_Page_IdentityModuleDescription_3": "Manage roles and users in the system. A user is allowed to have multiple roles.", @@ -736,7 +736,7 @@ "Landing_Page_PaymentModuleDescription_1": "Provides integration for different payment gateways.", "Landing_Page_PaymentModuleDescription_2": "This module provides integration for payment gateways, so you can easily get payment from your customers.", "Landing_Page_PaymentModuleDescription_3": "This module supports the following payment gateways", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "Use the same credentials for both abp.io and abp.io/support.", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "Use the same credentials for both commercial.abp.io and abp.io/support.", "WatchCrudPagesVideo": "Watch the \"Creating CRUD Pages with ABP Suite\" Video!", "WatchGeneratingFromDatabaseVideo": "Watch the \"ABP Suite: Generating CRUD Pages From Existing Database Tables\" Video!", "WatchTakeCloserLookVideo": "Watch the \"Take a closer look at the code generation: ABP Suite\" Video!", @@ -745,15 +745,15 @@ "GetConfirmationEmail": "Click here to get a verification email if you haven't got it before.", "WhichLicenseTypeYouAreInterestedIn": "Which license type you are interested in?", "DontTakeOurWordForIt": "Don't take our word for it...", - "ReadAbpCommercialUsersWantYouToKnow": "Read what ABP users want you to know", + "ReadAbpCommercialUsersWantYouToKnow": "Read what ABP Commercial users want you to know", "Testimonial_ShortDescription_1": "The modularity of ABP made it possible for the team to deliver in time.", "Testimonial_ShortDescription_2": "Build new features faster than before.", "Testimonial_ShortDescription_3": "We start from out-of-the-box features and just focus on what we really need to write.", - "Testimonial_ShortDescription_4": "ABP was the best fit for our needs.", - "OnlineReviewersOnAbpCommercial": "Online Reviews on ABP", - "SeeWhatToldAboutAbpCommercial": "See what has been told about ABP and write your thoughts if you want.", + "Testimonial_ShortDescription_4": "ABP Commercial was the best fit for our needs.", + "OnlineReviewersOnAbpCommercial": "Online Reviews on ABP Commercial", + "SeeWhatToldAboutAbpCommercial": "See what has been told about ABP Commercial and write your thoughts if you want.", "BlazoriseLicense": "Do we need to buy a Blazorise license?", - "BlazoriseLicenseExplanation": "We have an agreement between Volosoft and Megabit, with this agreement Blazorise license is bundled with ABP products therefore our customers do not need to purchase an extra Blazorise license.", + "BlazoriseLicenseExplanation": "We have an agreement between Volosoft and Megabit, with this agreement Blazorise license is bundled with ABP Commercial products therefore our customers do not need to purchase an extra Blazorise license.", "ExtendPaymentInfoSection_DeveloperPrice": "{0}x Additional Developer(s)", "ExtendPaymentInfoSection_DiscountRate": "Discount {0}%", "TotalNetPrice": "Total Net Price", @@ -812,7 +812,7 @@ "UpgradePaymentInfoSection_LicenseRenewalPrice": "License renewal", "Total": "Total", "SupportPolicyFaqTitle": "What is your support policy?", - "SupportPolicyFaqExplanation": "We do support only the active and the previous major version. We do not guarantee a patch release for the 3rd and older major versions. For example, if the active version is 7.0.0, we will release patch releases for both 6.x.x and 7.x.x. Besides, we provide support only for ABP Framework and ABP related issues. That means no support is given for the 3rd party applications, cloud services and other peripheral libraries used by ABP products. We will use commercially reasonable efforts to provide our customers with technical support during \"Volosoft Bilisim A.S\"s official business hours. On the other hand, we do not commit to a service-level agreement (SLA) response time, but we will try to respond to the technical issues as quickly as possible within our official working hours. Unless a special agreement is made with the customer, we only provide support at https://support.abp.io. We also have private email support, which is only available to Enterprise License holders.", + "SupportPolicyFaqExplanation": "We do support only the active and the previous major version. We do not guarantee a patch release for the 3rd and older major versions. For example, if the active version is 7.0.0, we will release patch releases for both 6.x.x and 7.x.x. Besides, we provide support only for ABP Framework and ABP Commercial related issues. That means no support is given for the 3rd party applications, cloud services and other peripheral libraries used by ABP products. We will use commercially reasonable efforts to provide our customers with technical support during \"Volosoft Bilisim A.S\"s official business hours. On the other hand, we do not commit to a service-level agreement (SLA) response time, but we will try to respond to the technical issues as quickly as possible within our official working hours. Unless a special agreement is made with the customer, we only provide support at https://abp.io/support/questions. We also have private email support, which is only available to Enterprise License holders.", "TotalDevelopers": "Total {0} developer(s)", "CustomPurchaseExplanation": "Tailored to your specific needs", "WhereDidYouHearAboutUs": "Where did you hear about us?", @@ -845,11 +845,11 @@ "BlazoriseSupportExplanation1": "Sign up for a new account at blazorise.com/support/register with the same email address as your abp.io account. Leave the \"License Key\" entry blank. It must be the same email address as your email account on abp.io.", "BlazoriseSupportExplanation2": "Verify your email address by checking your email box. Check your spam box if you don't see an email in your inbox!", "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", - "BlazoriseSupportExplanation4": "If you have an active ABP Paid License, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", + "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", "BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application.", "AbpLiveTrainingPackages": "ABP Live Training Packages", "Releases": "Releases", - "ReleasesDescription": "This page contains detailed information about each release. You can see all the closed pull requests for a specific release. For overall milestone developments, you can check out the brief release notes page.", + "ReleasesDescription": "This page contains detailed information about each release. You can see all the closed pull requests for a specific release. For overall milestone developments, you can check out the brief release notes page.", "ReleaseDate": "Release Date", "Labels": "Labels", "PreRelease": "Pre-release", @@ -886,8 +886,8 @@ "DevelopYourSolution_Description1": "ABP’s infrastructure makes you focus on your own business code by automating the repetitive work and providing pre-built infrastructure and application features.", "DevelopYourSolution_Description2": "In the following code block, you can see how the ABP Framework seamlessly integrates into your code and automates the repetitive tasks for you.", "DevelopYourSolution_Description3": "Even in this shortcode block, ABP does a lot of things for you.", - "DevelopYourSolution_Description4": "It provides base classes to apply conventions, like \n dependency injection. Generic \n repository services provide a convenient \n way to interact with the database. Declarative \n authorization works with a fine-tuned permission system.", - "DevelopYourSolution_Description5": "ABP completely automates \n unit of work (for database connection and transaction management), \n exception handling, \n validation\n and audit logging. It provides many more building blocks to simplify your daily development tasks and focus on your own code while creating production-ready \n applications.", + "DevelopYourSolution_Description4": "It provides base classes to apply conventions, like \n dependency injection. Generic \n repository services provide a convenient \n way to interact with the database. Declarative \n authorization works with a fine-tuned permission system.", + "DevelopYourSolution_Description5": "ABP completely automates \n unit of work (for database connection and transaction management), \n exception handling, \n validation\n and audit logging. It provides many more building blocks to simplify your daily development tasks and focus on your own code while creating production-ready \n applications.", "DevelopYourSolution_Description6": "You can imagine how much that code block can be long and complicated if you would do it all manually.", "SuiteCrudGenerationInFewSeconds": "In addition to hand coding your solution, you can create fully working advanced CRUD pages in a few minutes using the ABP Suite tooling. It generates the code into your solution, so you can fine-tune it based on your custom requirements.", "DeployAnywhere_Description1": "At the end of the day, you have a pure .NET solution. You can deploy your solution to your own server, to a cloud platform, to Kubernetes or anywhere you want. You can deploy to as many servers as you want. ABP is a deployment environment agnostic tool.", @@ -907,7 +907,7 @@ "ReleaseLogs_Pr": "Pull Request #{0} - {1}", "NoLabels": "No labels", "DoesTheSubscriptionRenewAutomatically": "Does the subscription renew automatically?", - "DoesTheSubscriptionRenewAutomaticallyExplanation": "ABP.IO platform does not have an auto-renewal billing model. Therefore your subscription will not be automatically renewed at the end of your license period. If you want to continue to have the benefits of ABP.IO platform, you need to manually renew it at the organization management page. If you have multiple organizations, click the \"Manage\" button at your expiring organization and then click the \"Extend Now\" button to renew your license. You may also want to take a look at the What Happens When My License Ends? section.", + "DoesTheSubscriptionRenewAutomaticallyExplanation": "The ABP does not have an auto-renewal billing model. Therefore your subscription will not be automatically renewed at the end of your license period. If you want to continue to have the benefits of ABP, you need to manually renew it at the organization management page. If you have multiple organizations, click the \"Manage\" button at your expiring organization and then click the \"Extend Now\" button to renew your license. You may also want to take a look at the What Happens When My License Ends? section.", "DoesTheSubscriptionRenewAutomaticallyExplanationAutoRenewal": "ABP allows you to auto-renew your license. This is an optional service. You can toggle this feature when you purchase a new license or later enable it from your organization management page. Auto-renewal toggle is in the 'Payments Method' section of the organization management page. If you want to turn off auto-renewal, visit organization management page, go to the 'Payments Method' section and uncheck the 'Automatic Renewal' checkbox. When you turn off the auto-renewal feature, you must renew your license yourself.", "ExtraQuestionCreditsFaqTitle": "Can I purchase extra support question credits?", "ExtraQuestionCreditsFaqExplanation": "Yes, you can. To buy extra question credits, send an e-mail to info@abp.io with your organization's name. Here's the price list for the extra question credits:
  • 50 questions pack $999
  • 25 questions pack $625
  • 15 questions pack $450
", @@ -945,9 +945,9 @@ "PricingExplanation2": "30 days money back guarantee — Learn more", "MoneyBackGuaranteeText": "* 30-day money-back guarantee on all licenses! 100% refund on Team, 60% refund on Business and Enterprise licenses within 30 days.", "MobileApplicationStartupTemplates": "Mobile Application Startup Templates", - "MobileApplicationStartupTemplates_Description1": "Integrated mobile application startup templates for your ABP solutions.", + "MobileApplicationStartupTemplates_Description1": "Integrated mobile application startup templates for your ABP Commercial solutions.", "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates": "Create Powerful line-of-business Applications using ABP Mobile Startup Templates", - "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates_Description1": "ABP provides two mobile application startup templates implemented with React Native and .NET MAUI. When you create your new ABP-based solution, you will also have basic startup applications connected to your backend APIs.", + "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates_Description1": "ABP Commercial provides two mobile application startup templates implemented with React Native and .NET MAUI. When you create your new ABP-based solution, you will also have basic startup applications connected to your backend APIs.", "CreatePowerfulLineOfBusinessApplicationsUsingABPMobileStartupTemplates_Description2": "The application has a pre-built authentication token cycle, multi-language support, multi-tenancy support, login, forgot password, profile management and a user management page. You can add your own business logic and customize it based on your requirements.", "TwoFrameworkOptions": "Two Framework Options", "TwoFrameworkOptions_Description": "ABP provides both React Native and .NET MAUI mobile startup templates. This way, you can choose the one that best suits your needs. Both apps reuse code at the highest rate between iOS and Android platforms.", @@ -1004,14 +1004,14 @@ "CreatingAnEmptySolution_THEPROBLEM_Description4": "How do you integrate to 3rd-party libraries?", "CreatingAnEmptySolution_THEPROBLEM_Description5": "How to set up automated tests?", "ABPSOLUTION": "ABP SOLUTION", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP provides a well-architected, layered and production-ready startup solution based on the Domain Driven Design principles. The solution also includes a pre-configured unit and integration test projects for each layer.", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP provides a well-architected, layered and production-ready startup solution based on the Domain Driven Design principles. The solution also includes a pre-configured unit and integration test projects for each layer.", "CommonLibraries": "Common Libraries", "CommonLibraries_THEPROBLEM_Description": "Which libraries should you use to implement common requirements? The software development ecosystem is highly dynamic, making it challenging to keep up with the latest tools, libraries, trends, and approaches.", "CommonLibraries_ABPSOLUTION_Description": "ABP pre-integrates popular, mature, and up-to-date libraries into the solution. You don't need to spend time integrating them or making them communicate with each other. They work properly out of the box.", "UITheme&Layout": "UI Theme & Layout", "UITheme&Layout_THEPROBLEM_Description": "When addressing UI concerns, a range of challenges surfaces. These include establishing the groundwork for a responsive, contemporary, and adaptable UI kit with a consistent appearance and a host of features like navigation menus, headers, toolbars, footers, widgets, and more.", "UITheme&Layout_THEPROBLEM_Description2": "Even if you opt for a pre-designed theme, seamlessly integrating it into your project could demand days of development. An additional hurdle lies in upgrading such themes. Frequently, the theme's HTML/CSS structure becomes intertwined with your UI code, rendering future theme changes or upgrades intricate tasks. This interweaving of code and design complicates the flexibility of making adjustments down the line.", - "UITheme&Layout_ABPSOLUTION_Description": "ABP Framework offers a distinctive theming system that liberates your UI code from theme constraints. Themes exist in isolation, packaged as NuGet or NPM packages, making theme installation or upgrades a matter of minutes. While you retain the option to develop your custom theme or integrate an existing one, ABP presents a collection of polished and contemporary themes.", + "UITheme&Layout_ABPSOLUTION_Description": "ABP Framework offers a distinctive theming system that liberates your UI code from theme constraints. Themes exist in isolation, packaged as NuGet or NPM packages, making theme installation or upgrades a matter of minutes. While you retain the option to develop your custom theme or integrate an existing one, ABP Commercial presents a collection of polished and contemporary themes.", "UITheme&Layout_ABPSOLUTION_Description2": "Additionally, there are UI component providers like Telerik and DevExpress. However, these providers primarily furnish individual components, placing the onus on you to establish your layout system. When working within ABP-based projects, you can seamlessly incorporate these libraries, similar to how you would in any other project.", "TestInfrastructure": "Test Infrastructure", "TestInfrastructure_THEPROBLEM_Description": "Establishing a robust testing environment is a time-consuming endeavor. It involves setting up dedicated test projects within your solution, carefully selecting the necessary tools, creating service and database mocks, crafting essential base classes and utility services to minimize redundant code across tests, and addressing various related tasks.", @@ -1022,7 +1022,7 @@ "KeepingYourSolutionUpToDate": "Keeping Your Solution Up to Date", "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "After you start your development, you must keep track of the new versions of the libraries you use for upgrades & patches.", "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "We regularly update all packages to the latest versions and test them before the stable release. When you update the ABP Framework, all its dependencies are upgraded to edge technology.", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update CLI command automatically discovers and upgrades all ABP-dependant NuGet and NPM packages in a solution. With ABP, it is easier to stay with the latest versions.", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update CLI command automatically discovers and upgrades all ABP-dependant NuGet and NPM packages in a solution. With ABP, it is easier to stay with the latest versions.", "DRY": "Don't Repeat Yourself!", "DRY_Description": "Creating a base solution takes significant time and requires good architectural experience. However, this is just the beginning! As you start developing, you will likely have to write lots of repetitive code; that would be great if all this could be handled automatically.", "DRY_Description2": "ABP automates and simplifies repeating code as much as possible by following the convention over configuration principle. However, it doesn't restrict you when you need to switch to manual gear. The control is always in your hands.", @@ -1063,15 +1063,15 @@ "Modularity_THEPROBLEM_Description": "Building a truly modular system is not easy! All the aspects of the system (database, entities, APIs, UI pages/components) can be split into modules, and each module can be re-usable without others. The plain ASP.NET Core doesn't provide such a modular architecture. If you need it, you should think about it from scratch.", "Modularity_ABPSOLUTION_Description": "The ABP Framework is born to be a modular application development structure. Every feature in the framework is developed to be compatible with modularity. Documentation and guides explain how to develop re-usable modules in a standard way.", "SaaSMultiTenancy": "SaaS / Multi-Tenancy", - "SaaSMultiTenancy_THEPROBLEM_Description": "Multi-Tenancy is a common way to implement SaaS systems. However, implementing a consistent multi-tenant infrastructure may become complicated.", + "SaaSMultiTenancy_THEPROBLEM_Description": "Multi-Tenancy is a common way to implement SaaS systems. However, implementing a consistent multi-tenant infrastructure may become complicated.", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP Framework provides a complete multi-tenant infrastructure and abstract complexity from your business code. Your application code will be mostly multi-tenancy aware, while the ABP Framework automatically isolates the database, cache and other details of the tenants from each other. It supports single database, per tenant database and hybrid approaches. It properly configures the libraries like Microsoft Identity and OpenIddict, which are not normally multi-tenancy compatible.", "Microservices": "Microservices", "Microservices_THEPROBLEM_Description": "Building a microservice system requires many infrastructure details: Authenticating and authorizing applications and microservices and implementing asynchronous messaging and synchronous (Rest/GRPC) communication patterns between microservices are the most fundamental issues.", - "Microservices_ABPSOLUTION_Description": "The ABP Framework provides services, guides, and samples to help you implement your microservice solution using the industry standard tools.", - "Microservices_ABPSOLUTION_Description2": "ABP commercial version even goes one step further and provides a complete startup template to kick-start your microservice solution.", + "Microservices_ABPSOLUTION_Description": "The ABP Framework provides services, guides, and samples to help you implement your microservice solution using the industry standard tools.", + "Microservices_ABPSOLUTION_Description2": "ABP Commercial even goes one step further and provides a complete startup template to kick-start your microservice solution.", "PreBuiltModules": "Pre-Built Modules", "PreBuiltModules_THEPROBLEM_Description": "All of us have similar but slightly different business requirements. However, we all should re-invent the wheel since no one's code can directly work in our solution. They are all embedded parts of a larger solution.", - "PreBuiltModules_ABPSOLUTION_Description": "ABP modules provides a lot of re-usable application modules like payment, chat, file management, audit log reporting... etc. All of these modules are easily installed into your solution and directly work. We are constantly adding more modules.", + "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial modules provides a lot of re-usable application modules like payment, chat, file management, audit log reporting... etc. All of these modules are easily installed into your solution and directly work. We are constantly adding more modules.", "PreBuiltModules_ABPSOLUTION_Description2": "All modules are designed as customizable for your business requirements. If you need complete control, you can download the full source code of any module and completely customize based on your specific business requirements.", "ABPCommunity": "ABP Community", "ABPCommunity_Description": "Finally, Being in a big community where everyone follows similar coding styles and principles and shares a common infrastructure brings power when you have troubles or need help with design decisions. Since we write code similarly, we can help each other much better. ABP is a community-backed project with more than 10K stars on GitHub.", @@ -1127,13 +1127,13 @@ "CardAlias": "Card Alias (Optional)", "AbpDoesNotSaveYourPaymentDetails_Description": "The payment data will be saved in {2} security vaults and you can remove stored data anytime. Enabling auto-renewal ensures that your ABP subscription will automatically renew prior to expiration, providing a valid credit card. Disabling auto-renewal means you will have to renew your subscription manually. To continue your project development without interruption, we suggest you enable the Auto-Renewal option.", "AddBillingInformation": "Add Billing Information", - "YouHaveNoCardsSaved": "Card not saved yet.", + "YouHaveNoCardsSaved": "You have no cards saved.", "CreateCreditCardModal_BillingDetails_Description": "You must save your billing details to be able to add your credit card.", "TaxNo": "Tax No", "CardNumber": "Card Number", "NameOnCard": "Name on Card", "BillingDetails": "Billing Details", - "ThereIsNoDeveloper": "No developer added.", + "ThereIsNoDeveloper": "There is no developer.", "CardDetails": "Debit/Credit Card Details", "YearCantBeNull": "Year field cannot be empty.", "CardHolderName": "Name on Card", @@ -1208,7 +1208,7 @@ "Application{0}": "Application {0}", "PreBuiltApplicationModulesTitle": "Pre-Built Application Modules", "RegisterDemo": "Register", - "TrainingDescription": "We are offering the following training packages for who want to get expertise on ABP.", + "TrainingDescription": "We are offering the following training packages for who want to get expertise on the ABP Framework and the ABP.", "PurchaseDevelopers": "developers", "LinkExpiredMessage": "The payment link has expired! Contact us at sales@volosoft.com to update the link or click here to navigate to the contact page." diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json index da6b73e5f8..8d68f0c60f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/es.json @@ -96,7 +96,7 @@ "TextTemplateManagement": "Gestión de plantillas de texto", "See All Modules": "Ver todos los módulos", "ABPSuite": "Suite ABP", - "AbpSuiteShortDescription": "ABP Suite es una herramienta complementaria a ABP Commercial.", + "AbpSuiteShortDescription": "ABP Suite es una herramienta complementaria a ABP.", "AbpSuiteExplanation": "Te permite crear páginas web en cuestión de minutos. Es una herramienta global de .NET Core que se puede instalar desde la línea de comandos. Puede crear una nueva solución ABP, generar páginas CRUD desde la base de datos al front-end.", "Details": "Detalles", "LeptonTheme": "Tema de Lepton", @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Está utilizando la licencia de prueba y su licencia de prueba caducará el {0}.", "TryForFree": "Prueba gratis", "TrialLicenseExpiredInfo": "¡Su período de licencia de prueba ha expirado!", - "CommercialNewsletterConfirmationMessage": "Acepto los Términos y condiciones y la Política de privacidad .", + "CommercialNewsletterConfirmationMessage": "Acepto los Términos y condiciones y la Política de privacidad .", "ContinueWithNewOrganization": "Continuar con una nueva organización", "RenewLicenseEarly": "Si renuevo mi licencia antes, ¿obtendré el año completo?", "RenewLicenseEarylExplanation": "Cuando renueve su licencia antes de la fecha de vencimiento de su licencia, se agregará 1 año a la fecha de vencimiento de su licencia. Por ejemplo, si su licencia vence el {0} -06-06 y la renueva el {0} -01-01, la fecha de vencimiento de su nueva licencia será {1} -06-06.", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json index 6e7713a84f..8a85358884 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json @@ -718,7 +718,7 @@ "Landing_Page_DocsModuleDescription_9": "GitHub-lähteen lisäksi mahdollistaa tavallisen kansion käytön dokumentaatiolähteenä.", "Landing_Page_FileManagementModuleDescription_1": "Lataa, lataa ja järjestä tiedostoja hierarkkisessa kansiorakenteessa.", "Landing_Page_FileManagementModuleDescription_2": "Tätä moduulia käytetään tiedostojen lataamiseen, lataamiseen ja järjestämiseen hierarkkisessa kansiorakenteessa. Se on myös yhteensopiva usean vuokrauksen kanssa, ja voit määrittää vuokralaisten kokonaiskokorajan.", - "Landing_Page_FileManagementModuleDescription_3": "Tämä moduuli perustuu BLOB-tallennusjärjestelmään, joten se voi käyttää eri tallennuspalveluita tiedoston sisällön tallentamiseen.", + "Landing_Page_FileManagementModuleDescription_3": "Tämä moduuli perustuu BLOB-tallennusjärjestelmään, joten se voi käyttää eri tallennuspalveluita tiedoston sisällön tallentamiseen.", "Landing_Page_IdentityModuleDescription_1": "Tämä moduuli toteuttaa sovelluksen käyttäjä- ja roolijärjestelmän;", "Landing_Page_IdentityModuleDescription_2": "Luotu käyttäen Microsoftin ASP.NET Core Identity -kirjastoa.", "Landing_Page_IdentityModuleDescription_3": "Hallinnoi rooleja ja käyttäjiä järjestelmässä. Käyttäjällä voi olla useita rooleja.", @@ -734,7 +734,7 @@ "Landing_Page_PaymentModuleDescription_1": "Tarjoaa integroinnin eri maksuyhdyskäytäville.", "Landing_Page_PaymentModuleDescription_2": "Tämä moduuli integroi maksuyhdyskäytäviä, joten saat helposti maksuja asiakkailtasi.", "Landing_Page_PaymentModuleDescription_3": "Tämä moduuli tukee seuraavia maksuyhdyskäytäviä", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "Käytä samoja kirjautumistietoja sekä commercial.abp.io- että support.abp.io.", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "Käytä samoja kirjautumistietoja sekä commercial.abp.io- että support.abp.io.", "WatchCrudPagesVideo": "Katso \"CRUD-sivujen luominen ABP Suiten avulla\" -video!", "WatchGeneratingFromDatabaseVideo": "Katso \"ABP Suite: CRUD-sivujen luominen olemassa olevista tietokantataulukoista\" -video!", "WatchTakeCloserLookVideo": "Katso \"Katso tarkemmin koodin sukupolvea: ABP Suite\" -video!", @@ -809,7 +809,7 @@ "UpgradePaymentInfoSection_LicenseRenewalPrice": "Lisenssin uusiminen", "Total": "Kaikki yhteensä", "SupportPolicyFaqTitle": "Mikä on tukipolitiikkanne?", - "SupportPolicyFaqExplanation": "Tuemme vain aktiivista ja edellistä pääversiota. Emme takaa korjausjulkaisua 3. ja vanhemmille pääversioille. Jos aktiivinen versio on esimerkiksi 7.0.0, julkaisemme korjaustiedostoja sekä versioista 6.x.x että 7.x.x. Lisäksi tarjoamme tukea vain ABP Frameworkiin ja ABP Commercialiin liittyville ongelmille. Tämä tarkoittaa, että tukea ei anneta kolmannen osapuolen sovelluksille, pilvipalveluille ja muille ABP-tuotteiden käyttämille oheiskirjastoille. Käytämme kaupallisesti kohtuullisia keinoja tarjotaksemme asiakkaillemme teknistä tukea \"Volosoft Bilisim A.S\"-yhtiön virallisina työaikoina. Toisaalta emme sitoudu palvelutasosopimuksen (SLA) mukaiseen vastausaikaan, mutta pyrimme vastaamaan teknisiin ongelmiin mahdollisimman nopeasti virallisten työaikojemme puitteissa. Ellei asiakkaan kanssa ole tehty erityistä sopimusta, tarjoamme tukea vain osoitteessa https://support.abp.io. Meillä on myös yksityinen sähköpostituki, joka on vain Enterprise-lisenssin haltijoiden käytettävissä.", + "SupportPolicyFaqExplanation": "Tuemme vain aktiivista ja edellistä pääversiota. Emme takaa korjausjulkaisua 3. ja vanhemmille pääversioille. Jos aktiivinen versio on esimerkiksi 7.0.0, julkaisemme korjaustiedostoja sekä versioista 6.x.x että 7.x.x. Lisäksi tarjoamme tukea vain ABP Frameworkiin ja ABP Commercialiin liittyville ongelmille. Tämä tarkoittaa, että tukea ei anneta kolmannen osapuolen sovelluksille, pilvipalveluille ja muille ABP-tuotteiden käyttämille oheiskirjastoille. Käytämme kaupallisesti kohtuullisia keinoja tarjotaksemme asiakkaillemme teknistä tukea \"Volosoft Bilisim A.S\"-yhtiön virallisina työaikoina. Toisaalta emme sitoudu palvelutasosopimuksen (SLA) mukaiseen vastausaikaan, mutta pyrimme vastaamaan teknisiin ongelmiin mahdollisimman nopeasti virallisten työaikojemme puitteissa. Ellei asiakkaan kanssa ole tehty erityistä sopimusta, tarjoamme tukea vain osoitteessa https://abp.io/support/questions. Meillä on myös yksityinen sähköpostituki, joka on vain Enterprise-lisenssin haltijoiden käytettävissä.", "TotalDevelopers": "Yhteensä {0} kehittäjää", "CustomPurchaseExplanation": "Räätälöity sinun tarpeidesi mukaan", "WhereDidYouHearAboutUs": "Mistä kuulit meistä?", @@ -827,7 +827,7 @@ "ExpirationDate": "Viimeinen käyttöpäivä", "SpringCampaignDiscount": "Kevään kampanja-alennus", "WhyUseAbpIoPlatform": "Miksi minun pitäisi käyttää ABP.IO-alustaa sen sijaan, että luon uuden ratkaisun tyhjästä?", - "WhyUseAbpIoPlatformFaqExplanation": "Katso kyseisestä asiakirjasta yksityiskohtainen selitys siitä, miksi ABP.IO Platformin käyttäminen on huomattavasti edullisempaa kuin kaiken tekeminen itse.", + "WhyUseAbpIoPlatformFaqExplanation": "Katso kyseisestä asiakirjasta yksityiskohtainen selitys siitä, miksi ABP.IO Platformin käyttäminen on huomattavasti edullisempaa kuin kaiken tekeminen itse.", "MultipleOrganizationInfo": "Katso kaikki organisaatiosi", "PaymentFailedInfo": "Anteeksi, maksu epäonnistui! ", "UsedPayment": "Tämä maksu on jo käytetty", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json index 9f597be12c..998d0d9129 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Vous utilisez la licence d'essai et votre licence d'essai expirera le {0}.", "TryForFree": "Essayer gratuitement", "TrialLicenseExpiredInfo": "Votre période de licence d'essai a expiré !", - "CommercialNewsletterConfirmationMessage": "J'accepte les Conditions générales et la Politique de confidentialité .", + "CommercialNewsletterConfirmationMessage": "J'accepte les Conditions générales et la Politique de confidentialité .", "ContinueWithNewOrganization": "Continuer avec une nouvelle organisation", "RenewLicenseEarly": "Si je renouvelle ma licence plus tôt, obtiendrai-je l'année complète ?", "RenewLicenseEarylExplanation": "Lorsque vous renouvelez votre licence avant la date d'expiration de votre licence, 1 an sera ajouté à la date d'expiration de votre licence. Par exemple, si votre licence expire le {0}-06-06 et que vous la renouvelez le {0}-01-01, la nouvelle date d'expiration de votre licence sera le {1}-06-06.", @@ -391,7 +391,7 @@ "OnboardingTrainingFaqTitle": "Avez-vous une formation d'accueil ABP ?", "OnboardingTrainingFaqExplanation": "Oui, nous avons des services de formation ABP pour vous aider à démarrer rapidement votre projet ABP. Vous en apprendrez plus sur l'ABP auprès d'un membre de l'équipe principale d'ABP et vous acquerrez les compétences nécessaires pour commencer votre projet ABP. Dans la formation d'intégration, nous vous expliquerons comment configurer votre environnement de développement, installer les outils requis, créer une page CRUD entièrement fonctionnelle. La formation sera en direct et l'application Zoom sera utilisée, et nous sommes ouverts à l'utilisation d'autres plateformes de réunion en ligne. La langue de la formation sera l'anglais. Vous pouvez également poser vos questions sur l'ABP pendant les séances. Une heure et une date convenables seront prévues pour les deux parties. Pour obtenir plus d'informations, contactez-nous à info@abp.io.", "SupportPolicyFaqTitle": "Quelle est votre politique de soutien ?", - "SupportPolicyFaqExplanation": "Nous ne prenons en charge que la version active et la version majeure précédente. Nous ne garantissons pas la publication d'un correctif pour la troisième version majeure et la version majeure antérieure. Par exemple, si la version active est 7.0.0, nous publierons des correctifs pour les versions 6.x.x et 7.x.x. En outre, nous n'assurons le support que pour les problèmes liés à ABP Framework et ABP Commercial. Cela signifie qu'aucun support n'est fourni pour les applications tierces, les services cloud et les autres bibliothèques périphériques utilisées par les produits ABP. Nous ferons des efforts commercialement raisonnables pour fournir à nos clients une assistance technique pendant les heures de bureau officielles de \"Volosoft Bilisim A.S\". D'autre part, nous ne nous engageons pas à respecter un accord de niveau de service (SLA) sur le temps de réponse, mais nous essaierons de répondre aux problèmes techniques aussi rapidement que possible pendant nos heures de travail officielles. Sauf accord spécial avec le client, nous ne fournissons une assistance qu'à l'adresse https://support.abp.io. Nous disposons également d'une assistance privée par courrier électronique, qui n'est accessible qu'aux détenteurs d'une licence d'entreprise.", + "SupportPolicyFaqExplanation": "Nous ne prenons en charge que la version active et la version majeure précédente. Nous ne garantissons pas la publication d'un correctif pour la troisième version majeure et la version majeure antérieure. Par exemple, si la version active est 7.0.0, nous publierons des correctifs pour les versions 6.x.x et 7.x.x. En outre, nous n'assurons le support que pour les problèmes liés à ABP Framework et ABP Commercial. Cela signifie qu'aucun support n'est fourni pour les applications tierces, les services cloud et les autres bibliothèques périphériques utilisées par les produits ABP. Nous ferons des efforts commercialement raisonnables pour fournir à nos clients une assistance technique pendant les heures de bureau officielles de \"Volosoft Bilisim A.S\". D'autre part, nous ne nous engageons pas à respecter un accord de niveau de service (SLA) sur le temps de réponse, mais nous essaierons de répondre aux problèmes techniques aussi rapidement que possible pendant nos heures de travail officielles. Sauf accord spécial avec le client, nous ne fournissons une assistance qu'à l'adresse https://abp.io/support/questions. Nous disposons également d'une assistance privée par courrier électronique, qui n'est accessible qu'aux détenteurs d'une licence d'entreprise.", "DowngradeLicensePlan": "Puis-je passer à un plan de licence inférieur à l'avenir ?", "DowngradeLicensePlanExplanation": "Vous ne pouvez pas rétrograder votre plan de licence existant. Mais vous pouvez acheter un nouveau plan de licence inférieur et continuer votre développement sur la nouvelle licence. Après avoir acheté une licence inférieure, il vous suffit de vous connecter à votre nouveau plan de licence via la commande CLI d'ABP : ` abp login -o `.", "LicenseTransfer": "Une licence peut-elle être transférée d'un développeur à un autre ?", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json index 8ed7a3dd2a..3adb4d3108 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json @@ -382,13 +382,13 @@ "TrialLicenseExpireMessage": "आप परीक्षण लाइसेंस का उपयोग कर रहे हैं और आपका परीक्षण लाइसेंस {0} को समाप्त हो जाएगा।", "TryForFree": "मुफ्त में आजमाइये", "TrialLicenseExpiredInfo": "आपके परीक्षण लाइसेंस की अवधि समाप्त हो गई है!", - "CommercialNewsletterConfirmationMessage": "मैं नियम और शर्तों और गोपनीयता नीति से सहमत हूं .", + "CommercialNewsletterConfirmationMessage": "मैं नियम और शर्तों और गोपनीयता नीति से सहमत हूं .", "discountForYears": "{1}वर्ष(वर्षों) के लिए {0}% छूट", "BlackFridayDiscount": "ब्लैक फ्राइडे छूट", "OnboardingTrainingFaqTitle": "क्या आपके पास एबीपी ऑनबोर्डिंग प्रशिक्षण है?", "OnboardingTrainingFaqExplanation": "हां, आपके एबीपी प्रोजेक्ट को तेजी से शुरू करने में आपकी मदद करने के लिए हमारे पास एबीपी प्रशिक्षण सेवाएं हैं। आप ABP कोर टीम के सदस्य से ABP के बारे में जानेंगे और आपको अपना ABP प्रोजेक्ट शुरू करने का कौशल प्राप्त होगा। ऑनबोर्डिंग प्रशिक्षण में, हम समझाएंगे कि अपने विकास के माहौल को कैसे स्थापित करें, आवश्यक उपकरण कैसे स्थापित करें, पूरी तरह कार्यात्मक CRUD पेज कैसे बनाएं। प्रशिक्षण लाइव होगा और जूम एप्लिकेशन का उपयोग किया जाएगा, और हम अन्य ऑनलाइन मीटिंग प्लेटफॉर्म का उपयोग करने के लिए तैयार हैं। प्रशिक्षण की भाषा अंग्रेजी होगी। आप सत्रों के दौरान ABP के बारे में अपने प्रश्न भी पूछ सकते हैं। दोनों पक्षों के लिए एक सुविधाजनक समय और तारीख की योजना बनाई जाएगी। अधिक जानकारी प्राप्त करने के लिए, info@abp.io पर हमसे संपर्क करें।", "SupportPolicyFaqTitle": "आपकी समर्थन नीति क्या है?", - "SupportPolicyFaqExplanation": "हम केवल सक्रिय और पिछले प्रमुख संस्करण का समर्थन करते हैं। हम तीसरे और पुराने प्रमुख संस्करणों के लिए पैच रिलीज़ की गारंटी नहीं देते हैं। उदाहरण के लिए, यदि सक्रिय संस्करण 7.0.0 है, तो हम 6.x.x और 7.x.x दोनों के लिए पैच रिलीज़ जारी करेंगे। इसके अलावा, हम केवल ABP फ्रेमवर्क और ABP कमर्शियल संबंधित मुद्दों के लिए समर्थन प्रदान करते हैं। इसका मतलब है कि तीसरे पक्ष के अनुप्रयोगों, क्लाउड सेवाओं और एबीपी उत्पादों द्वारा उपयोग किए जाने वाले अन्य परिधीय पुस्तकालयों के लिए कोई समर्थन नहीं दिया गया है। हम अपने ग्राहकों को \"Volosoft Bilisim A.S\" के आधिकारिक व्यावसायिक घंटों के दौरान तकनीकी सहायता प्रदान करने के लिए व्यावसायिक रूप से उचित प्रयासों का उपयोग करेंगे। दूसरी ओर, हम सर्विस-लेवल एग्रीमेंट (SLA) प्रतिक्रिया समय के लिए प्रतिबद्ध नहीं हैं, लेकिन हम अपने आधिकारिक कामकाजी घंटों के भीतर जितनी जल्दी हो सके तकनीकी मुद्दों पर प्रतिक्रिया देने का प्रयास करेंगे। जब तक ग्राहक के साथ कोई विशेष समझौता नहीं किया जाता है, हम केवल https://support.abp.io पर सहायता प्रदान करते हैं। हमारे पास निजी ईमेल समर्थन भी है, जो केवल एंटरप्राइज़ लाइसेंस धारकों के लिए उपलब्ध है।", + "SupportPolicyFaqExplanation": "हम केवल सक्रिय और पिछले प्रमुख संस्करण का समर्थन करते हैं। हम तीसरे और पुराने प्रमुख संस्करणों के लिए पैच रिलीज़ की गारंटी नहीं देते हैं। उदाहरण के लिए, यदि सक्रिय संस्करण 7.0.0 है, तो हम 6.x.x और 7.x.x दोनों के लिए पैच रिलीज़ जारी करेंगे। इसके अलावा, हम केवल ABP फ्रेमवर्क और ABP कमर्शियल संबंधित मुद्दों के लिए समर्थन प्रदान करते हैं। इसका मतलब है कि तीसरे पक्ष के अनुप्रयोगों, क्लाउड सेवाओं और एबीपी उत्पादों द्वारा उपयोग किए जाने वाले अन्य परिधीय पुस्तकालयों के लिए कोई समर्थन नहीं दिया गया है। हम अपने ग्राहकों को \"Volosoft Bilisim A.S\" के आधिकारिक व्यावसायिक घंटों के दौरान तकनीकी सहायता प्रदान करने के लिए व्यावसायिक रूप से उचित प्रयासों का उपयोग करेंगे। दूसरी ओर, हम सर्विस-लेवल एग्रीमेंट (SLA) प्रतिक्रिया समय के लिए प्रतिबद्ध नहीं हैं, लेकिन हम अपने आधिकारिक कामकाजी घंटों के भीतर जितनी जल्दी हो सके तकनीकी मुद्दों पर प्रतिक्रिया देने का प्रयास करेंगे। जब तक ग्राहक के साथ कोई विशेष समझौता नहीं किया जाता है, हम केवल https://abp.io/support/questions पर सहायता प्रदान करते हैं। हमारे पास निजी ईमेल समर्थन भी है, जो केवल एंटरप्राइज़ लाइसेंस धारकों के लिए उपलब्ध है।", "DowngradeLicensePlan": "क्या मैं भविष्य में कम लाइसेंस योजना में डाउनग्रेड कर सकता हूँ?", "DowngradeLicensePlanExplanation": "आप अपनी मौजूदा लाइसेंस योजना को डाउनग्रेड नहीं कर सकते। लेकिन आप नया लोअर लाइसेंस प्लान खरीद सकते हैं और नए लाइसेंस पर अपना विकास जारी रख सकते हैं। आपके द्वारा कम लाइसेंस खरीदने के बाद, आपको एबीपी सीएलआई कमांड के माध्यम से अपनी नई लाइसेंस योजना में प्रवेश करने की आवश्यकता है: `एबीपी लॉगिन <उपयोगकर्ता नाम> -ओ <संगठन>`।", "LicenseTransfer": "क्या लाइसेंस एक डेवलपर से दूसरे डेवलपर को ट्रांसफर किया जा सकता है?", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json index 7d268d1d87..d7865bf455 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hr.json @@ -541,7 +541,7 @@ "Pricing_Page_Testimonial_2": "Vidimo vrijednost korištenja ABP Commerciala za smanjenje režijskih troškova prilagođenih razvojnih projekata. Tim je u mogućnosti objediniti uzorak koda u različitim tokovima projekta. Vidimo više potencijala u okviru za izgradnju novih značajki brže nego prije. Vjerujemo da ćemo stalno uviđati vrijednost iskorištavanja ABP Commerciala.", "Pricing_Page_Testimonial_3": "Volimo ABP. Ne moramo sve pisati ispočetka. Počinjemo od značajki izvan okvira i fokusiramo se samo na ono što stvarno trebamo napisati. Također, ABP je dobro projektiran i kod je visoke kvalitete s manje grešaka. Kad bismo morali sami napisati sve što nam treba, možda bismo morali potrošiti godine. Još jedna stvar koja nam se sviđa je što nova verzija, popravak problema ili poboljšanje izlazi vrlo brzo svaki drugi tjedan. Ne čekamo predugo.", "Pricing_Page_Testimonial_4": "ABP Commercial je fantastičan proizvod koji bih preporučio. Komercijalni proizvodi za tržište za naše kupce na jednoj platformi koja se može konfigurirati. Skok počinje da okvir i alati pružaju bilo koji tim vrijedan svakog centa. ABP Commercial najbolje je odgovarao našim potrebama.", - "Pricing_Page_Testimonial_5": "ABP Framework nije samo okvir, već je i vodič za razvoj/upravljanje projektom jer pruža DDD, GenericRepository, DI, Microservice i obuku o modularnosti. Čak i ako nećete koristiti sam framework, možete se razvijati s docs.abp.io koji je dobro i profesionalno pripremljen (OpenIddict, Redis, Quartz itd.). Budući da su mnoge stvari unaprijed izgrađene, značajno skraćuje vrijeme razvoja projekta (kao što je stranica za prijavu, rukovanje iznimkama, filtriranje podataka, sijanje, revizijsko bilježenje, lokalizacija, automatski API kontroler itd.). Kao primjer iz naše aplikacije, koristio sam Local Event Bus za kontrolu zaliha. Dakle, mogu upravljati kretanjem narudžbi pisanjem rukovatelja zalihama. Divno je ne gubiti vrijeme za CreationTime, CreatorId. Pune se automatski.", + "Pricing_Page_Testimonial_5": "ABP Framework nije samo okvir, već je i vodič za razvoj/upravljanje projektom jer pruža DDD, GenericRepository, DI, Microservice i obuku o modularnosti. Čak i ako nećete koristiti sam framework, možete se razvijati s abp.io koji je dobro i profesionalno pripremljen (OpenIddict, Redis, Quartz itd.). Budući da su mnoge stvari unaprijed izgrađene, značajno skraćuje vrijeme razvoja projekta (kao što je stranica za prijavu, rukovanje iznimkama, filtriranje podataka, sijanje, revizijsko bilježenje, lokalizacija, automatski API kontroler itd.). Kao primjer iz naše aplikacije, koristio sam Local Event Bus za kontrolu zaliha. Dakle, mogu upravljati kretanjem narudžbi pisanjem rukovatelja zalihama. Divno je ne gubiti vrijeme za CreationTime, CreatorId. Pune se automatski.", "Pricing_Page_Testimonial_6": "ABP Framework je dobar okvir, ali mu treba vremena da razumije različite slojeve, klase i biblioteke koje koristi (osobito ABP). Proveo sam puno vremena čitajući bazu koda, ali ABP Commercial uštedio nam je vrijeme u stvaranju posebnih entiteta projekta (AR) i repozitorija povezanog sa svakim od njih. Svidio mi se i pristup korišten u ABP-u koji je vrlo zreo; znamo da se temelji na DDD i monolitu.", "Pricing_Page_Testimonial_7": "Kao startup, moramo brzo ponavljati i potrošiti minimalno vremena na standardne i sporedne značajke. \n Naši inženjeri variraju od vrlo iskusnih do mlađih inženjera, a bilo nam je potrebno zajedničko razumijevanje i način dijeljenja tehničkog i domenskog znanja, ABP nam je to omogućio zahvaljujući njihovim sjajnim vodičima i dokumentaciji. \n Postoje stvari o kojima se ne moramo brinuti budući da rade izvan kutije s ABP-om. \n ABP pomogao nam je pojednostaviti brzu izradu prototipova i razvoj, manje od 4 tjedna od početka značajke do proizvodnje. Sa svim svojim premium značajkama uključenim u licencu, ABP nam je dao "Startup in a Box" na strani softverskog inženjeringa.", "Pricing_Page_Testimonial_8": "ABP komercijalu bih preporučio svima onima koji žele proširiti ponudu proizvoda dostupnih svojim kupcima. Fantastično je kada je potrebno koristiti distribuirano poslovno okruženje (Angular, WPF, Win&Linux). Osim njihovih proizvoda, volimo i njihovu podršku, koja nam posao čini bržim i lakšim. Već znamo da smo pronašli odličnog partnera za budućnost koji će nas podržati u širenju poslovanja.", @@ -720,7 +720,7 @@ "Landing_Page_DocsModuleDescription_9": "Osim izvora GitHub, omogućuje jednostavno korištenje mape kao izvora dokumentacije.", "Landing_Page_FileManagementModuleDescription_1": "Prijenos, preuzimanje i organiziranje datoteka u hijerarhijsku strukturu mapa.", "Landing_Page_FileManagementModuleDescription_2": "Ovaj se modul koristi za učitavanje, preuzimanje i organiziranje datoteka u hijerarhijskoj strukturi mapa. Također je kompatibilan s višestrukim zakupom i možete odrediti ograničenje ukupne veličine za svoje stanare.", - "Landing_Page_FileManagementModuleDescription_3": "Ovaj se modul temelji na BLOB sustavu pohrane , tako da može koristiti različite pružatelje pohrane za pohranjivanje sadržaja datoteke.", + "Landing_Page_FileManagementModuleDescription_3": "Ovaj se modul temelji na BLOB sustavu pohrane , tako da može koristiti različite pružatelje pohrane za pohranjivanje sadržaja datoteke.", "Landing_Page_IdentityModuleDescription_1": "Ovaj modul implementira sustav korisnika i uloga aplikacije;", "Landing_Page_IdentityModuleDescription_2": "Izgrađen na Microsoftovoj biblioteci ASP.NET Core Identity .", "Landing_Page_IdentityModuleDescription_3": "Upravljanje ulogama i korisnicima u sustavu. Korisnik može imati više uloga .", @@ -736,7 +736,7 @@ "Landing_Page_PaymentModuleDescription_1": "Omogućuje integraciju za različite pristupnike plaćanja.", "Landing_Page_PaymentModuleDescription_2": "Ovaj modul pruža integraciju za pristupnike plaćanja, tako da možete jednostavno dobiti plaćanje od svojih kupaca.", "Landing_Page_PaymentModuleDescription_3": "Ovaj modul podržava sljedeće pristupnike plaćanja", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "Koristite iste vjerodajnice za commercial.abp.io i support.abp.io .", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "Koristite iste vjerodajnice za commercial.abp.io i support.abp.io .", "WatchCrudPagesVideo": "Pogledajte video "Izrada CRUD stranica s ABP Suiteom"!", "WatchGeneratingFromDatabaseVideo": "Pogledajte video "ABP Suite: Generiranje CRUD stranica iz postojećih tablica baze podataka"!", "WatchTakeCloserLookVideo": "Pogledajte video "Pobliže pogledajte generiranje koda: ABP Suite"!", @@ -812,7 +812,7 @@ "UpgradePaymentInfoSection_LicenseRenewalPrice": "Obnova licence", "Total": "Ukupno", "SupportPolicyFaqTitle": "Kakva je vaša politika podrške?", - "SupportPolicyFaqExplanation": "Podržavamo samo aktivnu i prethodnu glavnu verziju. Ne jamčimo izdavanje zakrpe za 3. i starije glavne verzije. Na primjer, ako je aktivna verzija 7.0.0, objavit ćemo izdanja zakrpa i za 6.xx i za 7.xx. Osim toga, pružamo podršku samo za ABP Framework i ABP Commercial pitanja. To znači da se ne daje podrška za aplikacije trećih strana, usluge u oblaku i druge periferne biblioteke koje koriste ABP proizvodi. Uložit ćemo komercijalno razumne napore da svojim klijentima pružimo tehničku podršku tijekom službenog radnog vremena "Volosoft Bilisim AS". S druge strane, ne obvezujemo se na vrijeme odgovora ugovora o razini usluge (SLA), ali ćemo pokušati odgovoriti na tehničke probleme što je brže moguće unutar našeg službenog radnog vremena. Osim ako nije sklopljen poseban ugovor s korisnikom, podršku pružamo samo na https://support.abp.io. Imamo i privatnu podršku e-poštom, koja je dostupna samo nositeljima Enterprise License.", + "SupportPolicyFaqExplanation": "Podržavamo samo aktivnu i prethodnu glavnu verziju. Ne jamčimo izdavanje zakrpe za 3. i starije glavne verzije. Na primjer, ako je aktivna verzija 7.0.0, objavit ćemo izdanja zakrpa i za 6.xx i za 7.xx. Osim toga, pružamo podršku samo za ABP Framework i ABP Commercial pitanja. To znači da se ne daje podrška za aplikacije trećih strana, usluge u oblaku i druge periferne biblioteke koje koriste ABP proizvodi. Uložit ćemo komercijalno razumne napore da svojim klijentima pružimo tehničku podršku tijekom službenog radnog vremena "Volosoft Bilisim AS". S druge strane, ne obvezujemo se na vrijeme odgovora ugovora o razini usluge (SLA), ali ćemo pokušati odgovoriti na tehničke probleme što je brže moguće unutar našeg službenog radnog vremena. Osim ako nije sklopljen poseban ugovor s korisnikom, podršku pružamo samo na https://abp.io/support/questions. Imamo i privatnu podršku e-poštom, koja je dostupna samo nositeljima Enterprise License.", "TotalDevelopers": "Ukupno {0} programera(a)", "CustomPurchaseExplanation": "Prilagođeno vašim specifičnim potrebama", "WhereDidYouHearAboutUs": "Gdje ste čuli za nas?", @@ -886,8 +886,8 @@ "DevelopYourSolution_Description1": "ABP-ova infrastruktura tjera vas da se usredotočite na vlastiti poslovni kod automatizirajući rad koji se ponavlja i pruža unaprijed izgrađenu infrastrukturu i značajke aplikacije.", "DevelopYourSolution_Description2": "U sljedećem bloku koda možete vidjeti kako se ABP Framework neprimjetno integrira u vaš kod i automatizira zadatke koji se ponavljaju umjesto vas.", "DevelopYourSolution_Description3": "Čak iu ovom bloku kratkog koda, ABP radi puno stvari za vas.", - "DevelopYourSolution_Description4": "Omogućuje osnovne klase za primjenu konvencija, poput \n ubrizgavanja ovisnosti . Generičke usluge repozitorija \n pružaju prikladan \n način interakcije s bazom podataka. Deklarativna autorizacija \n radi s fino podešenim sustavom dozvola.", - "DevelopYourSolution_Description5": "ABP potpuno automatizira radnu jedinicu \n (za povezivanje s bazom podataka i upravljanje transakcijama), rukovanje iznimkama \n , provjeru valjanosti \n \n i revizijsko bilježenje . Omogućuje mnogo više sastavnih dijelova za pojednostavljenje vaših svakodnevnih razvojnih zadataka i fokusiranje na vlastiti kod dok stvarate \n aplikacije spremne za proizvodnju.", + "DevelopYourSolution_Description4": "Omogućuje osnovne klase za primjenu konvencija, poput \n ubrizgavanja ovisnosti . Generičke usluge repozitorija \n pružaju prikladan \n način interakcije s bazom podataka. Deklarativna autorizacija \n radi s fino podešenim sustavom dozvola.", + "DevelopYourSolution_Description5": "ABP potpuno automatizira radnu jedinicu \n (za povezivanje s bazom podataka i upravljanje transakcijama), rukovanje iznimkama \n , provjeru valjanosti \n \n i revizijsko bilježenje . Omogućuje mnogo više sastavnih dijelova za pojednostavljenje vaših svakodnevnih razvojnih zadataka i fokusiranje na vlastiti kod dok stvarate \n aplikacije spremne za proizvodnju.", "DevelopYourSolution_Description6": "Možete zamisliti koliko taj blok koda može biti dug i kompliciran kada biste sve to radili ručno.", "SuiteCrudGenerationInFewSeconds": "Osim ručnog kodiranja vašeg rješenja, možete izraditi potpuno radne napredne CRUD stranice u nekoliko minuta pomoću alata ABP Suite. Generira kod u vašem rješenju, tako da ga možete fino prilagoditi na temelju svojih prilagođenih zahtjeva.", "DeployAnywhere_Description1": "Na kraju dana, imate čisto .NET rješenje. Svoje rješenje možete implementirati na vlastiti poslužitelj, na platformu u oblaku, na Kubernetes ili gdje god želite. Možete implementirati na onoliko poslužitelja koliko želite. ABP je agnostički alat za razvojnu okolinu.", @@ -1002,7 +1002,7 @@ "CreatingAnEmptySolution_THEPROBLEM_Description4": "Kako se integrirate u biblioteku i sustave trećih strana?", "CreatingAnEmptySolution_THEPROBLEM_Description5": "Kako postaviti automatizirane testove?", "ABPSOLUTION": "ABP RJEŠENJE", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP pruža dobro projektirano, slojevito i za proizvodnju spremno startup rješenje temeljeno na načelima Domain Driven Design . Rješenje također uključuje unaprijed konfiguriranu jedinicu i testne projekte integracije za svaki sloj.", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP pruža dobro projektirano, slojevito i za proizvodnju spremno startup rješenje temeljeno na načelima Domain Driven Design . Rješenje također uključuje unaprijed konfiguriranu jedinicu i testne projekte integracije za svaki sloj.", "CommonLibraries": "Zajedničke knjižnice", "CommonLibraries_THEPROBLEM_Description": "Koje bi knjižnice trebali koristiti za implementaciju uobičajenih zahtjeva? Ekosustav razvoja softvera vrlo je dinamičan, što ga čini izazovnim držati korak s najnovijim alatima, bibliotekama, trendovima i pristupima.", "CommonLibraries_ABPSOLUTION_Description": "ABP unaprijed integrira popularne, zrele i ažurirane biblioteke u rješenje. Ne morate trošiti vrijeme na njihovu integraciju ili natjeravanje da međusobno komuniciraju. Rade ispravno iz kutije.", @@ -1060,12 +1060,12 @@ "Modularity_THEPROBLEM_Description": "Izgradnja istinski modularnog sustava nije laka! Svi aspekti sustava (baza podataka, entiteti, API-ji, UI stranice/komponente) mogu se podijeliti u module, a svaki se modul može ponovno koristiti bez drugih. Obični ASP.NET Core ne pruža takvu modularnu arhitekturu. Ako vam treba, razmislite o tome od nule.", "Modularity_ABPSOLUTION_Description": "ABP Framework je rođen da bude modularna struktura za razvoj aplikacija. Svaka značajka u okviru razvijena je da bude kompatibilna s modularnošću. Dokumentacija i vodiči objašnjavaju kako razviti module koji se mogu ponovno koristiti na standardni način.", "SaaSMultiTenancy": "SaaS / Multi-Tenancy", - "SaaSMultiTenancy_THEPROBLEM_Description": "Multi-Tenancy je uobičajeni način implementacije SaaS sustava. Međutim, implementacija dosljedne infrastrukture s više stanara može postati komplicirana.", + "SaaSMultiTenancy_THEPROBLEM_Description": "Multi-Tenancy je uobičajeni način implementacije SaaS sustava. Međutim, implementacija dosljedne infrastrukture s više stanara može postati komplicirana.", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP Framework pruža kompletnu infrastrukturu s više korisnika i apstraktnu složenost iz vašeg poslovnog koda. Vaš aplikacijski kod će uglavnom biti svjestan više zakupaca, dok ABP Framework automatski izolira bazu podataka, predmemoriju i druge detalje zakupaca jedne od drugih. Podržava jedinstvenu bazu podataka, bazu podataka po stanarima i hibridne pristupe. Ispravno konfigurira biblioteke kao što su Microsoft Identity i OpenIddict, koje obično nisu kompatibilne s više korisnika.", "Microservices": "Mikroservisi", "Microservices_THEPROBLEM_Description": "Izgradnja sustava mikroservisa zahtijeva mnoge infrastrukturne detalje: autentifikacija i autorizacija aplikacija i mikroservisa te implementacija asinkronog slanja poruka i sinkronih (Rest/GRPC) komunikacijskih obrazaca između mikroservisa najosnovnija su pitanja.", - "Microservices_ABPSOLUTION_Description": "ABP Framework pruža usluge, vodiče i uzorke koji će vam pomoći implementirati vaše mikrouslužno rješenje pomoću standardnih alata za industriju.", - "Microservices_ABPSOLUTION_Description2": "ABP Commercial čak ide korak dalje i pruža potpuni predložak za pokretanje za pokretanje vašeg mikroservisnog rješenja.", + "Microservices_ABPSOLUTION_Description": "ABP Framework pruža usluge, vodiče i uzorke koji će vam pomoći implementirati vaše mikrouslužno rješenje pomoću standardnih alata za industriju.", + "Microservices_ABPSOLUTION_Description2": "ABP Commercial čak ide korak dalje i pruža potpuni predložak za pokretanje za pokretanje vašeg mikroservisnog rješenja.", "PreBuiltModules": "Unaprijed izgrađeni moduli", "PreBuiltModules_THEPROBLEM_Description": "Svi mi imamo slične ali pomalo različite poslovne zahtjeve. Međutim, svi bismo trebali ponovno izmisliti kotač jer ničiji kod ne može izravno funkcionirati u našem rješenju. Svi su oni ugrađeni dijelovi većeg rješenja.", "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial modules pruža mnoštvo višekratno upotrebljivih aplikacijskih modula kao što su plaćanje, chat, upravljanje datotekama, izvješćivanje dnevnika revizije... itd. Svi ovi moduli lako se instaliraju u vaše rješenje i izravno rade. Stalno dodajemo nove module.", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json index 7ac67635df..5cbe578021 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hu.json @@ -718,7 +718,7 @@ "Landing_Page_DocsModuleDescription_9": "A GitHub-forrás mellett lehetővé teszi egy mappa egyszerű használatát dokumentációs forrásként.", "Landing_Page_FileManagementModuleDescription_1": "Fájlok feltöltése, letöltése és rendezése hierarchikus mappastruktúrában.", "Landing_Page_FileManagementModuleDescription_2": "Ez a modul fájlok feltöltésére, letöltésére és hierarchikus mappastruktúrába rendezésére szolgál. Több bérléssel is kompatibilis, és meghatározhatja bérlői teljes méretkorlátját.", - "Landing_Page_FileManagementModuleDescription_3": "Ez a modul a BLOB Storing rendszeren alapul, így különböző tárolószolgáltatókat használhat a fájltartalom tárolására.", + "Landing_Page_FileManagementModuleDescription_3": "Ez a modul a BLOB Storing rendszeren alapul, így különböző tárolószolgáltatókat használhat a fájltartalom tárolására.", "Landing_Page_IdentityModuleDescription_1": "Ez a modul egy alkalmazás Felhasználó és szerepkör rendszerét valósítja meg;", "Landing_Page_IdentityModuleDescription_2": "A Microsoft ASP.NET Core Identity könyvtárára épül.", "Landing_Page_IdentityModuleDescription_3": "Szerepkörök és felhasználók kezelése a rendszerben. Egy felhasználónak több szerepe is lehet.", @@ -734,7 +734,7 @@ "Landing_Page_PaymentModuleDescription_1": "Integrációt biztosít a különböző fizetési átjárókhoz.", "Landing_Page_PaymentModuleDescription_2": "Ez a modul integrációt biztosít a fizetési átjárókhoz, így könnyen kaphat fizetést ügyfeleitől.", "Landing_Page_PaymentModuleDescription_3": "Ez a modul a következő fizetési átjárókat támogatja", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "Ugyanazokat a hitelesítési adatokat használja a commercial.abp.io és a support.abp.io fájlokhoz .", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "Ugyanazokat a hitelesítési adatokat használja a commercial.abp.io és a support.abp.io fájlokhoz .", "WatchCrudPagesVideo": "Nézze meg a \"CRUD oldalak létrehozása az ABP Suite segítségével\" videót!", "WatchGeneratingFromDatabaseVideo": "Nézze meg az \"ABP Suite: CRUD-oldalak generálása meglévő adatbázistáblákból\" videót!", "WatchTakeCloserLookVideo": "Tekintse meg a „Nézze meg közelebbről a kódgenerálást: ABP Suite” videót!", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json index 12bfd1de8c..6e0572a790 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/is.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Þú ert að nota prufuleyfið og prufuleyfið rennur út {0}.", "TryForFree": "Prófaðu ókeypis", "TrialLicenseExpiredInfo": "Prófunartímabil þitt er útrunnið!", - "CommercialNewsletterConfirmationMessage": "Ég samþykki skilmálana og persónuverndarstefnuna .", + "CommercialNewsletterConfirmationMessage": "Ég samþykki skilmálana og persónuverndarstefnuna .", "BlackFridayDiscount": "Black Friday afsláttur", "MultipleOrganizationInfo": "Sjá öll samtök þín", "PaymentFailedInfo": "Því miður, greiðsla mistókst! ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json index 944be84b00..481a1a416a 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json @@ -382,13 +382,13 @@ "TrialLicenseExpireMessage": "Stai utilizzando la licenza di prova e la tua licenza di prova scadrà il {0}.", "TryForFree": "Prova gratis", "TrialLicenseExpiredInfo": "Il periodo della tua licenza di prova è scaduto!", - "CommercialNewsletterConfirmationMessage": "Accetto i Termini e condizioni e la Informativa sulla privacy .", + "CommercialNewsletterConfirmationMessage": "Accetto i Termini e condizioni e la Informativa sulla privacy .", "discountForYears": "{0}% di sconto per {1} anno/i", "BlackFridayDiscount": "Sconto Black Friday", "OnboardingTrainingFaqTitle": "Avete un corso di formazione ABP per l'onboarding?", "OnboardingTrainingFaqExplanation": "Sì, abbiamo i servizi di formazione ABP per aiutarti a far partire rapidamente il tuo progetto ABP. Imparerai a conoscere ABP da un membro del core team ABP e otterrai le competenze per iniziare il tuo progetto ABP. Nella formazione onboarding, spiegheremo come configurare il tuo ambiente di sviluppo, installare gli strumenti richiesti, creare una pagina CRUD completamente funzionante. La formazione sarà in diretta e verrà utilizzata l'applicazione Zoom e siamo aperti all'utilizzo di altre piattaforme di riunioni online. La lingua della formazione sarà l'inglese. Puoi anche porre le tue domande sull'ABP durante le sessioni. Verrà pianificata una data e un orario convenienti per entrambe le parti. Per ulteriori informazioni, contattaci all'indirizzo info@abp.io.", "SupportPolicyFaqTitle": "Qual è la vostra politica di assistenza?", - "SupportPolicyFaqExplanation": "Supportiamo solo la versione principale attiva e quella precedente. Non garantiamo il rilascio di patch per la terza e la precedente versione principale. Ad esempio, se la versione attiva è la 7.0.0, rilasceremo patch sia per la 6.x.x che per la 7.x.x. Inoltre, forniamo supporto solo per i problemi relativi ad ABP Framework e ABP Commercial. Ciò significa che non viene fornito alcun supporto per le applicazioni di terze parti, i servizi cloud e altre librerie periferiche utilizzate dai prodotti ABP. Faremo tutto il possibile per fornire ai nostri clienti assistenza tecnica durante gli orari di lavoro ufficiali di Volosoft Bilisim A.S.. D'altra parte, non ci impegniamo a rispettare i tempi di risposta di un accordo sul livello di servizio (SLA), ma cercheremo di rispondere ai problemi tecnici il più rapidamente possibile entro i nostri orari di lavoro ufficiali. A meno che non venga stipulato un accordo speciale con il cliente, forniamo assistenza solo all'indirizzo https://support.abp.io. Disponiamo anche di un supporto privato via e-mail, disponibile solo per i titolari di licenza Enterprise.", + "SupportPolicyFaqExplanation": "Supportiamo solo la versione principale attiva e quella precedente. Non garantiamo il rilascio di patch per la terza e la precedente versione principale. Ad esempio, se la versione attiva è la 7.0.0, rilasceremo patch sia per la 6.x.x che per la 7.x.x. Inoltre, forniamo supporto solo per i problemi relativi ad ABP Framework e ABP Commercial. Ciò significa che non viene fornito alcun supporto per le applicazioni di terze parti, i servizi cloud e altre librerie periferiche utilizzate dai prodotti ABP. Faremo tutto il possibile per fornire ai nostri clienti assistenza tecnica durante gli orari di lavoro ufficiali di Volosoft Bilisim A.S.. D'altra parte, non ci impegniamo a rispettare i tempi di risposta di un accordo sul livello di servizio (SLA), ma cercheremo di rispondere ai problemi tecnici il più rapidamente possibile entro i nostri orari di lavoro ufficiali. A meno che non venga stipulato un accordo speciale con il cliente, forniamo assistenza solo all'indirizzo https://abp.io/support/questions. Disponiamo anche di un supporto privato via e-mail, disponibile solo per i titolari di licenza Enterprise.", "DowngradeLicensePlan": "Posso passare a un piano di licenza inferiore in futuro?", "DowngradeLicensePlanExplanation": "Non è possibile effettuare il downgrade del piano di licenza esistente. È però possibile acquistare un nuovo piano di licenza inferiore e continuare lo sviluppo con la nuova licenza. Dopo aver acquistato una licenza inferiore, è sufficiente effettuare il login al nuovo piano di licenza tramite il comando ABP CLI: abp login -o `.", "LicenseTransfer": "È possibile trasferire una licenza da uno sviluppatore a un altro?", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json index 88ec064f7c..197c23d17b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/nl.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "U gebruikt de proeflicentie en uw proeflicentie verloopt op {0}.", "TryForFree": "Probeer gratis", "TrialLicenseExpiredInfo": "Uw proeflicentieperiode is verlopen!", - "CommercialNewsletterConfirmationMessage": "Ik ga akkoord met de Algemene voorwaarden en het Privacybeleid .", + "CommercialNewsletterConfirmationMessage": "Ik ga akkoord met de Algemene voorwaarden en het Privacybeleid .", "BlackFridayDiscount": "Black Friday korting", "MultipleOrganizationInfo": "Bekijk al uw organisaties", "PaymentFailedInfo": "Excuses, betaling mislukt! ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json index e21262412b..9bf2c05d39 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pl-PL.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Korzystasz z licencji próbnej, a Twoja licencja próbna wygaśnie w dniu {0}.", "TryForFree": "Wypróbuj za darmo", "TrialLicenseExpiredInfo": "Twoja licencja próbna wygasła!", - "CommercialNewsletterConfirmationMessage": "Wyrażam zgodę na Warunki i Politykę prywatności .", + "CommercialNewsletterConfirmationMessage": "Wyrażam zgodę na Warunki i Politykę prywatności .", "BlackFridayDiscount": "Zniżka Black Friday", "MultipleOrganizationInfo": "Zobacz wszystkie swoje organizacje", "PaymentFailedInfo": "Przepraszamy, płatność nie powiodła się! ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json index f2822ae43b..2de960edf1 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/pt-BR.json @@ -383,14 +383,14 @@ "TrialLicenseExpireMessage": "Você está usando a licença de teste e sua licença de teste irá expirar em {0}.", "TryForFree": "Experimentar gratuitamente", "TrialLicenseExpiredInfo": "Seu período de licença de teste expirou!", - "CommercialNewsletterConfirmationMessage": "Eu concordo com os Termos e Condições e a Política de Privacidade ", + "CommercialNewsletterConfirmationMessage": "Eu concordo com os Termos e Condições e a Política de Privacidade ", "discountForYears": "{0}% de desconto por {1} ano(s)", "BlackFridayDiscount": "Desconto de Black Friday", "WhyUseAbpIoPlatform": "Por que devo usar a plataforma ABP.IO em vez de criar uma nova solução a partir do zero?", - "WhyUseAbpIoPlatformFaqExplanation": "Veja esse documento para uma explicação detalhada do porquê de usar a Plataforma ABP.IO tem uma vantagem significativa sobre fazer tudo você mesmo.", + "WhyUseAbpIoPlatformFaqExplanation": "Veja esse documento para uma explicação detalhada do porquê de usar a Plataforma ABP.IO tem uma vantagem significativa sobre fazer tudo você mesmo.", "OnboardingTrainingFaqTitle": "Você tem treinamento de ABP a bordo?", "SupportPolicyFaqTitle": "Qual é sua política de apoio?", - "SupportPolicyFaqExplanation": "Nós apoiamos apenas a versão ativa e a versão principal anterior. Não garantimos o lançamento de um patch para a 3ª e mais antigas versões principais. Por exemplo, se a versão ativa for a 7.0.0, lançaremos correções tanto para a 6.x.x como para a 7.x.x.x. Além disso, fornecemos suporte somente para questões relacionadas ao ABP Framework e ABP Commercial. Isso significa que nenhum suporte é dado para as aplicações de terceiros, serviços de nuvem e outras bibliotecas periféricas usadas pelos produtos ABP. Usaremos esforços comercialmente razoáveis para fornecer suporte técnico a nossos clientes durante o horário comercial oficial da \"Volosoft Bilisim A.S\". Por outro lado, não nos comprometemos com um acordo de nível de serviço (SLA) de tempo de resposta, mas tentaremos responder às questões técnicas o mais rápido possível dentro de nosso horário oficial de trabalho. A menos que um acordo especial seja feito com o cliente, fornecemos suporte somente em https://support.abp.io. Também temos suporte privado por e-mail, que só está disponível para os detentores de licenças empresariais.", + "SupportPolicyFaqExplanation": "Nós apoiamos apenas a versão ativa e a versão principal anterior. Não garantimos o lançamento de um patch para a 3ª e mais antigas versões principais. Por exemplo, se a versão ativa for a 7.0.0, lançaremos correções tanto para a 6.x.x como para a 7.x.x.x. Além disso, fornecemos suporte somente para questões relacionadas ao ABP Framework e ABP Commercial. Isso significa que nenhum suporte é dado para as aplicações de terceiros, serviços de nuvem e outras bibliotecas periféricas usadas pelos produtos ABP. Usaremos esforços comercialmente razoáveis para fornecer suporte técnico a nossos clientes durante o horário comercial oficial da \"Volosoft Bilisim A.S\". Por outro lado, não nos comprometemos com um acordo de nível de serviço (SLA) de tempo de resposta, mas tentaremos responder às questões técnicas o mais rápido possível dentro de nosso horário oficial de trabalho. A menos que um acordo especial seja feito com o cliente, fornecemos suporte somente em https://abp.io/support/questions. Também temos suporte privado por e-mail, que só está disponível para os detentores de licenças empresariais.", "DowngradeLicensePlan": "Posso baixar para um plano de licença mais baixo no futuro?", "DowngradeLicensePlanExplanation": "Você não pode rebaixar seu plano de licença existente. Mas você pode adquirir um novo plano de licença inferior e continuar seu desenvolvimento com a nova licença. Após adquirir uma licença inferior, você só precisa fazer o login em seu novo plano de licença via comando ABP CLI: abp login -o `.", "LicenseTransfer": "Uma licença pode ser transferida de um desenvolvedor para outro?", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json index 0f2a61fe2a..d48ea54135 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ro-RO.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Utilizați licența de probă și licența de probă va expira pe {0}.", "TryForFree": "Încearcă pe gratis", "TrialLicenseExpiredInfo": "Perioada de licență de probă a expirat!", - "CommercialNewsletterConfirmationMessage": "Sunt de acord cu Termenii și condițiile și cu Politica de confidențialitate .", + "CommercialNewsletterConfirmationMessage": "Sunt de acord cu Termenii și condițiile și cu Politica de confidențialitate .", "BlackFridayDiscount": "Black Friday Discount", "MultipleOrganizationInfo": "Vedeți toate organizațiile dvs", "PaymentFailedInfo": "Ne pare rău, plata nu a reușit! ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json index d08d737d5a..dce8c92888 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/ru.json @@ -721,7 +721,7 @@ "Landing_Page_DocsModuleDescription_9": "В дополнение к исходному коду GitHub позволяет просто использовать папку в качестве источника документации.", "Landing_Page_FileManagementModuleDescription_1": "Загружайте, скачивайте и упорядочивайте файлы в иерархической структуре папок.", "Landing_Page_FileManagementModuleDescription_2": "Этот модуль используется для загрузки, скачивания и организации файлов в иерархической структуре папок. ", - "Landing_Page_FileManagementModuleDescription_3": "Этот модуль основан на Хранение BLOB-объектов система, поэтому она может использовать разных поставщиков хранилища для хранения содержимого файла.", + "Landing_Page_FileManagementModuleDescription_3": "Этот модуль основан на Хранение BLOB-объектов система, поэтому она может использовать разных поставщиков хранилища для хранения содержимого файла.", "Landing_Page_IdentityModuleDescription_1": "Этот модуль реализует систему пользователей и ролей приложения;", "Landing_Page_IdentityModuleDescription_2": "Построен на Базовая идентичность Microsoft ASP.NET библиотека.", "Landing_Page_IdentityModuleDescription_3": "Управлять роли и пользователи в системе. несколько ролей.", @@ -737,7 +737,7 @@ "Landing_Page_PaymentModuleDescription_1": "Обеспечивает интеграцию с различными платежными шлюзами.", "Landing_Page_PaymentModuleDescription_2": "Этот модуль обеспечивает интеграцию платежных шлюзов, поэтому вы можете легко получать платежи от своих клиентов.", "Landing_Page_PaymentModuleDescription_3": "Этот модуль поддерживает следующие платежные шлюзы", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "Используйте одни и те же учетные данные для обоих Commercial.abp.io и support.abp.io.", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "Используйте одни и те же учетные данные для обоих Commercial.abp.io и support.abp.io.", "WatchCrudPagesVideo": "Посмотрите видео «Создание CRUD-страниц с помощью ABP Suite»!", "WatchGeneratingFromDatabaseVideo": "Посмотрите видео «Пакет ABP: создание страниц CRUD из существующих таблиц базы данных»!", "WatchTakeCloserLookVideo": "Посмотрите видео «Подробнее о генерации кода: ABP Suite»!", @@ -887,8 +887,8 @@ "DevelopYourSolution_Description1": "Инфраструктура ABP позволяет вам сосредоточьтесь на своем собственном бизнес-коде путем автоматизации повторяющейся работы и предоставления предварительно созданной инфраструктуры и приложений. функции.", "DevelopYourSolution_Description2": "В следующем блоке кода вы можете увидеть, как ABP Framework легко интегрируется в ваш код и автоматизирует повторяющиеся задачи.", "DevelopYourSolution_Description3": "Даже в этом блоке шорткода ABP многое делает за вас.", - "DevelopYourSolution_Description4": "Он предоставляет базовые классы для применения соглашений, например \n внедрение зависимости. \n репозиторий услуги обеспечивают удобный\n \n авторизация работает с тонко настроенной системой разрешений.", - "DevelopYourSolution_Description5": "ABP полностью автоматизирует \n единица работы (для подключения к базе данных и управления транзакциями), \n Обработка исключений, \n Проверка\n и журнал аудита. ", + "DevelopYourSolution_Description4": "Он предоставляет базовые классы для применения соглашений, например \n внедрение зависимости. \n репозиторий услуги обеспечивают удобный\n \n авторизация работает с тонко настроенной системой разрешений.", + "DevelopYourSolution_Description5": "ABP полностью автоматизирует \n единица работы (для подключения к базе данных и управления транзакциями), \n Обработка исключений, \n Проверка\n и журнал аудита. ", "DevelopYourSolution_Description6": "Вы можете себе представить, насколько длинным и сложным может быть этот блок кода, если вы будете делать все это вручную.", "SuiteCrudGenerationInFewSeconds": "Помимо ручного написания кода вашего решения, вы можете за несколько минут создать полностью работающие расширенные страницы CRUD, используя инструменты ABP Suite. ", "DeployAnywhere_Description1": "В конце концов у вас есть чистое решение .NET. ", @@ -1002,7 +1002,7 @@ "CreatingAnEmptySolution_THEPROBLEM_Description4": "Как вы интегрируетесь со сторонними библиотеками и системами?", "CreatingAnEmptySolution_THEPROBLEM_Description5": "Как настроить автоматические тесты?", "ABPSOLUTION": "РЕШЕНИЕ ABP", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP предоставляет хорошо спроектированную, многоуровневую и готовую к использованию решение для запуска на основе Проектирование, ориентированное на предметную область принципы. тест проекты для каждого слоя.", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP предоставляет хорошо спроектированную, многоуровневую и готовую к использованию решение для запуска на основе Проектирование, ориентированное на предметную область принципы. тест проекты для каждого слоя.", "CommonLibraries": "Общие библиотеки", "CommonLibraries_THEPROBLEM_Description": "Какие библиотеки следует использовать для реализации общих требований? ", "CommonLibraries_ABPSOLUTION_Description": "ABP предварительно интегрирует в решение популярные, проверенные и актуальные библиотеки. ", @@ -1020,7 +1020,7 @@ "KeepingYourSolutionUpToDate": "Поддержание вашего решения в актуальном состоянии", "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "После начала разработки вы должны отслеживать новые версии библиотек, которые вы используете для обновлений.", "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "Мы регулярно обновляем все пакеты до последних версий и тестируем их перед выпуском стабильной версии. ", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Обновление ABP интерфейс командной строки Команда автоматически обнаруживает и обновляет все зависящие от ABP пакеты NuGet и NPM в решении. ", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Обновление ABP интерфейс командной строки Команда автоматически обнаруживает и обновляет все зависящие от ABP пакеты NuGet и NPM в решении. ", "DRY": "Не повторяйтесь!", "DRY_Description": "Создание базового решения занимает значительное время и требует хорошего архитектурного опыта. ", "DRY_Description2": "ABP максимально автоматизирует и упрощает повторяющийся код, следуя принципу соглашения, а не конфигурации. ", @@ -1061,12 +1061,12 @@ "Modularity_THEPROBLEM_Description": "Построить по-настоящему модульную систему непросто! ", "Modularity_ABPSOLUTION_Description": "ABP Framework представляет собой модульную структуру разработки приложений. ", "SaaSMultiTenancy": "SaaS/мультиарендность", - "SaaSMultiTenancy_THEPROBLEM_Description": "Мульти аренды — распространенный способ внедрения систем SaaS. ", + "SaaSMultiTenancy_THEPROBLEM_Description": "Мульти аренды — распространенный способ внедрения систем SaaS. ", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP Framework предоставляет полную мультитенантную инфраструктуру и абстрагирует сложность вашего бизнес-кода. ", "Microservices": "Микросервисы", "Microservices_THEPROBLEM_Description": "Для создания системы микросервисов требуется множество деталей инфраструктуры: аутентификация и авторизация приложений и микросервисов, а также реализация шаблонов асинхронного обмена сообщениями и синхронного обмена сообщениями (Rest/GRPC) между микросервисами являются наиболее фундаментальными проблемами.", - "Microservices_ABPSOLUTION_Description": "ABP Framework предоставляет услуги, гидыи примеры, которые помогут вам реализовать микросервисное решение с помощью стандартных отраслевых инструментов.", - "Microservices_ABPSOLUTION_Description2": "ABP Commercial делает еще один шаг вперед и предоставляет полный шаблон запуска для запуска вашего микросервисного решения.", + "Microservices_ABPSOLUTION_Description": "ABP Framework предоставляет услуги, гидыи примеры, которые помогут вам реализовать микросервисное решение с помощью стандартных отраслевых инструментов.", + "Microservices_ABPSOLUTION_Description2": "ABP делает еще один шаг вперед и предоставляет полный шаблон запуска для запуска вашего микросервисного решения.", "PreBuiltModules": "Готовые модули", "PreBuiltModules_THEPROBLEM_Description": "У всех нас схожие, но немного разные бизнес-требования. ", "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial модули предоставляет множество повторно используемых модулей приложений, таких как оплата, чат, управление файлами, отчеты журнала аудита и т. д. Все эти модули легко устанавливаются в ваше решение и работают напрямую. ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json index b608be23ce..e59887beab 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sk.json @@ -382,13 +382,13 @@ "TrialLicenseExpireMessage": "Používate skúšobnú licenciu a platnosť vašej skúšobnej licencie vyprší {0}.", "TryForFree": "Skúste zadarmo", "TrialLicenseExpiredInfo": "Vaše skúšobné licenčné obdobie vypršalo!", - "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy.", + "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy.", "discountForYears": "{0} % odpusteného prívesku {1} an(ov)", "BlackFridayDiscount": "Black Friday zľava", "OnboardingTrainingFaqTitle": "Máte školenie ABP onboarding?", "OnboardingTrainingFaqExplanation": "Áno, máme školiace služby ABP, ktoré vám pomôžu rýchlo spustiť váš projekt ABP. Dozviete sa o ABP od hlavného člena tímu ABP a získate zručnosti na začatie vášho projektu ABP. Na onboardingovom školení vám vysvetlíme, ako nastaviť vaše vývojové prostredie, nainštalovať požadované nástroje, vytvoriť plne funkčnú stránku CRUD. Školenie bude prebiehať naživo a bude sa používať aplikácia Zoom a sme otvorení využívaniu ďalších platforiem online stretnutí. Jazykom školenia bude angličtina. Svoje otázky o ABP môžete klásť aj počas sedení. Pre obe strany bude naplánovaný vhodný čas a dátum. Ak chcete získať ďalšie informácie, kontaktujte nás na adrese info@abp.io.", "SupportPolicyFaqTitle": "Aká je vaša politika podpory?", - "SupportPolicyFaqExplanation": "Podporujeme iba aktívnu a predchádzajúcu hlavnú verziu. Nezaručujeme vydanie opravy pre 3. a staršiu hlavnú verziu. Napríklad, ak je aktívna verzia 7.0.0, vydáme opravné verzie pre 6.x.x aj 7.x.x. Okrem toho poskytujeme podporu len pre problémy súvisiace s ABP Framework a ABP Commercial. To znamená, že neposkytujeme podporu pre aplikácie tretích strán, cloudové služby a iné periférne knižnice používané produktmi ABP. Vynaložíme komerčne primerané úsilie, aby sme našim zákazníkom poskytli technickú podporu počas oficiálnej pracovnej doby spoločnosti \"Volosoft Bilisim A.S\". Na druhej strane sa nezaväzujeme k času odozvy podľa dohody o úrovni služieb (SLA), ale budeme sa snažiť reagovať na technické problémy čo najrýchlejšie v rámci našej oficiálnej pracovnej doby. Ak sa so zákazníkom nedohodnete inak, poskytujeme podporu len na adrese https://support.abp.io. Máme aj súkromnú e-mailovú podporu, ktorá je k dispozícii len držiteľom licencie Enterprise.", + "SupportPolicyFaqExplanation": "Podporujeme iba aktívnu a predchádzajúcu hlavnú verziu. Nezaručujeme vydanie opravy pre 3. a staršiu hlavnú verziu. Napríklad, ak je aktívna verzia 7.0.0, vydáme opravné verzie pre 6.x.x aj 7.x.x. Okrem toho poskytujeme podporu len pre problémy súvisiace s ABP Framework a ABP Commercial. To znamená, že neposkytujeme podporu pre aplikácie tretích strán, cloudové služby a iné periférne knižnice používané produktmi ABP. Vynaložíme komerčne primerané úsilie, aby sme našim zákazníkom poskytli technickú podporu počas oficiálnej pracovnej doby spoločnosti \"Volosoft Bilisim A.S\". Na druhej strane sa nezaväzujeme k času odozvy podľa dohody o úrovni služieb (SLA), ale budeme sa snažiť reagovať na technické problémy čo najrýchlejšie v rámci našej oficiálnej pracovnej doby. Ak sa so zákazníkom nedohodnete inak, poskytujeme podporu len na adrese https://abp.io/support/questions. Máme aj súkromnú e-mailovú podporu, ktorá je k dispozícii len držiteľom licencie Enterprise.", "DowngradeLicensePlan": "Môžem v budúcnosti prejsť na nižší licenčný plán?", "DowngradeLicensePlanExplanation": "Existujúci licenčný plán nemôžete znížiť. Môžete si však zakúpiť nový nižší licenčný plán a pokračovať vo vývoji s novou licenciou. Po zakúpení nižšej licencie sa stačí prihlásiť do nového licenčného plánu prostredníctvom príkazu ABP CLI: abp login -o `.", "LicenseTransfer": "Môže sa licencia preniesť z jedného vývojára na druhého?", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json index ec160fea38..3fb3d559d4 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/sl.json @@ -355,7 +355,7 @@ "FreeDDDEBook": "Brezplačna e-knjiga DDD", "StartFree": "Začnite brezplačno", "FreeTrial": "Brezplačen preizkus", - "AcceptsMarketingCommunications": " Da, rad bi prejemal marketinška sporočila ABP Commercial.", + "AcceptsMarketingCommunications": " Da, rad bi prejemal marketinška sporočila ABP.", "PurposeOfUsage": "Namen uporabe", "Industry": "Industrija", "Choose": "-Izberi -", @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Uporabljate preizkusno licenco in vaša preizkusna licenca bo potekla {0}.", "TryForFree": "Poskusite brezplačno", "TrialLicenseExpiredInfo": "Vaša preizkusna licenca je potekla!", - "CommercialNewsletterConfirmationMessage": "Strinjam se s pogoji in določili in pravilnikom o zasebnosti .", + "CommercialNewsletterConfirmationMessage": "Strinjam se s pogoji in določili in pravilnikom o zasebnosti .", "BlackFridayDiscount": "Popust Black Friday", "MultipleOrganizationInfo": "Oglejte si vse svoje organizacije", "PaymentFailedInfo": "Žal plačilo ni uspelo! ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json index fd191d27a5..2fd650a4fb 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json @@ -547,7 +547,7 @@ "Pricing_Page_Testimonial_2": "Özel geliştirme projelerinin ek yükünü azaltmak için ABP Commercial kullanmanın değerini görüyoruz. Ekip, farklı proje akışlarında kod modelini birleştirebiliyor. Yeni özellikleri eskisinden daha hızlı oluşturabilmemiz için Frameworkte daha fazla potansiyel görüyoruz. ABP Commercial'dan yararlanmanın değerini sürekli olarak göreceğimize inanıyoruz.", "Pricing_Page_Testimonial_3": "ABP'yi seviyoruz. Her şeyi sıfırdan yazmak zorunda kalmıyoruz. Kullanıma hazır özellikler ile başlıyoruz ve sadece gerçekten yazmamız gerekenlere odaklanıyoruz. Ayrıca, ABP iyi tasarlanmış, daha az kod ve düşük 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. Framework 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_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ış abp.io/docs 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 framework 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 entitylerini (AR) ve her birine bağlı depoyu oluşturmak için bize zaman kazandırdı. ABP'de kullanılan yaklaşımın çok olgun olmasını da beğendim, DDD ve monolith'e dayandığını biliyoruz.", "Pricing_Page_Testimonial_7": "Bir başlangıç olarak hızlı bir şekilde yineleme yapmamız ve temel olmayan özellikler için minimum zaman harcamamız gerekiyor.\nMühendislerimiz son derece deneyimli mühendislerden genç mühendislere kadar çeşitlilik gösteriyor, ortak bir anlayışa ve teknik ve alan bilgisini paylaşmanın bir yoluna ihtiyacımız vardı, ABP harika kılavuzları ve belgeleri sayesinde bunu yapmamızı sağladı. \nABP ile kutudan çıkar çıkmaz çalıştıkları için endişelenmemize gerek kalmayan şeyler var. \nABP, hızlı prototip oluşturma ve geliştirmeyi kolaylaştırmamıza yardımcı oldu, özelliğin başlangıcından üretime kadar 4 haftadan kısa bir süre geçti. Lisansa dahil olan tüm premium özellikleriyle ABP, Yazılım Mühendisliği tarafında bize \"Startup in a Box\" sağladı.", "Pricing_Page_Testimonial_8": "ABP Commercial'i müşterilerine sunulan ürün yelpazesini genişletmek isteyen herkese tavsiye ederim. Dağıtılmış bir kurumsal ortamı kullanmanız gerektiğinde (Angular, WPF, Win&Linux), harika bir seçenek. Ürünlerinin yanı sıra, işlerimizi daha hızlı ve kolay hale getiren desteklerini de seviyoruz. Şimdiden gelecekte işimizi genişletmemizde bize destek olacak harika bir ortağı bulduğumuzu biliyoruz.", @@ -726,7 +726,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 multi-tenancy uyumludur ve tenancy için toplam boyut sınırını belirleyebilirsiniz.", - "Landing_Page_FileManagementModuleDescription_3": "Bu modül BLOB Depolama 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 BLOB Depolama 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": "Microsoft'un ASP.NET Core Identity kütüphanesi üzerine inşa edilmiştir.", "Landing_Page_IdentityModuleDescription_3": "Sistemdeki rolleri ve kullanıcıları yönetin. Bir kullanıcının birden çok role sahip olmasına izin verilir.", @@ -806,9 +806,9 @@ "SeeLeptonDocumentation": "Lepton Dokümantasyonuna Bakın", "GetLepton": "Lepton'u Şimdi Alın", "WhyUseAbpIoPlatform": "Sıfırdan yeni bir proje 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 bu belgeye bakın.", + "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 bu belgeye 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.", + "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://abp.io/support/questions adresinden destek sağlıyoruz. Ayrıca, yalnızca Kurumsal Lisans sahiplerinin kullanabildiği özel e-posta desteğimiz de bulunmaktadır.", "ExtraQuestionCreditsFaqTitle": "Ekstra destek soru kredisi satın alabilir miyim?", "ExtraQuestionCreditsFaqExplanation": "Evet, alabilirsiniz. Ekstra soru kredisi satın almak için info@abp.io adresine kuruluşunuzun e-posta adresini içeren bir e-posta gönderin. Ekstra soru kredileri için fiyat listesi şöyle:
  • 50 soru paketi $999
  • 25 soru paketi $625
  • 15 soru paketi $450
", "BlazoriseLicense": "Blazorise lisansı satın almamız gerekiyor mu?", @@ -880,7 +880,7 @@ "CreatingAnEmptySolution_THEPROBLEM_Description4": "3. taraf kütüphaneleri nasıl entegre edersiniz?", "CreatingAnEmptySolution_THEPROBLEM_Description5": "Otomatik testler nasıl kurulur?", "ABPSOLUTION": "ABP PROJESİ", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP, iyi tasarlanmış, katmanlı ve üretim için hazır bir başlangıç projesi sağlar. Bu proje, aynı zamanda her katman için önceden yapılandırılmış birim ve entegrasyon testlerini içerir. Temeli Domain Driven Design prensiplerine dayanmaktadır. ", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP, iyi tasarlanmış, katmanlı ve üretim için hazır bir başlangıç projesi sağlar. Bu proje, aynı zamanda her katman için önceden yapılandırılmış birim ve entegrasyon testlerini içerir. Temeli Domain Driven Design prensiplerine dayanmaktadır. ", "CommonLibraries": "Ortak Kütüphaneler", "CommonLibraries_THEPROBLEM_Description": "Ortak gereksinimleri uygulayabilmek için hangi kütüphaneleri kullanmalısınız? Yazılım geliştirme ekosistemi son derece dinamik olduğundan, en son araçları, kütüphaneleri, trendleri ve yaklaşımları takip etmek zorlayıcı olabilir.", "CommonLibraries_ABPSOLUTION_Description": "ABP, popüler, olgun ve güncel kütüphaneleri projeye önceden entegre eder. Bunları entegre etme veya birbirleriyle iletişim kurma konusunda zaman harcamanıza gerek yoktur. Kütüphaneler kutudan çıkar çıkmaz düzgün bir şekilde çalışırlar.", @@ -898,7 +898,7 @@ "KeepingYourSolutionUpToDate": "Projenizi Güncel Tutma", "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "Geliştirmeye başladıktan sonra, kullanılan kütüphanelerin yeni sürümlerini güncellemeler ve yamalar için takip etmelisiniz.", "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "Düzenli olarak tüm paketleri en son sürümlere güncelliyor ve bunları kararlı sürüm öncesinde test ediyoruz. ABP Framework'ü güncellediğinizde, tüm bağımlılıkları en güncel teknolojiye yükseltilir.", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update CLI komutu, otomatik olarak bir projedeki tüm ABP bağımlı NuGet ve NPM paketlerini keşfeder ve günceller. ABP ile en son sürümlerde kalmak daha kolaydır.", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update CLI komutu, otomatik olarak bir projedeki tüm ABP bağımlı NuGet ve NPM paketlerini keşfeder ve günceller. ABP ile en son sürümlerde kalmak daha kolaydır.", "DRY": "Kendini Tekrar Etme!", "DRY_Description": "Temel bir proje oluşturmak önemli zaman alır ve iyi bir mimari deneyimi gerektirir. Ancak bu sadece başlangıçtır! Geliştirmeye başladıkça, muhtemelen birçok tekrarlayan kod yazmanız gerekecektir; eğer tüm bunlar otomatik olarak işlenebilseydi harika olurdu.", "DRY_Description2": "ABP, konvansiyon üzerinde konfigürasyon prensibini takip ederek tekrarlayan kodları mümkün olduğunca otomatikleştirir ve basitleştirir. Ancak manuel moda geçmeniz gerektiğinde sizi sınırlamaz. Kontrol her zaman sizin elinizdedir.", @@ -938,12 +938,12 @@ "Modularity_THEPROBLEM_Description": "Gerçekten modüler bir sistem oluşturmak kolay değildir! Sistemin tüm yönleri (veritabanı, varlıklar, API'lar, UI sayfaları/bileşenleri) modüllere ayrılabilir ve her modül, diğerleri olmadan tekrar kullanılabilir. ASP.NET Core, böyle bir modüler mimari sunmaz. Bunu istiyorsanız, sıfırdan düşünmeniz gerekebilir.", "Modularity_ABPSOLUTION_Description": "ABP Framework, modüler bir uygulama geliştirme yapısı olmak üzere doğmuştur. Frameworkteki her özellik, modülerlikle uyumlu olacak şekilde geliştirilmiştir. Belgeler ve rehberler, nasıl standart bir şekilde yeniden kullanılabilir modüller geliştireceğinizi açıklar.", "SaaSMultiTenancy": "SaaS / Multi Tenancy", - "SaaSMultiTenancy_THEPROBLEM_Description": "Multi-Tenancy SaaS sistemlerini uygulamanın yaygın bir yoludur. Ancak, tutarlı bir Multi-Tenancy altyapısı uygulamak karmaşık hale gelebilir.", + "SaaSMultiTenancy_THEPROBLEM_Description": "Multi-Tenancy SaaS sistemlerini uygulamanın yaygın bir yoludur. Ancak, tutarlı bir Multi-Tenancy altyapısı uygulamak karmaşık hale gelebilir.", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP Framework, eksiksiz bir multi tenancy altyapı sağlar ve işletme kodunuzdan karmaşıklığı soyutlar. Uygulama kodunuzun çoğu multi-tenancy duyarlı olacaktır, ancak ABP Framework otomatik olarak veritabanını, önbelleği ve diğer tenancy ayrıntılarını birbirinden izole eder. Tek bir veritabanını, her tenancy için bir veritabanını ve karma yaklaşımları destekler. Normalde multi-tenancy uyumlu olmayan Microsoft Identity ve OpenIddict gibi kütüphaneleri uygun şekilde yapılandırır.", "Microservices": "Mikroservisler", "Microservices_THEPROBLEM_Description": "Bir mikroservis sistemi oluşturmak birçok altyapı ayrıntısı gerektirir: Uygulamaların ve mikroservislerin doğrulanması, yetkilendirilmesi ve mikroservisler arasında eşzamansız mesajlaşma ve eşzamanlı (Dinlenme/GRPC) iletişim kalıplarının uygulanması en temel konulardır.", - "Microservices_ABPSOLUTION_Description": "ABP Framework, endüstri standardı araçları kullanarak mikroservis projenizi uygulamanıza yardımcı olacak hizmetler, rehberler, ve örnekler sağlar.", - "Microservices_ABPSOLUTION_Description2": "ABP Commercial bir adım daha ileri gider ve mikroservis projenizi başlatmak için tam bir başlangıç şablonu sağlar.", + "Microservices_ABPSOLUTION_Description": "ABP Framework, endüstri standardı araçları kullanarak mikroservis projenizi uygulamanıza yardımcı olacak hizmetler, rehberler, ve örnekler sağlar.", + "Microservices_ABPSOLUTION_Description2": "ABP Commercial bir adım daha ileri gider ve mikroservis projenizi başlatmak için tam bir başlangıç şablonu sağlar.", "PreBuiltModules": "Önceden Oluşturulmuş Modüller", "PreBuiltModules_THEPROBLEM_Description": "Hepimizin benzer ancak biraz farklı iş gereksinimleri var. Ancak hiç kimsenin kodu doğrudan projenizde çalışamadığından dolayı tekerleği yeniden icat etmeliyiz. Hepsi daha büyük bir projenin gömülü parçalarıdır.", "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial modülleri ödeme, sohbet, dosya yönetimi, denetim günlüğü raporlama vb. gibi birçok yeniden kullanılabilir uygulama modülü sağlar. Bu modüllerin hepsi projenize kolayca yüklenir ve doğrudan çalışır. Sürekli olarak daha fazla modül ekliyoruz.", @@ -976,8 +976,8 @@ "DevelopYourSolution_Description1": "ABP'nin altyapısı, tekrarlayan işleri otomatikleştirerek ve önceden yapılandırılmış altyapı ve uygulama özellikleri sağlayarak, kendi iş kodunuza odaklanmanızı sağlar.", "DevelopYourSolution_Description2": "Aşağıdaki kod bloğunda, ABP Framework'ünün kodunuza sorunsuz entegre olduğunu ve tekrarlayan görevleri sizin için otomatikleştirdiğini görebilirsiniz.", "DevelopYourSolution_Description3": "Bu kısa kod bloğunda bile, ABP sizin için birçok şey yapar.", - "DevelopYourSolution_Description4": "Temel sınıflar sağlar ve bağımlılık enjeksiyonu gibi kuralları uygulamanıza yardımcı olur. Generic repository servisleri, veritabanı ile etkileşimde bulunmak için uygun bir yol sunar. Deklaratif yetkilendirme, ince ayarlı bir izin sistemini kullanır.", - "DevelopYourSolution_Description5": "ABP, \n Unit of Work (veritabanı bağlantısı ve işlem yönetimi için), \n istisna işleme, \n doğrulama\n ve denetim kaydı tamamen otomatikleştirir. Günlük geliştirme görevlerinizi basitleştirmek ve üretim için hazır \n uygulamalar oluştururken kendi kodunuza odaklanmanızı sağlamak için birçok başka yapı taşı sağlar.", + "DevelopYourSolution_Description4": "Temel sınıflar sağlar ve bağımlılık enjeksiyonu gibi kuralları uygulamanıza yardımcı olur. Generic repository servisleri, veritabanı ile etkileşimde bulunmak için uygun bir yol sunar. Deklaratif yetkilendirme, ince ayarlı bir izin sistemini kullanır.", + "DevelopYourSolution_Description5": "ABP, \n Unit of Work (veritabanı bağlantısı ve işlem yönetimi için), \n istisna işleme, \n doğrulama\n ve denetim kaydı tamamen otomatikleştirir. Günlük geliştirme görevlerinizi basitleştirmek ve üretim için hazır \n uygulamalar oluştururken kendi kodunuza odaklanmanızı sağlamak için birçok başka yapı taşı sağlar.", "DevelopYourSolution_Description6": "Eğer bunu tamamen manuel olarak yapacaksanız, bu kod bloğunun ne kadar uzun ve karmaşık olabileceğini düşünebilirsiniz.", "SuiteCrudGenerationInFewSeconds": "Projenizin el ile kodlamaya ek olarak, ABP Suite araçları kullanarak birkaç dakika içinde tamamen çalışan gelişmiş CRUD sayfaları oluşturabilirsiniz. Kodu projenize üretir, böylece özel gereksinimlerinize göre ayarlayabilirsiniz.", "DeployAnywhere_Description1": "Günün sonunda, saf bir .NET projeniz var. Projenizi kendi sunucunuza, bir bulut platformuna, Kubernetes'e veya istediğiniz herhangi bir yere dağıtabilirsiniz. İstediğiniz kadar sunucuya dağıtabilirsiniz. ABP, dağıtım ortamı bağımsız bir araçtır.", @@ -1084,8 +1084,8 @@ "SendBetaRequest": "Beta Talebi Gönder", "YouJoinedTheBetaTesterProgram": "ABP Studio beta test programına katıldınız.", "Releases": "Sürüm Notları", - "ReleasesDescription": "Bu sayfa, her bir sürümle ilgili detaylı bilgileri içerir. Belirli bir sürüm için kapatılan tüm pull requestleri görebilirsiniz. Genel milestone gelişmeleri için özet sürüm notları sayfasını kontrol edebilirsiniz.", - "DoesTheSubscriptionRenewAutomaticallyExplanationAutoRenewal": "ABP Commercial lisansınızı otomatik olarak yenilemenize olanak tanır. Bu isteğe bağlı bir hizmettir. Yeni bir lisans satın alırken veya daha sonra kuruluş yönetim sayfanızdan bu özelliği etkinleştirebilirsiniz. Otomatik yenileme, kuruluş yönetim sayfanızın 'Ödeme Yöntemi' bölümünde bulunur. Otomatik yenilemeyi kapatmak isterseniz, kuruluş yönetim sayfasına gidin, 'Ödeme Yöntemi' bölümüne gidin ve 'Otomatik Yenileme' onay kutusundaki işareti kaldırın. Otomatik yenileme özelliğini kapattığınızda, lisansınızı kendiniz yenilemelisiniz.", + "ReleasesDescription": "Bu sayfa, her bir sürümle ilgili detaylı bilgileri içerir. Belirli bir sürüm için kapatılan tüm pull requestleri görebilirsiniz. Genel milestone gelişmeleri için özet sürüm notları sayfasını kontrol edebilirsiniz.", + "DoesTheSubscriptionRenewAutomaticallyExplanationAutoRenewal": "ABP Commercial lisansınızı otomatik olarak yenilemenize olanak tanır. Bu isteğe bağlı bir hizmettir. Yeni bir lisans satın alırken veya daha sonra kuruluş yönetim sayfanızdan bu özelliği etkinleştirebilirsiniz. Otomatik yenileme, kuruluş yönetim sayfanızın 'Ödeme Yöntemi' bölümünde bulunur. Otomatik yenilemeyi kapatmak isterseniz, kuruluş yönetim sayfasına gidin, 'Ödeme Yöntemi' bölümüne gidin ve 'Otomatik Yenileme' onay kutusundaki işareti kaldırın. Otomatik yenileme özelliğini kapattığınızda, lisansınızı kendiniz yenilemelisiniz.", "CreditCards": "Kredi Kartları", "BillingInformation": "Ödeme Bilgileri", "MyOrganizations_LearnMorePlan": "Fiyatlandırma sayfasında planlar hakkında daha fazla bilgi edinin", @@ -1134,7 +1134,7 @@ "Purchase_Save": "{0}% İndirim {1}", "Total": "Toplam", "MultipleYearDiscount": "Çoklu Yıl İndirimi", - "TrainingDescription": "ABP Framework ve ABP Commercial konusunda uzmanlık kazanmak isteyenler için aşağıdaki eğitim paketlerini sunuyoruz.", + "TrainingDescription": "ABP Framework konusunda uzmanlık kazanmak isteyenler için aşağıdaki eğitim paketlerini sunuyoruz.", "PurchaseDevelopers": "geliştirici", "RemoveBasket": "Sepetten kaldır", "TrainingPack": "Eğitim paketi", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json index 72bc10f649..eab68bdf79 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/vi.json @@ -382,7 +382,7 @@ "TrialLicenseExpireMessage": "Bạn đang sử dụng giấy phép dùng thử và giấy phép dùng thử của bạn sẽ hết hạn vào {0}.", "TryForFree": "Thử miễn phí", "TrialLicenseExpiredInfo": "Thời gian cấp phép dùng thử của bạn đã hết hạn!", - "CommercialNewsletterConfirmationMessage": "Tôi đồng ý với Điều khoản & điều kiện Chính sách quyền riêng tư .", + "CommercialNewsletterConfirmationMessage": "Tôi đồng ý với Điều khoản & điều kiện Chính sách quyền riêng tư .", "BlackFridayDiscount": "Giảm giá Black Friday", "MultipleOrganizationInfo": "Xem tất cả các tổ chức của bạn", "PaymentFailedInfo": "Rất tiếc, thanh toán không thành công! ", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index a0e17b5e66..60364800b6 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -720,7 +720,7 @@ "Landing_Page_DocsModuleDescription_9": "除了 GitHub 源代码外,还允许使用文件夹作为文档源代码。", "Landing_Page_FileManagementModuleDescription_1": "以分层文件夹结构上传、下载和整理文件。", "Landing_Page_FileManagementModuleDescription_2": "该模块用于上传、下载和以分层文件夹结构组织文件。它还与多租户兼容,你可以确定租户的总大小限制。", - "Landing_Page_FileManagementModuleDescription_3": "该模块基于 BLOB 存储系统,因此可以使用不同的存储提供商来存储文件内容。", + "Landing_Page_FileManagementModuleDescription_3": "该模块基于 BLOB 存储系统,因此可以使用不同的存储提供商来存储文件内容。", "Landing_Page_IdentityModuleDescription_1": "该模块实现了应用程序的用户和角色系统;", "Landing_Page_IdentityModuleDescription_2": "基于 Microsoft 的 ASP.NET Core Identity 库构建。", "Landing_Page_IdentityModuleDescription_3": "管理系统中的角色用户。允许一个用户拥有多个角色。", @@ -736,7 +736,7 @@ "Landing_Page_PaymentModuleDescription_1": "提供不同支付网关的集成。", "Landing_Page_PaymentModuleDescription_2": "该模块集成了支付网关,因此您可以轻松从客户处获得付款。", "Landing_Page_PaymentModuleDescription_3": "该模块支持以下支付网关", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "在 commercial.abp.iosupport.abp.io 中使用相同的凭据。", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "在 commercial.abp.iosupport.abp.io 中使用相同的凭据。", "WatchCrudPagesVideo": "观看 \"使用 ABP Suite 创建 CRUD 页面 \"视频!", "WatchGeneratingFromDatabaseVideo": "观看 \"ABP Suite:从现有数据库表生成 CRUD 页面 \"视频!", "WatchTakeCloserLookVideo": "观看 \"近距离了解代码生成:ABP Suite \"视频!", @@ -886,8 +886,8 @@ "DevelopYourSolution_Description1": "ABP 的基础架构可自动执行重复性工作,并提供预构建的基础架构和应用程序 功能,从而使您专注于自己的业务代码。", "DevelopYourSolution_Description2": "在下面的代码块中,您可以看到 ABP 框架是如何无缝集成到您的代码中并自动执行重复性任务的。", "DevelopYourSolution_Description3": "即使在这个简码块中,ABP 也能为您做很多事情。", - "DevelopYourSolution_Description4": "它提供了应用约定的基类,如\n 依赖注入。通用类\n 资源库服务提供了一种方便的\n 与数据库交互的便捷方法。声明式\n 授权与经过微调的权限系统配合使用。", - "DevelopYourSolution_Description5": "ABP 完全自动化\n 工作单元(用于数据库连接和事务管理)、\n 异常处理、\n 验证。\n 以及 审计日志。它提供了更多的构建模块,可简化您的日常开发任务,并在创建生产就绪应用程序的同时专注于您自己的代码。\n 应用程序。", + "DevelopYourSolution_Description4": "它提供了应用约定的基类,如\n 依赖注入。通用类\n 资源库服务提供了一种方便的\n 与数据库交互的便捷方法。声明式\n 授权与经过微调的权限系统配合使用。", + "DevelopYourSolution_Description5": "ABP 完全自动化\n 工作单元(用于数据库连接和事务管理)、\n 异常处理、\n 验证。\n 以及 审计日志。它提供了更多的构建模块,可简化您的日常开发任务,并在创建生产就绪应用程序的同时专注于您自己的代码。\n 应用程序。", "DevelopYourSolution_Description6": "可以想象,如果全部由人工完成,代码块会有多么冗长和复杂。", "SuiteCrudGenerationInFewSeconds": "除了手工编码解决方案外,您还可以使用 ABP Suite 工具在几分钟内创建可全面运行的高级 CRUD 页面。它可将代码生成到您的解决方案中,因此您可以根据您的自定义需求对其进行微调。", "DeployAnywhere_Description1": "最后,您将拥有一个纯粹的 .NET 解决方案。您可以将解决方案部署到自己的服务器、云平台、Kubernetes 或任何您想部署的地方。您可以部署到任意多的服务器上。ABP 是一种与部署环境无关的工具。", @@ -1002,7 +1002,7 @@ "CreatingAnEmptySolution_THEPROBLEM_Description4": "如何与第三方资料库和系统集成?", "CreatingAnEmptySolution_THEPROBLEM_Description5": "如何设置自动测试?", "ABPSOLUTION": "ABP 解决方案", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基于领域驱动设计原则,提供了一个架构完善、分层且可投入生产的启动解决方案。该解决方案还包括每个层的预配置单元和集成测试项目。", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基于领域驱动设计原则,提供了一个架构完善、分层且可投入生产的启动解决方案。该解决方案还包括每个层的预配置单元和集成测试项目。", "CommonLibraries": "通用库", "CommonLibraries_THEPROBLEM_Description": "您应该使用哪些库来实现常见需求?软件开发生态系统是高度动态的,要跟上最新的工具、库、趋势和方法具有挑战性。", "CommonLibraries_ABPSOLUTION_Description": "ABP 将流行、成熟和最新的库预先集成到解决方案中。你不需要花时间集成它们或让它们相互通信。它们开箱即可正常工作。", @@ -1020,7 +1020,7 @@ "KeepingYourSolutionUpToDate": "保持解决方案最新", "KeepingYourSolutionUpToDate_THEPROBLEM_Description": "开始开发后,您必须跟踪所使用库的新版本,以便进行升级和打补丁。", "KeepingYourSolutionUpToDate_ABPSOLUTION_Description": "我们会定期将所有包更新至最新版本,并在稳定版本发布前对其进行测试。当你更新 ABP 框架时,它的所有依赖项都会升级到边缘技术。", - "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update CLI 命令可自动发现并升级解决方案中所有依赖 ABP 的 NuGet 和 NPM 包。有了 ABP,使用最新版本变得更加容易。", + "KeepingYourSolutionUpToDate_ABPSOLUTION_Description2": "Abp update CLI 命令可自动发现并升级解决方案中所有依赖 ABP 的 NuGet 和 NPM 包。有了 ABP,使用最新版本变得更加容易。", "DRY": "不要重复自己", "DRY_Description": "创建基础解决方案需要大量时间,并需要良好的建筑经验。然而,这仅仅是个开始!在开始开发时,您可能需要编写大量重复的代码;如果所有这些代码都能自动处理,那就再好不过了。", "DRY_Description2": "ABP 遵循 \"约定重于配置 \"的原则,尽可能自动化和简化重复代码。不过,当您需要切换到手动档时,它也不会限制您。控制权始终掌握在您的手中。", @@ -1061,12 +1061,12 @@ "Modularity_THEPROBLEM_Description": "建立一个真正的模块化系统并非易事!系统的所有方面(数据库、实体、API、UI页面/组件)都可以分割成模块,而且每个模块都可以重用,无需其他模块。普通的 ASP.NET Core 并不提供这样的模块化架构。如果需要,您应该从头开始考虑。", "Modularity_ABPSOLUTION_Description": "ABP 框架是一种模块化应用程序开发结构。框架中的每项功能都是为兼容模块化而开发的。文档和指南解释了如何以标准方式开发可重用的模块。", "SaaSMultiTenancy": "SaaS / 多租户", - "SaaSMultiTenancy_THEPROBLEM_Description": " 多租户是实施 SaaS 系统的一种常见方式。但是,实施一致的多用户基础设施可能会变得复杂。", + "SaaSMultiTenancy_THEPROBLEM_Description": " 多租户是实施 SaaS 系统的一种常见方式。但是,实施一致的多用户基础设施可能会变得复杂。", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP 框架提供完整的多租户基础架构,并从您的业务代码中抽象出复杂性。您的应用程序代码大部分将具有多租户意识,而 ABP 框架会自动隔离租户之间的数据库、缓存和其他细节。它支持单个数据库、每个租户数据库和混合方法。它能正确配置 Microsoft Identity 和 OpenIddict 等库,这些库通常与多租户不兼容。", "Microservices": "微服务", "Microservices_THEPROBLEM_Description": "构建微服务系统需要许多基础设施细节:对应用程序和微服务进行身份验证和授权,以及在微服务之间实施异步消息传递和同步(Rest/GRPC)通信模式是最基本的问题。", - "Microservices_ABPSOLUTION_Description": "ABP 框架提供服务、指南和示例,帮助您使用行业标准工具实施微服务解决方案。", - "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更进一步,提供了完整的 启动模板,以启动您的微服务解决方案。", + "Microservices_ABPSOLUTION_Description": "ABP 框架提供服务、指南和示例,帮助您使用行业标准工具实施微服务解决方案。", + "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更进一步,提供了完整的 启动模板,以启动您的微服务解决方案。", "PreBuiltModules": "预制模块", "PreBuiltModules_THEPROBLEM_Description": "我们每个人都有相似但略有不同的业务需求。但是,我们都应该重新发明轮子,因为没有人的代码可以直接用于我们的解决方案。它们都是更大解决方案的嵌入部分。", "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial 模块提供了大量可重用的应用模块,如支付、聊天、文件管理、审计日志报告......等。所有这些模块都可以轻松安装到您的解决方案中并直接运行。我们将不断添加更多模块。", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json index a3ff8212da..212c641305 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hant.json @@ -529,7 +529,7 @@ "Pricing_Page_Testimonial_2": "我們看到了使用 ABP Commercial 來減少客製化開發專案的開銷的價值。團隊能夠統一不同專案流中的程式碼模式。我們看到該框架具有更大的潛力,可以讓我們比以前更快地建立新功能。我們相信我們將不斷看到利用 ABP Commercial 的價值。", "Pricing_Page_Testimonial_3": "我們愛 ABP。我們不必從頭開始編寫所有內容。我們從開箱即用的功能開始,只專注於我們真正需要編寫的內容。此外,ABP 架構良好,程式碼品質高,錯誤較少。如果我們必須自己編寫所需的所有內容,我們可能需要花費數年時間。我們喜歡的另一件事是,新版本、問題修復或改進每隔一周很快就會發布。我們不會等太久。", "Pricing_Page_Testimonial_4": "ABP Commercial 是一款極佳的產品,值得推薦。在單一可配置平台上為我們的客戶推出商業產品。為任何團隊提供的框架和工具的快速啟動都是值得的。 ABP Commercial 最適合我們的需求。", - "Pricing_Page_Testimonial_5": "ABP Framework 不僅僅是一個框架,它也是專案開發/管理的指南,因為它提供了 DDD、GenericRepository、DI、微服務和模組化培訓。即使您不打算使用框架本身,您也可以使用經過充分且專業準備的 docs.abp.io 進行開發(OpenIddict、Redis、Quartz 等)。因為很多東西都是預先建立的,所以它大大縮短了專案開發時間(例如登入頁面、異常處理、資料過濾、播種、稽核日誌記錄、本地化、自動 API 控制器等)。作為我們應用程式的範例,我使用本地事件總線進行庫存控制。因此,我可以透過編寫庫存處理程序來管理訂單變更。不浪費時間給CreationTime、CreatorId真是太好了。它們會被自動填滿。", + "Pricing_Page_Testimonial_5": "ABP Framework 不僅僅是一個框架,它也是專案開發/管理的指南,因為它提供了 DDD、GenericRepository、DI、微服務和模組化培訓。即使您不打算使用框架本身,您也可以使用經過充分且專業準備的 abp.io/docs 進行開發(OpenIddict、Redis、Quartz 等)。因為很多東西都是預先建立的,所以它大大縮短了專案開發時間(例如登入頁面、異常處理、資料過濾、播種、稽核日誌記錄、本地化、自動 API 控制器等)。作為我們應用程式的範例,我使用本地事件總線進行庫存控制。因此,我可以透過編寫庫存處理程序來管理訂單變更。不浪費時間給CreationTime、CreatorId真是太好了。它們會被自動填滿。", "Pricing_Page_Testimonial_6": "ABP框架是一個很好的框架,但是它需要時間來理解它使用的不同層、類別和函式庫(尤其是ABP)。我花了很多時間閱讀程式碼庫,但 ABP Commercial 為我們節省了建立專案專業實體 (AR) 以及連結到每個實體的儲存庫的時間。我還喜歡 ABP 中使用的方法非常成熟;我們知道它是基於 DDD 和 monolith 的。", "Pricing_Page_Testimonial_7": "作為一家新創公司,我們需要快速迭代,並在樣板和非核心功能上花費最少的時間。 \n我們的工程師既有經驗豐富的工程師,也有初級工程師,我們需要一種共同的理解和一種共享技術和領域知識的方法,ABP 憑藉其出色的指南和文件使我們能夠做到這一點。 \n有些事情我們不必擔心,因為它們與 ABP 一起開箱即用。 \n ABP 幫助我們簡化了快速原型設計和開發,從功能啟動到生產只花了不到 4 週的時間。憑藉許可證中包含的所有高級功能,ABP 為我們提供了軟體工程方面的「Startup in a Box」。", "Pricing_Page_Testimonial_8": "我會向所有想要擴大客戶可用產品範圍的人推薦 ABP Commercial。當需要使用分散式企業環境(Angular、WPF、Win&Linux)時,它非常棒。除了他們的產品之外,我們還喜歡他們的支持,這使我們的工作更快、更輕鬆。我們已經知道,我們已經找到了一個面向未來的優秀合作夥伴,他將支持我們拓展業務。", @@ -707,7 +707,7 @@ "Landing_Page_DocsModuleDescription_9": "除了 GitHub 來源之外,還允許簡單地使用資料夾作為文件來源。", "Landing_Page_FileManagementModuleDescription_1": "在分層資料夾結構中上傳、下載和組織文件。", "Landing_Page_FileManagementModuleDescription_2": "此模組用於上傳、下載檔案並以分層資料夾結構組織檔案。它還與多租戶相容,您可以確定租戶的總大小限制。", - "Landing_Page_FileManagementModuleDescription_3": "此模組基於BLOB儲存系統,因此可以使用不同的儲存提供者來儲存檔案內容。", + "Landing_Page_FileManagementModuleDescription_3": "此模組基於BLOB儲存系統,因此可以使用不同的儲存提供者來儲存檔案內容。", "Landing_Page_IdentityModuleDescription_1": "該模組實現了應用程式的使用者和角色系統;", "Landing_Page_IdentityModuleDescription_2": "基於Microsoft 的 ASP.NET Core Identity庫建置。", "Landing_Page_IdentityModuleDescription_3": "管理系統中的角色使用者。一個使用者可以擁有多個角色。", @@ -723,7 +723,7 @@ "Landing_Page_PaymentModuleDescription_1": "提供不同支付網關的整合。", "Landing_Page_PaymentModuleDescription_2": "此模組提供支付網關的集成,因此您可以輕鬆地從客戶那裡獲得付款。", "Landing_Page_PaymentModuleDescription_3": "此模組支援以下支付網關", - "Welcome_Page_UseSameCredentialForCommercialWebsites": "對Commercial.abp.iosupport.abp.io使用相同的憑證。", + "Welcome_Page_UseSameCredentialForCommercialWebsites": "對abp.ioabp.io/support使用相同的憑證。", "WatchCrudPagesVideo": "觀看「使用 ABP Suite 建立 CRUD 頁面」影片!", "WatchGeneratingFromDatabaseVideo": "觀看“ABP Suite:從現有資料庫表单產生 CRUD 頁面”影片!", "WatchTakeCloserLookVideo": "觀看“仔細看看程式碼產生:ABP Suite”影片!", @@ -868,8 +868,8 @@ "DevelopYourSolution_Description1": "ABP 的基礎設施透過自動化重複性工作並提供預先建置的基礎架構和應用程式功能,使您能夠專注於自己的業務程式碼。", "DevelopYourSolution_Description2": "在下面的程式碼區塊中,您可以看到 ABP 框架如何無縫整合到您的程式碼中並自動為您執行重複性任務。", "DevelopYourSolution_Description3": "即使在這個短代碼區塊中,ABP 也為您做了很多事情。", - "DevelopYourSolution_Description4": "它提供了應用約定的基類,例如\n依賴注入。通用\n儲存庫服務提供了一個方便的\n方式與資料庫互動。聲明式\n授權與微調的權限系統一起使用。", - "DevelopYourSolution_Description5": "ABP 完全自動化了\n工作單元(用於資料庫連接和交易管理)、 \n異常處理、 \n驗證\n和審計日誌記錄。它提供了更多構建塊來簡化您的日常開發任務並專注於您自己的程式碼,同時創建可用於生產的\n應用程式。", + "DevelopYourSolution_Description4": "它提供了應用約定的基類,例如\n依賴注入。通用\n儲存庫服務提供了一個方便的\n方式與資料庫互動。聲明式\n授權與微調的權限系統一起使用。", + "DevelopYourSolution_Description5": "ABP 完全自動化了\n工作單元(用於資料庫連接和交易管理)、 \n異常處理、 \n驗證\n和審計日誌記錄。它提供了更多構建塊來簡化您的日常開發任務並專注於您自己的程式碼,同時創建可用於生產的\n應用程式。", "DevelopYourSolution_Description6": "您可以想像,如果您全部手動完成,該程式碼區塊會變得多麼長和複雜。", "SuiteCrudGenerationInFewSeconds": "除了手動編碼解決方案之外,您還可以使用 ABP Suite 工具在幾分鐘內建立完全可用的高級 CRUD 頁面。它將程式碼產生到您的解決方案中,以便您可以根據您的自訂要求對其進行微調。", "DeployAnywhere_Description1": "最終,您將擁有一個純 .NET 解決方案。您可以將解決方案部署到您自己的伺服器、雲端平台、Kubernetes 或您想要的任何地方。您可以根據需要部署到任意數量的伺服器。 ABP 是一個與部署環境無關的工具。", @@ -984,7 +984,7 @@ "CreatingAnEmptySolution_THEPROBLEM_Description4": "如何整合到第三方函式庫和系統?", "CreatingAnEmptySolution_THEPROBLEM_Description5": "如何設定自動化測試?", "ABPSOLUTION": "動態血壓解決方案", - "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基於領域驅動設計原則提供了一個架構良好、分層且可用於生產的啟動解決方案。該解決方案還包括每個層的預先配置單元和整合測試項目。", + "CreatingAnEmptySolution_ABPSOLUTION_Description": "ABP 基於領域驅動設計原則提供了一個架構良好、分層且可用於生產的啟動解決方案。該解決方案還包括每個層的預先配置單元和整合測試項目。", "CommonLibraries": "通用函式庫", "CommonLibraries_THEPROBLEM_Description": "您應該使用哪些函式庫來實現常見需求?軟體開發生態系統是高度動態的,這使得跟上最新的工具、函式庫、趨勢和方法變得具有挑戰性。", "CommonLibraries_ABPSOLUTION_Description": "ABP 將流行的、成熟的和最新的庫預先整合到解決方案中。您不需要花時間整合它們或使它們相互溝通。它們開箱即用,可以正常工作。", @@ -1042,12 +1042,12 @@ "Modularity_THEPROBLEM_Description": "要建立真正的模組化系統並不容易!系統的所有方面(資料庫、實體、API、UI 頁面/元件)都可以拆分為模組,並且每個模組都可以重複使用,無需其他模組。普通的 ASP.NET Core 並不會提供這樣的模組化架構。如果你需要的話,你應該從頭開始考慮。", "Modularity_ABPSOLUTION_Description": "ABP框架天生就是一個模組化的應用程式開發結構。框架中的每個功能都是為了與模組化相容而開發的。文件和指南解釋如何以標準方式開發可重複使用模組。", "SaaSMultiTenancy": "SaaS/多租戶", - "SaaSMultiTenancy_THEPROBLEM_Description": "多租戶是實施 SaaS 系統的常用方法。然而,實施一致的多租戶基礎設施可能會變得複雜。", + "SaaSMultiTenancy_THEPROBLEM_Description": "多租戶是實施 SaaS 系統的常用方法。然而,實施一致的多租戶基礎設施可能會變得複雜。", "SaaSMultiTenancy_ABPSOLUTION_Description": "ABP 框架提供了完整的多租戶基礎設施,並從業務程式碼中抽像出複雜性。您的應用程式程式碼將主要是多租戶感知的,而 ABP 框架會自動將資料庫、快取和租戶的其他詳細資訊相互隔離。它支援單一資料庫、每個租戶資料庫和混合方法。它正確配置了 Microsoft Identity 和 OpenIddict 等程式庫,這些程式庫通常不相容於多租用戶。", "Microservices": "微服務", "Microservices_THEPROBLEM_Description": "建構微服務系統需要許多基礎設施細節:對應用程式和微服務進行身份驗證和授權以及在微服務之間實現非同步訊息傳遞和同步(Rest/GRPC)通訊模式是最基本的問題。", - "Microservices_ABPSOLUTION_Description": "ABP 框架提供服務、指南和範例,協助您使用業界標準工具實施微服務解決方案。", - "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更進一步,提供了一個完整的啟動範本來啟動您的微服務解決方案。", + "Microservices_ABPSOLUTION_Description": "ABP 框架提供服務、指南和範例,協助您使用業界標準工具實施微服務解決方案。", + "Microservices_ABPSOLUTION_Description2": "ABP Commercial 甚至更進一步,提供了一個完整的啟動範本來啟動您的微服務解決方案。", "PreBuiltModules": "預建模區塊", "PreBuiltModules_THEPROBLEM_Description": "我們所有人都有相似但略有不同的業務需求。然而,我們都應該重新發明輪子,因為沒有人的程式碼可以直接在我們的解決方案中工作。它們都是更大解決方案的嵌入部分。", "PreBuiltModules_ABPSOLUTION_Description": "ABP Commercial模組提供了大量可重複使用的應用模組,例如付款、聊天、檔案管理、稽核日誌報告等。所有這些模組都可以輕鬆安裝到您的解決方案中並直接運行。我們不斷添加更多模組。", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/en.json index 36cad167bd..23176ac6ac 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Docs/Localization/Resources/en.json @@ -4,6 +4,7 @@ "Buy": "Buy", "SeeBookDetails": "See Book Details", "MasteringAbpFrameworkEBookDescription": "This book will help you gain a complete understanding of the framework and modern web application development techniques.", - "Feedback": "Feedback" + "Feedback": "Feedback", + "DocumentationDescription": "Dive into ABP's latest documentation. Find guides, API references, and best practices to help you effectively build and manage modern web apps with ABP" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en-GB.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en-GB.json index f0f5dbd496..f91152bf59 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en-GB.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en-GB.json @@ -153,6 +153,9 @@ "AndMore": "and more...", "Code": "Code", "Result": "Result", + "CommercialSupport": "Commercial Suport", + "GithubIssues": "GitHub Issues", + "TechnicalSupport": "Technical Support", "SeeTheDocumentForMoreInformation": "See the {0} document for more information", "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core", "UiFramework": "UI Framework", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index b5245caab8..c74b3d9445 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -2,6 +2,7 @@ "culture": "en", "texts": { "GetStarted": "Get Started", + "GetStarted_Page_Title": "Get Started with ABP | Quick and Easy Setup Guide", "Create": "Create", "NewProject": "New Project", "DirectDownload": "Direct Download", @@ -109,6 +110,9 @@ "EmailSMSAbstractionsWithTemplatingSupport": "Email & SMS Abstractions with Templating Support", "Localization": "Localization", "SettingManagement": "Setting Management", + "CommercialSupport": "Commercial Suport", + "GithubIssues": "GitHub Issues", + "TechnicalSupport": "Technical Support", "ExtensionMethods": "Extension Methods", "ExtensionMethodsHelpers": "Extension Methods & Helpers", "AspectOrientedProgramming": "Aspect Oriented Programming", @@ -156,7 +160,12 @@ "UiFramework": "UI Framework", "EmailAddress": "Email address", "Mobile": "Mobile", + "MobileTitle": "Select a Mobile Application", + "MobileTitleDescription" : "You can include a mobile application that is integrated to your backend.", "ReactNative": "React Native", + "AdditonalOptions" : "Additonal Options", + "CreateYourSolution" : "Create a Your Solution", + "CreateYourSolutionDescription" : "Execute the following ABP CLI command in your command-line terminal:", "Strong": "Strong", "Complete": "Complete", "BasedLayeringModel": "Based Layering Model", @@ -245,6 +254,8 @@ "DomainAndApplicationLogic": "Domain Logic & Application Logic", "Author": "Author", "Pages": "Pages", + "Purchase_Page_Title": "{0} License", + "Purchase_Page_Description": "Don't waste time reinventing the wheel. Purchase the {0} License and start coding your business today!", "PublishedOn": "Published on", "FreeEBook": "Free E-Book", "Download": "Download", @@ -255,6 +266,8 @@ "Name": "Name", "Surname": "Surname", "CompanyName": "Company name", + "CompanyAddress" : "Company Address", + "TaxNumber" : "Tax Number", "Free": "Free", "DDDEBook": "DDD E-Book", "PracticalGuideForImplementingDDD": "This book is a practical guide for implementing the Domain Driven Design with the ABP Framework.", @@ -310,11 +323,11 @@ "UIThemingExplanation": "Create reusable UI themes and layouts or use one of the pre-built UI themes.", "DataFilteringExplanation2": "Automatically filter on querying from the database to easily implement patterns like soft-delete and multi-tenancy.", "NeedHelp": "Need Help?", - "GiveYourProjectAName": "Give your project a name", - "SelectProjectType": "Select Project Type", - "SelectUIFramework": "Select UI Framework", - "SelectDatabaseProvider": "Select Database Provider", - "SelectDatabaseManagementSystem": "Select Database Management System", + "GiveYourProjectAName": "Give Your Project a Name", + "SelectProjectType": "Select a Project Type", + "SelectUIFramework": "Select a UI Framework", + "SelectDatabaseProvider": "Select a Database Provider", + "SelectDatabaseManagementSystem": "Select a Database Management System", "InstallingTheABPCLI": "Installing the ABP CLI", "CreateYourProjectNow": "Create Your Project Now", "OrderOn": "Order on {0}", @@ -349,6 +362,8 @@ "BuyOnDangDang": "Buy on DangDang", "BuyOnJD": "Buy on JD", "Discounted": "Discounted", + "MasteringAbpBookTitle": "Mastering ABP Framework", + "MasteringAbpBookDescription": "Written by the creator of ABP, this book will help you to gain a complete understanding of the ABP and web app development techniques.", "MasteringAbpFramework_Book_KeyFeatures": "Key Features", "MasteringAbpFramework_Book_Key_Features_Description_1": "Build robust, maintainable, modular, and scalable software solutions using ABP Framework.", "MasteringAbpFramework_Book_Key_Features_Description_2": "Learn how to implement SOLID principles and domain-driven design in your web applications.", @@ -383,7 +398,7 @@ "ThisBookIsInDraftStageAndIsNotCompletedYet": "This book is in draft stage and is not completed yet.", "Authors": "Authors", "MicroserviceEBook": "Microservice E-Book", - "SelectUITheme": "Select UI Theme", + "SelectUITheme": "Select a UI Theme", "LeptonXLiteTheme": "LeptonX Lite Theme", "BasicTheme": "Basic Theme", "LeptonXLiteThemeInfo": " A modern and stylish Bootstrap UI theme. Ideal if you want to have a production ready UI theme. This is the newest theme and is the default.", @@ -417,7 +432,7 @@ "CreateSolutionFolder": "Create Solution Folder", "CreateSolutionFolderOption": "Specifies if the project will be in a new folder in the output folder or directly the output folder.", "BooksPageTitle": "ABP Books", - "BooksPageDescription": "Explore ABP books to deepen your understanding and mastery of ABP Framework.", + "BooksPageDescription": "Explore ABP books to deepen your understanding and mastery of ABP.", "PackageDetailPage_NuGetPackageInstallationOptions": "There are three ways to install {0} NuGet package to your project", "PackageDetailPage_InstallingWithABPCLI": "1: Installing with the ABP CLI", "PackageDetailPage_InstallingWithABPCLIDescription1": "If you haven't installed the ABP CLI, first install by executing the following command in a command-line terminal", @@ -573,7 +588,7 @@ "CreatePostCoverInfo1": " Accepted file types : JPEG, JPG, PNG", "CreatePostCoverInfo2": " Max file size : 1 MB", "CreatePostCoverInfo3": " Image proportion : 16:9", - "CreatePostCoverInfo4": " Download a sample cover image ", + "CreatePostCoverInfo4": " Download a sample cover image ", "ThisExtensionIsNotAllowed": "This extension is not allowed.", "TheFileIsTooLarge": "The file is too large.", "GoToThePost": "Go to the Post", @@ -599,7 +614,9 @@ "CreatePostSuccessMessage": "The Post has been successfully submitted. It will be published after a review from the site admin.", "Browse": "Browse", "CoverImage": "Cover Image", - "ShareYourExperiencesWithTheABPFramework": "Share your experiences with the ABP Framework!", + "ShareYourExperiencesWithTheABPFramework": "ABP Community Articles | Read or Submit Articles", + "CommunityVideosTitle": "ABP Community Videos | Watch and Share Your Videos", + "CommunityVideosDescription": "Watch the video tutorials, get informed about ABP news & updates and share your experiences with the community.", "UpdateUserWebSiteInfo": "Example: https://johndoe.com", "UpdateUserTwitterInfo": "Example: johndoe", "UpdateUserGithubInfo": "Example: johndoe", @@ -707,14 +724,14 @@ "Discord_Page_Description_2": "ABP Community Discord Server is the place where you can showcase your creations using ABP Framework, share the tips that worked for you, catch up with the latest news and announcements about ABP Framework, just chat with community members to exchange ideas, and have fun!", "Discord_Page_Description_3": "This ABP Community Discord Server is the official one with the ABP Core Team is present on the server to monitor.", "Discord_Page_JoinToServer": "Join ABP Discord Server", - "Events_Page_MetaTitle": "ABP Community Events", - "Events_Page_MetaDescription": "The live shows, hosted by the ABP Team, are casual sessions full of community content, demos, Q&A, and discussions around what's happening in ABP.", + "Events_Page_MetaTitle": "ABP Events | Community Talks", + "Events_Page_MetaDescription": "Live ABP Community Talks hosted by the ABP Team and casual sessions full of community content, demos, Q&A, and discussions around what's happening in ABP.", "Events_Page_Title": "ABP Community Talks", "Members_Page_WritingFromUser": "Read writing from {0} on ABP Community.", "Post_Create_Page_MetaTitle": "New Community Post", "Post_Create_Page_MetaDescription": "Submit your own posts to the ABP Community platform, contributing your insights and experiences.", "Post_Create_Page_CreateNewPost": "Create New Post", - "Post_Index_Page_MetaDescription": "ABP Community's purpose is to create a contribution environment for developers who use the ABP framework.", + "Post_Index_Page_MetaDescription": "Write, read articles or watch videos about ABP and .NET. Keep informed about the latest developments.", "Layout_Title": "{0} | ABP Community", "Layout_MetaDescription": "A hub for ABP Framework, .NET, and software development. Access articles, tutorials, news, and contribute to the ABP community.", "Index_Page_CommunityIntroduction": "This is a hub for ABP Framework, .NET and software development. You can read the articles, watch the video tutorials, get informed about ABP’s development progress and ABP-related events, help other developers and share your expertise with the ABP community.", @@ -787,6 +804,9 @@ "Articles({0})": "Articles ({0})", "Videos({0})": "Videos ({0})", "LatestArticles": "Latest Articles", + "Raffles": "Raffles", + "RafflesPageTitle": "ABP Community Raffles | Join and Win ABP Raffles", + "RafflesDescription": "Check the upcoming raffles, attend them and be a winner for various ABP licences.", "RaffleHeader": "Hello ABP Community Member!", "RafflesInfo": "
This is the raffle page dedicated to show our appreciation towards you for being an active Community Member. We do ABP Community Talks ABP Dotnet Conference, attend or sponsor to the .NET-related events in which we give away some gifts.

You can follow this page to see the upcoming raffles, attend them, or see previous raffles we draw including the winners.

Thank you for being an active member! See you in the upcoming raffles.", "RafflesInfoTitle": "ABP Community Raffles", @@ -972,6 +992,8 @@ "UISupportExplanation": "ABP Framework itself is UI framework agnostic and can work with any UI framework. However, startup templates, module UIs and themes were not implemented for all UI frameworks. Check out the Getting Started document for the up-to-date list of UI options.", "MicroserviceSupport": "Does it support the microservice architecture?", "WhereCanIDownloadSourceCode": "Where can I download the source-code?", + "HowCanIUpgradeMyProjectToCommercialTemplate": "How can I upgrade my open-source project to the commercial PRO templates?", + "HowCanIUpgradeMyProjectToCommercialExplanation": "You can check out our documentation at Migrating from open source templates to upgrade your open-source projects to the paid PRO templates.", "ComputerLimitation": "How many computers can a developer login when developing ABP?", "ComputerLimitationExplanation": "We specifically permit {0} computers per individual/licensed developer. Whenever there is a need for a developer to develop ABP based products on a third machine, an e-mail should be sent to license@abp.io explaining the situation, and we will then make the appropriate allocation in our system.", "RefundPolicy": "Do you have a refund policy?", @@ -1145,8 +1167,10 @@ "PRO": "PRO", "YourAccountDetails": "Your Account Details", "OrganizationName": "Organization Name", + "MicroserviceDescription": "Discover ABP's complete solution architecture featuring multiple applications, API gateways, micro services, and databases using the latest technologies.", "AddDevelopers": "Add Developers", "StartDevelopment": "Start Development", + "ModularMonolithDescription": "Explore this ABP template designed for a layered, modular, and DDD-based solution architecture, helping you build a clean, maintainable codebase with ease.", "CreateAndRunApplicationUsingStartupTemplate": "Learn how to create and run a new web application using the ABP startup template.", "CommunityDescription2": "abp.io/community is a place where people can share ABP-related articles. Search for articles, tutorials, code samples, case studies and meet people in the same lane as you.", "UseABPSuiteExplanation": "Use ABP Suite to download the source-code of the modules and themes.", @@ -1155,6 +1179,7 @@ "SeeLess": "See Less", "LayeredSolutionStructure": "Layered Solution Structure", "LayeredSolutionStructureExplanation": "The solution is layered based on Domain Driven Design principles and patterns to isolate your business logic from the infrastructure and integrations and to maximize code maintainability and reusability. ABP Framework already provides abstractions, base classes and guides to truly implement DDD for your application.", + "SimpleMonolithDescription": "This ABP template is a simple monolith application that is designed to be a good starting point for your small to medium-sized projects.", "MultipleUIOptionsExplanation": "We love different ways to create the UI. This startup solution provides three different UI framework options for your business application.", "MultipleDatabaseOptions": "Multiple Database Options", "MultipleDatabaseOptionsExplanation": "You have two database provider options (in addition to using both in a single application). Use Entity Framework Core to work with any relational database and optionally use Dapper when you need to write low-level queries for better performance. MongoDB is another option if you need to use a document-based NoSQL database. While these providers are well-integrated, abstracted and pre-configured, you can actually interact with any database system that you can use with .NET.", @@ -1193,8 +1218,8 @@ "AddBasket": "Add to Basket", "SendTrainingRequest": "Send Training Request", "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* The English version of this document is the most up-to-date, and the English version will prevail in any dispute.", - "Pricing_Page_Title": "Pricing", - "Pricing_Page_Description": "See the different licensing plans of the ABP Platform, including free tiers. If standard plans don't fit, ask for a quote. Don't forget; we have a 30-day money-back guarantee!", + "Pricing_Page_Title": "ABP Pricing | Flexible Plans for Development Needs", + "Pricing_Page_Description": "See the licensing plans of the ABP, including free tiers. If standard plans don't fit, ask for a quote. Don't forget; we have a 30-day money-back guarantee!", "Pricing_Page_HurryUp": "Hurry Up!", "Pricing_Page_BuyLicense": "Buy a license at 2021 prices until January 16!", "Pricing_Page_ValidForExistingCustomers": "Also valid for existing customers and license renewals.", @@ -1293,12 +1318,14 @@ "TrialForumSupportIncident": "You'll have {0} forum support incidents", "Contact_Page_Title": "Contact Us", "Contact_Page_Description": "Get in touch with us for licensing, additional services, inquiries or feedback about ABP. We're here to help!", - "Demo_Page_Title": "Create a Demo", - "Demo_Page_Description": "Create a free demo to see a sample application created using the ABP startup template. Don't repeat yourself for common application requirements.", + "Demo_Page_Title": "Create a Live Demo", + "CustomProjectDescription" : "Leverage ABP's expertise for custom project development. Get solutions built to your specifications with our modular architecture and cutting-edge technology", + "Demo_Page_Description": "Create a free live demo to experience the power of ABP with our interactive demos. Explore a variety of real-world web applications.", "Discounted_Page_Title": "Discounted pricing", "Discounted_Page_Description": "Choose the features and functionality your business needs today. Buy an commercial license and create unlimited projects", + "PortingExistingProjectsDescription": "Modernize your app with ABP's project porting services. Migrate your existing .NET projects to a robust, scalable architecture using the latest technologies", "Faq_Page_Title": "Frequently Asked Questions", - "Faq_Page_Description": "Find answers to common questions about ABP Framework in our FAQ section, covering various topics and issues.", + "Faq_Page_Description": "Find answers to common questions about ABP in our FAQ section, covering various topics and issues.", "Faq_Page_SwiftCode": "SWIFT Code", "Faq_Page_BankName": "Bank Name", "Faq_Page_AccountName": "Account Name", @@ -1413,11 +1440,14 @@ "WhyUseAbpIoPlatform": "Why should I use the ABP Platform instead of creating a new solution from scratch?", "WhyUseAbpIoPlatformFaqExplanation": "See that page for a detailed explanation of why using ABP Platform has a significant advantage over doing everything yourself.", "EulaPageTitle": "End User License Agreement (EULA)", - "PrivacyPolicyPageTitle": "Privacy Policy - Cookie Policy", + "EulaPageDescription": "Review ABP's End User License Agreement (EULA) to understand the terms and conditions to use our software, including rights, restrictions, obligations.", + "PrivacyPolicyPageTitle": "Privacy Policy | Cookie Policy", + "PrivacyPolicyPageDescription": "Discover how ABP ensures your privacy and protection. Learn about our commitment to safeguarding your information and the measures we take to secure data.", "TermsConditionsPageTitle": "Terms and Conditions", + "TermsConditionsPageDescription": "Read ABP's Terms and Conditions to understand the rules, rights, and responsibilities for using our software and services.", "TrainingsPageTitle": "Training Packages", - "ModulesPageTitle": "ABP Modules", - "ModulesPageDescription": "Extend and customize your application with ABP's modular architecture, providing flexibility and scalability.", + "ModulesPageTitle": "Modules | Pre-built Modules for .NET", + "ModulesPageDescription": "Discover ABP's pre-built modules designed for .NET applications. Enhance your development workflow with framework's customizable solutions.", "Volo.AbpIo.Commercial:040001": "API Access Key is incorrect.", "GetLepton": "Get Lepton Now", "MyOrganizations_Detail_LicenseStartDate": "Start Date", @@ -1443,8 +1473,8 @@ "MVC": "MVC", "BlazorServer": "Blazor Server", "MAUI": "MAUI", - "HowItWorks_Page_Title": "How it Works?", - "HowItWorks_Page_Description": "Understand how ABP Framework works with detailed documentation, including guides and best practices.", + "HowItWorks_Page_Title": "How It Works?", + "HowItWorks_Page_Description": "Understand how ABP works with detailed documentation, including guides and best practices.", "HowItWorks_Description_Title": "What’s possible with ASP.NET Core, easier with ABP!", "HowItWorks_Description1": "ABP extends the .NET platform. So, anything you can do with a plain .NET solution is already possible with ABP. That makes it easy to get started with a low learning curve.", "HowItWorks_Description2": "Once you start learning and using ABP features, developing your software will be much more enjoyable than ever.", @@ -1654,8 +1684,8 @@ "ABPCommunity_Description2": "It is easy to share code or even re-usable libraries between ABP developers. A code snippet that works for you will also work for others. There are a lot of samples and tutorials that you can directly implement for your application.", "ABPCommunity_Description3": "When you hire a developer who worked before with the ABP architecture will immediately understand your solution and start development in a very short time.", "WhyAbpIo_Page_Title": "Why ABP Platform?", - "AbpStudio_Page_Title": "ABP Studio", - "AbpStudio_Page_Description": "Explore ABP Studio, an integrated development environment for the ABP Platform, enhancing your development process.", + "AbpStudio_Page_Title": "ABP Studio | Cross-Platform Desktop Application", + "AbpStudio_Page_Description": "ABP Studio is a cross-platform desktop application for ABP developers. It's the easiest way to get started with the ABP Platform.", "CampaignInfo": "Buy a new license or renew your existing license and get an additional 2 months at no additional cost! This offer is valid for all license plans. Ensure you take advantage of this limited-time promotion to expand your access to premium features and upgrades.", "HurryUpLastDay": "Hurry Up! Last Day: {0}", "CreatingCRUDPagesWithABPSuite": "Creating CRUD pages with ABP Suite", @@ -1756,7 +1786,7 @@ "ReturnOnInvestmentPageAbout": "This page covers the fundamental steps of developing a software solution and explains how the ABP Platform reduces your development costs at each step.", "LearnMore": "Learn More", "ReturnOfInvestment": "Return of Investment", - "ReturnOnInvestment_Description": "Learn how to reduce your development costs by more than %50.", + "ReturnOnInvestment_Description": "Learn about the return on investment when using ABP, highlighting cost-effectiveness and efficiency.", "PricingDiscount": "Save", "PricingTeamTitle": "Team", "PricingBusinessTitle": "Business", @@ -1772,6 +1802,7 @@ "TrialDemo": "Trial / Demo", "TrainingOnboarding": "Training / Onboarding", "Resellers": "Resellers", + "Reselling": "Reselling", "Others": "Others", "Characters": "Characters", "Topic": "Topic", @@ -1787,13 +1818,13 @@ "PurchaseDevelopers": "developers", "LinkExpiredMessage": "The payment link has expired! Contact us at sales@volosoft.com to update the link or click here to navigate to the contact page.", "YourAccountDisabled": "Your user account is disabled!", - "WhyChooseAbpTitle": "Why Choose ABP? | ABP.IO", + "WhyChooseAbpTitle": "Why Choose ABP?", "WhyChooseAbpDescription": "Discover ABP Commercial benefits: modular architecture, microservice ready modules, productivity tools and robust features for modern line of business web apps.", "AbpIo_Modern_Title": "ABP.IO - Modern ASP.NET Core Web Application Platform", "AbpIo_Modern_Description": "ABP Platform provides an open-source framework on top of ASP.NET Core with Angular, Blazor, and MVC UI options to create scalable line of business web apps.", "My_Organizations_Page_Title": "My Organizations", "My_Organizations_Page_Description": "View your ABP Platform organizations to manage your developers, license renewals and upgrade.", - "Members_Page_Title": "{0} - Community Member | ABP.IO", + "Members_Page_Title": "{0} - Community Member", "Members_Page_Description": "{0} is a member of the ABP Community. Check out the contributions and benefit this experience.", "Framework_Page_Title": "ABP Framework", "Framework_Page_Description": "ABP Framework is the most straightforward way to kick-start your project! Learn about ABP Framework's robust features.", @@ -1803,20 +1834,20 @@ "Mobile_Page_Description": "Develop powerful mobile applications with ABP's mobile development features, ensuring cross-platform compatibility.", "ReleasesPageTitle": "ABP Commercial Releases", "ReleasesPageDescription": "Stay updated with the latest features and updates in ABP Commercial Releases, ensuring your applications are cutting-edge.", - "GetStartedPageTitle": "Quickly get started with ABP Framework using our comprehensive guide, designed for new users.", + "GetStartedPageDescription": "Begin your journey with ABP by following our step-by-step guide. Learn how to set up your development environment, explore key features, start building apps", "Community_Page_Title": "ABP Community", "Community_Page_Description": "Connect and collaborate with other developers in the ABP Community, sharing knowledge and resources.", "Services_Page_Title": "Additional Services", "Services_Page_Description": "Get professional development and support services from the ABP Team or its solution partners, ensuring your project's success.", "Contributors_Page_Title": "Contributors of ABP", "Contributors_Page_Description": "Meet the contributors of the ABP Community, learning about their roles and contributions to the framework.", - "PackagesDetailTitle": "{0} - Package Details | ABP Framework", + "PackagesDetailTitle": "{0} - Package Details", "PackagesDetailDescription": "Get detailed information about the {0} package, including features and usage.", "Raffle_Page_Title": "Raffle - {0}", "Raffle_Page_Description": "Participate in ABP raffles and stand a chance to win exciting prizes, engaging with the ABP Community.", "Docs_Page_Title": "ABP Documentation", "Docs_Page_Description": "Access comprehensive guides and API references in the ABP Documentation, aiding in development and troubleshooting.", - "Videos_Page_Title": "{0} - Video Post | ABP.IO", + "Videos_Page_Title": "{0} - Video Post", "AskQuestionsOnSupport": "You can ask questions on ABP Support.", "MicroserviceApplicationExplanation1": "Creates a distributed solution.", "MicroserviceApplicationExplanation2": "Recommended for large teams to create complex and scalable systems.", @@ -1832,6 +1863,9 @@ "ConcurrencyCheckExplanation": "ABP provides an optimistic concurrency check mechanism to ensure data consistency in your application and prevents users access or change the same data in a database at the same time.", "NewsletterEmailFooterCreateTemplateMessage": "
Thank you for subscribing! We're thrilled to have you on board.
As a subscriber, you'll receive the latest updates on:
  • Promotional Offers:Benefit from exclusive discounts, seasonal campaigns, and special offers.
  • Events:Stay informed about our Community Talks, Webinars, and the ABP DOTNET Conferences.
  • Release Notes:Get the latest on ABP Platform releases and new products.
  • Newsletter:Enjoy our blog posts, community news, and more.

We look forward to keeping you informed and engaged.
", "NewsletterDeleteSubscriptionDescription": "
This is a confirmation that you have unsubscribed from the following email categories:
  • Promotional Offers:Discounts, seasonal campaigns, etc.
  • Events:Community Talks, Webinars, ABP DOTNET Conference, etc.
  • Release Notes:ABP Platform releases, new products, etc.
  • Newsletter:Blog posts, community news, etc.

Please note that you will still receive important transactional emails related to your account.
", - "NewsletterEmailFooterTemplateDeleteSubscription": "If you change your mind, you're always welcome to resubscribe!" + "NewsletterEmailFooterTemplateDeleteSubscription": "If you change your mind, you're always welcome to resubscribe!", + "GenerateQuote" : "Generate Quote" , + "GeneratePriceQuote": "Generate a Price Quote", + "Qa:QuestionPageTitle": "Support" } } \ No newline at end of file diff --git a/abp_io/README.md b/abp_io/README.md index 3f59187ea4..aee8ca7791 100644 --- a/abp_io/README.md +++ b/abp_io/README.md @@ -9,7 +9,7 @@ By doing so, [abp.io](https://abp.io) websites will be translated into a new lan ## How to Translate abp.io Into Your Language: -1. Install [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) command line tool. +1. Install [ABP CLI](https://abp.io/docs/latest/cli) command line tool. 2. Run the following command to generate the localization file. For example, for translating from English to French `fr`: @@ -28,5 +28,5 @@ By doing so, [abp.io](https://abp.io) websites will be translated into a new lan ## References: -* [ABP CLI Translate Command](https://docs.abp.io/en/abp/latest/Contribution/Index#using-the-abp-translate-command) +* [ABP CLI Translate Command](https://abp.io/docs/latest/contribution#using-the-abp-translate-command) * [Contribution Guide](https://github.com/abpframework/abp/blob/dev/docs/en/Contribution/Index.md) diff --git a/docs/en/Blog-Posts/2024-05 ABP Unification/post.md b/docs/en/Blog-Posts/2024-05 ABP Unification/post.md index 9da50ac06b..c09f9cc8e2 100644 --- a/docs/en/Blog-Posts/2024-05 ABP Unification/post.md +++ b/docs/en/Blog-Posts/2024-05 ABP Unification/post.md @@ -107,5 +107,4 @@ ABP Commercial license holders may wonder if any license change happens. The ans ## Last Words -With this post, we wanted to announce the changes to be made on the ABP platform to the ABP community, so don't be surprised or curious about what happened. If you have any questions or suggestions, feel free to write a comment for this blog post or send an email to info@abp.io. - +With this post, we wanted to announce the changes to be made on the ABP platform to the ABP community, so don't be surprised or curious about what happened. If you have any questions or suggestions, feel free to write a comment for this blog post or send an email to info@abp.io. \ No newline at end of file diff --git a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/0.png b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/0.png index de27c1bf4a..ccfe417544 100644 Binary files a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/0.png and b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/0.png differ diff --git a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/1.png b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/1.png index df10f1e70e..e6bb3f64b6 100644 Binary files a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/1.png and b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/1.png differ diff --git a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/2.png b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/2.png index 6df238e8f9..1bb1b0e9dd 100644 Binary files a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/2.png and b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/2.png differ diff --git a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/3.png b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/3.png index cff88fa288..5dd64da53e 100644 Binary files a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/3.png and b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/3.png differ diff --git a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/cover.jpg b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/cover.jpg index 9e0e080c56..3503744fbc 100644 Binary files a/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/cover.jpg and b/docs/en/Blog-Posts/2024-08-01-switching-between-organization-units/cover.jpg differ diff --git a/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/POST.md b/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/POST.md new file mode 100644 index 0000000000..e69fbb86ea --- /dev/null +++ b/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/POST.md @@ -0,0 +1,77 @@ +# ABP.IO Platform 8.3 Final Has Been Released! + +![](cover-image.png) + +[ABP](https://abp.io/) 8.3 stable version has been released today. + +## What's New With Version 8.3? + +All the new features were explained in detail in the [8.3 RC Announcement Post](https://blog.abp.io/abp/announcing-abp-8-3-release-candidate), so there is no need to review them again. You can check it out for more details. + +## Getting Started with 8.3 + +### Creating New Solutions + +You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli) to create new solutions. + +By default, ABP Studio uses stable versions to create solutions. Therefore, it will be creating the solution with the latest stable version, which is v8.3 for now, so you don't need to specify the version. + +### How to Upgrade an Existing Solution + +You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained: + +### Upgrading via ABP Studio + +If you are already using the ABP Studio, you can upgrade it to the latest version to align it with ABP v8.3. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info. + +After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Switch to stable** action button to instantly upgrade your solution: + +![](switch-to-stable.png) + +### Upgrading via ABP CLI + +Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version. + +If you haven't installed it yet, you can run the following command: + +```bash +dotnet tool install -g Volo.Abp.Studio.Cli +``` + +Or to update the existing CLI, you can run the following command: + +```bash +dotnet tool update -g Volo.Abp.Studio.Cli +``` + +After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows: + +```bash +abp update +``` + +> You can run this command in the root folder of your solution. + +## Migration Guides + +There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v8.2 or earlier: [ABP Version 8.3 Migration Guide](https://abp.io/docs/8.3/release-info/migration-guides/abp-8-3) + +## Community News + +### New ABP Community Posts + +As always, exciting articles have been contributed by the ABP community. I will highlight some of them here: + +* [Alper Ebicoglu](https://twitter.com/alperebicoglu) has created **three** new community articles: + * [Do You Really Need Multi-tenancy?](https://abp.io/community/articles/do-you-really-need-multitenancy-hpwn44r3) + * [What is Angular Schematics?](https://abp.io/community/articles/what-is-angular-schematics-2z4jusf5) + * [Understanding Angular AOT vs JIT Compilations](https://abp.io/community/articles/understanding-angular-aot-vs-jit-compilations-0r0a0a3f) +* [Dynamic Widget Communication](https://abp.io/community/articles/dynamic-widget-communication-uvun7q23) by [Suhaib Mousa](https://suhaibmousa.com/) +* [Introducing the Google Cloud Storage BLOB Provider](https://abp.io/community/articles/introducing-the-google-cloud-storage-blob-provider-yrt6azc0) by [Engincan Veske](https://twitter.com/EngincanVeske) +* [Switching Between Organization Units](https://abp.io/community/articles/switching-between-organization-units-i5tokpzt) by [Liming Ma](https://github.com/maliming) + +Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/submit) to the ABP Community. + +## About the Next Version + +The next feature version will be 9.0. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version. \ No newline at end of file diff --git a/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/cover-image.png b/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/cover-image.png new file mode 100644 index 0000000000..875be518af Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/cover-image.png differ diff --git a/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/switch-to-stable.png b/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/switch-to-stable.png new file mode 100644 index 0000000000..30883ebf92 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-06 v8_3_Release_Stable/switch-to-stable.png differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/banner.png b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/banner.png new file mode 100644 index 0000000000..a25baf863a Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/banner.png differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/boat-trip.jpg b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/boat-trip.jpg new file mode 100644 index 0000000000..7a9b89732a Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/boat-trip.jpg differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/collage-moscow.jpg b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/collage-moscow.jpg new file mode 100644 index 0000000000..69652780b7 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/collage-moscow.jpg differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/general-1.png b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/general-1.png new file mode 100644 index 0000000000..20c9ef5b05 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/general-1.png differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/general-collage.jpg b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/general-collage.jpg new file mode 100644 index 0000000000..459f151e25 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/general-collage.jpg differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/halil-talk.jpg b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/halil-talk.jpg new file mode 100644 index 0000000000..8d2a116524 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/halil-talk.jpg differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk-2.png b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk-2.png new file mode 100644 index 0000000000..34acae63da Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk-2.png differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk-pro-pictures.jpg b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk-pro-pictures.jpg new file mode 100644 index 0000000000..8cd11d2d11 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk-pro-pictures.jpg differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk.png b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk.png new file mode 100644 index 0000000000..caa9194c3f Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/my-talk.png differ diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/post.md b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/post.md new file mode 100644 index 0000000000..c6ac51d273 --- /dev/null +++ b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/post.md @@ -0,0 +1,87 @@ +# DotNext 2024 Conference: A Speaker’s Impressions + +![banner](banner.png) + +Last week, I had the chance of being a speaker at **DotNext 2024** in Moscow. [JUG Ru Group](https://jugru.org/en/) is arranging the DotNext Conferences since [2014](https://dotnext.ru/archive/). It's a specific conference for .NET developers held at the [MonArch Moscow Hotel](https://www.moscowmonarch.com/) on 10, 11 September 2024. This event brought together over **600 developers on-site, 200 developers online**, with around **35 speakers** delivering more than **30 talks**, making it one of the largest gatherings of the .NET community in Russia. + +![Atmosphere-1](general-1.png) + +--- + + + +## Key Highlights & Popular Sessions + +One of the standout aspects of the conference was its strong technical focus, particularly on deep-dive .NET topics. Talks covered subjects like **low-level optimizations**, architecture, performance, and platform internals. + +The conference started with Sergei Benzenko's talk "What's New in .NET 9". There are important topics like ".NET Aspire in Action", "AI-Driven Software Development", "DDD and Strategic Design" and "OAuth 2.0 User-Managed Access in ASP.NET Core with Keycloak". + +![DotNext 2024 Speakers](speakers.png) + +There were two international speakers: me and Halil Ibrahim Kalkan from ABP Core Team. Halil's topic was **Implementing Domain-Driven Design as a Pragmatic Developer**. In his session, he gave practical real world examples of bad and best practices of DDD development. + +![halil-talk](halil-talk.jpg) + + +--- + + + +## My Talk + +My presentation topic was **Building Multi-Tenant ASP.NET Core Applications** was part of this technical deep dive, and I was thrilled to see so much interest in scalable multi-tenant solutions. I generally talked about meta data in SaaS development and explained how to identify the active tenant, how to isolate the data in the same database, how to set `TenantId` automatically for new entities, how to select DB connection for the active tenant, how to change the active tenant when needed, how to disable multi-tenancy temporarily, how to handle database migrations and lastly feature system. These features are major multi-tenancy features, and you'll learn how they are implemented in an open-source web app framework. + +![My Talk](my-talk.png) + +![my-talk-2](C:\Users\alper\OneDrive\Desktop\DotNext 2024 Photos\article\my-talk-2.png) + +- My presentation 🌐https://github.com/ebicoglu/presentations/tree/main. + +- My conf profile🌐 https://dotnext.ru/en/persons/cbe6e4b2cc214a47bfc3752cdb0b1f88/ + + +![My Talk Photos](my-talk-pro-pictures.jpg) + +--- + + + +## Venue and Atmosphere + +The MonArch Moscow Hotel provided a great venue, combining spacious halls for sessions with cozy areas for networking. There were also afterparty events, which added a fun, informal touch to the otherwise highly technical environment. The setup allowed plenty of opportunities for spontaneous discussions with attendees and experts, both during and after the sessions. + +![Atmoshpere-4](general-collage.jpg) + + +--- + + + +## Boat Tour on Moscow River + +After the conference ended, the organizing team took all the speakers on a boat tour on the Moscow River. It was a great open buffet dinner in a nice boat. We had a chance to chat with other speakers. + +![Boat Trip](boat-trip.jpg) + +--- + + + +## Networking and Community + +DotNext 2024 provided an excellent platform for connecting with fellow developers and industry leaders. In addition to presentations, there were plenty of opportunities to interact with other participants, including representatives from Microsoft, Volosoft, and local Russian tech giants like Ozon and beeline. The exhibition hall was filled with partner stands, including those from PVS-Studio, Kontur, Eremex and OzonTech which offered interactive displays and demos. + +--- + + + +## Conclusion + +Overall, DotNext 2024 lived up to its reputation as a key event for .NET developers. From highly technical talks to networking opportunities, it was a fantastic experience, and I came away with new insights into both the technical and community aspects of the .NET ecosystem. If you’re a .NET developer looking to stay ahead in your field, DotNext is definitely a conference worth attending! + +Looking forward to come again! + + +Lastly, I took some beautiful photos of Moscow, here are a few... + +![Moscow Pictures](collage-moscow.jpg) \ No newline at end of file diff --git a/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/speakers.png b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/speakers.png new file mode 100644 index 0000000000..eccc1bd0b4 Binary files /dev/null and b/docs/en/Blog-Posts/2024-09-17-My-Impressions-at-DotNext-2024-Conference/speakers.png differ diff --git a/docs/en/Community-Articles/2023-11-16-Upgrading-Your-Existing-Projects-to-NET8/POST.md b/docs/en/Community-Articles/2023-11-16-Upgrading-Your-Existing-Projects-to-NET8/POST.md index c0bf748876..3ed34680c1 100644 --- a/docs/en/Community-Articles/2023-11-16-Upgrading-Your-Existing-Projects-to-NET8/POST.md +++ b/docs/en/Community-Articles/2023-11-16-Upgrading-Your-Existing-Projects-to-NET8/POST.md @@ -52,7 +52,7 @@ For example, you can update the ASP.NET Core image as follows: ```diff - FROM mcr.microsoft.com/dotnet/aspnet:7.0-bullseye-slim AS base -+ FROM mcr.microsoft.com/dotnet/aspnet:8.0 ++ FROM mcr.microsoft.com/dotnet/aspnet:9.0 ``` You can check the related images from Docker Hub and update them accordingly: diff --git a/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/POST.md b/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/POST.md index c28a80af5e..295b509029 100644 --- a/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/POST.md +++ b/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/POST.md @@ -1,6 +1,6 @@ -![book](images/book.jpg) +![book](images/cover.png) Ahead-of-Time (AOT) compilation and Just-in-Time (JIT) compilation are two different methods for compiling Angular applications. Here's a breakdown of the differences between them: diff --git a/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/book.jpg b/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/book.jpg deleted file mode 100644 index bb1b8e86dc..0000000000 Binary files a/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/book.jpg and /dev/null differ diff --git a/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/cover.png b/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/cover.png index 236eddc965..bd6d7e8cbf 100644 Binary files a/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/cover.png and b/docs/en/Community-Articles/2024-08-28-Understanding-AOT-vs-JIT/images/cover.png differ diff --git a/docs/en/Community-Articles/2024-09-18-Blazor-9-New-Features/cover.png b/docs/en/Community-Articles/2024-09-18-Blazor-9-New-Features/cover.png new file mode 100644 index 0000000000..2c1048c5ce Binary files /dev/null and b/docs/en/Community-Articles/2024-09-18-Blazor-9-New-Features/cover.png differ diff --git a/docs/en/Community-Articles/2024-09-18-Blazor-9-New-Features/post.md b/docs/en/Community-Articles/2024-09-18-Blazor-9-New-Features/post.md new file mode 100644 index 0000000000..bc73c13210 --- /dev/null +++ b/docs/en/Community-Articles/2024-09-18-Blazor-9-New-Features/post.md @@ -0,0 +1,149 @@ +# ASP.NET Core Blazor 9.0 New Features Summary 🆕 + +In this article, I'll highlight .NET 9's Blazor updates and important features for ASP.NET Core 9.0. These features are based on the latest .NET 9 Preview 7. + +![Cover](cover.png) + +## .NET MAUI Blazor Hybrid App and Web App solution template + +There's a new solution template to create .**NET MAUI native** and **Blazor web client** apps. This new template allows to choose a Blazor interactive render mode, it uses a shared Razor class library to maintain the UI's Razor components. + +For more info: + +* [learn.microsoft.com > maui blazor web app tutorial](https://learn.microsoft.com/en-us/aspnet/core/blazor/hybrid/tutorials/maui-blazor-web-app?view=aspnetcore-9.0) +* [reddit.com/r/Blazor/comments/1dabyzk/net_8_blazor_hybrid_maui_app_web_hosting/](https://www.reddit.com/r/Blazor/comments/1dabyzk/net_8_blazor_hybrid_maui_app_web_hosting/) + + + +## A new middleware: `MapStaticAssets` + +This new middleware optimizes the delivery of static assets in any ASP.NET Core app, also for Blazor. Basically it compresses assets via [Gzip](https://datatracker.ietf.org/doc/html/rfc1952), [fingerprints](https://developer.mozilla.org/docs/Glossary/Fingerprinting) for all assets at build time with a Base64 and removes caches when Visual Studio Hot Reload (development time) is in action. + +For more info: + +* [learn.microsoft.com > optimizing static web assets](https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-9.0?view=aspnetcore-8.0#optimizing-static-web-asset-delivery) +* [learn.microsoft.com > fundamentals of static files](https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/static-files?view=aspnetcore-9.0#static-asset-middleware) + + + +## Simplifying the process of querying component states at runtime + +1. Finding the component's current execution location: This can be especially helpful for component performance optimization and debugging. +2. Verifying whether the component is operating in a dynamic environment by checking: This can be useful for parts whose actions vary according to how their surroundings interact. +3. Obtaining the render mode allocated to the component: Comprehending the render mode can aid in enhancing the rendering procedure and augmenting the component's general efficiency. + +For more info: + +* [learn.microsoft.com > detect rendering location interactivity & render mode runtime](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-9.0#detect-rendering-location-interactivity-and-assigned-render-mode-at-runtime) + + + +## Detecting component's location, interactivity support and render mode + +The `ComponentBase.RendererInfo` and `ComponentBase.AssignedRenderMode` now allows to detect the following actions: + +* `RendererInfo.Name` returns the location where the component is executing +* `RendererInfo.IsInteractive` indicates if the component supports interactivity at the time of rendering. +* `ComponentBase.AssignedRenderMode` exposes the component's assigned render mode + + + +## Better server-side reconnection + +* When the previous app is disconnected and the user navigates to this app, or browser put this app in sleep mode, Blazor runs reconnection mechanism. + +* When reconnection is not successful because your server killed connection, it automatically makes a full page refresh. + +* With the new below config, you can adjust your reconnection retry time: + + * ```csharp + Blazor.start({ + circuit: { + reconnectionOptions: { + retryIntervalMilliseconds: (previousAttempts, maxRetries) => + previousAttempts >= maxRetries ? null : previousAttempts * 1000 + }, + }, + }); + ``` + + + +## Simple serialization for authentication + +The new APIs in ASP.NET make it easier to add authentication to existing Blazor Web Apps. These APIs, now part of the Blazor Web App project template, allow authentication state to be serialized on the server and deserialized in the browser, simplifying the process of integrating authentication. This removes the need for developers to manually implement or copy complex code, especially when using WebAssembly-based interactivity. + +For more info: + +- [learn.microsoft.com > blazor Identity UI individual accounts](https://learn.microsoft.com/en-us/aspnet/core/blazor/security/server/?view=aspnetcore-9.0#blazor-identity-ui-individual-accounts) +- [learn.microsoft.com > manage authentication state](https://learn.microsoft.com/en-us/aspnet/core/blazor/security/server/?view=aspnetcore-9.0#manage-authentication-state-in-blazor-web-apps) + + + +## Easily add static server-side rendering pages + +With .NET 9, adding static server-side rendering (SSR) pages to globally interactive Blazor Web Apps has become simpler. The new `[ExcludeFromInteractiveRouting]` attribute allows developers to mark specific Razor component pages that require static SSR, such as those relying on HTTP cookies and the request/response cycle. Pages annotated with this attribute exit interactive routing and trigger a full-page reload, while non-annotated pages default to interactive rendering modes like `InteractiveServer`. This approach enables flexibility between static and interactive rendering depending on the page's requirements. + +For more info: + +* [learn.microsoft.com > render-modes](https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-9.0#static-ssr-pages-in-a-globally-interactive-app) + + + +## Constructor Injection in Razor Components + +Razor components support constructor injection, allowing services like `NavigationManager` to be injected directly into a component's constructor. This can be used to manage navigation actions, such as redirecting the user upon an event like a button click. + +For more info: + +* [learn.microsoft.com> dependency-injection](https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/dependency-injection?view=aspnetcore-9.0#request-a-service-in-a-component) + + + +## Configuring WebSocket Compression and Frame-Ancestors CSP in Interactive Server Components + +By default, Interactive Server components enable WebSocket compression and set a `frame-ancestors` Content Security Policy (CSP) to `self`, restricting embedding the app in ` + + + +

+ - diff --git a/templates/app/aspnet-core/README.md b/templates/app/aspnet-core/README.md index 3ac1e6aa79..e9dc40663d 100644 --- a/templates/app/aspnet-core/README.md +++ b/templates/app/aspnet-core/README.md @@ -2,7 +2,7 @@ ## About this solution -This is a layered startup solution based on [Domain Driven Design (DDD)](https://docs.abp.io/en/abp/latest/Domain-Driven-Design) practises. All the fundamental ABP modules are already installed. +This is a layered startup solution based on [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design) practises. All the fundamental ABP modules are already installed. ### Pre-requirements @@ -52,7 +52,7 @@ It is recommended to use **two** RSA certificates, distinct from the certificate For more information, please refer to: https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios -> Also, see the [Configuring OpenIddict](https://docs.abp.io/en/abp/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information. +> Also, see the [Configuring OpenIddict](https://abp.io/docs/latest/deployment/configuring-openiddict#production-environment) documentation for more information. #### Install Client-Side Libraries @@ -108,43 +108,43 @@ This is a layered monolith application that consists of the following applicatio ### Deploying the application -Deploying an ABP application is not different than deploying any .NET or ASP.NET Core application. However, there are some topics that you should care about when you are deploying your applications. You can check ABP's [Deployment documentation](https://docs.abp.io/en/abp/latest/Deployment/Index) before deploying your application. +Deploying an ABP application is not different than deploying any .NET or ASP.NET Core application. However, there are some topics that you should care about when you are deploying your applications. You can check ABP's [Deployment documentation](https://abp.io/docs/latest/deployment) before deploying your application. ### Additional resources You can see the following resources to learn more about your solution and the ABP Framework: -* [Web Application Development Tutorial](https://docs.abp.io/en/abp/latest/Tutorials/Part-1) -* [Application Startup Template Structure](https://docs.abp.io/en/abp/latest/Startup-Templates/Application) +* [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-01?UI=Blazor&DB=EF) +* [Application Startup Template Structure](https://abp.io/docs/latest/solution-templates/layered-web-application) -* [ASP.NET Core MVC / Razor Pages: The Basic Theme](https://docs.abp.io/en/abp/latest/UI/AspNetCore/Basic-Theme) +* [ASP.NET Core MVC / Razor Pages: The Basic Theme](https://abp.io/docs/latest/framework/ui/mvc-razor-pages/basic-theme) -* [LeptonX Lite MVC UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/AspNetCore) +* [LeptonX Lite MVC UI](https://abp.io/docs/latest/ui-themes/lepton-x-lite/asp-net-core) -* [Blazor UI: Basic Theme](https://docs.abp.io/en/abp/latest/UI/Blazor/Basic-Theme?UI=BlazorServer) +* [Blazor UI: Basic Theme](https://abp.io/docs/latest/framework/ui/blazor/basic-theme?UI=BlazorServer) -* [LeptonX Lite Blazor UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/Blazor?UI=BlazorServer) +* [LeptonX Lite Blazor UI](https://abp.io/docs/latest/ui-themes/lepton-x-lite/blazor?UI=BlazorServer) -* [Blazor UI: Basic Theme](https://docs.abp.io/en/abp/latest/UI/Blazor/Basic-Theme?UI=Blazor) +* [Blazor UI: Basic Theme](https://abp.io/docs/latest/framework/ui/blazor/basic-theme?UI=Blazor) -* [LeptonX Lite Blazor UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/Blazor?UI=Blazor) +* [LeptonX Lite Blazor UI](https://abp.io/docs/latest/ui-themes/lepton-x-lite/blazor?UI=Blazor) -* [Angular UI: Basic Theme](https://docs.abp.io/en/abp/latest/UI/Angular/Basic-Theme) +* [Angular UI: Basic Theme](https://abp.io/docs/latest/framework/ui/angular/basic-theme) -* [LeptonX Lite Angular UI](https://docs.abp.io/en/abp/latest/Themes/LeptonXLite/Angular) +* [LeptonX Lite Angular UI](https://abp.io/docs/latest/ui-themes/lepton-x-lite/angular) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj index 21d363eeed..ea45843b55 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj index e8a13f5fb4..da75a2434a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj index 1338fd2305..575ab35f8e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; @@ -41,7 +41,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs index e8c1dd4646..19363e777b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs @@ -206,7 +206,7 @@ public class MyProjectNameAuthServerModule : AbpModule } app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseCors(); app.UseAuthentication(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json index 2a1a50dcab..d5bcfbd471 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-authserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj index aa508e1f5f..aa162240c1 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true @@ -14,8 +14,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyProjectNameBundleContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyProjectNameBundleContributor.cs index 8ed6208237..3eb2bbc785 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyProjectNameBundleContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyProjectNameBundleContributor.cs @@ -3,7 +3,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Client; /* Add your global styles/scripts here. - * See https://docs.abp.io/en/abp/latest/UI/Blazor/Global-Scripts-Styles to learn how to use it + * See https://abp.io/docs/latest/framework/ui/blazor/global-scripts-styles to learn how to use it */ public class MyProjectNameBundleContributor : IBundleContributor { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/Pages/Index.razor index 6b01b38267..a932861897 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/Pages/Index.razor @@ -1,4 +1,4 @@ -@page "/" +@page "/" @using Volo.Abp.MultiTenancy @inherits MyProjectNameComponentBase @inject AuthenticationStateProvider AuthenticationStateProvider @@ -10,39 +10,30 @@

Getting Started

Learn how to create and run - a - new web application using the application startup - template.

- Getting - Started + a new web application using the application startup template.

+ Getting Started

Web Application Development Tutorial

-

Learn how to build an ABP based - web - application named Acme.BookStore.

+

Learn how to build an ABP based web application named Acme.BookStore.

Explore Tutorial

Customize Lepton Theme

-

Learn how to customize LeptonX - Theme - as you wish.

+

Learn how to customize LeptonX Theme as you wish.

Customize Lepton
+
-

You can check for - similar problems and solutions, or open a - new topic to discuss your specific issue.

- Visit Support +

You can check for similar problems and solutions, or open a new topic to discuss your specific issue.

+ Visit Support
@@ -51,232 +42,44 @@
-

You can find content - on .NET development, cross-platform, ASP.NET - application templates, ABP-related news, and - more.

- Visit Blog - +

You can find content on .NET development, cross-platform, ASP.NET application templates, ABP-related news, and more.

+ Visit Blog
-
-
-
- -

A unique community platform - for ABP Lovers!

-

Explore all ABP users' - experiences with the ABP Framework, discover - articles and videos on how to use ABP, and join - raffles for a chance to win surprise gifts!

- Join ABP - Community -
- -
-
- -
-
-
-
-
More from ABP.IO
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
Latest Release Logs
-
- - - -
-
-
Video Courses
-
- - - -
-
-
Samples
-
- - - -
-
-
Books
-
- - - -
-
-
FAQ
-
- - - -
-
-
-
+
+

Let's improve your application!

+

Here are some links to help you get started:

-
-
-
-
-
-

THE OFFICIAL GUIDE

-

Mastering ABP Framework

-

Written by the creator of the ABP - Framework, this book will help you gain a complete - understanding of the framework - and modern web application development techniques.

- + +
+
+
+
+
+
Learn the ABP Framework
+

Explore the comprehensive documentation to learn how to build a modern web application.

+ See Documents
-
- +
+
+
+
Samples
+

See the example projects built with the ABP Framework.

+ All samples
- -
-
-
-
-
-
-
Follow us on Social Media
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- -
X.com
-
- - - -
- -
Discord
-
- - - -
- -
Stack Overflow
-
- - - -
- -
YouTube
-
- - - -
- -
Instagram
-
- - - -
+
+
+
ABP Community
+

Get involved with a vibrant community and become a contributor.

+ Community + Contribute +
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj index 67ce2fa924..7fc3fe773a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true true @@ -18,7 +18,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs index dad869db4d..3414c945a3 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs @@ -361,7 +361,7 @@ public class MyProjectNameBlazorModule : AbpModule } app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json index c6901f62c8..0033791b97 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0", - "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1", + "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Components/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Components/Pages/Index.razor index d0a8d0ac7b..008b98b46d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Components/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Components/Pages/Index.razor @@ -1,4 +1,4 @@ -@page "/" +@page "/" @using Volo.Abp.MultiTenancy @inherits MyProjectNameComponentBase @inject AuthenticationStateProvider AuthenticationStateProvider @@ -9,276 +9,92 @@

Getting Started

-

Learn how to create and run - a - new web application using the application startup - template.

- Getting - Started +

Learn how to create and run a new web application using the application startup template.

+ Getting Started

Web Application Development Tutorial

-

Learn how to build an ABP based - web - application named Acme.BookStore.

+

Learn how to build an ABP based web application named Acme.BookStore.

Explore Tutorial

Customize Lepton Theme

-

Learn how to customize LeptonX - Theme - as you wish.

+

Learn how to customize LeptonX Theme as you wish.

Customize Lepton
-
-
-
-
-
- -

You can check for - similar problems and solutions, or open a - new topic to discuss your specific issue.

- Visit Support - -
-
-
-
-
-
- -

You can find content - on .NET development, cross-platform, ASP.NET - application templates, ABP-related news, and - more.

- Visit Blog - -
-
+
+
+
+ +

You can check for similar problems and solutions, or open a new topic to discuss your specific issue.

+ Visit Support +
+
-

A unique community platform - for ABP Lovers!

-

Explore all ABP users' - experiences with the ABP Framework, discover - articles and videos on how to use ABP, and join - raffles for a chance to win surprise gifts!

- Join ABP - Community +

A unique community platform for ABP Lovers!

+

Explore all ABP users' experiences with the ABP Framework, discover articles and videos on how to use ABP, and join raffles for a chance to win surprise gifts!

+ Join ABP Community
-
-
-
-
-
More from ABP.IO
-
-
+
+

Let's improve your application!

+

Here are some links to help you get started:

+
-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
Latest Release Logs
-
- - - -
-
-
Video Courses
-
- - - -
-
-
Samples
-
- - - -
-
-
Books
-
- - - -
-
-
FAQ
-
- - - -
+
+
+
+
+
+
Learn the ABP Framework
+

Explore the comprehensive documentation to learn how to build a modern web application.

+ See Documents
-
-
-
-
-
-
-
-

THE OFFICIAL GUIDE

-

Mastering ABP Framework

-

Written by the creator of the ABP - Framework, this book will help you gain a complete - understanding of the framework - and modern web application development techniques.

- -
-
- -
+
+
+
Samples
+

See the example projects built with the ABP Framework.

+ All samples +
+
+
+
+
ABP Community
+

Get involved with a vibrant community and become a contributor.

+ Community + Contribute
-
-
-
-
-
-
Follow us on Social Media
+
+
+
+
ABP Blog
+

Take a look at our recently published articles.

+ See Blog +
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- -
X.com
-
- - - -
- -
Discord
-
- - - -
- -
Stack Overflow
-
- - - -
- -
YouTube
-
- - - -
- -
Instagram
-
- - - -
+
+
+
Github
+

Do you love the ABP Framework? Please give a star to support it!

+ See Open Source Framework
-
\ No newline at end of file +
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index 07d23ade47..17f6abd8b3 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true true @@ -14,7 +14,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs index e1e9a212d5..6fb111d98d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs @@ -271,7 +271,7 @@ public class MyProjectNameBlazorModule : AbpModule app.UseHttpsRedirection(); app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); app.UseAbpOpenIddictValidation(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json index c6901f62c8..0033791b97 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0", - "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1", + "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj index 524bf5e299..6817056575 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true MyCompanyName.MyProjectName.Blazor.WebApp.Client @@ -15,8 +15,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/Pages/Index.razor index 8efe9db682..b98f41c5c4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/Pages/Index.razor @@ -1,4 +1,4 @@ -@page "/" +@page "/" @inherits MyProjectNameComponentBase @inject AuthenticationStateProvider AuthenticationStateProvider @@ -8,40 +8,80 @@

Getting Started

-

Learn how to create and run - a - new web application using the application startup - template.

- Getting - Started +

Learn how to create and run a new web application using the application startup template.

+ Getting Started

Web Application Development Tutorial

-

Learn how to build an ABP based - web - application named Acme.BookStore.

+

Learn how to build an ABP based web application named Acme.BookStore.

Explore Tutorial

Customize Lepton Theme

-

Learn how to customize LeptonX - Theme - as you wish.

+

Learn how to customize LeptonX Theme as you wish.

Customize Lepton
+ +
+

Let's improve your application!

+

Here are some links to help you get started:

+
+ +
+
+
+
+
+
Learn the ABP Framework
+

Explore the comprehensive documentation to learn how to build a modern web application.

+ See Documents +
+
+
+
+
Samples
+

See the example projects built with the ABP Framework.

+ All samples +
+
+
+
+
ABP Community
+

Get involved with a vibrant community and become a contributor.

+ Community + Contribute +
+
+
+
+
+
+
ABP Blog
+

Take a look at our recently published articles.

+ See Blog +
+
+
+
+
Github
+

Do you love the ABP Framework? Please give a star to support it!

+ GitHub +
+
+
+
+
+
-

You can check for - similar problems and solutions, or open a - new topic to discuss your specific issue.

- Visit Support +

You can check for similar problems and solutions, or open a new topic to discuss your specific issue.

+ Visit Support
@@ -50,232 +90,62 @@
-

You can find content - on .NET development, cross-platform, ASP.NET - application templates, ABP-related news, and - more.

- Visit Blog - +

You can find content on .NET development, cross-platform, ASP.NET application templates, ABP-related news, and more.

+ Visit Blog
-
-
-
- -

A unique community platform - for ABP Lovers!

-

Explore all ABP users' - experiences with the ABP Framework, discover - articles and videos on how to use ABP, and join - raffles for a chance to win surprise gifts!

- Join ABP - Community -
- -
-
-
-
-
-
-
More from ABP.IO
-
-
+
+
+

+ ABP is a platform based on the open source ABP framework. It provides pre-built application modules, + rapid application development tooling, professional UI themes, premium support, and more. +

-
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
Latest Release Logs
-
- - - -
-
-
Video Courses
-
- - - -
-
-
Samples
-
- - - -
-
-
Books
-
- - - -
-
-
FAQ
-
- - - -
+
+
+
+
+ Startup Templates + Details +
-
-
-
-
-
-
-
-

THE OFFICIAL GUIDE

-

Mastering ABP Framework

-

Written by the creator of the ABP - Framework, this book will help you gain a complete - understanding of the framework - and modern web application development techniques.

- -
-
- -
+
+
+
+ Application Modules + Details +
-
-
-
-
-
-
-
Follow us on Social Media
+
+
+
+ Developer
Tools + Details +
+
+
+
+
+
+ UI Themes + Details +
+
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- -
X.com
-
- - - -
- -
Discord
-
- - - -
- -
Stack Overflow
-
- - - -
- -
YouTube
-
- - - -
- -
Instagram
-
- - - -
+
+
+
+ Support + Details +
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj index 97c5e3919e..027674e0eb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client @@ -15,8 +15,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj index 2217b369d4..5870e449f4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true true @@ -15,12 +15,12 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyProjectNameBlazorModule.cs index b9cee43363..4c85dd798a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyProjectNameBlazorModule.cs @@ -364,7 +364,7 @@ public class MyProjectNameBlazorModule : AbpModule } app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json index c6901f62c8..0033791b97 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0", - "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1", + "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj index bc76e1a579..f33ae47a95 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj @@ -1,9 +1,9 @@ - + - net8.0 + net9.0 enable true true @@ -15,7 +15,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyProjectNameBlazorModule.cs index 11e0e75f6c..d1ce178d29 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyProjectNameBlazorModule.cs @@ -274,7 +274,7 @@ public class MyProjectNameBlazorModule : AbpModule app.UseHttpsRedirection(); app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); app.UseAbpOpenIddictValidation(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json index c6901f62c8..0033791b97 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0", - "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1", + "@abp/aspnetcore.components.server.leptonxlitetheme": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index 77bc0516c5..51d53b8aa8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -3,12 +3,12 @@ - net8.0 + net9.0 enable - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs index 9fae4422f1..b7882b254a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs @@ -33,7 +33,7 @@ else app.UseHttpsRedirection(); -app.UseStaticFiles(); +app.MapStaticAssets(); app.UseAntiforgery(); app.MapRazorComponents() diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj index b33239d30c..f67e885562 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj @@ -1,10 +1,10 @@ - + Exe - net8.0 + net9.0 enable @@ -22,7 +22,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 9c9ad16b91..e1e5721334 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -26,7 +26,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj index 4a1ece449b..65c9cf59c3 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240909033138_Initial.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002085952_Initial.Designer.cs similarity index 99% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240909033138_Initial.Designer.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002085952_Initial.Designer.cs index a689a31c75..33c15a7471 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240909033138_Initial.Designer.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002085952_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20240909033138_Initial")] + [Migration("20241002085952_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -734,8 +734,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240909033138_Initial.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002085952_Initial.cs similarity index 99% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240909033138_Initial.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002085952_Initial.cs index 4616bd7351..a70646c62c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20240909033138_Initial.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20241002085952_Initial.cs @@ -287,7 +287,7 @@ namespace MyCompanyName.MyProjectName.Migrations TenantId = table.Column(type: "uniqueidentifier", nullable: true), UserId = table.Column(type: "uniqueidentifier", nullable: false), ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - IpAddresses = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IpAddresses = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), SignedIn = table.Column(type: "datetime2", nullable: false), LastAccessed = table.Column(type: "datetime2", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs index 4142a13f39..16ca944c0b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -731,8 +731,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj index 0b94c86bb1..f6f4ce8df7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -22,7 +22,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj index 5687fbeea1..0c1dca286f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index f65ab7f0a5..d49bc6b89f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -13,8 +13,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 2c0b3838e0..73033bdda1 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -188,7 +188,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule app.UseAbpRequestLocalization(); app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseCors(); app.UseAuthentication(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj index 7a34a8a7a0..54ee63cb92 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 9e2863aca4..9d28180208 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -193,7 +193,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule } app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseCors(); app.UseAuthentication(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index 2d93d3d4d5..437b7ad692 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj index bd754ffc09..3e00a31dc5 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj index 62de8f4c46..1afadc5fcb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index 1a39c32a88..cd0f2130f9 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName.Web $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; @@ -19,7 +19,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs index 777d3e8886..9c2db7971c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs @@ -313,7 +313,7 @@ public class MyProjectNameWebModule : AbpModule } app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index 2d93d3d4d5..437b7ad692 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 8b9f2572b4..0d07e2095e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName.Web $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index 3d36e378f6..bec50e72eb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -1,3 +1,4 @@ +using System; using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Extensions.DependencyInjection; @@ -225,7 +226,7 @@ public class MyProjectNameWebModule : AbpModule } app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); app.UseAbpOpenIddictValidation(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml index 0aac26c69a..c25e4f4486 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Pages/Index.cshtml @@ -1,57 +1,33 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using MyCompanyName.MyProjectName.Localization -@using Volo.Abp.Users -@model MyCompanyName.MyProjectName.Web.Pages.IndexModel -@inject IHtmlLocalizer L -@inject ICurrentUser CurrentUser -@section styles { - -} -@section scripts { - -} -

Getting Started

-

Learn how to create and run - a - new web application using the application startup - template.

- Getting - Started +

Learn how to create and run a new web application using the application startup template.

+ Getting Started

Web Application Development Tutorial

-

Learn how to build an ABP based - web - application named Acme.BookStore.

+

Learn how to build an ABP based web application named Acme.BookStore.

Explore Tutorial

Customize Lepton Theme

-

Learn how to customize LeptonX - Theme - as you wish.

+

Learn how to customize LeptonX Theme as you wish.

Customize Lepton
+
-

You can check for - similar problems and solutions, or open a - new topic to discuss your specific issue.

- Visit Support +

You can check for similar problems and solutions, or open a new topic to discuss your specific issue.

+ Visit Support
@@ -60,234 +36,24 @@
-

You can find content - on .NET development, cross-platform, ASP.NET - application templates, ABP-related news, and - more.

- Visit Blog - +

You can find content on .NET development, cross-platform, ASP.NET application templates, ABP-related news, and more.

+ Visit Blog
+
-

A unique community platform - for ABP Lovers!

-

Explore all ABP users' - experiences with the ABP Framework, discover - articles and videos on how to use ABP, and join - raffles for a chance to win surprise gifts!

- Join ABP - Community +

A unique community platform for ABP Lovers!

+

Explore all ABP users' experiences with the ABP Framework, discover articles and videos on how to use ABP, and join raffles for a chance to win surprise gifts!

+ Join ABP Community
- -
-
-
-
-
More from ABP.IO
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - -
-
-
Latest Release Logs
-
- - - -
-
-
Video Courses
-
- - - -
-
-
Samples
-
- - - -
-
-
Books
-
- - - -
-
-
FAQ
-
- - - -
-
-
-
-
-
-
-
-
-
-

THE OFFICIAL GUIDE

-

Mastering ABP Framework

-

Written by the creator of the ABP - Framework, this book will help you gain a complete - understanding of the framework - and modern web application development techniques.

- -
-
- -
-
- -
-
-
-
-
-
-
Follow us on Social Media
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
- -
X.com
-
- - - -
- -
Discord
-
- - - -
- -
Stack Overflow
-
- - - -
- -
YouTube
-
- - - -
- -
Instagram
-
- - - -
-
-
-
-
-
\ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index 2d93d3d4d5..437b7ad692 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.0" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~3.3.1" } } diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index 95fa802675..e0fa9e02d2 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -14,7 +14,7 @@
- +
diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index bf2d814e9b..6e58703e70 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -3,13 +3,13 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 8f96ce08ce..025c56a9d9 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -15,7 +15,7 @@ - +
diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj index 5804301f7e..0c6b8e7553 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 enable @@ -22,8 +22,8 @@ - - + + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index f0d1a185e2..e0d0ad61cb 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -14,7 +14,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 3471f07d52..deb2ee12fe 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -16,7 +16,7 @@ - + all diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj index 58ecff2be2..8b3cff7e1b 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj @@ -3,18 +3,12 @@ - net8.0 + net9.0 enable - Exe - $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; - MyCompanyName.MyProjectName - true - true - true - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Program.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Program.cs index f4c388685f..a6e766fff3 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Program.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/Program.cs @@ -3,7 +3,9 @@ using MyCompanyName.MyProjectName; using Volo.Abp.AspNetCore.TestBase; var builder = WebApplication.CreateBuilder(); -await builder.RunAbpModuleAsync(); + +builder.Environment.ContentRootPath = GetWebProjectContentRootPathHelper.Get("MyCompanyName.MyProjectName.Web.csproj"); +await builder.RunAbpModuleAsync(applicationName: "MyCompanyName.MyProjectName.Web" ); public partial class Program { diff --git a/templates/app/react-native/.eslintrc.json b/templates/app/react-native/.eslintrc.json deleted file mode 100644 index 6702dcefd6..0000000000 --- a/templates/app/react-native/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": ["airbnb", "prettier", "prettier/react"], - "parser": "babel-eslint", - "env": { - "jest": true - }, - "rules": { - "no-use-before-define": 0, - "react/jsx-filename-extension": 0, - "react/prop-types": ["error", { "ignore": ["navigation", "children"] }], - "react/require-default-props": 0, - "react/jsx-props-no-spreading": 0, - "react/forbid-prop-types": 0, - "import/prefer-default-export": 0, - "comma-dangle": 0, - "no-underscore-dangle": 1, - "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }], - "no-param-reassign": 0, - "operator-linebreak": 0, - "global-require": 0 - }, - "globals": { - "fetch": false - } -} diff --git a/templates/app/react-native/.expo-shared/assets.json b/templates/app/react-native/.expo-shared/assets.json deleted file mode 100644 index 1e6decfbb5..0000000000 --- a/templates/app/react-native/.expo-shared/assets.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true, - "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true -} diff --git a/templates/app/react-native/.gitignore b/templates/app/react-native/.gitignore deleted file mode 100644 index ec8a36a257..0000000000 --- a/templates/app/react-native/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules/ -.expo/ -dist/ -npm-debug.* -*.jks -*.p8 -*.p12 -*.key -*.mobileprovision -*.orig.* -web-build/ - -# macOS -.DS_Store diff --git a/templates/app/react-native/.prettierrc b/templates/app/react-native/.prettierrc deleted file mode 100644 index 471fac2824..0000000000 --- a/templates/app/react-native/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "trailingComma": "all", - "singleQuote": true, - "jsxSingleQuote": false, - "printWidth": 80, - "semi": true, - "jsxBracketSameLine": true, - "arrowParens": "avoid" -} diff --git a/templates/app/react-native/.vscode/extensions.json b/templates/app/react-native/.vscode/extensions.json deleted file mode 100644 index d7df89c9cd..0000000000 --- a/templates/app/react-native/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"] -} diff --git a/templates/app/react-native/App.js b/templates/app/react-native/App.js deleted file mode 100644 index 6505569f2b..0000000000 --- a/templates/app/react-native/App.js +++ /dev/null @@ -1,101 +0,0 @@ -import { NavigationContainer } from '@react-navigation/native'; -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import i18n from 'i18n-js'; -import { NativeBaseProvider } from 'native-base'; -import React, { useEffect, useMemo, useState } from 'react'; -import { enableScreens } from 'react-native-screens'; -import { Provider } from 'react-redux'; -import { PersistGate } from 'redux-persist/integration/react'; -import { getEnvVars } from './Environment'; -import Loading from './src/components/Loading/Loading'; -import { LocalizationContext } from './src/contexts/LocalizationContext'; -import { initAPIInterceptor } from './src/interceptors/APIInterceptor'; -import AuthNavigator from './src/navigators/AuthNavigator'; -import DrawerNavigator from './src/navigators/DrawerNavigator'; -import { persistor, store } from './src/store'; -import AppActions from './src/store/actions/AppActions'; -import PersistentStorageActions from './src/store/actions/PersistentStorageActions'; -import { createLanguageSelector } from './src/store/selectors/AppSelectors'; -import { createTokenSelector } from './src/store/selectors/PersistentStorageSelectors'; -import { connectToRedux } from './src/utils/ReduxConnect'; -import { isTokenValid } from './src/utils/TokenUtils'; - -const Stack = createNativeStackNavigator(); - -const { localization } = getEnvVars(); - -i18n.defaultSeparator = '::'; - -const cloneT = i18n.t; -i18n.t = (key, ...args) => { - if (key.slice(0, 2) === '::') { - key = localization.defaultResourceName + key; - } - return cloneT(key, ...args); -}; - -enableScreens(); -initAPIInterceptor(store); - -export default function App() { - const language = createLanguageSelector()(store.getState()); - const [isReady, setIsReady] = useState(false); - - const localizationContextValue = useMemo( - () => ({ - t: i18n.t, - locale: (language || {}).cultureName, - }), - [language] - ); - - useEffect(() => { - store.dispatch( - AppActions.fetchAppConfigAsync({ - callback: () => setIsReady(true), - showLoading: true, - }) - ); - }, []); - - return ( - - - - - {isReady ? ( - - - - ) : null} - - - - - - ); -} - -function AppContainer({token, setToken}) { - const isValid = useMemo(() => isTokenValid(token), [token]); - - useEffect(() => { - if (!isValid && token && token.access_token) { - setToken({}) - } - }, [isValid]); - - - return isValid ? : -} - - -const ConnectedAppContainer = connectToRedux({ - component: AppContainer, - stateProps: (state) => ({ - token: createTokenSelector()(state), - }), - dispatchProps: { - setToken: PersistentStorageActions.setToken, - }, -}); diff --git a/templates/app/react-native/Environment.js b/templates/app/react-native/Environment.js deleted file mode 100644 index a4a23995f7..0000000000 --- a/templates/app/react-native/Environment.js +++ /dev/null @@ -1,32 +0,0 @@ -const yourIP = 'localhost'; // See the docs https://docs.abp.io/en/abp/latest/Getting-Started-React-Native?Tiered=No -const port = 44305; -const apiUrl = `http://${yourIP}:${port}`; -const ENV = { - dev: { - apiUrl: apiUrl, - oAuthConfig: { - issuer: apiUrl, - clientId: 'MyProjectName_App', - scope: 'offline_access MyProjectName', - }, - localization: { - defaultResourceName: 'MyProjectName', - }, - }, - prod: { - apiUrl: 'http://localhost:44305', - oAuthConfig: { - issuer: 'http://localhost:44305', - clientId: 'MyProjectName_App', - scope: 'offline_access MyProjectName', - }, - localization: { - defaultResourceName: 'MyProjectName', - }, - }, -}; - -export const getEnvVars = () => { - // eslint-disable-next-line no-undef - return __DEV__ ? ENV.dev : ENV.prod; -}; diff --git a/templates/app/react-native/app.json b/templates/app/react-native/app.json deleted file mode 100644 index 5b78afa519..0000000000 --- a/templates/app/react-native/app.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "expo": { - "name": "MyProjectName", - "slug": "MyProjectName", - "version": "1.0.0", - "orientation": "portrait", - "icon": "./assets/icon.png", - "splash": { - "image": "./assets/splash.png", - "resizeMode": "cover", - "backgroundColor": "#38003c" - }, - "updates": { - "fallbackToCacheTimeout": 0 - }, - "assetBundlePatterns": ["**/*"], - "ios": { - "supportsTablet": true, - "bundleIdentifier": "com.MyCompanyName.MyProjectName", - "buildNumber": "1.0.0" - }, - "android": { - "package": "com.MyCompanyName.MyProjectName", - "versionCode": 1, - "adaptiveIcon": { - "foregroundImage": "./assets/adaptive-icon.png", - "backgroundColor": "#FFFFFF" - } - }, - "web": { - "favicon": "./assets/icon.png" - } - } -} diff --git a/templates/app/react-native/assets/adaptive-icon.png b/templates/app/react-native/assets/adaptive-icon.png deleted file mode 100644 index 03d6f6b6c6..0000000000 Binary files a/templates/app/react-native/assets/adaptive-icon.png and /dev/null differ diff --git a/templates/app/react-native/assets/avatar.png b/templates/app/react-native/assets/avatar.png deleted file mode 100644 index 8a1daa0121..0000000000 Binary files a/templates/app/react-native/assets/avatar.png and /dev/null differ diff --git a/templates/app/react-native/assets/icon.png b/templates/app/react-native/assets/icon.png deleted file mode 100644 index 528c8711d7..0000000000 Binary files a/templates/app/react-native/assets/icon.png and /dev/null differ diff --git a/templates/app/react-native/assets/logo.png b/templates/app/react-native/assets/logo.png deleted file mode 100644 index b9b1e36c50..0000000000 Binary files a/templates/app/react-native/assets/logo.png and /dev/null differ diff --git a/templates/app/react-native/assets/splash.png b/templates/app/react-native/assets/splash.png deleted file mode 100644 index 0d5f0ec026..0000000000 Binary files a/templates/app/react-native/assets/splash.png and /dev/null differ diff --git a/templates/app/react-native/babel.config.js b/templates/app/react-native/babel.config.js deleted file mode 100644 index d715221e05..0000000000 --- a/templates/app/react-native/babel.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = function(api) { - api.cache(true); - return { - presets: ['babel-preset-expo'], - plugins: ['react-native-reanimated/plugin'], - }; -}; \ No newline at end of file diff --git a/templates/app/react-native/package.json b/templates/app/react-native/package.json deleted file mode 100644 index 9fbe23ea4b..0000000000 --- a/templates/app/react-native/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "myprojectname", - "version": "1.0.0", - "main": "node_modules/expo/AppEntry.js", - "scripts": { - "start": "expo start --port 19000", - "android": "expo start --android", - "ios": "expo start --ios", - "web": "expo start --web", - "eject": "expo eject" - }, - "dependencies": { - "@react-native-async-storage/async-storage": "1.18.2", - "@react-navigation/drawer": "^6.5.4", - "@react-navigation/native": "^6.1.0", - "@react-navigation/native-stack": "^6.9.5", - "@reduxjs/toolkit": "^1.7.1", - "axios": "~1.2.1", - "expo": "^49.0.0", - "expo-status-bar": "~1.6.0", - "formik": "^2.2.9", - "i18n-js": "^3.8.0", - "native-base": "^3.4.25", - "prop-types": "^15.8.1", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-native": "0.72.10", - "react-native-chart-kit": "^6.11.0", - "react-native-gesture-handler": "~2.12.0", - "react-native-reanimated": "~3.3.0", - "react-native-safe-area-context": "4.6.3", - "react-native-screens": "~3.22.0", - "react-native-svg": "13.9.0", - "react-native-web": "~0.19.6", - "react-redux": "^8.0.5", - "redux-persist": "^6.0.0", - "redux-saga": "^1.2.1", - "yup": "^0.32.11" - }, - "devDependencies": { - "@babel/core": "^7.19.3" - }, - "private": true -} diff --git a/templates/app/react-native/src/api/API.js b/templates/app/react-native/src/api/API.js deleted file mode 100644 index dc604f62e9..0000000000 --- a/templates/app/react-native/src/api/API.js +++ /dev/null @@ -1,11 +0,0 @@ -import axios from 'axios'; -import { getEnvVars } from '../../Environment'; - -const { apiUrl } = getEnvVars(); - -const axiosInstance = axios.create({ - baseURL: apiUrl, - withCredentials: false -}); - -export default axiosInstance; diff --git a/templates/app/react-native/src/api/AccountAPI.js b/templates/app/react-native/src/api/AccountAPI.js deleted file mode 100644 index ddf49579d3..0000000000 --- a/templates/app/react-native/src/api/AccountAPI.js +++ /dev/null @@ -1,62 +0,0 @@ -import api from './API'; -import { getEnvVars } from '../../Environment'; - -const { oAuthConfig } = getEnvVars(); - -getLoginData = (username, password) => { - const formData = { - grant_type: 'password', - scope: oAuthConfig.scope, - username: username, - password: password, - client_id: oAuthConfig.clientId, - }; - - if (oAuthConfig.clientSecret) - formData['client_secret'] = oAuthConfig.clientSecret; - - return Object.entries(formData) - .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) - .join('&'); -}; - -export const login = ({ username, password }) => - api({ - method: 'POST', - url: '/connect/token', - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, - data: getLoginData(username, password), - baseURL: oAuthConfig.issuer, - }).then(({ data }) => data); - -export const Logout = ( - input = { client_id: '', token: '', token_type_hint: '' }, -) => { - if (!input.token_type_hint) { - input.token_type_hint = 'access_token'; - } - - const _data = Object.entries(input) - .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) - .join('&'); - - return api({ - method: 'POST', - url: '/connect/revocat', - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, - data: _data, - baseURL: oAuthConfig.issuer, - }).then(({ data }) => data); -}; - -export const getTenant = tenantName => - api({ - method: 'GET', - url: `/api/abp/multi-tenancy/tenants/by-name/${tenantName}`, - }).then(({ data }) => data); - -export const getTenantById = tenantId => - api({ - method: 'GET', - url: `/api/abp/multi-tenancy/tenants/by-id/${tenantId}`, - }).then(({ data }) => data); diff --git a/templates/app/react-native/src/api/ApplicationConfigurationAPI.js b/templates/app/react-native/src/api/ApplicationConfigurationAPI.js deleted file mode 100644 index 96fcbea5cd..0000000000 --- a/templates/app/react-native/src/api/ApplicationConfigurationAPI.js +++ /dev/null @@ -1,30 +0,0 @@ -import i18n from 'i18n-js'; -import api from './API'; - -export const getApplicationConfiguration = () => - api - .get('/api/abp/application-configuration') - .then(({ data }) => data) - .then(async config => { - const { cultureName } = config.localization.currentCulture; - i18n.locale = cultureName; - - Object.keys(config.localization.values).forEach(key => { - const resource = config.localization.values[key]; - - if (typeof resource !== 'object') return; - - Object.keys(resource).forEach(key2 => { - if (/'{|{/g.test(resource[key2])) { - resource[key2] = resource[key2].replace(/'{|{/g, '{{').replace(/}'|}/g, '}}'); - } - }); - }); - - i18n.translations[cultureName] = { - ...config.localization.values, - ...(i18n.translations[cultureName] || {}), - }; - - return config; - }); diff --git a/templates/app/react-native/src/api/IdentityAPI.js b/templates/app/react-native/src/api/IdentityAPI.js deleted file mode 100644 index 9ae81ad2b5..0000000000 --- a/templates/app/react-native/src/api/IdentityAPI.js +++ /dev/null @@ -1,27 +0,0 @@ -import api from './API'; - - -export const getAllRoles = () => api.get('/api/identity/roles/all').then(({ data }) => data.items); - -export const getUserRoles = id => - api.get(`/api/identity/users/${id}/roles`).then(({ data }) => data.items); - -export const getUsers = (params = { maxResultCount: 10, skipCount: 0 }) => - api.get('/api/identity/users', { params }).then(({ data }) => data); - -export const getUserById = id => api.get(`/api/identity/users/${id}`).then(({ data }) => data); - -export const createUser = body => api.post('/api/identity/users', body).then(({ data }) => data); - -export const updateUser = (body, id) => - api.put(`/api/identity/users/${id}`, body).then(({ data }) => data); - -export const removeUser = id => api.delete(`/api/identity/users/${id}`); - -export const getProfileDetail = () => api.get('/api/account/my-profile').then(({ data }) => data); - -export const updateProfileDetail = body => - api.put('/api/account/my-profile', body).then(({ data }) => data); - -export const changePassword = body => - api.post('/api/account/my-profile/change-password', body).then(({ data }) => data); diff --git a/templates/app/react-native/src/api/TenantManagementAPI.js b/templates/app/react-native/src/api/TenantManagementAPI.js deleted file mode 100644 index f60ed96450..0000000000 --- a/templates/app/react-native/src/api/TenantManagementAPI.js +++ /dev/null @@ -1,21 +0,0 @@ -import api from './API'; - -export function getTenants(params = {}) { - return api.get('/api/multi-tenancy/tenants', { params }).then(({ data }) => data); -} - -export function createTenant(body) { - return api.post('/api/multi-tenancy/tenants', body).then(({ data }) => data); -} - -export function getTenantById(id) { - return api.get(`/api/multi-tenancy/tenants/${id}`).then(({ data }) => data); -} - -export function updateTenant(body, id) { - return api.put(`/api/multi-tenancy/tenants/${id}`, body).then(({ data }) => data); -} - -export function removeTenant(id) { - return api.delete(`/api/multi-tenancy/tenants/${id}`).then(({ data }) => data); -} diff --git a/templates/app/react-native/src/components/AddIcon/AddIcon.js b/templates/app/react-native/src/components/AddIcon/AddIcon.js deleted file mode 100644 index b4cc26f36f..0000000000 --- a/templates/app/react-native/src/components/AddIcon/AddIcon.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import { Icon } from 'native-base'; -import React from 'react'; - -export default function AddIcon({ onPress, ...iconProps }) { - return ( - - ); -} diff --git a/templates/app/react-native/src/components/DataList/DataList.js b/templates/app/react-native/src/components/DataList/DataList.js deleted file mode 100644 index 9dce6d9562..0000000000 --- a/templates/app/react-native/src/components/DataList/DataList.js +++ /dev/null @@ -1,143 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import { useFocusEffect } from '@react-navigation/native'; -import i18n from 'i18n-js'; -import { Box, Center, FlatList, Icon, Input, Spinner, Text } from 'native-base'; -import PropTypes from 'prop-types'; -import React, { forwardRef, useCallback, useEffect, useState } from 'react'; -import { StyleSheet, View } from 'react-native'; -import LoadingActions from '../../store/actions/LoadingActions'; -import { debounce } from '../../utils/Debounce'; -import { connectToRedux } from '../../utils/ReduxConnect'; -import LoadingButton from '../LoadingButton/LoadingButton'; - -function DataList({ - navigation, - fetchFn, - render, - maxResultCount = 15, - debounceTime = 350, - ...props -}) { - const [records, setRecords] = useState([]); - const [totalCount, setTotalCount] = useState(0); - const [loading, setLoading] = useState(false); - const [searchLoading, setSearchLoading] = useState(false); - const [buttonLoading, setButtonLoading] = useState(false); - const [skipCount, setSkipCount] = useState(0); - const [filter, setFilter] = useState(''); - - const fetch = (skip = 0, isRefreshingActive = true) => { - if (isRefreshingActive) setLoading(true); - return fetchFn({ filter, maxResultCount, skipCount: skip }) - .then(({ items, totalCount: total }) => { - setTotalCount(total); - setRecords(skip ? [...records, ...items] : items); - setSkipCount(skip); - }) - .finally(() => { - if (isRefreshingActive) setLoading(false); - }); - }; - - const fetchPartial = () => { - if (loading || records.length === totalCount) return; - - setButtonLoading(true); - fetch(skipCount + maxResultCount, false).finally(() => - setButtonLoading(false) - ); - }; - - useFocusEffect( - useCallback(() => { - setSkipCount(0); - fetch(0, false); - }, []) - ); - - useEffect(() => { - function searchFetch() { - setSearchLoading(true); - return fetch(0, false).finally(() => - setTimeout(() => setSearchLoading(false), 150) - ); - } - debounce(searchFetch, debounceTime)(); - }, [filter]); - - return ( -
- - - ) : ( - - ) - } - /> - ( - <> - {render(...args)} - {args.index + 1 === skipCount + maxResultCount && - totalCount > records.length ? ( - - fetchPartial()} - > - {i18n.t('AbpUi::LoadMore')} - - - ) : null} - - )} - {...props} - /> - -
- ); -} - -DataList.propTypes = { - ...FlatList.propTypes, - fetchFn: PropTypes.func.isRequired, - render: PropTypes.func.isRequired, - maxResultCount: PropTypes.number, - debounceTime: PropTypes.number, -}; - -const styles = StyleSheet.create({ - container: { flex: 1 }, - list: {}, -}); - -const Forwarded = forwardRef((props, ref) => ( - -)); - -export default connectToRedux({ - component: Forwarded, - dispatchProps: { - startLoading: LoadingActions.start, - stopLoading: LoadingActions.stop, - }, -}); diff --git a/templates/app/react-native/src/components/DrawerContent/DrawerContent.js b/templates/app/react-native/src/components/DrawerContent/DrawerContent.js deleted file mode 100644 index 4f7792fab5..0000000000 --- a/templates/app/react-native/src/components/DrawerContent/DrawerContent.js +++ /dev/null @@ -1,104 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import Constants from 'expo-constants'; -import i18n from 'i18n-js'; -import { List, Text, View } from 'native-base'; -import PropTypes from 'prop-types'; -import React from 'react'; -import { Image, StyleSheet } from 'react-native'; -import { SafeAreaView } from 'react-native-safe-area-context'; -import { withPermission } from '../../hocs/PermissionHOC'; - -const screens = { - HomeStack: { label: '::Menu:Home', iconName: 'home' }, - UsersStack: { - label: 'AbpIdentity::Users', - iconName: 'people', - requiredPolicy: 'AbpIdentity.Users', - }, - TenantsStack: { - label: 'AbpTenantManagement::Tenants', - iconName: 'book-outline', - requiredPolicy: 'AbpTenantManagement.Tenants', - }, - SettingsStack: { label: 'AbpSettingManagement::Settings', iconName: 'cog' }, -}; - -const ListItemWithPermission = withPermission(List.Item); - -function DrawerContent({ - navigation, - state: { routeNames, index: currentScreenIndex }, -}) { - const navigate = (screen) => { - navigation.navigate(screen); - navigation.closeDrawer(); - }; - - return ( - - - - - - - {routeNames.map((name) => ( - navigate(name)} - my="0" - > - - {i18n.t(screens[name].label)} - - ))} - - - - - © MyProjectName - - - v{Constants.expoConfig.version} - - - - ); -} - -const styles = StyleSheet.create({ - container: { - flexGrow: 1, - }, - logo: { - marginTop: 20, - marginBottom: 15, - }, - headerView: { - alignItems: 'center', - }, - footer: { - backgroundColor: '#eee', - flexDirection: 'row', - justifyContent: 'space-between', - }, - copyRight: { - margin: 15, - }, - version: { - margin: 15, - }, -}); - -DrawerContent.propTypes = { - state: PropTypes.object.isRequired, -}; - -export default DrawerContent; diff --git a/templates/app/react-native/src/components/FormButtons/FormButtons.js b/templates/app/react-native/src/components/FormButtons/FormButtons.js deleted file mode 100644 index d844f7747a..0000000000 --- a/templates/app/react-native/src/components/FormButtons/FormButtons.js +++ /dev/null @@ -1,78 +0,0 @@ -import i18n from 'i18n-js'; -import { Button, Text } from 'native-base'; -import PropTypes from 'prop-types'; -import React, { forwardRef } from 'react'; -import { Alert, StyleSheet, View } from 'react-native'; - -function FormButtons({ - submit, - remove, - removeMessage, - isRemoveDisabled, - isSubmitDisabled, - isShowRemove = false, - isShowSubmit = true, -}) { - const confirmation = () => { - Alert.alert( - i18n.t('AbpUi::AreYouSure'), - removeMessage, - [ - { - text: i18n.t('AbpUi::Cancel'), - style: 'cancel', - }, - { text: i18n.t('AbpUi::Yes'), onPress: () => remove() }, - ], - { cancelable: true }, - ); - }; - - return ( - - {isShowRemove ? ( - - ) : null} - {isShowSubmit ? ( - - ) : null} - - ); -} - -FormButtons.propTypes = { - submit: PropTypes.func.isRequired, - remove: PropTypes.func, - removeMessage: PropTypes.string, - style: PropTypes.any, - isRemoveDisabled: PropTypes.bool, - isSubmitDisabled: PropTypes.bool, - isShowRemove: PropTypes.bool, - isShowSubmit: PropTypes.bool, -}; - -const styles = StyleSheet.create({ - container: { - width: '100%', - justifyContent: 'center', - alignItems: 'center', - position: 'absolute', - bottom: 0, - flexDirection: 'row', - }, -}); - -const Forwarded = forwardRef((props, ref) => ); - -export default Forwarded; diff --git a/templates/app/react-native/src/components/FormButtons/index.js b/templates/app/react-native/src/components/FormButtons/index.js deleted file mode 100644 index bf8864e7e0..0000000000 --- a/templates/app/react-native/src/components/FormButtons/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as FormButtons } from './FormButtons'; diff --git a/templates/app/react-native/src/components/HamburgerIcon/HamburgerIcon.js b/templates/app/react-native/src/components/HamburgerIcon/HamburgerIcon.js deleted file mode 100644 index 2d165f8249..0000000000 --- a/templates/app/react-native/src/components/HamburgerIcon/HamburgerIcon.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import { Icon } from 'native-base'; -import React from 'react'; -import { Platform } from 'react-native'; - -export default function HamburgerIcon({ navigation, ...iconProps }) { - return ( - navigation.openDrawer()} - as={Ionicons} - name={Platform.OS ? 'ios-menu' : 'md-menu'} - size="8" - marginLeft={2} - {...iconProps} - /> - ); -} diff --git a/templates/app/react-native/src/components/Loading/Loading.js b/templates/app/react-native/src/components/Loading/Loading.js deleted file mode 100644 index bd8f5ff180..0000000000 --- a/templates/app/react-native/src/components/Loading/Loading.js +++ /dev/null @@ -1,62 +0,0 @@ -import { Spinner, View } from 'native-base'; -import PropTypes from 'prop-types'; -import React, { forwardRef } from 'react'; -import { StyleSheet } from 'react-native'; -import { - createLoadingSelector, - createOpacitySelector -} from '../../store/selectors/LoadingSelectors'; -import { connectToRedux } from '../../utils/ReduxConnect'; - -function Loading({ loading, opacity }) { - return loading ? ( - - - - - ) : null; -} -const Forwarded = forwardRef((props, ref) => ); - -const backdropStyle = { - position: 'absolute', - top: 0, - left: 0, - width: '100%', - height: '100%', - backgroundColor: '#fff', -}; - -export const styles = StyleSheet.create({ - container: { - ...backdropStyle, - backgroundColor: 'transparent', - // zIndex: activeTheme.zIndex.indicator, // TODO - alignItems: 'center', - justifyContent: 'center', - }, - backdrop: backdropStyle, - spinner: { - // color: activeTheme.brandPrimary, // TODO - fontSize: 100, - }, -}); - -Loading.propTypes = { - style: PropTypes.objectOf(PropTypes.any), - loading: PropTypes.bool, - opacity: PropTypes.number, -}; - -export default connectToRedux({ - component: Forwarded, - stateProps: state => ({ - loading: createLoadingSelector()(state), - opacity: createOpacitySelector()(state), - }), -}); diff --git a/templates/app/react-native/src/components/LoadingButton/LoadingButton.js b/templates/app/react-native/src/components/LoadingButton/LoadingButton.js deleted file mode 100644 index d36c7fc68c..0000000000 --- a/templates/app/react-native/src/components/LoadingButton/LoadingButton.js +++ /dev/null @@ -1,22 +0,0 @@ -import { Button, Spinner } from 'native-base'; -import PropTypes from 'prop-types'; -import React from 'react'; -import { StyleSheet } from 'react-native'; - -export default function LoadingButton({ loading = false, style, children, ...props }) { - return ( - - ); -} - -LoadingButton.propTypes = { - ...Button.propTypes, - loading: PropTypes.bool.isRequired, -}; - -const styles = StyleSheet.create({ - button: { marginTop: 20, marginBottom: 30, height: 30 }, -}); \ No newline at end of file diff --git a/templates/app/react-native/src/components/TenantBox/TenantBox.js b/templates/app/react-native/src/components/TenantBox/TenantBox.js deleted file mode 100644 index 939efb3c88..0000000000 --- a/templates/app/react-native/src/components/TenantBox/TenantBox.js +++ /dev/null @@ -1,143 +0,0 @@ -import i18n from 'i18n-js'; -import { Box, Button, FormControl, Input, Text } from 'native-base'; -import PropTypes from 'prop-types'; -import React, { forwardRef, useState } from 'react'; -import { Alert, StyleSheet, View } from 'react-native'; -import { getTenant } from '../../api/AccountAPI'; -import PersistentStorageActions from '../../store/actions/PersistentStorageActions'; -import { createTenantSelector } from '../../store/selectors/PersistentStorageSelectors'; -import { connectToRedux } from '../../utils/ReduxConnect'; - -function TenantBox({ - tenant = {}, - setTenant, - showTenantSelection, - toggleTenantSelection, -}) { - const [tenantName, setTenantName] = useState(tenant.name); - - const findTenant = () => { - if (!tenantName) { - setTenant({}); - toggleTenantSelection(); - return; - } - - getTenant(tenantName).then(({ success, ...data }) => { - if (!success) { - Alert.alert( - i18n.t('AbpUi::Error'), - i18n.t('AbpUiMultiTenancy::GivenTenantIsNotAvailable', { - 0: tenantName, - }), - [{ text: i18n.t('AbpUi::Ok') }] - ); - return; - } - setTenant(data); - toggleTenantSelection(); - }); - }; - - return ( - <> - - - - {i18n.t('AbpUiMultiTenancy::Tenant')} - - - {tenant.name - ? tenant.name - : i18n.t('AbpUiMultiTenancy::NotSelected')} - - - - - {showTenantSelection ? ( - - - - {i18n.t('AbpUiMultiTenancy::Name')} - - - - - {i18n.t('AbpUiMultiTenancy::SwitchTenantHint')} - - - - - - - ) : null} - - ); -} - -TenantBox.propTypes = { - setTenant: PropTypes.func.isRequired, - showTenantSelection: PropTypes.bool.isRequired, - toggleTenantSelection: PropTypes.func.isRequired, - tenant: PropTypes.object.isRequired, -}; - -const styles = StyleSheet.create({ - button: { marginTop: 20, width: '49%' }, - - tenant: { color: '#777' }, - title: { - marginRight: 10, - fontSize: 13, - fontWeight: '600', - textTransform: 'uppercase', - }, - hint: { color: '#bbb', textAlign: 'left' }, -}); - -const Forwarded = forwardRef((props, ref) => ( - -)); - -export default connectToRedux({ - component: Forwarded, - dispatchProps: { - setTenant: PersistentStorageActions.setTenant, - }, - stateProps: (state) => ({ - tenant: createTenantSelector()(state), - }), -}); \ No newline at end of file diff --git a/templates/app/react-native/src/components/ValidationMessage/ValidationMessage.js b/templates/app/react-native/src/components/ValidationMessage/ValidationMessage.js deleted file mode 100644 index c2a398f379..0000000000 --- a/templates/app/react-native/src/components/ValidationMessage/ValidationMessage.js +++ /dev/null @@ -1,16 +0,0 @@ -import i18n from 'i18n-js'; -import React, { forwardRef } from 'react'; -import { Text } from 'react-native'; - -const ValidationMessage = ({ children, ...props }) => - children ? {i18n.t(children)} : null; - -const styles = { - fontSize: 12, - marginTop: 3, - color: '#ed2f2f', -}; - -const Forwarded = forwardRef((props, ref) => ); - -export default Forwarded diff --git a/templates/app/react-native/src/contexts/LocalizationContext.js b/templates/app/react-native/src/contexts/LocalizationContext.js deleted file mode 100644 index 83c68ba2bc..0000000000 --- a/templates/app/react-native/src/contexts/LocalizationContext.js +++ /dev/null @@ -1,3 +0,0 @@ -import React from 'react'; - -export const LocalizationContext = React.createContext(); diff --git a/templates/app/react-native/src/hocs/PermissionHOC.js b/templates/app/react-native/src/hocs/PermissionHOC.js deleted file mode 100644 index 6cf8025428..0000000000 --- a/templates/app/react-native/src/hocs/PermissionHOC.js +++ /dev/null @@ -1,17 +0,0 @@ -import React, { forwardRef } from 'react'; -import PropTypes from 'prop-types'; -import { usePermission } from '../hooks/UsePermission'; - -export function withPermission(Component, policyKey) { - const Forwarded = forwardRef((props, ref) => { - const isGranted = - policyKey || props.policyKey ? usePermission(policyKey || props.policyKey) : true; - return isGranted ? : null; - }); - - Forwarded.propTypes = { - policyKey: PropTypes.string, - }; - - return Forwarded; -} diff --git a/templates/app/react-native/src/hooks/UsePermission.js b/templates/app/react-native/src/hooks/UsePermission.js deleted file mode 100644 index a50d8f7fa1..0000000000 --- a/templates/app/react-native/src/hooks/UsePermission.js +++ /dev/null @@ -1,16 +0,0 @@ -import { useEffect, useState } from 'react'; -import { store } from '../store'; -import { createGrantedPolicySelector } from '../store/selectors/AppSelectors'; - -export function usePermission(key) { - const [permission, setPermission] = useState(false); - - const state = store.getState(); - const policy = createGrantedPolicySelector(key)(state); - - useEffect(() => { - setPermission(policy); - }, [policy]); - - return permission; -} diff --git a/templates/app/react-native/src/interceptors/APIInterceptor.js b/templates/app/react-native/src/interceptors/APIInterceptor.js deleted file mode 100644 index b5ffc56a3c..0000000000 --- a/templates/app/react-native/src/interceptors/APIInterceptor.js +++ /dev/null @@ -1,100 +0,0 @@ -import i18n from 'i18n-js'; -import { Toast } from 'native-base'; -import api from '../api/API'; -import LoadingActions from '../store/actions/LoadingActions'; -import PersistentStorageActions from '../store/actions/PersistentStorageActions'; - -export function initAPIInterceptor(store) { - api.interceptors.request.use( - async request => { - const { - persistentStorage: { token, language, tenant }, - } = store.getState(); - - if (!request.headers.Authorization && token && token.access_token) { - request.headers.Authorization = `${token.token_type} ${token.access_token}`; - } - - if (!request.headers['Content-Type']) { - request.headers['Content-Type'] = 'application/json'; - } - - if (!request.headers['Accept-Language'] && language) { - request.headers['Accept-Language'] = language; - } - - if (!request.headers.__tenant && tenant && tenant.tenantId) { - request.headers.__tenant = tenant.tenantId; - } - - return request; - }, - error => console.error(error), - ); - - api.interceptors.response.use( - response => response, - error => { - store.dispatch(LoadingActions.clear()); - const errorRes = error.response; - if (errorRes) { - if (errorRes.headers._abperrorformat && errorRes.status === 401) { - store.dispatch(PersistentStorageActions.setToken({})); - } - - showError({ error: errorRes.data.error || {}, status: errorRes.status }); - } else { - Toast.show({ - title: 'An unexpected error has occurred', - isClosable: true, - duration: 10000, - backgroundColor: 'danger.500', - }); - } - - return Promise.reject(error); - }, - ); -} - -function showError({ error = {}, status }) { - let message = ''; - let title = i18n.t('AbpAccount::DefaultErrorMessage'); - - if (typeof error === 'string') { - message = error; - } else if (error.details) { - message = error.details; - title = error.message; - } else if (error.message) { - message = error.message; - } else { - switch (status) { - case 401: - title = i18n.t('AbpAccount::DefaultErrorMessage401'); - message = i18n.t('AbpAccount::DefaultErrorMessage401Detail'); - break; - case 403: - title = i18n.t('AbpAccount::DefaultErrorMessage403'); - message = i18n.t('AbpAccount::DefaultErrorMessage403Detail'); - break; - case 404: - title = i18n.t('AbpAccount::DefaultErrorMessage404'); - message = i18n.t('AbpAccount::DefaultErrorMessage404Detail'); - break; - case 500: - title = i18n.t('AbpAccount::500Message'); - message = i18n.t('AbpAccount::InternalServerErrorMessage'); - break; - default: - break; - } - } - - Toast.show({ - title: `${title}\n${message}`, - isClosable: true, - duration: 10000, - backgroundColor: 'danger.500', - }); -} diff --git a/templates/app/react-native/src/navigators/AuthNavigator.js b/templates/app/react-native/src/navigators/AuthNavigator.js deleted file mode 100644 index 0311556deb..0000000000 --- a/templates/app/react-native/src/navigators/AuthNavigator.js +++ /dev/null @@ -1,22 +0,0 @@ -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import React, { useContext } from 'react'; -import { LocalizationContext } from '../contexts/LocalizationContext'; -import LoginScreen from '../screens/Login/LoginScreen'; - -const Stack = createNativeStackNavigator(); - -export default function AuthNavigator() { - const {t} = useContext(LocalizationContext); - - return ( - - ({ - title: t('AbpAccount::Login'), - })} - /> - - ); -} diff --git a/templates/app/react-native/src/navigators/DrawerNavigator.js b/templates/app/react-native/src/navigators/DrawerNavigator.js deleted file mode 100644 index 3cd83c8a13..0000000000 --- a/templates/app/react-native/src/navigators/DrawerNavigator.js +++ /dev/null @@ -1,43 +0,0 @@ -import { createDrawerNavigator } from '@react-navigation/drawer'; -import React from 'react'; -import DrawerContent from '../components/DrawerContent/DrawerContent'; -import HamburgerIcon from '../components/HamburgerIcon/HamburgerIcon'; -import { LocalizationContext } from '../contexts/LocalizationContext'; -import HomeStackNavigator from './HomeNavigator'; -import SettingsStackNavigator from './SettingsNavigator'; -import TenantsStackNavigator from './TenantsNavigator'; -import UsersStackNavigator from './UsersNavigator'; - -const Drawer = createDrawerNavigator(); - -export default function DrawerNavigator() { - const { t } = React.useContext(LocalizationContext); - - return ( - - ({ - title: t('::Menu:Home'), - headerLeft: () => , - })} - /> - null }} - /> - null }} - /> - null }} - /> - - ); -} diff --git a/templates/app/react-native/src/navigators/HomeNavigator.js b/templates/app/react-native/src/navigators/HomeNavigator.js deleted file mode 100644 index 8f9e588edd..0000000000 --- a/templates/app/react-native/src/navigators/HomeNavigator.js +++ /dev/null @@ -1,17 +0,0 @@ -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import React from 'react'; -import HomeScreen from '../screens/Home/HomeScreen'; - -const Stack = createNativeStackNavigator(); - -export default function HomeStackNavigator() { - return ( - - null}} - /> - - ); -} diff --git a/templates/app/react-native/src/navigators/SettingsNavigator.js b/templates/app/react-native/src/navigators/SettingsNavigator.js deleted file mode 100644 index 370da97b93..0000000000 --- a/templates/app/react-native/src/navigators/SettingsNavigator.js +++ /dev/null @@ -1,41 +0,0 @@ -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import i18n from 'i18n-js'; -import React from 'react'; -import HamburgerIcon from '../components/HamburgerIcon/HamburgerIcon'; -import { LocalizationContext } from '../contexts/LocalizationContext'; -import ChangePasswordScreen from '../screens/ChangePassword/ChangePasswordScreen'; -import ManageProfileScreen from '../screens/ManageProfile/ManageProfileScreen'; -import SettingsScreen from '../screens/Settings/SettingsScreen'; - -const Stack = createNativeStackNavigator(); - -export default function SettingsStackNavigator() { - const { t } = React.useContext(LocalizationContext); - - return ( - - ({ - headerLeft: () => , - title: t('AbpSettingManagement::Settings'), - })} - /> - - - - ); -} diff --git a/templates/app/react-native/src/navigators/TenantsNavigator.js b/templates/app/react-native/src/navigators/TenantsNavigator.js deleted file mode 100644 index 94ae711d42..0000000000 --- a/templates/app/react-native/src/navigators/TenantsNavigator.js +++ /dev/null @@ -1,35 +0,0 @@ - -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import React from 'react'; -import AddIcon from '../components/AddIcon/AddIcon'; -import HamburgerIcon from '../components/HamburgerIcon/HamburgerIcon'; -import { LocalizationContext } from '../contexts/LocalizationContext'; -import CreateUpdateTenantScreen from '../screens/CreateUpdateTenant/CreateUpdateTenantScreen'; -import TenantsScreen from '../screens/Tenants/TenantsScreen'; - -const Stack = createNativeStackNavigator(); - -export default function TenantsStackNavigator() { - const { t } = React.useContext(LocalizationContext); - - return ( - - ({ - title: t('AbpTenantManagement::Tenants'), - headerLeft: () => , - headerRight: () => navigation.navigate('CreateUpdateTenant')}/>, - })} - /> - ({ - title: t(route.params?.tenantId ? 'AbpTenantManagement::Edit' : 'AbpTenantManagement::NewTenant'), - })} - /> - - ); -} diff --git a/templates/app/react-native/src/navigators/UsersNavigator.js b/templates/app/react-native/src/navigators/UsersNavigator.js deleted file mode 100644 index 537129be14..0000000000 --- a/templates/app/react-native/src/navigators/UsersNavigator.js +++ /dev/null @@ -1,34 +0,0 @@ -import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import React from 'react'; -import AddIcon from '../components/AddIcon/AddIcon'; -import HamburgerIcon from '../components/HamburgerIcon/HamburgerIcon'; -import { LocalizationContext } from '../contexts/LocalizationContext'; -import CreateUpdateUserScreen from '../screens/CreateUpdateUser/CreateUpdateUserScreen'; -import UsersScreen from '../screens/Users/UsersScreen'; - -const Stack = createNativeStackNavigator(); - -export default function UsersStackNavigator() { - const { t } = React.useContext(LocalizationContext); - - return ( - - ({ - title: t('AbpIdentity::Users'), - headerLeft: () => , - headerRight: () => navigation.navigate('CreateUpdateUser')}/>, - })} - /> - ({ - title: t(route.params?.userId ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser'), - })} - /> - - ); -} diff --git a/templates/app/react-native/src/screens/ChangePassword/ChangePasswordForm.js b/templates/app/react-native/src/screens/ChangePassword/ChangePasswordForm.js deleted file mode 100644 index 8621d00a99..0000000000 --- a/templates/app/react-native/src/screens/ChangePassword/ChangePasswordForm.js +++ /dev/null @@ -1,121 +0,0 @@ -import { useFormik } from 'formik'; -import i18n from 'i18n-js'; -import { - Box, - FormControl, - Input, - KeyboardAvoidingView, - Stack, - Icon -} from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useRef, useState } from 'react'; -import * as Yup from 'yup'; -import { FormButtons } from '../../components/FormButtons'; -import ValidationMessage from '../../components/ValidationMessage/ValidationMessage'; -import { Ionicons } from '@expo/vector-icons'; - -const ValidationSchema = Yup.object().shape({ - currentPassword: Yup.string().required('AbpAccount::ThisFieldIsRequired.'), - newPassword: Yup.string().required('AbpAccount::ThisFieldIsRequired.'), -}); - -function ChangePasswordForm({ submit, cancel }) { - const [showCurrentPassword, setShowCurrentPassword] = useState(false); - const [showNewPassword, setShowNewPassword] = useState(false); - - const currentPasswordRef = useRef(); - const newPasswordRef = useRef(); - - const onSubmit = (values) => { - submit({ - ...values, - newPasswordConfirm: values.newPassword, - }); - }; - - const formik = useFormik({ - enableReinitialize: true, - validationSchema: ValidationSchema, - initialValues: { - currentPassword: '', - newPassword: '', - }, - onSubmit, - }); - - return ( - <> - - - - - {i18n.t('AbpIdentity::DisplayName:CurrentPassword')} - - newPasswordRef?.current?.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('currentPassword')} - onBlur={formik.handleBlur('currentPassword')} - value={formik.values.currentPassword} - textContentType="password" - secureTextEntry={!showCurrentPassword} - InputRightElement={ - setShowCurrentPassword(!showCurrentPassword)} - /> - } - /> - - {formik.errors.currentPassword} - - - - - - - - {i18n.t('AbpIdentity::DisplayName:NewPassword')} - - setShowNewPassword(!showNewPassword)} - /> - } - /> - {formik.errors.newPassword} - - - - - - ); -} - -ChangePasswordForm.propTypes = { - submit: PropTypes.func.isRequired, - cancel: PropTypes.func.isRequired, -}; - -export default ChangePasswordForm; diff --git a/templates/app/react-native/src/screens/ChangePassword/ChangePasswordScreen.js b/templates/app/react-native/src/screens/ChangePassword/ChangePasswordScreen.js deleted file mode 100644 index 196c762a38..0000000000 --- a/templates/app/react-native/src/screens/ChangePassword/ChangePasswordScreen.js +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { changePassword } from '../../api/IdentityAPI'; -import LoadingActions from '../../store/actions/LoadingActions'; -import { connectToRedux } from '../../utils/ReduxConnect'; -import ChangePasswordForm from './ChangePasswordForm'; - -function ChangePasswordScreen({ navigation, startLoading, stopLoading }) { - const submit = data => { - startLoading({ key: 'changePassword' }); - - changePassword(data) - .then(() => { - navigation.goBack(); - }) - .finally(() => stopLoading({ key: 'changePassword' })); - }; - - return navigation.goBack()} />; -} - -ChangePasswordScreen.propTypes = { - startLoading: PropTypes.func.isRequired, - stopLoading: PropTypes.func.isRequired, -}; - -export default connectToRedux({ - component: ChangePasswordScreen, - dispatchProps: { - startLoading: LoadingActions.start, - stopLoading: LoadingActions.stop, - }, -}); diff --git a/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js b/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js deleted file mode 100644 index b76f356062..0000000000 --- a/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantForm.js +++ /dev/null @@ -1,144 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import { useFormik } from 'formik'; -import i18n from 'i18n-js'; -import { Box, FormControl, Icon, Input, Stack } from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useRef, useState } from 'react'; -import * as Yup from 'yup'; -import { FormButtons } from '../../components/FormButtons'; -import ValidationMessage from '../../components/ValidationMessage/ValidationMessage'; -import { usePermission } from '../../hooks/UsePermission'; - -const validations = { - name: Yup.string().required('AbpAccount::ThisFieldIsRequired.'), -}; - -function CreateUpdateTenantForm({ editingTenant = {}, submit, remove }) { - const tenantNameRef = useRef(); - const adminEmailRef = useRef(); - const adminPasswordRef = useRef(); - - const [showAdminPassword, setShowAdminPassword] = useState(false); - const hasRemovePermission = usePermission('AbpTenantManagement.Tenants.Delete'); - - const adminEmailAddressValidation = Yup.lazy(() => - Yup.string() - .required('AbpAccount::ThisFieldIsRequired.') - .email('AbpAccount::ThisFieldIsNotAValidEmailAddress.'), - ); - - const adminPasswordValidation = Yup.lazy(() => - Yup.string().required('AbpAccount::ThisFieldIsRequired.'), - ); - - const onSubmit = values => { - submit({ - ...editingTenant, - ...values, - }); - }; - - const formik = useFormik({ - enableReinitialize: true, - validationSchema: Yup.object().shape({ - ...validations, - ...(!editingTenant.id && { - adminEmailAddress: adminEmailAddressValidation, - adminPassword: adminPasswordValidation, - }), - }), - initialValues: { - lockoutEnabled: false, - twoFactorEnabled: false, - ...editingTenant, - }, - onSubmit, - }); - - return ( - <> - - - - {i18n.t('AbpTenantManagement::TenantName')} - - {formik.errors.name} - - - - {!editingTenant.id ? ( - <> - - - - {i18n.t('AbpTenantManagement::DisplayName:AdminEmailAddress')} - - adminPasswordRef?.current?.focus()} - returnKeyType="next" - /> - {formik.errors.adminEmailAddress} - - - - - - - {i18n.t('AbpTenantManagement::DisplayName:AdminPassword')} - - setShowAdminPassword(!showAdminPassword)} - /> - } - /> - {formik.errors.adminPassword} - - - - ) : null} - - - - ); -} - -CreateUpdateTenantForm.propTypes = { - editingTenant: PropTypes.object, - submit: PropTypes.func.isRequired, - remove: PropTypes.func.isRequired, -}; - -export default CreateUpdateTenantForm; diff --git a/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantScreen.js b/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantScreen.js deleted file mode 100644 index a3f59a8cf7..0000000000 --- a/templates/app/react-native/src/screens/CreateUpdateTenant/CreateUpdateTenantScreen.js +++ /dev/null @@ -1,81 +0,0 @@ -import { useFocusEffect } from '@react-navigation/native'; -import PropTypes from 'prop-types'; -import React, { useCallback, useState } from 'react'; -import { - createTenant, - getTenantById, - removeTenant, - updateTenant -} from '../../api/TenantManagementAPI'; -import LoadingActions from '../../store/actions/LoadingActions'; -import { createLoadingSelector } from '../../store/selectors/LoadingSelectors'; -import { connectToRedux } from '../../utils/ReduxConnect'; -import CreateUpdateTenantForm from './CreateUpdateTenantForm'; - -function CreateUpdateTenantScreen({ navigation, route, startLoading, stopLoading }) { - const [tenant, setTenant] = useState(); - const tenantId = route.params?.tenantId; - - const remove = () => { - startLoading({ key: 'removeTenant' }); - removeTenant(tenantId) - .then(() => navigation.goBack()) - .finally(() => stopLoading({ key: 'removeTenant' })); - }; - - useFocusEffect( - useCallback(() => { - if (tenantId) { - getTenantById(tenantId).then((data = {}) => setTenant(data)); - } - }, []), - ); - - const submit = data => { - startLoading({ key: 'saveTenant' }); - let request; - if (data.id) { - request = updateTenant(data, tenantId); - } else { - request = createTenant(data); - } - - request - .then(() => { - navigation.goBack(); - }) - .finally(() => stopLoading({ key: 'saveTenant' })); - }; - - const renderForm = () => ( - - ); - - if (tenantId && tenant) { - return renderForm(); - } - - if (!tenantId) { - return renderForm(); - } - - return null; -} - -CreateUpdateTenantScreen.propTypes = { - startLoading: PropTypes.func.isRequired, - stopLoading: PropTypes.func.isRequired, -}; - -export default connectToRedux({ - component: CreateUpdateTenantScreen, - stateProps: state => ({ loading: createLoadingSelector()(state) }), - dispatchProps: { - startLoading: LoadingActions.start, - stopLoading: LoadingActions.stop, - }, -}); diff --git a/templates/app/react-native/src/screens/CreateUpdateUser/CreateUpdateUserForm.js b/templates/app/react-native/src/screens/CreateUpdateUser/CreateUpdateUserForm.js deleted file mode 100644 index bb394232ba..0000000000 --- a/templates/app/react-native/src/screens/CreateUpdateUser/CreateUpdateUserForm.js +++ /dev/null @@ -1,272 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import { useFormik } from 'formik'; -import i18n from 'i18n-js'; -import { - Box, - Button, - Checkbox, - FormControl, - Icon, - Input, - KeyboardAvoidingView, - Stack -} from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useRef, useState } from 'react'; -import { Platform } from 'react-native'; -import * as Yup from 'yup'; -import { FormButtons } from '../../components/FormButtons'; -import ValidationMessage from '../../components/ValidationMessage/ValidationMessage'; -import { usePermission } from '../../hooks/UsePermission'; -import UserRoles from './UserRoles'; - -const validations = { - userName: Yup.string().required('AbpAccount::ThisFieldIsRequired.'), - email: Yup.string() - .email('AbpAccount::ThisFieldIsNotAValidEmailAddress.') - .required('AbpAccount::ThisFieldIsRequired.'), -}; - -let roleNames = []; - -function onChangeRoles(roles) { - roleNames = roles; -} - -function CreateUpdateUserForm({ editingUser = {}, submit, remove }) { - const [selectedTab, setSelectedTab] = useState(0); - const [showPassword, setShowPassword] = useState(false); - - const usernameRef = useRef(); - const nameRef = useRef(); - const surnameRef = useRef(); - const emailRef = useRef(); - const phoneNumberRef = useRef(); - const passwordRef = useRef(); - - const hasRemovePermission = usePermission('AbpIdentity.Users.Delete'); - - const onSubmit = (values) => { - submit({ - ...editingUser, - ...values, - roleNames, - }); - }; - - const passwordValidation = Yup.lazy(() => { - if (editingUser.id) { - return Yup.string(); - } - return Yup.string().required('AbpAccount::ThisFieldIsRequired.'); - }); - - const formik = useFormik({ - enableReinitialize: true, - validationSchema: Yup.object().shape({ - ...validations, - password: passwordValidation, - }), - initialValues: { - lockoutEnabled: false, - ...editingUser, - }, - onSubmit, - }); - - return ( - <> - - - - - - - - {selectedTab === 0 ? ( - <> - - - - {i18n.t('AbpIdentity::UserName')} - - nameRef.current.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('userName')} - onBlur={formik.handleBlur('userName')} - value={formik.values.userName} - autoCapitalize="none" - /> - - {formik.errors.userName} - - - - - - - - {i18n.t('AbpIdentity::DisplayName:Name')} - - surnameRef.current.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('name')} - onBlur={formik.handleBlur('name')} - value={formik.values.name} - /> - - - - - - - {i18n.t('AbpIdentity::DisplayName:Surname')} - - emailRef.current.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('surname')} - onBlur={formik.handleBlur('surname')} - value={formik.values.surname} - /> - - - - - - - {i18n.t('AbpIdentity::EmailAddress')} - - phoneNumberRef.current.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('email')} - onBlur={formik.handleBlur('email')} - value={formik.values.email} - autoCapitalize="none" - /> - {formik.errors.email} - - - - - - - {i18n.t('AbpIdentity::PhoneNumber')} - - passwordRef?.current?.focus()} - returnKeyType={!editingUser.id ? 'next' : 'default'} - onChangeText={formik.handleChange('phoneNumber')} - onBlur={formik.handleBlur('phoneNumber')} - value={formik.values.phoneNumber} - /> - - - - {!editingUser.id ? ( - - - - {i18n.t('AbpIdentity::Password')} - - setShowPassword(!showPassword)} - /> - } - /> - - {formik.errors.password} - - - - ) : null} - - - - - formik.setFieldValue( - 'lockoutEnabled', - !formik.values.lockoutEnabled - ) - } - > - {i18n.t('AbpIdentity::DisplayName:LockoutEnabled')} - - - - - ) : ( - - )} - - - - - ); -} - -CreateUpdateUserForm.propTypes = { - editingUser: PropTypes.object, - submit: PropTypes.func.isRequired, - remove: PropTypes.func.isRequired, -}; - -export default CreateUpdateUserForm; diff --git a/templates/app/react-native/src/screens/CreateUpdateUser/CreateUpdateUserScreen.js b/templates/app/react-native/src/screens/CreateUpdateUser/CreateUpdateUserScreen.js deleted file mode 100644 index e900fde8fc..0000000000 --- a/templates/app/react-native/src/screens/CreateUpdateUser/CreateUpdateUserScreen.js +++ /dev/null @@ -1,69 +0,0 @@ -import PropTypes from 'prop-types'; -import React, { useEffect, useState } from 'react'; -import { createUser, getUserById, removeUser, updateUser } from '../../api/IdentityAPI'; -import LoadingActions from '../../store/actions/LoadingActions'; -import { createLoadingSelector } from '../../store/selectors/LoadingSelectors'; -import { connectToRedux } from '../../utils/ReduxConnect'; -import CreateUpdateUserForm from './CreateUpdateUserForm'; - -function CreateUpdateUserScreen({ navigation, route, startLoading, stopLoading }) { - const [user, setUser] = useState(); - const userId = route.params?.userId; - - const remove = () => { - startLoading({ key: 'remove user' }); - removeUser(userId) - .then(() => navigation.goBack()) - .finally(() => stopLoading({ key: 'remove user' })); - }; - - useEffect(() => { - if (userId) { - getUserById(userId).then((data = {}) => setUser(data)); - } - }, []); - - const submit = data => { - startLoading({ key: 'saveUser' }); - let request; - if (data.id) { - request = updateUser(data, userId); - } else { - request = createUser(data); - } - - request - .then(() => { - navigation.goBack(); - }) - .finally(() => stopLoading({ key: 'saveUser' })); - }; - - const renderForm = () => ( - - ); - - if (userId && user) { - return renderForm(); - } - - if (!userId) { - return renderForm(); - } - - return null; -} - -CreateUpdateUserScreen.propTypes = { - startLoading: PropTypes.func.isRequired, - stopLoading: PropTypes.func.isRequired, -}; - -export default connectToRedux({ - component: CreateUpdateUserScreen, - stateProps: state => ({ loading: createLoadingSelector()(state) }), - dispatchProps: { - startLoading: LoadingActions.start, - stopLoading: LoadingActions.stop, - }, -}); diff --git a/templates/app/react-native/src/screens/CreateUpdateUser/UserRoles.js b/templates/app/react-native/src/screens/CreateUpdateUser/UserRoles.js deleted file mode 100644 index 25db76afee..0000000000 --- a/templates/app/react-native/src/screens/CreateUpdateUser/UserRoles.js +++ /dev/null @@ -1,58 +0,0 @@ -import { Box, Checkbox, List } from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useEffect, useState } from 'react'; -import { getAllRoles, getUserRoles } from '../../api/IdentityAPI'; - -function UserRoles({ editingUser = {}, onChangeRoles }) { - const [roles, setRoles] = useState([]); - - const onPress = index => { - setRoles( - roles.map((role, i) => ({ - ...role, - isSelected: index === i ? !role.isSelected : role.isSelected, - })), - ); - }; - - useEffect(() => { - const requests = [getAllRoles()]; - if (editingUser.id) requests.push(getUserRoles(editingUser.id)); - - Promise.all(requests).then(([allRoles = [], userRoles = []]) => { - setRoles( - allRoles.map(role => ({ - ...role, - isSelected: editingUser.id - ? !!userRoles?.find(userRole => userRole?.id === role?.id) - : role.isDefault, - })), - ); - }); - }, []); - - useEffect(() => { - onChangeRoles(roles.filter(role => role.isSelected).map(role => role.name)); - }, [roles]); - - return ( - - - {roles.map((role, index) => ( - - onPress(index)} > - {role.name} - - - ))} - - - ); -} - -UserRoles.propTypes = { - editingUser: PropTypes.objectOf(PropTypes.any).isRequired, - onChangeRoles: PropTypes.func.isRequired, -}; - -export default UserRoles; diff --git a/templates/app/react-native/src/screens/Home/HomeScreen.js b/templates/app/react-native/src/screens/Home/HomeScreen.js deleted file mode 100644 index 82ca221e2d..0000000000 --- a/templates/app/react-native/src/screens/Home/HomeScreen.js +++ /dev/null @@ -1,30 +0,0 @@ -import i18n from 'i18n-js'; -import { Box, Center, Heading, Text } from 'native-base'; -import React from 'react'; -import { StyleSheet } from 'react-native'; - -function HomeScreen() { - return ( -
- - {i18n.t('::Welcome')} - - {i18n.t('::LongWelcomeMessage')} - - -
- ); -} - -const styles = StyleSheet.create({ - centeredText: { - textAlign: 'center', - marginBottom: 5 - }, -}); - -export default HomeScreen; diff --git a/templates/app/react-native/src/screens/Login/LoginScreen.js b/templates/app/react-native/src/screens/Login/LoginScreen.js deleted file mode 100644 index acb72076fa..0000000000 --- a/templates/app/react-native/src/screens/Login/LoginScreen.js +++ /dev/null @@ -1,154 +0,0 @@ -import { useFormik } from 'formik'; -import i18n from 'i18n-js'; -import { - Box, - Button, - Center, - FormControl, Image, Input, - Stack, - WarningOutlineIcon -} from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useRef, useState } from 'react'; -import { View } from 'react-native'; -import { object, string } from 'yup'; -import { login } from '../../api/AccountAPI'; -import TenantBox from '../../components/TenantBox/TenantBox'; -import ValidationMessage from '../../components/ValidationMessage/ValidationMessage'; -import AppActions from '../../store/actions/AppActions'; -import LoadingActions from '../../store/actions/LoadingActions'; -import PersistentStorageActions from '../../store/actions/PersistentStorageActions'; -import { connectToRedux } from '../../utils/ReduxConnect'; - -const ValidationSchema = object().shape({ - username: string().required('AbpAccount::ThisFieldIsRequired.'), - password: string().required('AbpAccount::ThisFieldIsRequired.'), -}); - -function LoginScreen({ startLoading, stopLoading, setToken, fetchAppConfig }) { - const [showTenantSelection, setShowTenantSelection] = useState(false); - const passwordRef = useRef(null); - - const toggleTenantSelection = () => { - setShowTenantSelection(!showTenantSelection); - }; - - const submit = ({ username, password }) => { - startLoading({ key: 'login' }); - login({ username, password }) - .then((data) => - setToken({ - ...data, - expire_time: new Date().valueOf() + data.expires_in, - scope: undefined, - }) - ) - .then( - () => - new Promise((resolve) => - fetchAppConfig({ - showLoading: false, - callback: () => resolve(true), - }) - ) - ) - .finally(() => stopLoading({ key: 'login' })); - }; - - const formik = useFormik({ - validationSchema: ValidationSchema, - initialValues: { username: '', password: '' }, - onSubmit: submit, - }); - - return ( -
- - Image - - - - - - - - {i18n.t('AbpAccount::UserNameOrEmailAddress')} - - passwordRef?.current?.focus()} - size="lg" - /> - {formik.errors.username} - - - - - - - {i18n.t('AbpAccount::Password')} - - - } - > - {formik.errors.password} - - - - - - - - -
- ); -} - -LoginScreen.propTypes = { - startLoading: PropTypes.func.isRequired, - stopLoading: PropTypes.func.isRequired, - setToken: PropTypes.func.isRequired, - fetchAppConfig: PropTypes.func.isRequired, -}; - -export default connectToRedux({ - component: LoginScreen, - dispatchProps: { - startLoading: LoadingActions.start, - stopLoading: LoadingActions.stop, - fetchAppConfig: AppActions.fetchAppConfigAsync, - setToken: PersistentStorageActions.setToken, - }, -}); diff --git a/templates/app/react-native/src/screens/ManageProfile/ManageProfileForm.js b/templates/app/react-native/src/screens/ManageProfile/ManageProfileForm.js deleted file mode 100644 index 2dffd3624b..0000000000 --- a/templates/app/react-native/src/screens/ManageProfile/ManageProfileForm.js +++ /dev/null @@ -1,153 +0,0 @@ -import { useFormik } from 'formik'; -import i18n from 'i18n-js'; -import { - Box, - FormControl, - Input, - KeyboardAvoidingView, - Stack, -} from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useRef } from 'react'; -import * as Yup from 'yup'; -import FormButtons from '../../components/FormButtons/FormButtons'; -import ValidationMessage from '../../components/ValidationMessage/ValidationMessage'; - -const ValidationSchema = Yup.object().shape({ - userName: Yup.string().required('AbpAccount::ThisFieldIsRequired.'), - email: Yup.string() - .required('AbpAccount::ThisFieldIsRequired.') - .email('AbpAccount::ThisFieldIsNotAValidEmailAddress.'), -}); - -function ManageProfileForm({ editingUser = {}, submit, cancel }) { - const usernameRef = useRef(); - const nameRef = useRef(); - const surnameRef = useRef(); - const emailRef = useRef(); - const phoneNumberRef = useRef(); - - const onSubmit = (values) => { - submit({ - ...editingUser, - ...values, - }); - }; - - const formik = useFormik({ - enableReinitialize: true, - validationSchema: ValidationSchema, - initialValues: { - ...editingUser, - }, - onSubmit, - }); - - return ( - <> - - - - - - {i18n.t('AbpIdentity::UserName')} - - nameRef?.current?.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('userName')} - onBlur={formik.handleBlur('userName')} - value={formik.values.userName} - /> - {formik.errors.userName} - - - - - - - {i18n.t('AbpIdentity::DisplayName:Name')} - - surnameRef?.current?.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('name')} - onBlur={formik.handleBlur('name')} - value={formik.values.name} - /> - - - - - - - {i18n.t('AbpIdentity::DisplayName:Surname')} - - phoneNumberRef?.current?.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('surname')} - onBlur={formik.handleBlur('surname')} - value={formik.values.surname} - /> - - - - - - - {i18n.t('AbpIdentity::PhoneNumber')} - - emailRef?.current?.focus()} - returnKeyType="next" - onChangeText={formik.handleChange('phoneNumber')} - onBlur={formik.handleBlur('phoneNumber')} - value={formik.values.phoneNumber} - /> - - - - - - - {i18n.t('AbpIdentity::EmailAddress')} - - - {formik.errors.email} - - - - - - - ); -} - -ManageProfileForm.propTypes = { - editingUser: PropTypes.object.isRequired, - submit: PropTypes.func.isRequired, - cancel: PropTypes.func.isRequired, -}; - -export default ManageProfileForm; diff --git a/templates/app/react-native/src/screens/ManageProfile/ManageProfileScreen.js b/templates/app/react-native/src/screens/ManageProfile/ManageProfileScreen.js deleted file mode 100644 index 1f2e577a37..0000000000 --- a/templates/app/react-native/src/screens/ManageProfile/ManageProfileScreen.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import PropTypes from 'prop-types'; -import { updateProfileDetail, getProfileDetail } from '../../api/IdentityAPI'; -import ManageProfileForm from './ManageProfileForm'; -import LoadingActions from '../../store/actions/LoadingActions'; -import { connectToRedux } from '../../utils/ReduxConnect'; - -function ManageProfileScreen({ navigation, startLoading, stopLoading }) { - const [user, setUser] = useState(); - - useEffect(() => { - if (!user) { - startLoading({ key: 'manageProfile' }); - getProfileDetail() - .then((data = {}) => setUser(data)) - .finally(() => stopLoading({ key: 'manageProfile' })); - } - }); - - const submit = data => { - startLoading({ key: 'manageProfile' }); - - updateProfileDetail(data) - .then(() => { - navigation.goBack(); - }) - .finally(() => stopLoading({ key: 'manageProfile' })); - }; - - return ( - <> - {user ? ( - navigation.goBack()} /> - ) : null} - - ); -} - -ManageProfileScreen.propTypes = { - startLoading: PropTypes.func.isRequired, - stopLoading: PropTypes.func.isRequired, -}; - -export default connectToRedux({ - component: ManageProfileScreen, - dispatchProps: { - startLoading: LoadingActions.start, - stopLoading: LoadingActions.stop, - }, -}); diff --git a/templates/app/react-native/src/screens/Settings/SettingsScreen.js b/templates/app/react-native/src/screens/Settings/SettingsScreen.js deleted file mode 100644 index 58ede9cbb5..0000000000 --- a/templates/app/react-native/src/screens/Settings/SettingsScreen.js +++ /dev/null @@ -1,157 +0,0 @@ -import { Ionicons } from '@expo/vector-icons'; -import { useFocusEffect } from '@react-navigation/native'; -import i18n from 'i18n-js'; -import { - Avatar, - Button, - Divider, - FormControl, - List, - Select, - Stack, - Text, - View, -} from 'native-base'; -import PropTypes from 'prop-types'; -import React, { useCallback, useState } from 'react'; -import { getProfileDetail } from '../../api/IdentityAPI'; -import AppActions from '../../store/actions/AppActions'; -import { - createLanguageSelector, - createLanguagesSelector, -} from '../../store/selectors/AppSelectors'; -import { createTenantSelector } from '../../store/selectors/PersistentStorageSelectors'; -import { connectToRedux } from '../../utils/ReduxConnect'; -import { store } from '../../store/index'; -import { getEnvVars } from '../../../Environment'; - -const env = getEnvVars(); - -function SettingsScreen({ - navigation, - language, - languages, - setLanguageAsync, - logoutAsync, - tenant = {}, -}) { - const [user, setUser] = useState({}); - const [token, setToken] = useState(store.getState().persistentStorage.token); - - const fetchUser = () => { - getProfileDetail().then(data => { - setUser(data || {}); - }); - }; - - useFocusEffect( - useCallback(() => { - fetchUser(); - }, []), - ); - - const logout = () => { - const { clientId } = env.oAuthConfig; - const { access_token, refresh_token } = token; - - logoutAsync({ - client_id: clientId, - token: access_token, - refresh_token: refresh_token, - }); - }; - - return ( - - - navigation.navigate('ManageProfile')}> - - - - - {tenant.name ? `${tenant.name}/` : ''} - {user.userName ? `${user.userName}` : ''} - - - - - - - - navigation.navigate('ChangePassword')}> - - {i18n.t('AbpUi::ChangePassword')} - - - - - - - - - {i18n.t('AbpUi::Language')} - - - - - - - - - ); -} - -SettingsScreen.propTypes = { - setLanguageAsync: PropTypes.func.isRequired, - logoutAsync: PropTypes.func.isRequired, - language: PropTypes.object.isRequired, - languages: PropTypes.array.isRequired, - tenant: PropTypes.object.isRequired, -}; - -export default connectToRedux({ - component: SettingsScreen, - stateProps: state => ({ - languages: createLanguagesSelector()(state), - language: createLanguageSelector()(state), - tenant: createTenantSelector()(state), - }), - dispatchProps: { - setLanguageAsync: AppActions.setLanguageAsync, - logoutAsync: AppActions.logoutAsync, - }, -}); diff --git a/templates/app/react-native/src/screens/Tenants/TenantsScreen.js b/templates/app/react-native/src/screens/Tenants/TenantsScreen.js deleted file mode 100644 index da3dac53af..0000000000 --- a/templates/app/react-native/src/screens/Tenants/TenantsScreen.js +++ /dev/null @@ -1,51 +0,0 @@ -import { Box, HStack, Pressable, Text } from 'native-base'; -import React from 'react'; -import { getTenants } from '../../api/TenantManagementAPI'; -import DataList from '../../components/DataList/DataList'; -import { LocalizationContext } from '../../contexts/LocalizationContext'; - -function TenantsScreen({ navigation }) { - const { t } = React.useContext(LocalizationContext); - - return ( - - ( - navigateToCreateUpdateTenantScreen(navigation, item)} - > - - - {t('AbpTenantManagement::TenantName')}: - - {item.name} - - - - - )} - /> - - ); -} - -const navigateToCreateUpdateTenantScreen = (navigation, tenant = {}) => { - navigation.navigate('CreateUpdateTenant', { - tenantId: tenant.id, - }); -}; - -export default TenantsScreen; diff --git a/templates/app/react-native/src/screens/Users/UsersScreen.js b/templates/app/react-native/src/screens/Users/UsersScreen.js deleted file mode 100644 index b49658cb24..0000000000 --- a/templates/app/react-native/src/screens/Users/UsersScreen.js +++ /dev/null @@ -1,62 +0,0 @@ -import { Box, HStack, Pressable, Text } from 'native-base'; -import React from 'react'; -import { getUsers } from '../../api/IdentityAPI'; -import DataList from '../../components/DataList/DataList'; -import { LocalizationContext } from '../../contexts/LocalizationContext'; - -function UsersScreen({ navigation }) { - const { t } = React.useContext(LocalizationContext); - - return ( - ( - navigateToCreateUpdateUserScreen(navigation, item)} - > - - - {t('AbpIdentity::UserName')}: - - {item.userName} - - - - {t('AbpIdentity::EmailAddress')}: - - {item.email} - - - - {t('AbpIdentity::DisplayName:Name')}: - - {item.name} - - - - {t('AbpIdentity::DisplayName:Surname')}: - - {item.surname} - - - - - )} - /> - ); -} - -const navigateToCreateUpdateUserScreen = (navigation, user = {}) => { - navigation.navigate('CreateUpdateUser', { - userId: user.id, - }); -}; - -export default UsersScreen; diff --git a/templates/app/react-native/src/store/actions/AppActions.js b/templates/app/react-native/src/store/actions/AppActions.js deleted file mode 100644 index 413d923129..0000000000 --- a/templates/app/react-native/src/store/actions/AppActions.js +++ /dev/null @@ -1,26 +0,0 @@ -import { createAction } from '@reduxjs/toolkit'; - -const fetchAppConfigAsync = createAction( - 'app/fetchAppConfigAsync', - ({ callback = () => {}, showLoading = true } = {}) => ({ - payload: { callback, showLoading }, - }), -); - -const setAppConfig = createAction('app/setAppConfig'); - -const setLanguageAsync = createAction('app/setLanguageAsync'); - -const logoutAsync = createAction( - 'app/logoutAsync', - ({ client_id = '', token = '', refresh_token = '' } = {}) => ({ - payload: { client_id, token, refresh_token }, - }), -); - -export default { - fetchAppConfigAsync, - setAppConfig, - setLanguageAsync, - logoutAsync, -}; diff --git a/templates/app/react-native/src/store/actions/LoadingActions.js b/templates/app/react-native/src/store/actions/LoadingActions.js deleted file mode 100644 index 9705dc4e0f..0000000000 --- a/templates/app/react-native/src/store/actions/LoadingActions.js +++ /dev/null @@ -1,13 +0,0 @@ -import { createAction } from '@reduxjs/toolkit'; - -const start = createAction('loading/start'); - -const stop = createAction('loading/stop'); - -const clear = createAction('loading/clear'); - -export default { - start, - stop, - clear, -}; diff --git a/templates/app/react-native/src/store/actions/PersistentStorageActions.js b/templates/app/react-native/src/store/actions/PersistentStorageActions.js deleted file mode 100644 index 4b32d9ff31..0000000000 --- a/templates/app/react-native/src/store/actions/PersistentStorageActions.js +++ /dev/null @@ -1,13 +0,0 @@ -import { createAction } from '@reduxjs/toolkit'; - -const setToken = createAction('persistentStorage/setToken'); - -const setLanguage = createAction('persistentStorage/setLanguage'); - -const setTenant = createAction('persistentStorage/setTenant'); - -export default { - setToken, - setLanguage, - setTenant, -}; diff --git a/templates/app/react-native/src/store/index.js b/templates/app/react-native/src/store/index.js deleted file mode 100644 index d30a0890dd..0000000000 --- a/templates/app/react-native/src/store/index.js +++ /dev/null @@ -1,25 +0,0 @@ -import AsyncStorage from '@react-native-async-storage/async-storage'; -import { configureStore } from '@reduxjs/toolkit'; -import { persistReducer, persistStore } from 'redux-persist'; -import createSagaMiddleware from 'redux-saga'; -import rootReducer from './reducers'; -import { rootSaga } from './sagas'; - -const sagaMiddleware = createSagaMiddleware(); - -const persistConfig = { - key: 'root', - storage: AsyncStorage, - whitelist: ['persistentStorage'], -}; - -const persistedReducer = persistReducer(persistConfig, rootReducer); - -export const store = configureStore({ - reducer: persistedReducer, - middleware: [sagaMiddleware], -}); - -export const persistor = persistStore(store); - -sagaMiddleware.run(rootSaga); diff --git a/templates/app/react-native/src/store/reducers/AppReducer.js b/templates/app/react-native/src/store/reducers/AppReducer.js deleted file mode 100644 index a628f7f802..0000000000 --- a/templates/app/react-native/src/store/reducers/AppReducer.js +++ /dev/null @@ -1,12 +0,0 @@ -import { createReducer } from '@reduxjs/toolkit'; -import AppActions from '../actions/AppActions'; - -const initialState = { - appConfig: {}, -}; - -export default createReducer(initialState, builder => - builder.addCase(AppActions.setAppConfig, (state, action) => { - state.appConfig = action.payload; - }), -); diff --git a/templates/app/react-native/src/store/reducers/LoadingReducer.js b/templates/app/react-native/src/store/reducers/LoadingReducer.js deleted file mode 100644 index 99ccb14149..0000000000 --- a/templates/app/react-native/src/store/reducers/LoadingReducer.js +++ /dev/null @@ -1,23 +0,0 @@ -import { createReducer } from '@reduxjs/toolkit'; -import LoadingActions from '../actions/LoadingActions'; - -const initialState = { activeLoadings: {}, loading: false }; - -export default createReducer(initialState, builder => - builder - .addCase(LoadingActions.start, (state, action) => { - const { key, opacity } = action.payload; - return { - ...state, - actives: { ...state.activeLoadings, [key]: action }, - loading: true, - opacity, - }; - }) - .addCase(LoadingActions.stop, (state, action) => { - delete state.activeLoadings[action.payload.key]; - - state.loading = !!Object.keys(state.activeLoadings).length; - }) - .addCase(LoadingActions.clear, () => ({})), -); diff --git a/templates/app/react-native/src/store/reducers/PersistentStorageReducer.js b/templates/app/react-native/src/store/reducers/PersistentStorageReducer.js deleted file mode 100644 index d4d8f9a32b..0000000000 --- a/templates/app/react-native/src/store/reducers/PersistentStorageReducer.js +++ /dev/null @@ -1,17 +0,0 @@ -import { createReducer } from '@reduxjs/toolkit'; -import PersistentStorageActions from '../actions/PersistentStorageActions'; - -const initialState = { token: {}, language: null, tenant: {} }; - -export default createReducer(initialState, builder => - builder - .addCase(PersistentStorageActions.setToken, (state, action) => { - state.token = action.payload; - }) - .addCase(PersistentStorageActions.setLanguage, (state, action) => { - state.language = action.payload; - }) - .addCase(PersistentStorageActions.setTenant, (state, action) => { - state.tenant = action.payload; - }), -); diff --git a/templates/app/react-native/src/store/reducers/index.js b/templates/app/react-native/src/store/reducers/index.js deleted file mode 100644 index 0479999c14..0000000000 --- a/templates/app/react-native/src/store/reducers/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import { combineReducers } from '@reduxjs/toolkit'; -import AppReducer from './AppReducer'; -import LoadingReducer from './LoadingReducer'; -import PersistentStorageReducer from './PersistentStorageReducer'; - -const rootReducer = combineReducers({ - loading: LoadingReducer, - app: AppReducer, - persistentStorage: PersistentStorageReducer, -}); - -export default rootReducer; diff --git a/templates/app/react-native/src/store/sagas/AppSaga.js b/templates/app/react-native/src/store/sagas/AppSaga.js deleted file mode 100644 index 8eb795a971..0000000000 --- a/templates/app/react-native/src/store/sagas/AppSaga.js +++ /dev/null @@ -1,50 +0,0 @@ -import { all, call, put, takeLatest } from 'redux-saga/effects'; -import { Logout } from '../../api/AccountAPI'; -import { getApplicationConfiguration } from '../../api/ApplicationConfigurationAPI'; -import AppActions from '../actions/AppActions'; -import LoadingActions from '../actions/LoadingActions'; -import PersistentStorageActions from '../actions/PersistentStorageActions'; - -function* fetchAppConfig({ payload: { showLoading, callback } }) { - if (showLoading) { - yield put(LoadingActions.start({ key: 'appConfig', opacity: 1 })); - } - - const data = yield call(getApplicationConfiguration); - yield put(AppActions.setAppConfig(data)); - yield put( - PersistentStorageActions.setLanguage( - data.localization.currentCulture.cultureName, - ), - ); - if (showLoading) yield put(LoadingActions.stop({ key: 'appConfig' })); - callback(); -} - -function* setLanguage(action) { - yield put(PersistentStorageActions.setLanguage(action.payload)); - yield put(AppActions.fetchAppConfigAsync()); -} - -function* logout({ payload: { client_id, token, refresh_token } }) { - const data = { client_id, token }; - - yield call(Logout, data); - - if (!!refresh_token) { - data.token = refresh_token; - data.token_type_hint = 'refresh_token'; - yield call(Logout, data); - } - - yield put(PersistentStorageActions.setToken({})); - yield put(AppActions.fetchAppConfigAsync()); -} - -export default function* () { - yield all([ - takeLatest(AppActions.setLanguageAsync.type, setLanguage), - takeLatest(AppActions.fetchAppConfigAsync.type, fetchAppConfig), - takeLatest(AppActions.logoutAsync.type, logout), - ]); -} diff --git a/templates/app/react-native/src/store/sagas/index.js b/templates/app/react-native/src/store/sagas/index.js deleted file mode 100644 index 1b56c35c2c..0000000000 --- a/templates/app/react-native/src/store/sagas/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { all, fork } from 'redux-saga/effects'; -import AppSaga from './AppSaga'; - -export function* rootSaga() { - yield all([fork(AppSaga)]); -} diff --git a/templates/app/react-native/src/store/selectors/AppSelectors.js b/templates/app/react-native/src/store/selectors/AppSelectors.js deleted file mode 100644 index 82e0000b71..0000000000 --- a/templates/app/react-native/src/store/selectors/AppSelectors.js +++ /dev/null @@ -1,19 +0,0 @@ -import { createSelector } from 'reselect'; - -const getApp = state => state.app; - -export function createAppConfigSelector() { - return createSelector([getApp], state => state.appConfig); -} - -export function createLanguageSelector() { - return createSelector([getApp], state => state?.appConfig?.localization?.currentCulture); -} - -export function createLanguagesSelector() { - return createSelector([getApp], state => state?.appConfig?.localization?.languages); -} - -export function createGrantedPolicySelector(key) { - return createSelector([getApp], state => state?.appConfig?.auth?.grantedPolicies[key] ?? false); -} diff --git a/templates/app/react-native/src/store/selectors/LoadingSelectors.js b/templates/app/react-native/src/store/selectors/LoadingSelectors.js deleted file mode 100644 index 47a798fe2c..0000000000 --- a/templates/app/react-native/src/store/selectors/LoadingSelectors.js +++ /dev/null @@ -1,11 +0,0 @@ -import { createSelector } from 'reselect'; - -const getLoading = state => state.loading; - -export function createLoadingSelector() { - return createSelector([getLoading], loading => loading.loading); -} - -export function createOpacitySelector() { - return createSelector([getLoading], loading => loading.opacity); -} diff --git a/templates/app/react-native/src/store/selectors/PersistentStorageSelectors.js b/templates/app/react-native/src/store/selectors/PersistentStorageSelectors.js deleted file mode 100644 index d5d86f8b7d..0000000000 --- a/templates/app/react-native/src/store/selectors/PersistentStorageSelectors.js +++ /dev/null @@ -1,11 +0,0 @@ -import { createSelector } from 'reselect'; - -const getPersistentStorage = state => state.persistentStorage; - -export function createTokenSelector() { - return createSelector([getPersistentStorage], persistentStorage => persistentStorage.token); -} - -export function createTenantSelector() { - return createSelector([getPersistentStorage], persistentStorage => persistentStorage.tenant); -} diff --git a/templates/app/react-native/src/utils/DateExtensions.js b/templates/app/react-native/src/utils/DateExtensions.js deleted file mode 100644 index 890a6fdfc5..0000000000 --- a/templates/app/react-native/src/utils/DateExtensions.js +++ /dev/null @@ -1,5 +0,0 @@ -export function toLocalISOString(date) { - const timezoneOffset = date.getTimezoneOffset(); - - return new Date(date.getTime() - timezoneOffset * 60000).toISOString(); -} diff --git a/templates/app/react-native/src/utils/Debounce.js b/templates/app/react-native/src/utils/Debounce.js deleted file mode 100644 index 34588c63d4..0000000000 --- a/templates/app/react-native/src/utils/Debounce.js +++ /dev/null @@ -1,14 +0,0 @@ -export function debounce(func, wait, immediate) { - let timeout; - return (...args) => { - const context = this; - const later = () => { - timeout = null; - if (!immediate) func.apply(context, args); - }; - const callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; -} diff --git a/templates/app/react-native/src/utils/RandomColor.js b/templates/app/react-native/src/utils/RandomColor.js deleted file mode 100644 index a925d77763..0000000000 --- a/templates/app/react-native/src/utils/RandomColor.js +++ /dev/null @@ -1,12 +0,0 @@ -export function getRandomColors(count) { - const colors = []; - - for (let i = 0; i < count; i++) { - const r = ((i + 5) * (i + 5) * 474) % 255; - const g = ((i + 5) * (i + 5) * 1600) % 255; - const b = ((i + 5) * (i + 5) * 84065) % 255; - colors.push(`rgba(${r}, ${g}, ${b})`); - } - - return colors; -} diff --git a/templates/app/react-native/src/utils/ReduxConnect.js b/templates/app/react-native/src/utils/ReduxConnect.js deleted file mode 100644 index be68b186af..0000000000 --- a/templates/app/react-native/src/utils/ReduxConnect.js +++ /dev/null @@ -1,9 +0,0 @@ -import { connect } from 'react-redux'; - -export function connectToRedux({ component, stateProps = () => ({}), dispatchProps = () => ({}) }) { - const mapStateToProps = () => stateProps; - - const mapDispatchToProps = dispatchProps; - - return connect(mapStateToProps, mapDispatchToProps)(component); -} diff --git a/templates/app/react-native/src/utils/TokenUtils.js b/templates/app/react-native/src/utils/TokenUtils.js deleted file mode 100644 index ab1925061b..0000000000 --- a/templates/app/react-native/src/utils/TokenUtils.js +++ /dev/null @@ -1,7 +0,0 @@ -export function isTokenValid(token) { - if (!token || typeof token !== 'object' || !token.expire_time) return false; - - const now = new Date().valueOf(); - - return now < token.expire_time; -} diff --git a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 2c90dee36c..e690b1217e 100644 --- a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -1,10 +1,10 @@ - + Exe - net8.0 + net9.0 enable @@ -13,7 +13,7 @@
- + diff --git a/templates/maui/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/maui/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 04c7d4fa36..5df925360e 100644 --- a/templates/maui/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/maui/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -1,12 +1,12 @@ - + - net8.0-android;net8.0-ios;net8.0-maccatalyst - $(TargetFrameworks);net8.0-windows10.0.19041.0 + net9.0-android;net9.0-ios;net9.0-maccatalyst + $(TargetFrameworks);net9.0-windows10.0.19041.0 - + enable Exe MyCompanyName.MyProjectName @@ -35,7 +35,7 @@ - + diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index 13ec8b0b1b..6379a88a16 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -13,15 +13,15 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~8.3.0", - "@abp/ng.components": "~8.3.0", - "@abp/ng.core": "~8.3.0", - "@abp/ng.identity": "~8.3.0", - "@abp/ng.oauth": "~8.3.0", - "@abp/ng.setting-management": "~8.3.0", - "@abp/ng.tenant-management": "~8.3.0", - "@abp/ng.theme.basic": "~8.3.0", - "@abp/ng.theme.shared": "~8.3.0", + "@abp/ng.account": "~8.3.1", + "@abp/ng.components": "~8.3.1", + "@abp/ng.core": "~8.3.1", + "@abp/ng.identity": "~8.3.1", + "@abp/ng.oauth": "~8.3.1", + "@abp/ng.setting-management": "~8.3.1", + "@abp/ng.tenant-management": "~8.3.1", + "@abp/ng.theme.basic": "~8.3.1", + "@abp/ng.theme.shared": "~8.3.1", "@angular/animations": "~18.1.0", "@angular/common": "~18.1.0", "@angular/compiler": "~18.1.0", @@ -36,7 +36,7 @@ "zone.js": "~0.14.0" }, "devDependencies": { - "@abp/ng.schematics": "~8.3.0", + "@abp/ng.schematics": "~8.3.1", "@angular-devkit/build-angular": "~18.1.0", "@angular-eslint/builder": "~18.1.0", "@angular-eslint/eslint-plugin": "~18.1.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index 6c95bc92b2..e3c0bec7d6 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "~18.1.0", "@angular/core": "~18.1.0", - "@abp/ng.core": "~8.3.0", - "@abp/ng.theme.shared": "~8.3.0" + "@abp/ng.core": "~8.3.1", + "@abp/ng.theme.shared": "~8.3.1" }, "dependencies": { "tslib": "^2.1.0" diff --git a/templates/module/aspnet-core/database/Dockerfile b/templates/module/aspnet-core/database/Dockerfile index 80c49b96e6..464feb4e57 100644 --- a/templates/module/aspnet-core/database/Dockerfile +++ b/templates/module/aspnet-core/database/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build COPY . . WORKDIR /templates/service/host/IdentityServerHost diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Dockerfile b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Dockerfile index b3e3de1473..e977bcde30 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Dockerfile +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base WORKDIR /app EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src COPY . . WORKDIR /src/templates/service/host/MyCompanyName.MyProjectName.AuthServer diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240909033238_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002090125_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240909033238_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002090125_Initial.Designer.cs index 7a0df4a54b..bd845c4e60 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240909033238_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002090125_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(AuthServerDbContext))] - [Migration("20240909033238_Initial")] + [Migration("20241002090125_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -679,8 +679,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240909033238_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002090125_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240909033238_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002090125_Initial.cs index 15106cf92a..54299a0ade 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20240909033238_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20241002090125_Initial.cs @@ -266,7 +266,7 @@ namespace MyCompanyName.MyProjectName.Migrations TenantId = table.Column(type: "uniqueidentifier", nullable: true), UserId = table.Column(type: "uniqueidentifier", nullable: false), ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - IpAddresses = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IpAddresses = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), SignedIn = table.Column(type: "datetime2", nullable: false), LastAccessed = table.Column(type: "datetime2", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs index 0fc6495dbc..784e82c831 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -676,8 +676,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj index f6affd669e..78f468732b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -13,8 +13,8 @@ - - + + all runtime; build; native; contentfiles; analyzers diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs index ad5ba84144..feb60f2b34 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs @@ -210,7 +210,7 @@ public class MyProjectNameAuthServerModule : AbpModule app.UseHttpsRedirection(); app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseCors(); app.UseAuthentication(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json index ace84a4cf2..580e70e3e2 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-authserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.1" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj index 1f74a203b7..c45c9ee425 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/MyCompanyName.MyProjectName.Blazor.Host.Client.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable true MyCompanyName.MyProjectName.Blazor.Host.Client @@ -12,8 +12,8 @@ - - + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj index 9791d142e3..9e51d6816c 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj @@ -3,12 +3,12 @@ - net8.0 + net9.0 enable - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs index 99c5702ed3..cddfdec7d4 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs @@ -33,7 +33,7 @@ else app.UseHttpsRedirection(); -app.UseStaticFiles(); +app.MapStaticAssets(); app.UseAntiforgery(); app.MapRazorComponents() diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240909033215_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002090054_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240909033215_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002090054_Initial.Designer.cs index 61a0b5a343..341e0f9405 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240909033215_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002090054_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20240909033215_Initial")] + [Migration("20241002090054_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -679,8 +679,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240909033215_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002090054_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240909033215_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002090054_Initial.cs index 2cc9e84ba6..8b719e8c0d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20240909033215_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/20241002090054_Initial.cs @@ -266,7 +266,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations TenantId = table.Column(type: "uniqueidentifier", nullable: true), UserId = table.Column(type: "uniqueidentifier", nullable: false), ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - IpAddresses = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IpAddresses = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), SignedIn = table.Column(type: "datetime2", nullable: false), LastAccessed = table.Column(type: "datetime2", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs index 338e67c7ad..b747558823 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/Migrations/UnifiedDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -676,8 +676,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj index af37482bcd..76ef5698e5 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable true true @@ -17,7 +17,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs index 4451d010a0..b845e23241 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs @@ -254,7 +254,7 @@ public class MyProjectNameBlazorHostModule : AbpModule app.UseHttpsRedirection(); app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); app.UseAbpOpenIddictValidation(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json index 08805b20e8..f646ce2e1f 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.0", - "@abp/aspnetcore.components.server.basictheme": "~8.3.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.1", + "@abp/aspnetcore.components.server.basictheme": "~8.3.1" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.csproj index 8133f9cddf..83bb5689cf 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Host.Shared/MyCompanyName.MyProjectName.Host.Shared.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Dockerfile b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Dockerfile index 7740ffbc24..ab9507b7a2 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Dockerfile +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base WORKDIR /app EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src COPY . . WORKDIR /src/templates/service/host/MyCompanyName.MyProjectName.HttpApi.Host diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20240909033251_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002090142_Initial.Designer.cs similarity index 89% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20240909033251_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002090142_Initial.Designer.cs index 1b63d3185e..d36c6aa41c 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20240909033251_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002090142_Initial.Designer.cs @@ -12,7 +12,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameHttpApiHostMigrationsDbContext))] - [Migration("20240909033251_Initial")] + [Migration("20241002090142_Initial")] partial class Initial { /// @@ -21,7 +21,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20240909033251_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002090142_Initial.cs similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20240909033251_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/20241002090142_Initial.cs diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs index 82d40047cc..8f18778ba3 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Migrations/MyProjectNameHttpApiHostMigrationsDbContextModelSnapshot.cs @@ -18,7 +18,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index f56f04fccc..f2b60eda06 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -14,9 +14,9 @@ - - - + + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index bb759d2386..d53b3d90bc 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -175,7 +175,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule app.UseHttpsRedirection(); app.UseCorrelationId(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseCors(); app.UseAuthentication(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index f1579300a2..780571f7e8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -13,7 +13,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs index f17251116f..e90eddd122 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs @@ -240,7 +240,7 @@ public class MyProjectNameWebHostModule : AbpModule } app.UseHttpsRedirection(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index 7dad1fc3e2..a631510c85 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.1" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240909033311_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002090213_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240909033311_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002090213_Initial.Designer.cs index 195a507952..310d641cf2 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240909033311_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002090213_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(UnifiedDbContext))] - [Migration("20240909033311_Initial")] + [Migration("20241002090213_Initial")] partial class Initial { /// @@ -22,7 +22,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -679,8 +679,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240909033311_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002090213_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240909033311_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002090213_Initial.cs index 68e8cd9a18..a213cafa11 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20240909033311_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/20241002090213_Initial.cs @@ -266,7 +266,7 @@ namespace MyCompanyName.MyProjectName.Migrations TenantId = table.Column(type: "uniqueidentifier", nullable: true), UserId = table.Column(type: "uniqueidentifier", nullable: false), ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), - IpAddresses = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IpAddresses = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), SignedIn = table.Column(type: "datetime2", nullable: false), LastAccessed = table.Column(type: "datetime2", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs index ab3b5d3232..6275653b74 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace MyCompanyName.MyProjectName.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0-rc.1.24451.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); @@ -676,8 +676,8 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("ExtraProperties"); b.Property("IpAddresses") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); b.Property("LastAccessed") .HasColumnType("datetime2"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj index ff44ba45ef..cc18d861ff 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -13,7 +13,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs index 8174c0d9ee..5bca5679e1 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs @@ -158,7 +158,7 @@ public class MyProjectNameWebUnifiedModule : AbpModule } app.UseHttpsRedirection(); - app.UseStaticFiles(); + app.MapAbpStaticAssets(); app.UseRouting(); app.UseAuthentication(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index 7dad1fc3e2..a631510c85 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.0" + "@abp/aspnetcore.mvc.ui.theme.basic": "~8.3.1" } } diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj index 16c3760c74..c6501cf477 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/MyCompanyName.MyProjectName.Application.Contracts.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj index 147fa71672..df92d80ceb 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Application/MyCompanyName.MyProjectName.Application.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index f50e44f2b7..b8675efd80 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.csproj index 9a03d5c6d6..bfc82bfb5d 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebAssembly/MyCompanyName.MyProjectName.Blazor.WebAssembly.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index d3f3898f75..870ca204dd 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index af72c8e86f..a8d979b688 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName true @@ -15,7 +15,7 @@ - + diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj index 8960e4f276..d115667288 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj index f7130de067..6e10588a6c 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj index 7271230ed1..28cf860031 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Client/MyCompanyName.MyProjectName.HttpApi.Client.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj index 4b5b4fbf19..cc5a76306e 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi/MyCompanyName.MyProjectName.HttpApi.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj index 9694d57c61..63c8329a73 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Installer/MyCompanyName.MyProjectName.Installer.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable true MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj index bb53373ba6..a614e44d75 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index ebeb932aef..9f45a1b2a3 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; true @@ -22,7 +22,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index e35cec36d7..04b0de10b5 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -3,7 +3,7 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -11,7 +11,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index e16b8e9883..6f5ed8316a 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -3,13 +3,13 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 3a57b39d76..8cc9e6e105 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -1,16 +1,16 @@ - + - net8.0 + net9.0 enable MyCompanyName.MyProjectName - - + + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj index abc2cb00d8..ceb9b2ecbd 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 enable MyCompanyName.MyProjectName @@ -23,7 +23,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index d830b1a598..39bfa306c3 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -3,13 +3,13 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 13d165e43d..5d7afeacaa 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -3,13 +3,13 @@ - net8.0 + net9.0 enable MyCompanyName.MyProjectName - + all diff --git a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 885e0974e6..deabdcce13 100644 --- a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -1,10 +1,10 @@ - + WinExe - net8.0-windows + net9.0-windows enable true @@ -14,7 +14,7 @@ - + diff --git a/test/AbpPerfTest/AbpPerfTest.WithAbp/AbpPerfTest.WithAbp.csproj b/test/AbpPerfTest/AbpPerfTest.WithAbp/AbpPerfTest.WithAbp.csproj index 364987cb4c..8ccebdd263 100644 --- a/test/AbpPerfTest/AbpPerfTest.WithAbp/AbpPerfTest.WithAbp.csproj +++ b/test/AbpPerfTest/AbpPerfTest.WithAbp/AbpPerfTest.WithAbp.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 diff --git a/test/AbpPerfTest/AbpPerfTest.WithoutAbp/AbpPerfTest.WithoutAbp.csproj b/test/AbpPerfTest/AbpPerfTest.WithoutAbp/AbpPerfTest.WithoutAbp.csproj index 878fe0f1b7..7f5ab9c780 100644 --- a/test/AbpPerfTest/AbpPerfTest.WithoutAbp/AbpPerfTest.WithoutAbp.csproj +++ b/test/AbpPerfTest/AbpPerfTest.WithoutAbp/AbpPerfTest.WithoutAbp.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 diff --git a/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj b/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj index 440fc82aee..1d18a97fca 100644 --- a/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj +++ b/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 DistDemoApp diff --git a/test/DistEvents/DistDemoApp.MongoDbKafka/DistDemoApp.MongoDbKafka.csproj b/test/DistEvents/DistDemoApp.MongoDbKafka/DistDemoApp.MongoDbKafka.csproj index f7b490aa16..21abd5443a 100644 --- a/test/DistEvents/DistDemoApp.MongoDbKafka/DistDemoApp.MongoDbKafka.csproj +++ b/test/DistEvents/DistDemoApp.MongoDbKafka/DistDemoApp.MongoDbKafka.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 DistDemoApp diff --git a/test/DistEvents/DistDemoApp.MongoDbRebus/DistDemoApp.MongoDbRebus.csproj b/test/DistEvents/DistDemoApp.MongoDbRebus/DistDemoApp.MongoDbRebus.csproj index d662d560a5..0fc57319c8 100644 --- a/test/DistEvents/DistDemoApp.MongoDbRebus/DistDemoApp.MongoDbRebus.csproj +++ b/test/DistEvents/DistDemoApp.MongoDbRebus/DistDemoApp.MongoDbRebus.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 DistDemoApp diff --git a/test/DistEvents/DistDemoApp.Shared/DistDemoApp.Shared.csproj b/test/DistEvents/DistDemoApp.Shared/DistDemoApp.Shared.csproj index 936f29d9ec..ab666d9696 100644 --- a/test/DistEvents/DistDemoApp.Shared/DistDemoApp.Shared.csproj +++ b/test/DistEvents/DistDemoApp.Shared/DistDemoApp.Shared.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 DistDemoApp diff --git a/tools/localization-key-synchronizer/src/LocalizationKeySynchronizer.csproj b/tools/localization-key-synchronizer/src/LocalizationKeySynchronizer.csproj index c5f6097cb6..0af7223191 100644 --- a/tools/localization-key-synchronizer/src/LocalizationKeySynchronizer.csproj +++ b/tools/localization-key-synchronizer/src/LocalizationKeySynchronizer.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 enable enable