Browse Source

Merge branch 'dev' into EngincanV/docs-line-highlight

pull/9409/head
Alper Ebicoglu 5 years ago
parent
commit
3c77636996
  1. 6
      abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/it.json
  2. 10
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/fi.json
  3. 10
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/fr.json
  4. 10
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/hi.json
  5. 112
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/it.json
  6. 4
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/it.json
  7. 24
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fi.json
  8. 24
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/fr.json
  9. 22
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/hi.json
  10. 88
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/it.json
  11. 42
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/fi.json
  12. 30
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/fr.json
  13. 28
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/hi.json
  14. 70
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/it.json
  15. 24
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fi.json
  16. 14
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/fr.json
  17. 12
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/hi.json
  18. 80
      abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/it.json
  19. 3
      docs/en/Customizing-Application-Modules-Guide.md
  20. 18
      docs/en/Startup-Templates/Module.md
  21. 12
      framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs
  22. 7
      framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DefaultServerUrlProvider.cs
  23. 6
      framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IServerUrlProvider.cs
  24. 10
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs
  25. 16
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs
  26. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/it.json
  27. 8
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplateBase.cs
  28. 12
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/it.json
  29. 26
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
  30. 14
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/IRemoteServiceConfigurationProvider.cs
  31. 9
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationDictionary.cs
  32. 26
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProvider.cs
  33. 5
      framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs
  34. 8
      framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/it.json
  35. 2
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json
  36. 4
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json
  37. 34
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json
  38. 12
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/it.json
  39. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/it.json
  40. 2
      framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/it.json
  41. 2
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/it.json
  42. 2
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/hi.json
  43. 4
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/it.json
  44. 2
      modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/it.json
  45. 14
      modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/it.json
  46. 90
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20210622142314_Initial.Designer.cs
  47. 63
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20210622142314_Initial.cs
  48. 88
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs
  49. 36
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs
  50. 25
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuItemAdminAppService.cs
  51. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs
  52. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs
  53. 207
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs
  54. 125
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs
  55. 123
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs
  56. 79
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuItemAdminController.cs
  57. 19
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs
  58. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Menus/CmsKitAdminMenuContributor.cs
  59. 23
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/CreateModal.cshtml
  60. 44
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/CreateModal.cshtml.cs
  61. 34
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/Index.cshtml
  62. 13
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/Index.cshtml.cs
  63. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml
  64. 12
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml.cs
  65. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/Index.cshtml
  66. 16
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/Index.cshtml.cs
  67. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml
  68. 12
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs
  69. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js
  70. 16
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/index.js
  71. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js
  72. 23
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/UpdateModal.cshtml
  73. 53
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/UpdateModal.cshtml.cs
  74. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/createModal.js
  75. 118
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/index.js
  76. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/updateModal.js
  77. 1
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs
  78. 20
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuWithDetailsDto.cs
  79. 19
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Menus/MenuChangedHandler.cs
  80. 6
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fi.json
  81. 6
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fr.json
  82. 10
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hi.json
  83. 76
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/it.json
  84. 9
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/IMenuItemRepository.cs
  85. 18
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/IMenuRepository.cs
  86. 33
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/Menu.cs
  87. 11
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/MenuItem.cs
  88. 63
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/MenuItemManager.cs
  89. 109
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/MenuManager.cs
  90. 27
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/PageChangedHandler.cs
  91. 1
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContext.cs
  92. 10
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs
  93. 2
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/ICmsKitDbContext.cs
  94. 13
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Menus/EfCoreMenuExtensions.cs
  95. 14
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Menus/EfCoreMenuItemRepository.cs
  96. 40
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Menus/EfCoreMenuRepository.cs
  97. 2
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs
  98. 6
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs
  99. 3
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs
  100. 2
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs

6
abp_io/AbpIoLocalization/AbpIoLocalization/Account/Localization/Resources/it.json

@ -2,13 +2,13 @@
"culture": "it", "culture": "it",
"texts": { "texts": {
"Account": "Account ABP - Accesso e registrazione | ABP.IO", "Account": "Account ABP - Accesso e registrazione | ABP.IO",
"Welcome": "benvenuto", "Welcome": "Benvenuto",
"UseOneOfTheFollowingLinksToContinue": "Usa uno dei seguenti link per continuare", "UseOneOfTheFollowingLinksToContinue": "Usa uno dei seguenti link per continuare",
"FrameworkHomePage": "Home page del framework", "FrameworkHomePage": "Home page del framework",
"FrameworkDocumentation": "Documentazione del framework", "FrameworkDocumentation": "Documentazione del framework",
"OfficialBlog": "Blog ufficiale", "OfficialBlog": "Blog ufficiale",
"CommercialHomePage": "Home page commerciale", "CommercialHomePage": "Home page di Commercial",
"CommercialSupportWebSite": "Sito web di supporto commerciale", "CommercialSupportWebSite": "Sito web supporto di Commercial",
"CommunityWebSite": "Sito web della comunità ABP" "CommunityWebSite": "Sito web della comunità ABP"
} }
} }

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

@ -108,12 +108,12 @@
"LicenseStartDate": "Lisenssin aloituspäivä", "LicenseStartDate": "Lisenssin aloituspäivä",
"LicenseEndDate": "Lisenssin päättymispäivä", "LicenseEndDate": "Lisenssin päättymispäivä",
"OrganizationNamePlaceholder": "Organisaation nimi...", "OrganizationNamePlaceholder": "Organisaation nimi...",
"TotalQuestionCountPlaceholder": "Kysymysten kokonaismäärä ...", "TotalQuestionCountPlaceholder": "Kysymysten kokonaismäärä...",
"RemainingQuestionCountPlaceholder": "Jäljellä oleva kysymysten määrä ...", "RemainingQuestionCountPlaceholder": "Jäljellä oleva kysymysten määrä...",
"LicenseTypePlaceholder": "Lisenssi-tyyppi...", "LicenseTypePlaceholder": "Lisenssi-tyyppi...",
"CreationDatePlaceholder": "Luomispäivä...", "CreationDatePlaceholder": "Luomispäivä...",
"LicenseStartDatePlaceholder": "Lisenssin aloituspäivä ...", "LicenseStartDatePlaceholder": "Lisenssin aloituspäivä...",
"LicenseEndDatePlaceholder": "Lisenssin päättymispäivä ...", "LicenseEndDatePlaceholder": "Lisenssin päättymispäivä...",
"UsernameOrEmail": "Käyttäjätunnus tai sähköpostiosoite", "UsernameOrEmail": "Käyttäjätunnus tai sähköpostiosoite",
"UsernameOrEmailPlaceholder": "Käyttäjätunnus tai sähköpostiosoite...", "UsernameOrEmailPlaceholder": "Käyttäjätunnus tai sähköpostiosoite...",
"Member": "Jäsen", "Member": "Jäsen",
@ -277,6 +277,6 @@
"ThisExtensionIsNotAllowed": "Tätä laajennusta ei sallita.", "ThisExtensionIsNotAllowed": "Tätä laajennusta ei sallita.",
"TheFileIsTooLarge": "Tiedosto on liian suuri!", "TheFileIsTooLarge": "Tiedosto on liian suuri!",
"ArticleDeletionConfirmationMessage": "Haluatko varmasti poistaa tämän artikkelin vaikeasti?", "ArticleDeletionConfirmationMessage": "Haluatko varmasti poistaa tämän artikkelin vaikeasti?",
"ChooseCoverImage": "Valitse kansikuva ..." "ChooseCoverImage": "Valitse kansikuva..."
} }
} }

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

@ -108,12 +108,12 @@
"LicenseStartDate": "Date de début de la licence", "LicenseStartDate": "Date de début de la licence",
"LicenseEndDate": "Date de fin de licence", "LicenseEndDate": "Date de fin de licence",
"OrganizationNamePlaceholder": "Nom de l'organisation...", "OrganizationNamePlaceholder": "Nom de l'organisation...",
"TotalQuestionCountPlaceholder": "Nombre total de questions ...", "TotalQuestionCountPlaceholder": "Nombre total de questions...",
"RemainingQuestionCountPlaceholder": "Nombre de questions restantes ...", "RemainingQuestionCountPlaceholder": "Nombre de questions restantes...",
"LicenseTypePlaceholder": "Type de licence...", "LicenseTypePlaceholder": "Type de licence...",
"CreationDatePlaceholder": "Date de création...", "CreationDatePlaceholder": "Date de création...",
"LicenseStartDatePlaceholder": "Date de début de la licence ...", "LicenseStartDatePlaceholder": "Date de début de la licence...",
"LicenseEndDatePlaceholder": "Date de fin de licence ...", "LicenseEndDatePlaceholder": "Date de fin de licence...",
"UsernameOrEmail": "Nom d'utilisateur ou email", "UsernameOrEmail": "Nom d'utilisateur ou email",
"UsernameOrEmailPlaceholder": "Nom d'utilisateur ou email...", "UsernameOrEmailPlaceholder": "Nom d'utilisateur ou email...",
"Member": "Membre", "Member": "Membre",
@ -277,6 +277,6 @@
"ThisExtensionIsNotAllowed": "Cette extension n'est pas autorisée.", "ThisExtensionIsNotAllowed": "Cette extension n'est pas autorisée.",
"TheFileIsTooLarge": "Le fichier est trop volumineux!", "TheFileIsTooLarge": "Le fichier est trop volumineux!",
"ArticleDeletionConfirmationMessage": "Voulez-vous vraiment supprimer définitivement cet article?", "ArticleDeletionConfirmationMessage": "Voulez-vous vraiment supprimer définitivement cet article?",
"ChooseCoverImage": "Choisissez une image de couverture ..." "ChooseCoverImage": "Choisissez une image de couverture..."
} }
} }

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

@ -108,12 +108,12 @@
"LicenseStartDate": "लाइसेंस शुरू होने की तारीख", "LicenseStartDate": "लाइसेंस शुरू होने की तारीख",
"LicenseEndDate": "लाइसेंस की अंतिम तिथि", "LicenseEndDate": "लाइसेंस की अंतिम तिथि",
"OrganizationNamePlaceholder": "संगठन का नाम...", "OrganizationNamePlaceholder": "संगठन का नाम...",
"TotalQuestionCountPlaceholder": "कुल प्रश्न संख्या ...", "TotalQuestionCountPlaceholder": "कुल प्रश्न संख्या...",
"RemainingQuestionCountPlaceholder": "शेष प्रश्न गणना ...", "RemainingQuestionCountPlaceholder": "शेष प्रश्न गणना...",
"LicenseTypePlaceholder": "लाइसेंस के प्रकार...", "LicenseTypePlaceholder": "लाइसेंस के प्रकार...",
"CreationDatePlaceholder": "निर्माण तिथि...", "CreationDatePlaceholder": "निर्माण तिथि...",
"LicenseStartDatePlaceholder": "लाइसेंस शुरू होने की तारीख ...", "LicenseStartDatePlaceholder": "लाइसेंस शुरू होने की तारीख...",
"LicenseEndDatePlaceholder": "लाइसेंस की अंतिम तिथि ...", "LicenseEndDatePlaceholder": "लाइसेंस की अंतिम तिथि...",
"UsernameOrEmail": "उपयोगकर्ता का नाम या ईमेल", "UsernameOrEmail": "उपयोगकर्ता का नाम या ईमेल",
"UsernameOrEmailPlaceholder": "उपयोगकर्ता का नाम या ईमेल...", "UsernameOrEmailPlaceholder": "उपयोगकर्ता का नाम या ईमेल...",
"Member": "सदस्य", "Member": "सदस्य",
@ -277,6 +277,6 @@
"ThisExtensionIsNotAllowed": "इस एक्सटेंशन की अनुमति नहीं है।", "ThisExtensionIsNotAllowed": "इस एक्सटेंशन की अनुमति नहीं है।",
"TheFileIsTooLarge": "फ़ाइल बहुत बड़ी है!", "TheFileIsTooLarge": "फ़ाइल बहुत बड़ी है!",
"ArticleDeletionConfirmationMessage": "क्या आप वाकई इस लेख को हटाना चाहते हैं?", "ArticleDeletionConfirmationMessage": "क्या आप वाकई इस लेख को हटाना चाहते हैं?",
"ChooseCoverImage": "कवर छवि चुनें ..." "ChooseCoverImage": "कवर छवि चुनें..."
} }
} }

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

@ -5,20 +5,20 @@
"Permission:Manage": "Gestisci organizzazioni", "Permission:Manage": "Gestisci organizzazioni",
"Permission:DiscountRequests": "Richieste di sconto", "Permission:DiscountRequests": "Richieste di sconto",
"Permission:DiscountManage": "Gestisci le richieste di sconto", "Permission:DiscountManage": "Gestisci le richieste di sconto",
"Permission:Disable": "disattivare", "Permission:Disable": "Disattiva",
"Permission:Enable": "Abilitare", "Permission:Enable": "Abilita",
"Permission:EnableSendEmail": "Abilita Invia e-mail", "Permission:EnableSendEmail": "Abilita Invia e-mail",
"Permission:SendEmail": "Invia una email", "Permission:SendEmail": "Invia una email",
"Permission:NpmPackages": "Pacchetti NPM", "Permission:NpmPackages": "Pacchetti NPM",
"Permission:NugetPackages": "Pacchetti Nuget", "Permission:NugetPackages": "Pacchetti Nuget",
"Permission:Maintenance": "Manutenzione", "Permission:Maintenance": "Manutenzione",
"Permission:Maintain": "Mantenere", "Permission:Maintain": "Mantieni",
"Permission:ClearCaches": "Cancella cache", "Permission:ClearCaches": "Pulisci cache",
"Permission:Modules": "Moduli", "Permission:Modules": "Moduli",
"Permission:Packages": "Pacchi", "Permission:Packages": "Pacchi",
"Permission:Edit": "modificare", "Permission:Edit": "Modifica",
"Permission:Delete": "Elimina", "Permission:Delete": "Elimina",
"Permission:Create": "Creare", "Permission:Create": "Crea",
"Permission:Accounting": "Contabilità", "Permission:Accounting": "Contabilità",
"Permission:Accounting:Quotation": "Quotazione", "Permission:Accounting:Quotation": "Quotazione",
"Permission:Accounting:Invoice": "Fattura", "Permission:Accounting:Invoice": "Fattura",
@ -30,31 +30,31 @@
"NugetPackageDeletionWarningMessage": "Questo pacchetto Nuget verrà eliminato. Lo confermi?", "NugetPackageDeletionWarningMessage": "Questo pacchetto Nuget verrà eliminato. Lo confermi?",
"ModuleDeletionWarningMessage": "Questo modulo verrà eliminato. Lo confermi?", "ModuleDeletionWarningMessage": "Questo modulo verrà eliminato. Lo confermi?",
"Name": "Nome", "Name": "Nome",
"DisplayName": "Nome da visualizzare", "DisplayName": "Nome visualizzato",
"ShortDescription": "Breve descrizione", "ShortDescription": "Breve descrizione",
"NameFilter": "Nome", "NameFilter": "Nome",
"CreationTime": "Tempo di creazione", "CreationTime": "Orario di creazione",
"IsPro": "È pro", "IsPro": "È pro",
"IsFreeToActiveLicenseOwners": "Gratuito per i proprietari di licenze", "IsFreeToActiveLicenseOwners": "Gratuito per i proprietari di licenze",
"ShowOnModuleList": "Mostra nell'elenco dei moduli", "ShowOnModuleList": "Mostra nell'elenco dei moduli",
"EfCoreConfigureMethodName": "Configurare il nome del metodo", "EfCoreConfigureMethodName": "Configurare il nome del metodo",
"IsProFilter": "È pro", "IsProFilter": "È pro",
"ApplicationType": "Tipo di applicazione", "ApplicationType": "Tipo di applicazione",
"Target": "Bersaglio", "Target": "Obiettivo",
"TargetFilter": "Bersaglio", "TargetFilter": "Obiettivo",
"ModuleClass": "Classe del modulo", "ModuleClass": "Classe del modulo",
"NugetPackageTarget.DomainShared": "Dominio condiviso", "NugetPackageTarget.DomainShared": "Dominio condiviso",
"NugetPackageTarget.Domain": "Dominio", "NugetPackageTarget.Domain": "Dominio",
"NugetPackageTarget.Application": "Applicazione", "NugetPackageTarget.Application": "Applicazione",
"NugetPackageTarget.ApplicationContracts": "Contratti applicativi", "NugetPackageTarget.ApplicationContracts": "Contratti Applicazione",
"NugetPackageTarget.HttpApi": "Http Api", "NugetPackageTarget.HttpApi": "Http Api",
"NugetPackageTarget.HttpApiClient": "Client API HTTP", "NugetPackageTarget.HttpApiClient": "Http Api Client",
"NugetPackageTarget.Web": "ragnatela", "NugetPackageTarget.Web": "Web",
"NugetPackageTarget.EntityFrameworkCore": "DeleteAllEntityFramework Core", "NugetPackageTarget.EntityFrameworkCore": "DeleteAllEntityFramework Core",
"NugetPackageTarget.MongoDB": "MongoDB", "NugetPackageTarget.MongoDB": "MongoDB",
"Edit": "modificare", "Edit": "Modifica",
"Delete": "Elimina", "Delete": "Elimina",
"Refresh": "ricaricare", "Refresh": "Ricarica",
"NpmPackages": "Pacchetti NPM", "NpmPackages": "Pacchetti NPM",
"NugetPackages": "Pacchetti Nuget", "NugetPackages": "Pacchetti Nuget",
"NpmPackageCount": "Conteggio pacchetti NPM", "NpmPackageCount": "Conteggio pacchetti NPM",
@ -64,10 +64,10 @@
"CreateANpmPackage": "Crea un pacchetto NPM", "CreateANpmPackage": "Crea un pacchetto NPM",
"CreateAModule": "Crea un modulo", "CreateAModule": "Crea un modulo",
"CreateANugetPackage": "Crea un pacchetto Nuget", "CreateANugetPackage": "Crea un pacchetto Nuget",
"AddNew": "Aggiungere nuova", "AddNew": "Aggiungi nuova",
"PackageAlreadyExist{0}": "Il pacchetto \"{0}\" è già aggiunto.", "PackageAlreadyExist{0}": "Il pacchetto \"{0}\" è già stato aggiunto.",
"ModuleAlreadyExist{0}": "Il modulo \"{0}\" è già aggiunto.", "ModuleAlreadyExist{0}": "Il modulo \"{0}\" è già stato aggiunto.",
"ClearCache": "Cancella cache", "ClearCache": "Pulisci cache",
"SuccessfullyCleared": "Cancellato con successo", "SuccessfullyCleared": "Cancellato con successo",
"Menu:NpmPackages": "Pacchetti NPM", "Menu:NpmPackages": "Pacchetti NPM",
"Menu:Modules": "Moduli", "Menu:Modules": "Moduli",
@ -75,19 +75,19 @@
"Menu:NugetPackages": "Pacchetti Nuget", "Menu:NugetPackages": "Pacchetti Nuget",
"CreateAnOrganization": "Crea un'organizzazione", "CreateAnOrganization": "Crea un'organizzazione",
"Organizations": "Organizzazioni", "Organizations": "Organizzazioni",
"LongName": "Nome lungo", "LongName": "Nome esteso",
"LicenseType": "Tipo di licenza", "LicenseType": "Tipo di licenza",
"MissingLicenseTypeField": "Il campo del tipo di licenza è obbligatorio!", "MissingLicenseTypeField": "Il campo del tipo di licenza è obbligatorio!",
"LicenseStartTime": "Ora di inizio della licenza", "LicenseStartTime": "Ora di inizio della licenza",
"LicenseEndTime": "Ora di fine della licenza", "LicenseEndTime": "Ora di fine della licenza",
"AllowedDeveloperCount": "Conteggio sviluppatori consentito", "AllowedDeveloperCount": "Conteggio sviluppatori consentito",
"UserNameOrEmailAddress": "Username o Indirizzo Email", "UserNameOrEmailAddress": "Username o indirizzo Email",
"AddOwner": "Aggiungi proprietario", "AddOwner": "Aggiungi proprietario",
"UserName": "Nome utente", "UserName": "Nome utente",
"Email": "E-mail", "Email": "E-mail",
"Developers": "Sviluppatori", "Developers": "Sviluppatori",
"AddDeveloper": "Aggiungi sviluppatore", "AddDeveloper": "Aggiungi sviluppatore",
"Create": "Creare", "Create": "Crea",
"UserNotFound": "Utente non trovato", "UserNotFound": "Utente non trovato",
"{0}WillBeRemovedFromDevelopers": "{0} Verrà rimosso dagli sviluppatori, confermi?", "{0}WillBeRemovedFromDevelopers": "{0} Verrà rimosso dagli sviluppatori, confermi?",
"{0}WillBeRemovedFromOwners": "{0} Verrà rimosso dai proprietari, confermi?", "{0}WillBeRemovedFromOwners": "{0} Verrà rimosso dai proprietari, confermi?",
@ -95,7 +95,7 @@
"Computers": "Computer", "Computers": "Computer",
"UniqueComputerId": "ID computer univoco", "UniqueComputerId": "ID computer univoco",
"LastSeenDate": "Data dell'ultimo accesso", "LastSeenDate": "Data dell'ultimo accesso",
"{0}Computer{1}WillBeRemovedFromRecords": "Il computer di {0} ({1}) verrà rimosso dai record", "{0}Computer{1}WillBeRemovedFromRecords": "Il computer di {0} ({1}) verrà rimosso da quelli registrati",
"OrganizationDeletionWarningMessage": "L'organizzazione verrà eliminata", "OrganizationDeletionWarningMessage": "L'organizzazione verrà eliminata",
"DeletingLastOwnerWarningMessage": "Un'organizzazione deve avere almeno un proprietario! Pertanto non puoi rimuovere questo proprietario", "DeletingLastOwnerWarningMessage": "Un'organizzazione deve avere almeno un proprietario! Pertanto non puoi rimuovere questo proprietario",
"This{0}AlreadyExistInThisOrganization": "Questo {0} esiste già in questa organizzazione", "This{0}AlreadyExistInThisOrganization": "Questo {0} esiste già in questa organizzazione",
@ -108,12 +108,12 @@
"LicenseStartDate": "Data di inizio della licenza", "LicenseStartDate": "Data di inizio della licenza",
"LicenseEndDate": "Data di fine della licenza", "LicenseEndDate": "Data di fine della licenza",
"OrganizationNamePlaceholder": "Nome dell'organizzazione...", "OrganizationNamePlaceholder": "Nome dell'organizzazione...",
"TotalQuestionCountPlaceholder": "Conteggio totale delle domande ...", "TotalQuestionCountPlaceholder": "Conteggio totale delle domande...",
"RemainingQuestionCountPlaceholder": "Numero di domande rimanenti ...", "RemainingQuestionCountPlaceholder": "Numero di domande rimanenti...",
"LicenseTypePlaceholder": "Tipo di licenza...", "LicenseTypePlaceholder": "Tipo di licenza...",
"CreationDatePlaceholder": "Data di creazione...", "CreationDatePlaceholder": "Data di creazione...",
"LicenseStartDatePlaceholder": "Data di inizio della licenza ...", "LicenseStartDatePlaceholder": "Data di inizio della licenza...",
"LicenseEndDatePlaceholder": "Data di fine della licenza ...", "LicenseEndDatePlaceholder": "Data di fine della licenza...",
"UsernameOrEmail": "Nome utente o email", "UsernameOrEmail": "Nome utente o email",
"UsernameOrEmailPlaceholder": "Nome utente o email...", "UsernameOrEmailPlaceholder": "Nome utente o email...",
"Member": "Membro", "Member": "Membro",
@ -126,8 +126,8 @@
"DiscountQuantity": "Quantità di sconto", "DiscountQuantity": "Quantità di sconto",
"DiscountPrice": "Prezzo scontato", "DiscountPrice": "Prezzo scontato",
"Quotation": "Quotazione", "Quotation": "Quotazione",
"ExtraText": "Testo extra", "ExtraText": "Testo ulteriore",
"ExtraAmount": "Importo extra", "ExtraAmount": "Importo ulteriore",
"DownloadQuotation": "Scarica preventivo", "DownloadQuotation": "Scarica preventivo",
"Invoice": "Fattura", "Invoice": "Fattura",
"TaxNumber": "Codice fiscale", "TaxNumber": "Codice fiscale",
@ -138,22 +138,22 @@
"AddProduct": "Aggiungi prodotto", "AddProduct": "Aggiungi prodotto",
"AddProductWarning": "Devi aggiungere il prodotto!", "AddProductWarning": "Devi aggiungere il prodotto!",
"TotalPrice": "Prezzo totale", "TotalPrice": "Prezzo totale",
"Generate": "creare", "Generate": "Genera",
"MissingQuantityField": "Il campo della quantità è obbligatorio!", "MissingQuantityField": "Il campo della quantità è obbligatorio!",
"MissingPriceField": "Il campo Prezzo è obbligatorio!", "MissingPriceField": "Il campo Prezzo è obbligatorio!",
"CodeUsageStatus": "Stato", "CodeUsageStatus": "Stato",
"Country": "Nazione", "Country": "Nazione",
"DeveloperCount": "Conteggio sviluppatori", "DeveloperCount": "Conteggio sviluppatori",
"RequestCode": "Codice richiesto", "RequestCode": "Codice richiesta",
"WebSite": "Sito web", "WebSite": "Sito web",
"GithubUsername": "Nome utente GitHub", "GithubUsername": "Nome utente GitHub",
"PhoneNumber": "Numero di telefono", "PhoneNumber": "Numero di telefono",
"ProjectDescription": "descrizione del progetto", "ProjectDescription": "descrizione del progetto",
"Referrer": "Referrer", "Referrer": "Referente",
"DiscountRequests": "Richiesta di sconto", "DiscountRequests": "Richiesta di sconto",
"Copylink": "Copia link", "Copylink": "Copia link",
"Disable": "disattivare", "Disable": "Disabilita",
"Enable": "Abilitare", "Enable": "Abilita",
"EnableSendEmail": "Abilita Invia e-mail", "EnableSendEmail": "Abilita Invia e-mail",
"SendEmail": "Invia una email", "SendEmail": "Invia una email",
"SuccessfullyDisabled": "Disabilitato con successo", "SuccessfullyDisabled": "Disabilitato con successo",
@ -162,7 +162,7 @@
"SuccessfullySent": "Inviato con successo", "SuccessfullySent": "Inviato con successo",
"SuccessfullyDeleted": "Eliminato con successo", "SuccessfullyDeleted": "Eliminato con successo",
"DiscountRequestDeletionWarningMessage": "La richiesta di sconto verrà eliminata", "DiscountRequestDeletionWarningMessage": "La richiesta di sconto verrà eliminata",
"BusinessType": "tipo di affari", "BusinessType": "Tipo di affari",
"TotalQuestionCount": "Conteggio totale delle domande", "TotalQuestionCount": "Conteggio totale delle domande",
"RemainingQuestionCount": "Numero di domande rimanenti", "RemainingQuestionCount": "Numero di domande rimanenti",
"TotalQuestionMustBeGreaterWarningMessage": "TotalQuestionCount deve essere maggiore di RemainingQuestionCount!", "TotalQuestionMustBeGreaterWarningMessage": "TotalQuestionCount deve essere maggiore di RemainingQuestionCount!",
@ -171,16 +171,16 @@
"Notes": "Appunti", "Notes": "Appunti",
"Menu:Community": "Comunità", "Menu:Community": "Comunità",
"Menu:Articles": "Articoli", "Menu:Articles": "Articoli",
"Wait": "Aspettare", "Wait": "Attendere",
"Approve": "Approvare", "Approve": "Approvare",
"Reject": "Rifiutare", "Reject": "Rifiutare",
"Details": "Dettagli", "Details": "Dettagli",
"Url": "Url", "Url": "Url",
"Title": "Titolo", "Title": "Titolo",
"ContentSource": "Fonte di contenuto", "ContentSource": "Fonte del contenuto",
"Status": "Stato", "Status": "Stato",
"ReadArticle": "Leggi l'articolo", "ReadArticle": "Leggi l'articolo",
"ArticleHasBeenWaiting": "L'articolo è stato in attesa", "ArticleHasBeenWaiting": "L'articolo è in attesa",
"ArticleHasBeenApproved": "L'articolo è stato approvato", "ArticleHasBeenApproved": "L'articolo è stato approvato",
"ArticleHasBeenRejected": "L'articolo è stato respinto", "ArticleHasBeenRejected": "L'articolo è stato respinto",
"Permission:Community": "Comunità", "Permission:Community": "Comunità",
@ -197,10 +197,10 @@
"RemoveCacheConfirmationMessage": "Sei sicuro di aver rimosso la cache per l'articolo \"{0}\"?", "RemoveCacheConfirmationMessage": "Sei sicuro di aver rimosso la cache per l'articolo \"{0}\"?",
"SuccessfullyRemoved": "Cancellato con successo", "SuccessfullyRemoved": "Cancellato con successo",
"RemoveCache": "Rimuovi cache", "RemoveCache": "Rimuovi cache",
"Language": "linguaggio", "Language": "Lingua",
"Optional": "Opzionale", "Optional": "Opzionale",
"CreateArticleLanguageInfo": "La lingua in cui è scritto il post", "CreateArticleLanguageInfo": "La lingua in cui è scritto il post",
"Enum:ContentSource:2": "Post video", "Enum:ContentSource:2": "Pubblica video",
"VideoPreview": "Anteprima video", "VideoPreview": "Anteprima video",
"VideoPreviewErrorMessage": "Impossibile recuperare l'URL del video da Youtube. Ciò può essere causato dal fatto che il video è privato o l'URL fornito non è disponibile.", "VideoPreviewErrorMessage": "Impossibile recuperare l'URL del video da Youtube. Ciò può essere causato dal fatto che il video è privato o l'URL fornito non è disponibile.",
"DeleteCoverImage": "Elimina immagine di copertina", "DeleteCoverImage": "Elimina immagine di copertina",
@ -214,19 +214,19 @@
"Currency": "Moneta", "Currency": "Moneta",
"Gateway": "Gateway", "Gateway": "Gateway",
"State": "Stato", "State": "Stato",
"FailReason": "Motivo fallito", "FailReason": "Motivo fallimento",
"ReIndexAllPosts": "Reindicizza tutti i post", "ReIndexAllPosts": "Reindicizza tutti i post",
"ReIndexAllPostsConfirmationMessage": "Sei sicuro di voler reindicizzare tutti i post?", "ReIndexAllPostsConfirmationMessage": "Sei sicuro di voler reindicizzare tutti i post?",
"SuccessfullyReIndexAllPosts": "Tutti i post sono stati reindicizzati con successo.", "SuccessfullyReIndexAllPosts": "Tutti i post sono stati reindicizzati con successo.",
"Permission:FullSearch": "Ricerca nel testo completo", "Permission:FullSearch": "Ricerca in tutto il testo",
"Menu:CliAnalytics": "Cli Analytics", "Menu:CliAnalytics": "Cli Analytics",
"TemplateName": "Nome modello", "TemplateName": "Nome modello",
"TemplateVersion": "Versione modello", "TemplateVersion": "Versione modello",
"DatabaseProvider": "Provider di database", "DatabaseProvider": "Provider del database",
"IsTiered": "È a livelli", "IsTiered": "Multi livello",
"ProjectName": "Nome del progetto", "ProjectName": "Nome del progetto",
"Username": "Nome utente", "Username": "Nome utente",
"Tool": "Attrezzo", "Tool": "Strumento",
"Command": "Comando", "Command": "Comando",
"UiFramework": "Framework dell'interfaccia utente", "UiFramework": "Framework dell'interfaccia utente",
"Options": "Opzioni", "Options": "Opzioni",
@ -234,10 +234,10 @@
"Permission:CliAnalyticses": "Cli Analyticses", "Permission:CliAnalyticses": "Cli Analyticses",
"Permission:CliAnalytics": "Cli Analytics", "Permission:CliAnalytics": "Cli Analytics",
"Search": "Ricerca", "Search": "Ricerca",
"ClearFilter": "Filtro pulito", "ClearFilter": "Pulisci filtro",
"LicensePrivateKey": "Chiave privata della licenza", "LicensePrivateKey": "Chiave privata licenza",
"LicensePublicKey": "Licenza chiave pubblica", "LicensePublicKey": "Chiave pubblica licenza",
"ApiKey": "Chiave API NuGet", "ApiKey": "NuGet API key",
"ShowInvoiceRequestsOfOrganization": "Richieste di fattura", "ShowInvoiceRequestsOfOrganization": "Richieste di fattura",
"ShowQuestionsOfOrganization": "Domande", "ShowQuestionsOfOrganization": "Domande",
"Question": "Domanda", "Question": "Domanda",
@ -245,7 +245,7 @@
"Questions": "Domande", "Questions": "Domande",
"InvoiceRequests": "Richieste di fattura", "InvoiceRequests": "Richieste di fattura",
"Address": "Indirizzo", "Address": "Indirizzo",
"TaxNo": "No fiscale", "TaxNo": "Partiva IVA",
"Permission:InvoiceRequest": "Richiesta di fattura", "Permission:InvoiceRequest": "Richiesta di fattura",
"Permission:Question": "Domanda", "Permission:Question": "Domanda",
"AddNoteSuccessMessage": "Nota aggiunta con successo", "AddNoteSuccessMessage": "Nota aggiunta con successo",
@ -258,8 +258,8 @@
"Enum:EntityChangeType:0": "Creato", "Enum:EntityChangeType:0": "Creato",
"Enum:EntityChangeType:1": "Aggiornato", "Enum:EntityChangeType:1": "Aggiornato",
"Enum:EntityChangeType:2": "Eliminato", "Enum:EntityChangeType:2": "Eliminato",
"TenantId": "ID inquilino", "TenantId": "ID tenant",
"ChangeTime": "Cambia il tempo", "ChangeTime": "Cambia orario",
"EntityTypeFullName": "Nome completo del tipo di entità", "EntityTypeFullName": "Nome completo del tipo di entità",
"AuditLogsFor{0}Organization": "Log di controllo per l'organizzazione \"{0}\"", "AuditLogsFor{0}Organization": "Log di controllo per l'organizzazione \"{0}\"",
"Permission:EntityChange": "Modifica entità", "Permission:EntityChange": "Modifica entità",
@ -269,14 +269,14 @@
"EmailSendDate": "Data di invio dell'e-mail", "EmailSendDate": "Data di invio dell'e-mail",
"PaymentRequestsFor{0}Organization": "Richieste di pagamento per l'organizzazione \"{0}\"", "PaymentRequestsFor{0}Organization": "Richieste di pagamento per l'organizzazione \"{0}\"",
"PaymentDetails": "Dettagli di pagamento", "PaymentDetails": "Dettagli di pagamento",
"PaymentProduct": "Prodotto di pagamento", "PaymentProduct": "Prodotti pagamento",
"ProductName": "nome del prodotto", "ProductName": "Nome del prodotto",
"Code": "Codice", "Code": "Codice",
"GenerateInvoice": "Genera fattura", "GenerateInvoice": "Genera fattura",
"ExportOrganizationsToExcel": "esportare in Excel", "ExportOrganizationsToExcel": "Esporta in Excel",
"ThisExtensionIsNotAllowed": "Questa estensione non è consentita.", "ThisExtensionIsNotAllowed": "Questa estensione non è consentita.",
"TheFileIsTooLarge": "Il file è troppo grande!", "TheFileIsTooLarge": "Il file è troppo grande!",
"ArticleDeletionConfirmationMessage": "Sei sicuro di voler eliminare definitivamente questo articolo?", "ArticleDeletionConfirmationMessage": "Sei sicuro di voler eliminare definitivamente questo articolo?",
"ChooseCoverImage": "Scegli un'immagine di copertina ..." "ChooseCoverImage": "Scegli un'immagine di copertina..."
} }
} }

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

@ -19,7 +19,7 @@
"JoinOurCommunity": "Unisciti alla nostra community", "JoinOurCommunity": "Unisciti alla nostra community",
"GetStartedUpper": "INIZIARE", "GetStartedUpper": "INIZIARE",
"ForkMeOnGitHub": "Fork me su GitHub", "ForkMeOnGitHub": "Fork me su GitHub",
"Features": "Caratteristiche", "Features": "Funzionalità",
"GetStarted": "Iniziare", "GetStarted": "Iniziare",
"Documents": "Documenti", "Documents": "Documenti",
"Community": "Comunità", "Community": "Comunità",
@ -31,7 +31,7 @@
"Permission:UserInfo": "Informazioni utente", "Permission:UserInfo": "Informazioni utente",
"SeeDocuments": "Vedi Documenti", "SeeDocuments": "Vedi Documenti",
"Samples": "Campioni", "Samples": "Campioni",
"Framework": "Struttura", "Framework": "Framework",
"Support": "Supporto" "Support": "Supporto"
} }
} }

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

@ -42,7 +42,7 @@
"NotOrganizationMember": "Et ole minkään organisaation jäsen.", "NotOrganizationMember": "Et ole minkään organisaation jäsen.",
"UnsubscribeLicenseExpirationEmailSuccessTitle": "Tilauksen peruutus onnistui", "UnsubscribeLicenseExpirationEmailSuccessTitle": "Tilauksen peruutus onnistui",
"UnsubscribeLicenseExpirationEmailSuccessMessage": "Et enää saa muistutuksia lisenssin vanhentumispäivästä.", "UnsubscribeLicenseExpirationEmailSuccessMessage": "Et enää saa muistutuksia lisenssin vanhentumispäivästä.",
"IndexPageHeroSection": "<span class = \"first-line\"> Täydellinen </span> <span class = \"second-line\"> verkkokehitysympäristö </span> <span class = \"third-line\"> sisäänrakennettu <img src = \"{0}\" width = \"110\" class = \"ml-1\" /> kehys </span>", "IndexPageHeroSection": "<span class=\"first-line\"> Täydellinen </span><span class=\"second-line\"> verkkokehitysympäristö </span><span class=\"third-line\"> sisäänrakennettu <img src=\"{0}\" width = \"110\" class=\"ml-1\" /> kehys </span>",
"AbpCommercialShortDescription": "ABP Commercial tarjoaa valmiita sovellusmoduuleja, nopean sovelluskehitystyökalun, ammattimaiset käyttöliittymäteemat, ensiluokkaisen tuen ja paljon muuta.", "AbpCommercialShortDescription": "ABP Commercial tarjoaa valmiita sovellusmoduuleja, nopean sovelluskehitystyökalun, ammattimaiset käyttöliittymäteemat, ensiluokkaisen tuen ja paljon muuta.",
"LiveDemo": "Live-esittely", "LiveDemo": "Live-esittely",
"GetLicence": "Hanki lisenssi", "GetLicence": "Hanki lisenssi",
@ -63,7 +63,7 @@
"AdditionalServices": "Lisäpalvelut", "AdditionalServices": "Lisäpalvelut",
"WhatIsABPFramework": "MIKÄ ON ABP-KEHYS?", "WhatIsABPFramework": "MIKÄ ON ABP-KEHYS?",
"OpenSourceBaseFramework": "Avoimen lähdekoodin peruskehys", "OpenSourceBaseFramework": "Avoimen lähdekoodin peruskehys",
"ABPFrameworkExplanation": "<p class = \"lead\"> ABP Commercial perustuu ABP Frameworkiin, avoimen lähdekoodin ja yhteisövetoiseen verkkosovelluskehykseen ASP.NET Core -sovellukselle. </p> <p> ABP Framework tarjoaa erinomaisen infrastruktuurin ylläpitettävien, laajennettavien tiedostojen kirjoittamiseen. ja testattava koodi parhailla käytänteillä. </p> <p> Rakennettu ja integroitu jo tunnettujen suosittujen työkalujen kanssa. Matala oppimiskäyrä, helppo sopeutuminen, mukava kehitys. </p>", "ABPFrameworkExplanation": "<p class=\"lead\"> ABP Commercial perustuu ABP Frameworkiin, avoimen lähdekoodin ja yhteisövetoiseen verkkosovelluskehykseen ASP.NET Core -sovellukselle.</p><p> ABP Framework tarjoaa erinomaisen infrastruktuurin ylläpitettävien, laajennettavien tiedostojen kirjoittamiseen. ja testattava koodi parhailla käytänteillä.</p><p> Rakennettu ja integroitu jo tunnettujen suosittujen työkalujen kanssa. Matala oppimiskäyrä, helppo sopeutuminen, mukava kehitys.</p>",
"Modular": "Modulaarinen", "Modular": "Modulaarinen",
"MicroserviceCompatible": "Mikropalvelu yhteensopiva", "MicroserviceCompatible": "Mikropalvelu yhteensopiva",
"DomainDrivenDesignInfrastructure": "Toimialueohjattu suunnittelun infrastruktuuri", "DomainDrivenDesignInfrastructure": "Toimialueohjattu suunnittelun infrastruktuuri",
@ -78,7 +78,7 @@
"ManyMore": "Monta lisää", "ManyMore": "Monta lisää",
"ExploreTheABPFramework": "Tutustu ABP-kehykseen", "ExploreTheABPFramework": "Tutustu ABP-kehykseen",
"WhyUseTheABPCommercial": "Miksi käyttää ABP-mainosta?", "WhyUseTheABPCommercial": "Miksi käyttää ABP-mainosta?",
"WhyUseTheABPCommercialExplanation": "<p class = \"lead mt- 5\"> Yritysluokan verkkosovellusten rakentaminen voi olla monimutkaista ja aikaa vievää. </p> <p> ABP Commercial tarjoaa täydellisen perusinfrastruktuurin, joka tarvitaan kaikille nykyaikaisille yritystason ASP.NET-ytimille perustuvat ratkaisut. ABP: n sisäänrakennetut ominaisuudet ja moduulit tukevat koko suunnittelusykliä suunnittelusta käyttöönottoon asti. </p>", "WhyUseTheABPCommercialExplanation": "<p class=\"lead mt-5\"> Yritysluokan verkkosovellusten rakentaminen voi olla monimutkaista ja aikaa vievää.</p><p> ABP Commercial tarjoaa täydellisen perusinfrastruktuurin, joka tarvitaan kaikille nykyaikaisille yritystason ASP.NET-ytimille perustuvat ratkaisut. ABP: n sisäänrakennetut ominaisuudet ja moduulit tukevat koko suunnittelusykliä suunnittelusta käyttöönottoon asti.</p>",
"StartupTemplatesShortDescription": "Käynnistysmallien avulla voit aloittaa projektisi muutamassa sekunnissa.", "StartupTemplatesShortDescription": "Käynnistysmallien avulla voit aloittaa projektisi muutamassa sekunnissa.",
"UIFrameworksOptions": "Käyttöliittymäkehysvaihtoehdot;", "UIFrameworksOptions": "Käyttöliittymäkehysvaihtoehdot;",
"DatabaseProviderOptions": "Tietokannan tarjoajan vaihtoehdot;", "DatabaseProviderOptions": "Tietokannan tarjoajan vaihtoehdot;",
@ -145,7 +145,7 @@
"DeveloperGuide": "Kehittäjän opas", "DeveloperGuide": "Kehittäjän opas",
"ModuleTemplate": "Moduulimalli", "ModuleTemplate": "Moduulimalli",
"ModuleTemplateExplanation1": "Haluatko luoda moduulin ja käyttää sitä uudelleen eri sovelluksissa? Tämä käynnistysmalli valmistaa kaiken aloittamaan uudelleenkäytettävän <strong> sovellusmoduulin </strong> tai <strong> mikropalvelun </strong> luomisen.", "ModuleTemplateExplanation1": "Haluatko luoda moduulin ja käyttää sitä uudelleen eri sovelluksissa? Tämä käynnistysmalli valmistaa kaiken aloittamaan uudelleenkäytettävän <strong> sovellusmoduulin </strong> tai <strong> mikropalvelun </strong> luomisen.",
"ModuleTemplateExplanation2": "<p> Voit tukea yhtä tai useampaa käyttöliittymäkehystä, yhtä tai useampaa tietokantapalvelua yhdelle moduulille. Käynnistysmalli on määritetty suorittamaan ja <strong> testaamaan moduulia </strong> pienimmässä sovelluksessa yksikön ja integraatiotestiinfrastruktuurin lisäksi. </p> <p> Katso teknistä tietoa mallista kehittäjän oppaasta. </p>", "ModuleTemplateExplanation2": "<p> Voit tukea yhtä tai useampaa käyttöliittymäkehystä, yhtä tai useampaa tietokantapalvelua yhdelle moduulille. Käynnistysmalli on määritetty suorittamaan ja <strong> testaamaan moduulia </strong> pienimmässä sovelluksessa yksikön ja integraatiotestiinfrastruktuurin lisäksi.</p><p> Katso teknistä tietoa mallista kehittäjän oppaasta.</p>",
"WithAllStyleOptions": "kaikilla tyylivaihtoehdoilla", "WithAllStyleOptions": "kaikilla tyylivaihtoehdoilla",
"Demo": "Demo", "Demo": "Demo",
"SeeAllModules": "Katso kaikki moduulit", "SeeAllModules": "Katso kaikki moduulit",
@ -157,13 +157,13 @@
"WhatIsTheABPCommercial": "Mikä on ABP-kauppa?", "WhatIsTheABPCommercial": "Mikä on ABP-kauppa?",
"WhatAreDifferencesThanAbpFramework": "Mitä eroja on avoimen lähdekoodin ABP Frameworkilla ja ABP Commercialilla?", "WhatAreDifferencesThanAbpFramework": "Mitä eroja on avoimen lähdekoodin ABP Frameworkilla ja ABP Commercialilla?",
"ABPCommercialExplanation": "ABP Commercial on joukko ensiluokkaisia moduuleja, työkaluja, teemoja ja palveluja, jotka on rakennettu avoimen lähdekoodin <a target=\"_blank\" href=\"{0}\"> ABP-kehyksen </a> päälle. ABP Commercial kehittää ja tukee samaa tiimiä ABP-kehyksen takana.", "ABPCommercialExplanation": "ABP Commercial on joukko ensiluokkaisia moduuleja, työkaluja, teemoja ja palveluja, jotka on rakennettu avoimen lähdekoodin <a target=\"_blank\" href=\"{0}\"> ABP-kehyksen </a> päälle. ABP Commercial kehittää ja tukee samaa tiimiä ABP-kehyksen takana.",
"WhatAreDifferencesThanABPFrameworkExplanation": "<p> <a target=\"_blank\" href=\"{0}\"> ABP-kehys </a> on modulaarinen, teemoitettava, mikropalvelujen kanssa yhteensopiva sovelluskehys ASP.NET Core -sovellukselle. Se tarjoaa täydellisen arkkitehtuurin ja vahvan infrastruktuurin, joka saa sinut keskittymään omaan yrityskoodiin sen sijaan, että toistat itsesi jokaisessa uudessa projektissa. Se perustuu ohjelmistokehityksen parhaisiin käytäntöihin ja jo tiedettyihin suosittuihin työkaluihin. </p> <p> ABP-kehykset ovat täysin ilmaisia, avoimen lähdekoodin ja yhteisölähtöisiä. Se tarjoaa myös ilmaisen teeman ja joitain valmiita moduuleja (esim. Henkilöllisyyden hallinta ja vuokralaisten hallinta). </p>", "WhatAreDifferencesThanABPFrameworkExplanation": "<p><a target=\"_blank\" href=\"{0}\"> ABP-kehys </a> on modulaarinen, teemoitettava, mikropalvelujen kanssa yhteensopiva sovelluskehys ASP.NET Core -sovellukselle. Se tarjoaa täydellisen arkkitehtuurin ja vahvan infrastruktuurin, joka saa sinut keskittymään omaan yrityskoodiin sen sijaan, että toistat itsesi jokaisessa uudessa projektissa. Se perustuu ohjelmistokehityksen parhaisiin käytäntöihin ja jo tiedettyihin suosittuihin työkaluihin.</p><p> ABP-kehykset ovat täysin ilmaisia, avoimen lähdekoodin ja yhteisölähtöisiä. Se tarjoaa myös ilmaisen teeman ja joitain valmiita moduuleja (esim. Henkilöllisyyden hallinta ja vuokralaisten hallinta).</p>",
"VisitTheFrameworkVSCommercialDocument": "Vieraile seuraavalla linkillä saadaksesi lisätietoja <a href=\"{0}\" target=\"_blank\"> {1} </a>", "VisitTheFrameworkVSCommercialDocument": "Vieraile seuraavalla linkillä saadaksesi lisätietoja <a href=\"{0}\" target=\"_blank\"> {1} </a>",
"ABPCommercialFollowingBenefits": "ABP Commercial lisää seuraavat edut ABP-kehyksen päälle;", "ABPCommercialFollowingBenefits": "ABP Commercial lisää seuraavat edut ABP-kehyksen päälle;",
"Professional": "Ammattilainen", "Professional": "Ammattilainen",
"UIThemes": "Käyttöliittymän teemat", "UIThemes": "Käyttöliittymän teemat",
"EnterpriseModules": "Yrityskäyttöiset, monipuoliset, valmiit <a href=\"{0}\"> sovellusmoduulit </a> (esim. Identity Server -hallinta, SaaS-hallinta, kielen hallinta)", "EnterpriseModules": "Yrityskäyttöiset, monipuoliset, valmiit <a href=\"{0}\"> sovellusmoduulit </a> (esim. Identity Server -hallinta, SaaS-hallinta, kielen hallinta)",
"ToolingToSupport": "Työkalut, jotka tukevat kehitystesi tuottavuutta (esim. <a href=\"{0}\"> ABP Suite </a>)", "ToolingToSupport": "Työkalut, jotka tukevat kehitystesi tuottavuutta (esim.<a href=\"{0}\"> ABP Suite </a>)",
"PremiumSupportLink": "Ensiluokkainen <a href=\"{0}\" target=\"_blank\"> tuki </a>", "PremiumSupportLink": "Ensiluokkainen <a href=\"{0}\" target=\"_blank\"> tuki </a>",
"WhatDoIDownloadABPCommercial": "Mitä lataan ostaessani ABP Commercial -palvelua?", "WhatDoIDownloadABPCommercial": "Mitä lataan ostaessani ABP Commercial -palvelua?",
"CreateUnlimitedSolutions": "Kun olet ostanut ABP Commercial -lisenssin, voit luoda rajoittamattomia ratkaisuja, kuten <a href=\"{0}\"> Aloittaminen </a> -asiakirjassa kuvataan.", "CreateUnlimitedSolutions": "Kun olet ostanut ABP Commercial -lisenssin, voit luoda rajoittamattomia ratkaisuja, kuten <a href=\"{0}\"> Aloittaminen </a> -asiakirjassa kuvataan.",
@ -177,7 +177,7 @@
"ChangingLicenseType": "Voinko muuttaa lisenssityyppiäni tulevaisuudessa?", "ChangingLicenseType": "Voinko muuttaa lisenssityyppiäni tulevaisuudessa?",
"ChangingLicenseTypeExplanation": "Voit aina lisätä uusia kehittäjiä samaan lisenssityyppiin. Katso myös \"Kuinka monta kehittäjää voi työskennellä ABP Commercialilla?\". Voit myös päivittää korkeampaan lisenssiin maksamalla lasketun hintaeron. Kun päivität korkeampaan lisenssisuunnitelmaan, saat uuden suunnitelman edut, mutta lisenssin päivitys ei muuta lisenssin voimassaolon päättymispäivää.", "ChangingLicenseTypeExplanation": "Voit aina lisätä uusia kehittäjiä samaan lisenssityyppiin. Katso myös \"Kuinka monta kehittäjää voi työskennellä ABP Commercialilla?\". Voit myös päivittää korkeampaan lisenssiin maksamalla lasketun hintaeron. Kun päivität korkeampaan lisenssisuunnitelmaan, saat uuden suunnitelman edut, mutta lisenssin päivitys ei muuta lisenssin voimassaolon päättymispäivää.",
"LicenseExtendUpgradeDiff": "Mitä eroa on lisenssin laajennuksella ja päivityksellä?", "LicenseExtendUpgradeDiff": "Mitä eroa on lisenssin laajennuksella ja päivityksellä?",
"LicenseExtendUpgradeDiffExplanation": "<strong> Extension: </strong> en prolongeant/renouvelant votre licence, vous continuerez à bénéficier d'une assistance premium et à des mises à jour majeures pour les modules et les thèmes. De plus, vous pourrez continuer à créer de nouveaux projets. Et vous pourrez toujours utiliser ABP Suite, ce qui accélère votre développement. <hr/> <strong> Mise à niveau: </strong> En mettant à jour votre licence, vous passerez à un plan de licence supérieur qui vous permettra d’obtenir des avantages supplémentaires . Consultez le <a href=\"/pricing\"> tableau de comparaison des licences </a> pour vérifier les différences entre les plans de licence. <strong> En revanche, lors de la mise à niveau, la date d'expiration de votre licence ne changera pas! </strong> Pour prolonger la date de fin de votre licence, vous devez prolonger votre licence.", "LicenseExtendUpgradeDiffExplanation": "<strong> Extension: </strong> en prolongeant/renouvelant votre licence, vous continuerez à bénéficier d'une assistance premium et à des mises à jour majeures pour les modules et les thèmes. De plus, vous pourrez continuer à créer de nouveaux projets. Et vous pourrez toujours utiliser ABP Suite, ce qui accélère votre développement.<hr/><strong> Mise à niveau: </strong> En mettant à jour votre licence, vous passerez à un plan de licence supérieur qui vous permettra d’obtenir des avantages supplémentaires . Consultez le <a href=\"/pricing\"> tableau de comparaison des licences </a> pour vérifier les différences entre les plans de licence.<strong> En revanche, lors de la mise à niveau, la date d'expiration de votre licence ne changera pas! </strong> Pour prolonger la date de fin de votre licence, vous devez prolonger votre licence.",
"LicenseRenewalCost": "Mitkä ovat lisenssin uusimiskustannukset vuoden kuluttua?", "LicenseRenewalCost": "Mitkä ovat lisenssin uusimiskustannukset vuoden kuluttua?",
"LicenseRenewalCostExplanation": "Kaikkien ABP Commercial perpetual -lisenssien uusimis- (laajennus) hinta on {0} lisenssiluettelohinnasta. Tavallisen tiimilisenssin uusimishinta on $ {1}, tavallinen yrityslisenssi on $ {2} ja tavallinen yrityslisenssi on $ {3}. Jos olet jo asiakas, <a href='{4}' target='_blank'> kirjaudu tilillesi </a> ja tarkista käytettävissä oleva uusimishinta.", "LicenseRenewalCostExplanation": "Kaikkien ABP Commercial perpetual -lisenssien uusimis- (laajennus) hinta on {0} lisenssiluettelohinnasta. Tavallisen tiimilisenssin uusimishinta on $ {1}, tavallinen yrityslisenssi on $ {2} ja tavallinen yrityslisenssi on $ {3}. Jos olet jo asiakas, <a href='{4}' target='_blank'> kirjaudu tilillesi </a> ja tarkista käytettävissä oleva uusimishinta.",
"HowDoIRenewMyLicense": "Kuinka uusin lisenssin?", "HowDoIRenewMyLicense": "Kuinka uusin lisenssin?",
@ -186,13 +186,13 @@
"IsSourceCodeIncludedExplanation1": "Riippuu ostamastasi lisenssityypistä:", "IsSourceCodeIncludedExplanation1": "Riippuu ostamastasi lisenssityypistä:",
"IsSourceCodeIncludedExplanation2": "<strong> Tiimi </strong>: Ratkaisusi käyttää moduuleja ja teemoja NuGet- ja NPM-paketteina. Se ei sisällä heidän lähdekoodiaan. Tällä tavoin voit helposti päivittää nämä moduulit ja teemat aina, kun uusi versio on saatavana. Et kuitenkaan voi saada moduulien ja teemojen lähdekoodia.", "IsSourceCodeIncludedExplanation2": "<strong> Tiimi </strong>: Ratkaisusi käyttää moduuleja ja teemoja NuGet- ja NPM-paketteina. Se ei sisällä heidän lähdekoodiaan. Tällä tavoin voit helposti päivittää nämä moduulit ja teemat aina, kun uusi versio on saatavana. Et kuitenkaan voi saada moduulien ja teemojen lähdekoodia.",
"IsSourceCodeIncludedExplanation3": "<strong> Yritys / yritys </strong>: Tiimilisenssin lisäksi voit ladata minkä tahansa tarvitsemasi moduulin tai teeman lähdekoodin. Voit jopa poistaa tietyn moduulin NuGet / NPM-pakettiviitteet ja lisätä sen lähdekoodin suoraan ratkaisuusi sen muuttamiseksi kokonaan.", "IsSourceCodeIncludedExplanation3": "<strong> Yritys / yritys </strong>: Tiimilisenssin lisäksi voit ladata minkä tahansa tarvitsemasi moduulin tai teeman lähdekoodin. Voit jopa poistaa tietyn moduulin NuGet / NPM-pakettiviitteet ja lisätä sen lähdekoodin suoraan ratkaisuusi sen muuttamiseksi kokonaan.",
"IsSourceCodeIncludedExplanation4": "<p> Moduulin lähdekoodin sisällyttäminen ratkaisuun antaa sinulle maksimaalisen vapauden mukauttaa moduulia. Tällöin moduulia ei voida päivittää automaattisesti, kun uusi versio julkaistaan. </p> <p> Mikään lisensseistä ei sisällä ABP Suiten lähdekoodia, joka on ulkoinen työkalu, joka tuottaa koodia sinulle ja auttaa kehitykseen. </p> <p> Katso muita lisenssityyppien eroja <a href=\"{0}\"> hinnoittelusivulta </a>. </p>", "IsSourceCodeIncludedExplanation4": "<p> Moduulin lähdekoodin sisällyttäminen ratkaisuun antaa sinulle maksimaalisen vapauden mukauttaa moduulia. Tällöin moduulia ei voida päivittää automaattisesti, kun uusi versio julkaistaan.</p><p> Mikään lisensseistä ei sisällä ABP Suiten lähdekoodia, joka on ulkoinen työkalu, joka tuottaa koodia sinulle ja auttaa kehitykseen.</p><p> Katso muita lisenssityyppien eroja <a href=\"{0}\"> hinnoittelusivulta </a>.</p>",
"ChangingDevelopers": "Voinko muuttaa organisaationi rekisteröityneitä kehittäjiä tulevaisuudessa?", "ChangingDevelopers": "Voinko muuttaa organisaationi rekisteröityneitä kehittäjiä tulevaisuudessa?",
"ChangingDevelopersExplanation": "Uusien kehittäjien lisäämisen lisenssiin lisäksi voit myös muuttaa olemassa olevia kehittäjiä (voit poistaa kehittäjän ja lisätä uuden samalle paikalle) ilman lisäkustannuksia.", "ChangingDevelopersExplanation": "Uusien kehittäjien lisäämisen lisenssiin lisäksi voit myös muuttaa olemassa olevia kehittäjiä (voit poistaa kehittäjän ja lisätä uuden samalle paikalle) ilman lisäkustannuksia.",
"WhatHappensWhenLicenseEnds": "Mitä tapahtuu, kun lisenssikauteni päättyy?", "WhatHappensWhenLicenseEnds": "Mitä tapahtuu, kun lisenssikauteni päättyy?",
"WhatHappensWhenLicenseEndsExplanation1": "ABP Commercial -lisenssityyppi on <a href=\"{0}\" target=\"_blank\"> jatkuva lisenssi </a>. Kun lisenssi vanhenee, voit jatkaa projektisi kehittämistä. Ja sinun ei tarvitse uudistaa lisenssiäsi. Lisenssisi mukana toimitetaan yhden vuoden päivitys- ja tukisuunnitelma. Jos haluat edelleen saada uusia ominaisuuksia, suorituskyvyn parannuksia, virhekorjauksia, tukea ja jatkaa ABP Suite -sovelluksen käyttöä, muista uusia suunnitelma joka vuosi. Kun lisenssi vanhenee, et voi saada enemmän seuraavista eduista;", "WhatHappensWhenLicenseEndsExplanation1": "ABP Commercial -lisenssityyppi on <a href=\"{0}\" target=\"_blank\"> jatkuva lisenssi </a>. Kun lisenssi vanhenee, voit jatkaa projektisi kehittämistä. Ja sinun ei tarvitse uudistaa lisenssiäsi. Lisenssisi mukana toimitetaan yhden vuoden päivitys- ja tukisuunnitelma. Jos haluat edelleen saada uusia ominaisuuksia, suorituskyvyn parannuksia, virhekorjauksia, tukea ja jatkaa ABP Suite -sovelluksen käyttöä, muista uusia suunnitelma joka vuosi. Kun lisenssi vanhenee, et voi saada enemmän seuraavista eduista;",
"WhatHappensWhenLicenseEndsExplanation2": "Et voi luoda uusia ratkaisuja ABP Commercial -sovelluksella, mutta voit jatkaa olemassa olevien sovellusten kehittämistä ikuisesti.", "WhatHappensWhenLicenseEndsExplanation2": "Et voi luoda uusia ratkaisuja ABP Commercial -sovelluksella, mutta voit jatkaa olemassa olevien sovellusten kehittämistä ikuisesti.",
"WhatHappensWhenLicenseEndsExplanation3": "Voit saada päivityksiä moduuleista ja teemoista MAJOR-versiostasi. Esimerkiksi; jos käytät moduulin v3.2.0-versiota, voit silti saada päivityksiä kyseisen moduulin versiolle v3.x.x (v3.3.0, v3.5.2 ... jne.). Mutta et voi saada päivityksiä seuraavaan pääversioon (kuten v4.x, v5.x)", "WhatHappensWhenLicenseEndsExplanation3": "Voit saada päivityksiä moduuleista ja teemoista MAJOR-versiostasi. Esimerkiksi; jos käytät moduulin v3.2.0-versiota, voit silti saada päivityksiä kyseisen moduulin versiolle v3.x.x (v3.3.0, v3.5.2... jne.). Mutta et voi saada päivityksiä seuraavaan pääversioon (kuten v4.x, v5.x)",
"WhatHappensWhenLicenseEndsExplanation4": "Et voi asentaa uusia moduuleja ja teemoja, jotka on lisätty ABP Commercial -alustalle käyttöoikeuden päättymisen jälkeen.", "WhatHappensWhenLicenseEndsExplanation4": "Et voi asentaa uusia moduuleja ja teemoja, jotka on lisätty ABP Commercial -alustalle käyttöoikeuden päättymisen jälkeen.",
"WhatHappensWhenLicenseEndsExplanation5": "Et voi käyttää ABP Suitea.", "WhatHappensWhenLicenseEndsExplanation5": "Et voi käyttää ABP Suitea.",
"WhatHappensWhenLicenseEndsExplanation6": "Et voi enää saada <a href=\"{0}\"> premium-tukea </a>.", "WhatHappensWhenLicenseEndsExplanation6": "Et voi enää saada <a href=\"{0}\"> premium-tukea </a>.",
@ -203,7 +203,7 @@
"TrialPlan": "Onko sinulla kokeilusuunnitelma?", "TrialPlan": "Onko sinulla kokeilusuunnitelma?",
"TrialPlanExplanation": "Toistaiseksi ABP Commercialilla ei ole kokeilusuunnitelmaa. Joukkueen lisensseille tarjoamme 30 päivän rahanpalautustakuun. Voit vain pyytää hyvitystä 30 ensimmäisen päivän aikana. Yritys- ja yrityslisensseille hyvitämme 60% 30 päivässä. Tämä johtuu siitä, että yritys- ja yrityslisenssit sisältävät kaikkien moduulien ja teemojen täydellisen lähdekoodin.", "TrialPlanExplanation": "Toistaiseksi ABP Commercialilla ei ole kokeilusuunnitelmaa. Joukkueen lisensseille tarjoamme 30 päivän rahanpalautustakuun. Voit vain pyytää hyvitystä 30 ensimmäisen päivän aikana. Yritys- ja yrityslisensseille hyvitämme 60% 30 päivässä. Tämä johtuu siitä, että yritys- ja yrityslisenssit sisältävät kaikkien moduulien ja teemojen täydellisen lähdekoodin.",
"DoYouAcceptBankWireTransfer": "Hyväksytkö pankkisiirron?", "DoYouAcceptBankWireTransfer": "Hyväksytkö pankkisiirron?",
"DoYouAcceptBankWireTransferExplanation": "Kyllä, hyväksymme pankkisiirron. <br /> Kun olet lähettänyt lisenssimäärän pankkisiirrolla, lähetä meille kuitti ja pyydetty lisenssityyppi sähköpostitse. <br /> Kansainväliset pankkitilitiedot:", "DoYouAcceptBankWireTransferExplanation": "Kyllä, hyväksymme pankkisiirron.<br/> Kun olet lähettänyt lisenssimäärän pankkisiirrolla, lähetä meille kuitti ja pyydetty lisenssityyppi sähköpostitse.<br/> Kansainväliset pankkitilitiedot:",
"HowToUpgrade": "Kuinka päivittää olemassa olevia sovelluksia, kun uusi versio on saatavilla?", "HowToUpgrade": "Kuinka päivittää olemassa olevia sovelluksia, kun uusi versio on saatavilla?",
"HowToUpgradeExplanation1": "Kun luot uuden sovelluksen ABP Commercial -sovelluksella, kaikkia moduuleja ja teemaa käytetään NuGet- ja NPM-paketteina. Joten voit päivittää paketit helposti, kun uusi versio on saatavilla.", "HowToUpgradeExplanation1": "Kun luot uuden sovelluksen ABP Commercial -sovelluksella, kaikkia moduuleja ja teemaa käytetään NuGet- ja NPM-paketteina. Joten voit päivittää paketit helposti, kun uusi versio on saatavilla.",
"HowToUpgradeExplanation2": "Normaalien NuGet / NPM-päivitysten lisäksi <a href=\"{0}\"> ABP CLI </a> tarjoaa päivityskomennon, joka etsii ja päivittää kaikki ratkaisusi ABP-paketit.", "HowToUpgradeExplanation2": "Normaalien NuGet / NPM-päivitysten lisäksi <a href=\"{0}\"> ABP CLI </a> tarjoaa päivityskomennon, joka etsii ja päivittää kaikki ratkaisusi ABP-paketit.",
@ -227,10 +227,10 @@
"RefundPolicyExplanation": "Voit pyytää hyvitystä <strong> 30 päivän </strong> kuluessa lisenssiostoksestasi. Yritys- ja yrityslisenssityypeillä on lähdekoodin latausvaihtoehto, joten hyvityksiä ei ole saatavana yrityksille ja yrityksille (eikä lisensseille, jotka sisältävät oikeuden saada lähdekoodia). Lisäksi uusimista ja toisen lisenssin ostoja ei hyvitetä.", "RefundPolicyExplanation": "Voit pyytää hyvitystä <strong> 30 päivän </strong> kuluessa lisenssiostoksestasi. Yritys- ja yrityslisenssityypeillä on lähdekoodin latausvaihtoehto, joten hyvityksiä ei ole saatavana yrityksille ja yrityksille (eikä lisensseille, jotka sisältävät oikeuden saada lähdekoodia). Lisäksi uusimista ja toisen lisenssin ostoja ei hyvitetä.",
"HowCanIRefundVat": "Kuinka voin palauttaa arvonlisäveron?", "HowCanIRefundVat": "Kuinka voin palauttaa arvonlisäveron?",
"HowCanIRefundVatExplanation1": "Jos suoritit maksun käyttämällä 2Checkoutia, voit palauttaa arvonlisäveron 2Checkout-tilisi kautta:", "HowCanIRefundVatExplanation1": "Jos suoritit maksun käyttämällä 2Checkoutia, voit palauttaa arvonlisäveron 2Checkout-tilisi kautta:",
"HowCanIRefundVatExplanation2": "Kirjaudu sisään <a href=\"https://secure.2checkout.com/cpanel/login.php\" target=\"_blank\"> 2Tarkista </a> -tiliisi.", "HowCanIRefundVatExplanation2": "Kirjaudu sisään <a href=\"https://secure.2checkout.com/cpanel/login.php\" target=\"_blank\"> 2Checkout </a> -tiliisi.",
"HowCanIRefundVatExplanation3": "Etsi sopiva tilaus ja paina \"Hyvitä myöhässä oleva alv\" (kirjoita ALV-tunnuksesi)", "HowCanIRefundVatExplanation3": "Etsi sopiva tilaus ja paina \"Hyvitä myöhässä oleva alv\" (kirjoita ALV-tunnuksesi)",
"HowCanIGetMyInvoice": "Kuinka saan laskuni?", "HowCanIGetMyInvoice": "Kuinka saan laskuni?",
"HowCanIGetMyInvoiceExplanation": "Lisenssin ostamiseen on 2 maksuyhdyskäytävää: PayU ja 2Checkout. Jos ostat lisenssin 2Checkout gatewayn kautta, se lähettää PDF-laskun sähköpostiosoitteeseesi, katso <a href=\"https://knowledgecenter.2checkout.com/Documentation/03Billing-and-payments/Payment-operations/How-do-invoices-work\"> 2Tarkista laskutus. </a> Jos ostat PayU-yhdyskäytävän kautta tai pankkisiirrolla, valmistelemme ja lähetämme laskusi. Voit pyytää laskua <a href=\"{0}\"> organisaation hallintasivulta </a>", "HowCanIGetMyInvoiceExplanation": "Lisenssin ostamiseen on 2 maksuyhdyskäytävää: PayU ja 2Checkout. Jos ostat lisenssin 2Checkout gatewayn kautta, se lähettää PDF-laskun sähköpostiosoitteeseesi, katso <a href=\"https://knowledgecenter.2checkout.com/Documentation/03Billing-and-payments/Payment-operations/How-do-invoices-work\"> 2Checkout laskutus.</a> Jos ostat PayU-yhdyskäytävän kautta tai pankkisiirrolla, valmistelemme ja lähetämme laskusi. Voit pyytää laskua <a href=\"{0}\"> organisaation hallintasivulta </a>",
"Forum": "Foorumi", "Forum": "Foorumi",
"SupportExplanation": "ABP Commercial -lisenssit tarjoavat ensiluokkaisen foorumituen ABP-kehyksen asiantuntijoista koostuvalle tiimille.", "SupportExplanation": "ABP Commercial -lisenssit tarjoavat ensiluokkaisen foorumituen ABP-kehyksen asiantuntijoista koostuvalle tiimille.",
"PrivateTicket": "Yksityinen lippu", "PrivateTicket": "Yksityinen lippu",

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

@ -42,7 +42,7 @@
"NotOrganizationMember": "Vous n'êtes membre d'aucune organisation.", "NotOrganizationMember": "Vous n'êtes membre d'aucune organisation.",
"UnsubscribeLicenseExpirationEmailSuccessTitle": "Désabonnement réussi", "UnsubscribeLicenseExpirationEmailSuccessTitle": "Désabonnement réussi",
"UnsubscribeLicenseExpirationEmailSuccessMessage": "Vous ne recevrez plus d'e-mails de rappel de la date d'expiration de la licence.", "UnsubscribeLicenseExpirationEmailSuccessMessage": "Vous ne recevrez plus d'e-mails de rappel de la date d'expiration de la licence.",
"IndexPageHeroSection": "<span class = \"first-line\">Une plate-forme de développement Web</span><span class = \"second-line\"> complète </span> <span class = \"third-line\"> intégrée <img src = \"{0}\" width = \"110\" class = \"ml-1\" /> cadre </span>", "IndexPageHeroSection": "<span class=\"first-line\">Une plate-forme de développement Web</span><span class=\"second-line\"> complète </span><span class=\"third-line\"> intégrée <img src=\"{0}\" width = \"110\" class=\"ml-1\" /> cadre </span>",
"AbpCommercialShortDescription": "ABP Commercial fournit des modules d'application prédéfinis, des outils de développement rapide d'applications, des thèmes d'interface utilisateur professionnels, un support premium et plus encore.", "AbpCommercialShortDescription": "ABP Commercial fournit des modules d'application prédéfinis, des outils de développement rapide d'applications, des thèmes d'interface utilisateur professionnels, un support premium et plus encore.",
"LiveDemo": "Démo en direct", "LiveDemo": "Démo en direct",
"GetLicence": "Obtenez une licence", "GetLicence": "Obtenez une licence",
@ -63,7 +63,7 @@
"AdditionalServices": "Des services supplémentaires", "AdditionalServices": "Des services supplémentaires",
"WhatIsABPFramework": "QU'EST-CE QUE LE FRAMEWORK ABP?", "WhatIsABPFramework": "QU'EST-CE QUE LE FRAMEWORK ABP?",
"OpenSourceBaseFramework": "Framework de base Open Source", "OpenSourceBaseFramework": "Framework de base Open Source",
"ABPFrameworkExplanation": "<p class = \"lead\"> ABP Commercial est basé sur ABP Framework, un framework d'applications Web open source et communautaire pour ASP.NET Core. </p> <p> ABP Framework fournit une excellente infrastructure pour écrire maintenable et extensible et du code testable avec les meilleures pratiques. </p> <p> Construit et intégré à des outils populaires que vous connaissez déjà. Faible courbe d'apprentissage, adaptation facile, développement confortable. </p>", "ABPFrameworkExplanation": "<p class=\"lead\"> ABP Commercial est basé sur ABP Framework, un framework d'applications Web open source et communautaire pour ASP.NET Core.</p><p> ABP Framework fournit une excellente infrastructure pour écrire maintenable et extensible et du code testable avec les meilleures pratiques.</p><p> Construit et intégré à des outils populaires que vous connaissez déjà. Faible courbe d'apprentissage, adaptation facile, développement confortable.</p>",
"Modular": "Modulaire", "Modular": "Modulaire",
"MicroserviceCompatible": "Compatible avec les microservices", "MicroserviceCompatible": "Compatible avec les microservices",
"DomainDrivenDesignInfrastructure": "Infrastructure de conception pilotée par domaine", "DomainDrivenDesignInfrastructure": "Infrastructure de conception pilotée par domaine",
@ -78,7 +78,7 @@
"ManyMore": "Beaucoup plus", "ManyMore": "Beaucoup plus",
"ExploreTheABPFramework": "Explorez le Framework ABP", "ExploreTheABPFramework": "Explorez le Framework ABP",
"WhyUseTheABPCommercial": "Pourquoi utiliser ABP Commercial?", "WhyUseTheABPCommercial": "Pourquoi utiliser ABP Commercial?",
"WhyUseTheABPCommercialExplanation": "<p class = \"lead mt- 5\"> La création d'applications Web de niveau entreprise peut être complexe et prendre du temps. </p> <p> ABP Commercial offre l'infrastructure de base parfaite nécessaire pour tous les ASP.NET Core modernes de niveau entreprise solutions basées. De la conception au déploiement, l'ensemble du cycle de développement est optimisé par les fonctionnalités et modules intégrés d'ABP. </p>", "WhyUseTheABPCommercialExplanation": "<p class=\"lead mt-5\"> La création d'applications Web de niveau entreprise peut être complexe et prendre du temps.</p><p> ABP Commercial offre l'infrastructure de base parfaite nécessaire pour tous les ASP.NET Core modernes de niveau entreprise solutions basées. De la conception au déploiement, l'ensemble du cycle de développement est optimisé par les fonctionnalités et modules intégrés d'ABP.</p>",
"StartupTemplatesShortDescription": "Les modèles de démarrage vous permettent de démarrer votre projet en quelques secondes.", "StartupTemplatesShortDescription": "Les modèles de démarrage vous permettent de démarrer votre projet en quelques secondes.",
"UIFrameworksOptions": "Options de frameworks d'interface utilisateur;", "UIFrameworksOptions": "Options de frameworks d'interface utilisateur;",
"DatabaseProviderOptions": "Options du fournisseur de base de données;", "DatabaseProviderOptions": "Options du fournisseur de base de données;",
@ -145,19 +145,19 @@
"DeveloperGuide": "Guide du développeur", "DeveloperGuide": "Guide du développeur",
"ModuleTemplate": "Modèle de module", "ModuleTemplate": "Modèle de module",
"ModuleTemplateExplanation1": "Vous souhaitez créer un module et le réutiliser dans différentes applications? Ce modèle de démarrage prépare tout pour commencer à créer un <strong> module d'application </strong> réutilisable ou un <strong> microservice </strong>.", "ModuleTemplateExplanation1": "Vous souhaitez créer un module et le réutiliser dans différentes applications? Ce modèle de démarrage prépare tout pour commencer à créer un <strong> module d'application </strong> réutilisable ou un <strong> microservice </strong>.",
"ModuleTemplateExplanation2": "<p> Vous pouvez prendre en charge un ou plusieurs frameworks d'interface utilisateur, un ou plusieurs fournisseurs de bases de données pour un seul module. Le modèle de démarrage est configuré pour exécuter et <strong> tester votre module </strong> dans une application minimale en plus de l'infrastructure de test d'unité et d'intégration. </p> <p> Consultez le guide du développeur pour obtenir des informations techniques sur ce modèle. </p>", "ModuleTemplateExplanation2": "<p> Vous pouvez prendre en charge un ou plusieurs frameworks d'interface utilisateur, un ou plusieurs fournisseurs de bases de données pour un seul module. Le modèle de démarrage est configuré pour exécuter et <strong> tester votre module </strong> dans une application minimale en plus de l'infrastructure de test d'unité et d'intégration.</p><p> Consultez le guide du développeur pour obtenir des informations techniques sur ce modèle.</p>",
"WithAllStyleOptions": "avec toutes les options de style", "WithAllStyleOptions": "avec toutes les options de style",
"Demo": "Démo", "Demo": "Démo",
"SeeAllModules": "Voir tous les modules", "SeeAllModules": "Voir tous les modules",
"ABPCLIExplanation": "ABP CLI (Command Line Interface) est un outil de ligne de commande pour effectuer certaines opérations courantes pour les solutions basées sur ABP.", "ABPCLIExplanation": "ABP CLI (Command Line Interface) est un outil de ligne de commande pour effectuer certaines opérations courantes pour les solutions basées sur ABP.",
"ABPSuiteEasilyCURD": "ABP Suite est un outil qui vous permet de créer facilement des pages CRUD", "ABPSuiteEasilyCURD": "ABP Suite est un outil qui vous permet de créer facilement des pages CRUD",
"WeAreHereToHelp": "Nous sommes ici pour <span class = \"zero-text\"> Aide </span>", "WeAreHereToHelp": "Nous sommes ici pour <span class=\"zero-text\"> Aide </span>",
"BrowseOrAskQuestion": "Vous pouvez parcourir nos rubriques d'aide ou rechercher dans les questions fréquemment posées, ou vous pouvez nous poser une question en utilisant le <a href=\"{0}\" class=\"text-success\"> formulaire de contact </a>.", "BrowseOrAskQuestion": "Vous pouvez parcourir nos rubriques d'aide ou rechercher dans les questions fréquemment posées, ou vous pouvez nous poser une question en utilisant le <a href=\"{0}\" class=\"text-success\"> formulaire de contact </a>.",
"SearchQuestionPlaceholder": "Rechercher dans les questions fréquemment posées", "SearchQuestionPlaceholder": "Rechercher dans les questions fréquemment posées",
"WhatIsTheABPCommercial": "Qu'est-ce que la publicité ABP?", "WhatIsTheABPCommercial": "Qu'est-ce que la publicité ABP?",
"WhatAreDifferencesThanAbpFramework": "Quelles sont les différences entre le Framework ABP open source et le ABP Commercial?", "WhatAreDifferencesThanAbpFramework": "Quelles sont les différences entre le Framework ABP open source et le ABP Commercial?",
"ABPCommercialExplanation": "ABP Commercial est un ensemble de modules, d'outils, de thèmes et de services premium basés sur le <a target=\"_blank\" href=\"{0}\"> framework ABP </a> open source. ABP Commercial est développé et soutenu par la même équipe derrière le cadre ABP.", "ABPCommercialExplanation": "ABP Commercial est un ensemble de modules, d'outils, de thèmes et de services premium basés sur le <a target=\"_blank\" href=\"{0}\"> framework ABP </a> open source. ABP Commercial est développé et soutenu par la même équipe derrière le cadre ABP.",
"WhatAreDifferencesThanABPFrameworkExplanation": "<p> <a target=\"_blank\" href=\"{0}\"> Framework ABP </a> est un framework de développement d'applications modulaire, thématique et compatible avec les micro-services pour ASP.NET Core. Il fournit une architecture complète et une infrastructure solide pour vous permettre de vous concentrer sur votre propre code métier plutôt que de vous répéter à chaque nouveau projet. Il est basé sur les meilleures pratiques de développement logiciel et les outils populaires que vous connaissez déjà. </p> <p> Le framework ABP est entièrement gratuit, open source et géré par la communauté. Il fournit également un thème gratuit et des modules prédéfinis (par exemple, la gestion des identités et la gestion des locataires). </p>", "WhatAreDifferencesThanABPFrameworkExplanation": "<p><a target=\"_blank\" href=\"{0}\"> Framework ABP </a> est un framework de développement d'applications modulaire, thématique et compatible avec les micro-services pour ASP.NET Core. Il fournit une architecture complète et une infrastructure solide pour vous permettre de vous concentrer sur votre propre code métier plutôt que de vous répéter à chaque nouveau projet. Il est basé sur les meilleures pratiques de développement logiciel et les outils populaires que vous connaissez déjà.</p><p> Le framework ABP est entièrement gratuit, open source et géré par la communauté. Il fournit également un thème gratuit et des modules prédéfinis (par exemple, la gestion des identités et la gestion des locataires).</p>",
"VisitTheFrameworkVSCommercialDocument": "Pour plus d'informations, consultez le lien suivant: <a href=\"{0}\" target=\"_blank\"> {1} </a>", "VisitTheFrameworkVSCommercialDocument": "Pour plus d'informations, consultez le lien suivant: <a href=\"{0}\" target=\"_blank\"> {1} </a>",
"ABPCommercialFollowingBenefits": "ABP Commercial ajoute les avantages suivants en plus du cadre ABP;", "ABPCommercialFollowingBenefits": "ABP Commercial ajoute les avantages suivants en plus du cadre ABP;",
"Professional": "Professionnel", "Professional": "Professionnel",
@ -177,7 +177,7 @@
"ChangingLicenseType": "Puis-je changer mon type de licence à l'avenir?", "ChangingLicenseType": "Puis-je changer mon type de licence à l'avenir?",
"ChangingLicenseTypeExplanation": "Vous pouvez toujours ajouter de nouveaux développeurs dans votre même type de licence. Voir aussi \"Combien de développeurs peuvent travailler sur l'ABP Commercial?\". Vous pouvez également passer à une licence supérieure en payant la différence de prix calculée. Lorsque vous passez à un plan de licence supérieur, vous bénéficiez des avantages du nouveau plan, mais la mise à niveau de la licence ne modifie pas la date d'expiration de la licence.", "ChangingLicenseTypeExplanation": "Vous pouvez toujours ajouter de nouveaux développeurs dans votre même type de licence. Voir aussi \"Combien de développeurs peuvent travailler sur l'ABP Commercial?\". Vous pouvez également passer à une licence supérieure en payant la différence de prix calculée. Lorsque vous passez à un plan de licence supérieur, vous bénéficiez des avantages du nouveau plan, mais la mise à niveau de la licence ne modifie pas la date d'expiration de la licence.",
"LicenseExtendUpgradeDiff": "Quelle est la différence entre l'extension de licence et la mise à niveau?", "LicenseExtendUpgradeDiff": "Quelle est la différence entre l'extension de licence et la mise à niveau?",
"LicenseExtendUpgradeDiffExplanation": "<strong> Extension: </strong> en prolongeant/renouvelant votre licence, vous continuerez à bénéficier d'une assistance premium et à des mises à jour majeures pour les modules et les thèmes. De plus, vous pourrez continuer à créer de nouveaux projets. Et vous pourrez toujours utiliser ABP Suite, ce qui accélère votre développement. <hr/> <strong> Mise à niveau: </strong> En mettant à jour votre licence, vous passerez à un plan de licence supérieur qui vous permettra d’obtenir des avantages supplémentaires . Consultez le <a href=\"/pricing\"> tableau de comparaison des licences </a> pour vérifier les différences entre les plans de licence. <strong> En revanche, lors de la mise à niveau, la date d'expiration de votre licence ne changera pas! </strong> Pour prolonger la date de fin de votre licence, vous devez prolonger votre licence.", "LicenseExtendUpgradeDiffExplanation": "<strong> Extension: </strong> en prolongeant/renouvelant votre licence, vous continuerez à bénéficier d'une assistance premium et à des mises à jour majeures pour les modules et les thèmes. De plus, vous pourrez continuer à créer de nouveaux projets. Et vous pourrez toujours utiliser ABP Suite, ce qui accélère votre développement.<hr/><strong> Mise à niveau: </strong> En mettant à jour votre licence, vous passerez à un plan de licence supérieur qui vous permettra d’obtenir des avantages supplémentaires . Consultez le <a href=\"/pricing\"> tableau de comparaison des licences </a> pour vérifier les différences entre les plans de licence.<strong> En revanche, lors de la mise à niveau, la date d'expiration de votre licence ne changera pas! </strong> Pour prolonger la date de fin de votre licence, vous devez prolonger votre licence.",
"LicenseRenewalCost": "Quel est le coût du renouvellement de la licence après 1 an?", "LicenseRenewalCost": "Quel est le coût du renouvellement de la licence après 1 an?",
"LicenseRenewalCostExplanation": "Le taux de renouvellement (extension) de toutes les licences perpétuelles ABP Commercial correspond à {0} du prix catalogue de la licence. Le prix de renouvellement de la licence d'équipe standard est de {1} $, la licence professionnelle standard de {2} $ et la licence d'entreprise standard de {3} $. Si vous êtes déjà client, <a href='{4}' target='_blank'> connectez-vous à votre compte </a> pour consulter les tarifs de renouvellement disponibles.", "LicenseRenewalCostExplanation": "Le taux de renouvellement (extension) de toutes les licences perpétuelles ABP Commercial correspond à {0} du prix catalogue de la licence. Le prix de renouvellement de la licence d'équipe standard est de {1} $, la licence professionnelle standard de {2} $ et la licence d'entreprise standard de {3} $. Si vous êtes déjà client, <a href='{4}' target='_blank'> connectez-vous à votre compte </a> pour consulter les tarifs de renouvellement disponibles.",
"HowDoIRenewMyLicense": "Comment renouveler ma licence?", "HowDoIRenewMyLicense": "Comment renouveler ma licence?",
@ -186,13 +186,13 @@
"IsSourceCodeIncludedExplanation1": "Dépend du type de licence que vous avez acheté:", "IsSourceCodeIncludedExplanation1": "Dépend du type de licence que vous avez acheté:",
"IsSourceCodeIncludedExplanation2": "<strong> Équipe </strong>: votre solution utilise les modules et les thèmes en tant que packages NuGet et NPM. Il n'inclut pas leur code source. De cette façon, vous pouvez facilement mettre à niveau ces modules et thèmes chaque fois qu'une nouvelle version est disponible. Cependant, vous ne pouvez pas obtenir le code source des modules et des thèmes.", "IsSourceCodeIncludedExplanation2": "<strong> Équipe </strong>: votre solution utilise les modules et les thèmes en tant que packages NuGet et NPM. Il n'inclut pas leur code source. De cette façon, vous pouvez facilement mettre à niveau ces modules et thèmes chaque fois qu'une nouvelle version est disponible. Cependant, vous ne pouvez pas obtenir le code source des modules et des thèmes.",
"IsSourceCodeIncludedExplanation3": "<strong> Entreprise / Entreprise </strong>: en plus de la licence Team, vous pouvez télécharger le code source de tout module ou thème dont vous avez besoin. Vous pouvez même supprimer les références de package NuGet / NPM pour un module particulier et ajouter son code source directement à votre solution pour le modifier complètement.", "IsSourceCodeIncludedExplanation3": "<strong> Entreprise / Entreprise </strong>: en plus de la licence Team, vous pouvez télécharger le code source de tout module ou thème dont vous avez besoin. Vous pouvez même supprimer les références de package NuGet / NPM pour un module particulier et ajouter son code source directement à votre solution pour le modifier complètement.",
"IsSourceCodeIncludedExplanation4": "<p> L'inclusion du code source d'un module dans votre solution vous donne le maximum de liberté pour personnaliser ce module. Cependant, il ne sera pas possible de mettre à jour automatiquement le module lorsqu'une nouvelle version est publiée. </p> <p> Aucune des licences n'inclut le code source d'ABP Suite, qui est un outil externe qui génère du code pour vous et vous aide à votre développement. </p> <p> Consultez la <a href=\"{0}\"> page de tarification </a> pour connaître les autres différences entre les types de licence. </p>", "IsSourceCodeIncludedExplanation4": "<p> L'inclusion du code source d'un module dans votre solution vous donne le maximum de liberté pour personnaliser ce module. Cependant, il ne sera pas possible de mettre à jour automatiquement le module lorsqu'une nouvelle version est publiée.</p><p> Aucune des licences n'inclut le code source d'ABP Suite, qui est un outil externe qui génère du code pour vous et vous aide à votre développement.</p><p> Consultez la <a href=\"{0}\"> page de tarification </a> pour connaître les autres différences entre les types de licence.</p>",
"ChangingDevelopers": "Puis-je changer les développeurs enregistrés de mon organisation à l'avenir?", "ChangingDevelopers": "Puis-je changer les développeurs enregistrés de mon organisation à l'avenir?",
"ChangingDevelopersExplanation": "En plus d'ajouter de nouveaux développeurs à votre licence, vous pouvez également modifier les développeurs existants (vous pouvez supprimer un développeur et en ajouter un nouveau sur le même siège) sans aucun coût supplémentaire.", "ChangingDevelopersExplanation": "En plus d'ajouter de nouveaux développeurs à votre licence, vous pouvez également modifier les développeurs existants (vous pouvez supprimer un développeur et en ajouter un nouveau sur le même siège) sans aucun coût supplémentaire.",
"WhatHappensWhenLicenseEnds": "Que se passe-t-il à la fin de ma période de licence?", "WhatHappensWhenLicenseEnds": "Que se passe-t-il à la fin de ma période de licence?",
"WhatHappensWhenLicenseEndsExplanation1": "Le type de licence commerciale ABP est <a href=\"{0}\" target=\"_blank\"> licence perpétuelle </a>. Une fois votre licence expirée, vous pouvez continuer à développer votre projet. Et vous n'êtes pas obligé de renouveler votre licence. Votre licence est livrée avec un plan de mise à jour et de support d'un an prêt à l'emploi. Pour continuer à recevoir de nouvelles fonctionnalités, des améliorations de performances, des corrections de bogues, une assistance et continuer à utiliser ABP Suite, assurez-vous de renouveler votre plan chaque année. Lorsque votre licence expirera, vous ne pourrez plus bénéficier des avantages suivants;", "WhatHappensWhenLicenseEndsExplanation1": "Le type de licence commerciale ABP est <a href=\"{0}\" target=\"_blank\"> licence perpétuelle </a>. Une fois votre licence expirée, vous pouvez continuer à développer votre projet. Et vous n'êtes pas obligé de renouveler votre licence. Votre licence est livrée avec un plan de mise à jour et de support d'un an prêt à l'emploi. Pour continuer à recevoir de nouvelles fonctionnalités, des améliorations de performances, des corrections de bogues, une assistance et continuer à utiliser ABP Suite, assurez-vous de renouveler votre plan chaque année. Lorsque votre licence expirera, vous ne pourrez plus bénéficier des avantages suivants;",
"WhatHappensWhenLicenseEndsExplanation2": "Vous ne pouvez pas créer de nouvelles solutions en utilisant ABP Commercial, mais vous pouvez continuer à développer vos applications existantes pour toujours.", "WhatHappensWhenLicenseEndsExplanation2": "Vous ne pouvez pas créer de nouvelles solutions en utilisant ABP Commercial, mais vous pouvez continuer à développer vos applications existantes pour toujours.",
"WhatHappensWhenLicenseEndsExplanation3": "Vous pourrez obtenir des mises à jour pour les modules et les thèmes de votre version MAJEURE. Par example; si vous utilisez la v3.2.0 d'un module, vous pouvez toujours obtenir des mises à jour pour la v3.x.x (v3.3.0, v3.5.2 ... etc.) de ce module. Mais vous ne pouvez pas obtenir de mises à jour pour la prochaine version majeure (comme v4.x, v5.x)", "WhatHappensWhenLicenseEndsExplanation3": "Vous pourrez obtenir des mises à jour pour les modules et les thèmes de votre version MAJEURE. Par example; si vous utilisez la v3.2.0 d'un module, vous pouvez toujours obtenir des mises à jour pour la v3.x.x (v3.3.0, v3.5.2... etc.) de ce module. Mais vous ne pouvez pas obtenir de mises à jour pour la prochaine version majeure (comme v4.x, v5.x)",
"WhatHappensWhenLicenseEndsExplanation4": "Vous ne pouvez pas installer de nouveaux modules et thèmes ajoutés à la plate-forme ABP Commercial après la fin de votre licence.", "WhatHappensWhenLicenseEndsExplanation4": "Vous ne pouvez pas installer de nouveaux modules et thèmes ajoutés à la plate-forme ABP Commercial après la fin de votre licence.",
"WhatHappensWhenLicenseEndsExplanation5": "Vous ne pouvez pas utiliser ABP Suite.", "WhatHappensWhenLicenseEndsExplanation5": "Vous ne pouvez pas utiliser ABP Suite.",
"WhatHappensWhenLicenseEndsExplanation6": "Vous ne pouvez plus bénéficier de l '<a href=\"{0}\"> assistance premium </a>.", "WhatHappensWhenLicenseEndsExplanation6": "Vous ne pouvez plus bénéficier de l '<a href=\"{0}\"> assistance premium </a>.",
@ -203,7 +203,7 @@
"TrialPlan": "Avez-vous un plan d'essai?", "TrialPlan": "Avez-vous un plan d'essai?",
"TrialPlanExplanation": "Pour l'instant, ABP Commercial n'a pas de plan d'essai. Pour les licences Team, nous offrons une garantie de remboursement de 30 jours. Vous pouvez simplement demander un remboursement dans les 30 premiers jours. Pour les licences Business et Enterprise, nous fournissons un remboursement de 60% en 30 jours. En effet, les licences Business et Enterprise incluent le code source complet de tous les modules et thèmes.", "TrialPlanExplanation": "Pour l'instant, ABP Commercial n'a pas de plan d'essai. Pour les licences Team, nous offrons une garantie de remboursement de 30 jours. Vous pouvez simplement demander un remboursement dans les 30 premiers jours. Pour les licences Business et Enterprise, nous fournissons un remboursement de 60% en 30 jours. En effet, les licences Business et Enterprise incluent le code source complet de tous les modules et thèmes.",
"DoYouAcceptBankWireTransfer": "Acceptez-vous les virements bancaires?", "DoYouAcceptBankWireTransfer": "Acceptez-vous les virements bancaires?",
"DoYouAcceptBankWireTransferExplanation": "Oui, nous acceptons les virements bancaires. <br /> Après avoir envoyé le montant de la licence par virement bancaire, envoyez-nous votre reçu et le type de licence demandé par e-mail. <br /> Nos coordonnées bancaires internationales:", "DoYouAcceptBankWireTransferExplanation": "Oui, nous acceptons les virements bancaires.<br/> Après avoir envoyé le montant de la licence par virement bancaire, envoyez-nous votre reçu et le type de licence demandé par e-mail.<br/> Nos coordonnées bancaires internationales:",
"HowToUpgrade": "Comment mettre à niveau des applications existantes lorsqu'une nouvelle version est disponible?", "HowToUpgrade": "Comment mettre à niveau des applications existantes lorsqu'une nouvelle version est disponible?",
"HowToUpgradeExplanation1": "Lorsque vous créez une nouvelle application à l'aide d'ABP Commercial, tous les modules et le thème sont utilisés en tant que packages NuGet et NPM. Ainsi, vous pouvez facilement mettre à jour les packages lorsqu'une nouvelle version est disponible.", "HowToUpgradeExplanation1": "Lorsque vous créez une nouvelle application à l'aide d'ABP Commercial, tous les modules et le thème sont utilisés en tant que packages NuGet et NPM. Ainsi, vous pouvez facilement mettre à jour les packages lorsqu'une nouvelle version est disponible.",
"HowToUpgradeExplanation2": "Outre les mises à niveau standard de NuGet / NPM, <a href=\"{0}\"> ABP CLI </a> fournit une commande de mise à jour qui recherche et met automatiquement à niveau tous les packages associés à ABP dans votre solution.", "HowToUpgradeExplanation2": "Outre les mises à niveau standard de NuGet / NPM, <a href=\"{0}\"> ABP CLI </a> fournit une commande de mise à jour qui recherche et met automatiquement à niveau tous les packages associés à ABP dans votre solution.",
@ -230,7 +230,7 @@
"HowCanIRefundVatExplanation2": "Connectez-vous à votre compte <a href=\"https://secure.2checkout.com/cpanel/login.php\" target=\"_blank\"> 2Checkout </a>", "HowCanIRefundVatExplanation2": "Connectez-vous à votre compte <a href=\"https://secure.2checkout.com/cpanel/login.php\" target=\"_blank\"> 2Checkout </a>",
"HowCanIRefundVatExplanation3": "Trouvez la commande appropriée et appuyez sur \"Rembourser la TVA tardive\" (entrez votre numéro de TVA)", "HowCanIRefundVatExplanation3": "Trouvez la commande appropriée et appuyez sur \"Rembourser la TVA tardive\" (entrez votre numéro de TVA)",
"HowCanIGetMyInvoice": "Comment puis-je obtenir ma facture?", "HowCanIGetMyInvoice": "Comment puis-je obtenir ma facture?",
"HowCanIGetMyInvoiceExplanation": "Il existe 2 passerelles de paiement pour l'achat d'une licence: PayU et 2Checkout. Si vous achetez votre licence via la passerelle 2Checkout, elle envoie la facture PDF à votre adresse e-mail, voir <a href = \"https://knowledgecenter.2checkout.com/Documentation/03Billing-and-payments/Payment-operations/How-do -invoices-work \"> Facturation 2Checkout. </a> Si vous achetez via la passerelle PayU ou par virement bancaire, nous préparerons et vous enverrons votre facture. Vous pouvez demander votre facture sur la <a href=\"{0}\"> page de gestion de l'organisation. </a>", "HowCanIGetMyInvoiceExplanation": "Il existe 2 passerelles de paiement pour l'achat d'une licence: PayU et 2Checkout. Si vous achetez votre licence via la passerelle 2Checkout, elle envoie la facture PDF à votre adresse e-mail, voir <a href=\"https://knowledgecenter.2checkout.com/Documentation/03Billing-and-payments/Payment-operations/How-do-invoices-work\"> Facturation 2Checkout.</a> Si vous achetez via la passerelle PayU ou par virement bancaire, nous préparerons et vous enverrons votre facture. Vous pouvez demander votre facture sur la <a href=\"{0}\"> page de gestion de l'organisation.</a>",
"Forum": "Forum", "Forum": "Forum",
"SupportExplanation": "ABP Commercial Licences fournit un support de forum premium par une équipe composée d'experts ABP Framework.", "SupportExplanation": "ABP Commercial Licences fournit un support de forum premium par une équipe composée d'experts ABP Framework.",
"PrivateTicket": "Billet privé", "PrivateTicket": "Billet privé",
@ -240,7 +240,7 @@
"FastEasy": "Rapide et facile", "FastEasy": "Rapide et facile",
"AbpSuiteExplanation3": "ABP Suite vous permet de créer facilement des pages CRUD. Il vous suffit de définir votre entité et ses propriétés, laissez le reste à ABP Suite pour vous! ABP Suite génère tout le code nécessaire pour votre page CRUD en quelques secondes. Il prend en charge les interfaces utilisateur Angular, MVC et Blazor.", "AbpSuiteExplanation3": "ABP Suite vous permet de créer facilement des pages CRUD. Il vous suffit de définir votre entité et ses propriétés, laissez le reste à ABP Suite pour vous! ABP Suite génère tout le code nécessaire pour votre page CRUD en quelques secondes. Il prend en charge les interfaces utilisateur Angular, MVC et Blazor.",
"RichOptions": "Options riches", "RichOptions": "Options riches",
"AbpSuiteExplanation4": "ABP Suite prend en charge plusieurs options d'interface utilisateur telles que <a href=\"https://docs.microsoft.com/en-us/aspnet/core/razor-pages\"> Razor Pages </a> et <a href = \"https: / /angular.io\">Angular </a>. Il prend également en charge plusieurs bases de données telles que <a href=\"https://www.mongodb.com\"> MongoDB </a> et toutes les bases de données prises en charge par <strong> EntityFramework Core < / strong> (MS SQL Server, Oracle, MySql, PostgreSQL et <a href=\"https://docs.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli\"> plus </a>).", "AbpSuiteExplanation4": "ABP Suite prend en charge plusieurs options d'interface utilisateur telles que <a href=\"https://docs.microsoft.com/en-us/aspnet/core/razor-pages\"> Razor Pages </a> et <a href=\"https://angular.io\">Angular </a>. Il prend également en charge plusieurs bases de données telles que <a href=\"https://www.mongodb.com\"> MongoDB </a> et toutes les bases de données prises en charge par <strong> EntityFramework Core < / strong> (MS SQL Server, Oracle, MySql, PostgreSQL et <a href=\"https://docs.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli\"> plus </a>).",
"AbpSuiteExplanation5": "La bonne chose est que vous n'avez pas à vous soucier de ces options. ABP Suite comprend votre type de projet et génère le code de votre projet et place le code généré au bon endroit dans votre projet.", "AbpSuiteExplanation5": "La bonne chose est que vous n'avez pas à vous soucier de ces options. ABP Suite comprend votre type de projet et génère le code de votre projet et place le code généré au bon endroit dans votre projet.",
"SourceCode": "Code source", "SourceCode": "Code source",
"AbpSuiteExplanation6": "ABP Suite génère le code source pour vous! Il ne génère pas de fichiers magiques pour générer la page Web. ABP Suite génère le code source pour <strong> Entity, Repository, Application Service, Code First Migration, JavaScript / TypeScript et CSHTML / HTML </strong> ainsi que les interfaces nécessaires. ABP Suite génère également le code selon les <strong> meilleures pratiques </strong> de développement logiciel, vous n'avez donc pas à vous soucier de la qualité du code généré.", "AbpSuiteExplanation6": "ABP Suite génère le code source pour vous! Il ne génère pas de fichiers magiques pour générer la page Web. ABP Suite génère le code source pour <strong> Entity, Repository, Application Service, Code First Migration, JavaScript / TypeScript et CSHTML / HTML </strong> ainsi que les interfaces nécessaires. ABP Suite génère également le code selon les <strong> meilleures pratiques </strong> de développement logiciel, vous n'avez donc pas à vous soucier de la qualité du code généré.",

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

@ -63,7 +63,7 @@
"AdditionalServices": "अतिरिक्त सेवाएं", "AdditionalServices": "अतिरिक्त सेवाएं",
"WhatIsABPFramework": "ABP फ्रेमवर्क क्या है?", "WhatIsABPFramework": "ABP फ्रेमवर्क क्या है?",
"OpenSourceBaseFramework": "ओपन सोर्स बेस फ्रेमवर्क", "OpenSourceBaseFramework": "ओपन सोर्स बेस फ्रेमवर्क",
"ABPFrameworkExplanation": "<p class = \"lead\"> ABP कमर्शियल ASP.NET Core पर एक खुला स्रोत और समुदाय संचालित वेब एप्लीकेशन फ्रेमवर्क है। और सर्वोत्तम प्रथाओं के साथ परीक्षण योग्य कोड। </ p> <p> आप पहले से ही जानते हैं कि लोकप्रिय उपकरणों पर निर्मित और एकीकृत। कम सीखने की अवस्था, आसान अनुकूलन, आरामदायक विकास। </ p>", "ABPFrameworkExplanation": "<p class=\"lead\"> ABP कमर्शियल ASP.NET Core पर एक खुला स्रोत और समुदाय संचालित वेब एप्लीकेशन फ्रेमवर्क है। और सर्वोत्तम प्रथाओं के साथ परीक्षण योग्य कोड। </p><p> आप पहले से ही जानते हैं कि लोकप्रिय उपकरणों पर निर्मित और एकीकृत। कम सीखने की अवस्था, आसान अनुकूलन, आरामदायक विकास। </p>",
"Modular": "मॉड्यूलर", "Modular": "मॉड्यूलर",
"MicroserviceCompatible": "माइक्रोसिस्ट सेवा संगत", "MicroserviceCompatible": "माइक्रोसिस्ट सेवा संगत",
"DomainDrivenDesignInfrastructure": "डोमेन संचालित डिज़ाइन इन्फ्रास्ट्रक्चर", "DomainDrivenDesignInfrastructure": "डोमेन संचालित डिज़ाइन इन्फ्रास्ट्रक्चर",
@ -78,7 +78,7 @@
"ManyMore": "बहुत सारी", "ManyMore": "बहुत सारी",
"ExploreTheABPFramework": "ABP फ्रेमवर्क का अन्वेषण करें", "ExploreTheABPFramework": "ABP फ्रेमवर्क का अन्वेषण करें",
"WhyUseTheABPCommercial": "एबीपी कमर्शियल का उपयोग क्यों करें?", "WhyUseTheABPCommercial": "एबीपी कमर्शियल का उपयोग क्यों करें?",
"WhyUseTheABPCommercialExplanation": "<p class = \"lead mt- 5\"> बिल्डिंग एंटरप्राइज-ग्रेड वेब एप्लिकेशन जटिल और समय लेने वाली हो सकती हैं। </ p> <p> ABP कमर्शियल सभी आधुनिक एंटरप्राइज-ग्रेड ASP.NET Core के लिए आवश्यक सही आधारभूत संरचना प्रदान करता है। आधारित समाधान। डिज़ाइन से परिनियोजन तक, संपूर्ण विकास चक्र ABP की अंतर्निहित विशेषताओं और मॉड्यूल द्वारा सशक्त है। </ p", "WhyUseTheABPCommercialExplanation": "<p class=\"lead mt-5\"> बिल्डिंग एंटरप्राइज-ग्रेड वेब एप्लिकेशन जटिल और समय लेने वाली हो सकती हैं। </p><p> ABP कमर्शियल सभी आधुनिक एंटरप्राइज-ग्रेड ASP.NET Core के लिए आवश्यक सही आधारभूत संरचना प्रदान करता है। आधारित समाधान। डिज़ाइन से परिनियोजन तक, संपूर्ण विकास चक्र ABP की अंतर्निहित विशेषताओं और मॉड्यूल द्वारा सशक्त है। </p>",
"StartupTemplatesShortDescription": "स्टार्टअप टेम्प्लेट आपको कुछ ही सेकंड में अपने प्रोजेक्ट के लिए जंप-स्टार्ट करते हैं।", "StartupTemplatesShortDescription": "स्टार्टअप टेम्प्लेट आपको कुछ ही सेकंड में अपने प्रोजेक्ट के लिए जंप-स्टार्ट करते हैं।",
"UIFrameworksOptions": "यूआई चौखटे विकल्प;", "UIFrameworksOptions": "यूआई चौखटे विकल्प;",
"DatabaseProviderOptions": "डेटाबेस प्रदाता विकल्प;", "DatabaseProviderOptions": "डेटाबेस प्रदाता विकल्प;",
@ -108,7 +108,7 @@
"ProudToWorkWith": "गर्व के साथ काम करने के लिए", "ProudToWorkWith": "गर्व के साथ काम करने के लिए",
"OurConsumers": "दुनिया भर में 50 से अधिक देशों के सैकड़ों उद्यम और डेवलपर्स एबीपी कमर्शियल पर निर्भर हैं।", "OurConsumers": "दुनिया भर में 50 से अधिक देशों के सैकड़ों उद्यम और डेवलपर्स एबीपी कमर्शियल पर निर्भर हैं।",
"JoinOurConsumers": "उनके साथ जुड़ें और तेजी से अद्भुत उत्पादों का निर्माण करें।", "JoinOurConsumers": "उनके साथ जुड़ें और तेजी से अद्भुत उत्पादों का निर्माण करें।",
"AdditionalServicesExplanation": "क्या आपको अतिरिक्त या कस्टम सेवाओं की आवश्यकता है? <strong> हम और हमारे साथी प्रदान कर सकते हैं; </ strong>", "AdditionalServicesExplanation": "क्या आपको अतिरिक्त या कस्टम सेवाओं की आवश्यकता है? <strong> हम और हमारे साथी प्रदान कर सकते हैं; </strong>",
"CustomProjectDevelopment": "कस्टम परियोजना विकास", "CustomProjectDevelopment": "कस्टम परियोजना विकास",
"CustomProjectDevelopmentExplanation": "अपने कस्टम प्रोजेक्ट्स के लिए समर्पित डेवलपर्स।", "CustomProjectDevelopmentExplanation": "अपने कस्टम प्रोजेक्ट्स के लिए समर्पित डेवलपर्स।",
"PortingExistingProjects": "मौजूदा परियोजनाओं को पोर्ट करना", "PortingExistingProjects": "मौजूदा परियोजनाओं को पोर्ट करना",
@ -144,26 +144,26 @@
"SeeTheGuideOrGoToTheLiveDemo": "इस टेम्पलेट के बारे में तकनीकी जानकारी के लिए डेवलपर गाइड देखें या लाइव डेमो पर जाएं।", "SeeTheGuideOrGoToTheLiveDemo": "इस टेम्पलेट के बारे में तकनीकी जानकारी के लिए डेवलपर गाइड देखें या लाइव डेमो पर जाएं।",
"DeveloperGuide": "डेवलपर गाइड", "DeveloperGuide": "डेवलपर गाइड",
"ModuleTemplate": "मॉड्यूल टेम्पलेट", "ModuleTemplate": "मॉड्यूल टेम्पलेट",
"ModuleTemplateExplanation1": "आप एक मॉड्यूल बनाना और विभिन्न अनुप्रयोगों में पुन: उपयोग करना चाहते हैं? यह स्टार्टअप टेम्पलेट एक पुन: प्रयोज्य <strong> अनुप्रयोग मॉड्यूल </ strong> या <strong> microservice </ strong> बनाने के लिए शुरू करने के लिए सब कुछ तैयार करता है।", "ModuleTemplateExplanation1": "आप एक मॉड्यूल बनाना और विभिन्न अनुप्रयोगों में पुन: उपयोग करना चाहते हैं? यह स्टार्टअप टेम्पलेट एक पुन: प्रयोज्य <strong> अनुप्रयोग मॉड्यूल </strong> या <strong> microservice </strong> बनाने के लिए शुरू करने के लिए सब कुछ तैयार करता है।",
"ModuleTemplateExplanation2": "<p> आप एकल मॉड्यूल के लिए एकल या एकाधिक UI फ्रेमवर्क, एकल या एकाधिक डेटाबेस प्रदाता का समर्थन कर सकते हैं। स्टार्टअप टेम्प्लेट को चलाने के लिए कॉन्फ़िगर किया गया है और <strong> अपने मॉड्यूल का परीक्षण करें </ strong> यूनिट और एकीकरण परीक्षण के बुनियादी ढांचे के अलावा न्यूनतम आवेदन में। </ p> <p> इस टेम्पलेट के बारे में तकनीकी जानकारी के लिए डेवलपर गाइड देखें। </ p>", "ModuleTemplateExplanation2": "<p> आप एकल मॉड्यूल के लिए एकल या एकाधिक UI फ्रेमवर्क, एकल या एकाधिक डेटाबेस प्रदाता का समर्थन कर सकते हैं। स्टार्टअप टेम्प्लेट को चलाने के लिए कॉन्फ़िगर किया गया है और <strong> अपने मॉड्यूल का परीक्षण करें </strong> यूनिट और एकीकरण परीक्षण के बुनियादी ढांचे के अलावा न्यूनतम आवेदन में। </p><p> इस टेम्पलेट के बारे में तकनीकी जानकारी के लिए डेवलपर गाइड देखें। </p>",
"WithAllStyleOptions": "सभी शैली विकल्पों के साथ", "WithAllStyleOptions": "सभी शैली विकल्पों के साथ",
"Demo": "डेमो", "Demo": "डेमो",
"SeeAllModules": "सभी मॉड्यूल देखें", "SeeAllModules": "सभी मॉड्यूल देखें",
"ABPCLIExplanation": "ABP CLI (कमांड लाइन इंटरफेस) ABP आधारित समाधानों के लिए कुछ सामान्य ऑपरेशन करने के लिए एक कमांड लाइन टूल है।", "ABPCLIExplanation": "ABP CLI (कमांड लाइन इंटरफेस) ABP आधारित समाधानों के लिए कुछ सामान्य ऑपरेशन करने के लिए एक कमांड लाइन टूल है।",
"ABPSuiteEasilyCURD": "एबीपी सूट एक उपकरण है जो आपको आसानी से CRUD पेज बनाने की अनुमति देता है", "ABPSuiteEasilyCURD": "एबीपी सूट एक उपकरण है जो आपको आसानी से CRUD पेज बनाने की अनुमति देता है",
"WeAreHereToHelp": "हम यहाँ हैं <span class = \"zero-text\"> मदद </ span>", "WeAreHereToHelp": "हम यहाँ हैं <span class=\"zero-text\"> मदद </span>",
"BrowseOrAskQuestion": "आप हमारे सहायता विषयों को ब्राउज़ कर सकते हैं या अक्सर पूछे जाने वाले प्रश्नों में खोज कर सकते हैं, या आप <a href=\"{0}\" class=\"text-success\">संपर्क फ़ॉर्म</a> का उपयोग करके हमसे एक प्रश्न पूछ सकते हैं।", "BrowseOrAskQuestion": "आप हमारे सहायता विषयों को ब्राउज़ कर सकते हैं या अक्सर पूछे जाने वाले प्रश्नों में खोज कर सकते हैं, या आप <a href=\"{0}\" class=\"text-success\">संपर्क फ़ॉर्म</a> का उपयोग करके हमसे एक प्रश्न पूछ सकते हैं।",
"SearchQuestionPlaceholder": "अक्सर पूछे जाने वाले प्रश्नों में खोजें", "SearchQuestionPlaceholder": "अक्सर पूछे जाने वाले प्रश्नों में खोजें",
"WhatIsTheABPCommercial": "ABP कमर्शियल क्या है?", "WhatIsTheABPCommercial": "ABP कमर्शियल क्या है?",
"WhatAreDifferencesThanAbpFramework": "ओपन सोर्स ABP फ्रेमवर्क और ABP कमर्शियल के बीच क्या अंतर हैं?", "WhatAreDifferencesThanAbpFramework": "ओपन सोर्स ABP फ्रेमवर्क और ABP कमर्शियल के बीच क्या अंतर हैं?",
"ABPCommercialExplanation": "एबीपी कमर्शियल ओपन सोर्स <a target=\"_blank\" href=\"{0}\">ABP फ्रेमवर्क</a> के शीर्ष पर निर्मित प्रीमियम मॉड्यूल, टूल, थीम और सेवाओं का एक सेट है। एबीपी कमर्शियल को एबीपी ढांचे के पीछे उसी टीम द्वारा विकसित और समर्थित किया जा रहा है।", "ABPCommercialExplanation": "एबीपी कमर्शियल ओपन सोर्स <a target=\"_blank\" href=\"{0}\">ABP फ्रेमवर्क</a> के शीर्ष पर निर्मित प्रीमियम मॉड्यूल, टूल, थीम और सेवाओं का एक सेट है। एबीपी कमर्शियल को एबीपी ढांचे के पीछे उसी टीम द्वारा विकसित और समर्थित किया जा रहा है।",
"WhatAreDifferencesThanABPFrameworkExplanation": "<p> <a target=\"_blank\" href=\"{0}\">ABP फ्रेमवर्क</a> ASP.NET कोर के लिए एक मॉड्यूलर, थीम योग्य, माइक्रो-सर्विस संगत एप्लिकेशन डेवलपमेंट फ्रेमवर्क है। यह आपको हर नई परियोजना के लिए खुद को दोहराने के बजाय अपने स्वयं के व्यवसाय कोड पर ध्यान केंद्रित करने के लिए एक पूर्ण वास्तुकला और एक मजबूत बुनियादी ढांचा प्रदान करता है। यह सॉफ्टवेयर विकास सर्वोत्तम प्रथाओं और लोकप्रिय टूल पर आधारित है जिन्हें आप पहले से जानते हैं। </p> <p> एबीपी ढांचा पूरी तरह से मुक्त, खुला स्रोत और समुदाय संचालित है। यह एक मुफ्त थीम और कुछ पूर्व-निर्मित मॉड्यूल (जैसे पहचान प्रबंधन और किरायेदार प्रबंधन) भी प्रदान करता है।</p>", "WhatAreDifferencesThanABPFrameworkExplanation": "<p><a target=\"_blank\" href=\"{0}\">ABP फ्रेमवर्क</a> ASP.NET कोर के लिए एक मॉड्यूलर, थीम योग्य, माइक्रो-सर्विस संगत एप्लिकेशन डेवलपमेंट फ्रेमवर्क है। यह आपको हर नई परियोजना के लिए खुद को दोहराने के बजाय अपने स्वयं के व्यवसाय कोड पर ध्यान केंद्रित करने के लिए एक पूर्ण वास्तुकला और एक मजबूत बुनियादी ढांचा प्रदान करता है। यह सॉफ्टवेयर विकास सर्वोत्तम प्रथाओं और लोकप्रिय टूल पर आधारित है जिन्हें आप पहले से जानते हैं। </p><p> एबीपी ढांचा पूरी तरह से मुक्त, खुला स्रोत और समुदाय संचालित है। यह एक मुफ्त थीम और कुछ पूर्व-निर्मित मॉड्यूल (जैसे पहचान प्रबंधन और किरायेदार प्रबंधन) भी प्रदान करता है।</p>",
"VisitTheFrameworkVSCommercialDocument": "अधिक जानकारी के लिए, निम्न लिंक पर जाएँ <a href=\"{0}\" target=\"_blank\"> {1} </a>", "VisitTheFrameworkVSCommercialDocument": "अधिक जानकारी के लिए, निम्न लिंक पर जाएँ <a href=\"{0}\" target=\"_blank\"> {1} </a>",
"ABPCommercialFollowingBenefits": "एबीपी वाणिज्यिक एबीपी ढांचे के शीर्ष पर निम्नलिखित लाभ जोड़ता है;", "ABPCommercialFollowingBenefits": "एबीपी वाणिज्यिक एबीपी ढांचे के शीर्ष पर निम्नलिखित लाभ जोड़ता है;",
"Professional": "पेशेवर", "Professional": "पेशेवर",
"UIThemes": "यूआई थीम", "UIThemes": "यूआई थीम",
"EnterpriseModules": "एंटरप्राइज़ तैयार, सुविधा संपन्न, पूर्व-निर्मित <a href=\"{0}\">एप्लिकेशन मॉड्यूल</a> (उदा. पहचान सर्वर प्रबंधन, SaaS प्रबंधन, भाषा प्रबंधन)", "EnterpriseModules": "एंटरप्राइज़ तैयार, सुविधा संपन्न, पूर्व-निर्मित <a href=\"{0}\">एप्लिकेशन मॉड्यूल</a> (उदा. पहचान सर्वर प्रबंधन, SaaS प्रबंधन, भाषा प्रबंधन)",
"ToolingToSupport": "आपकी विकास उत्पादकता का समर्थन करने के लिए टूलिंग (उदा. <a href=\"{0}\">ABP Suite</a>)", "ToolingToSupport": "आपकी विकास उत्पादकता का समर्थन करने के लिए टूलिंग (उदा.<a href=\"{0}\">ABP Suite</a>)",
"PremiumSupportLink": "प्रीमियम <a href=\"{0}\" target=\"_blank\">समर्थन</a>", "PremiumSupportLink": "प्रीमियम <a href=\"{0}\" target=\"_blank\">समर्थन</a>",
"WhatDoIDownloadABPCommercial": "जब मैं एबीपी कमर्शियल खरीदता हूं तो क्या डाउनलोड करता हूं?", "WhatDoIDownloadABPCommercial": "जब मैं एबीपी कमर्शियल खरीदता हूं तो क्या डाउनलोड करता हूं?",
"CreateUnlimitedSolutions": "एक बार जब आप एबीपी वाणिज्यिक लाइसेंस खरीद लेते हैं, तो आप असीमित समाधान बनाने में सक्षम होंगे जैसा कि <a href=\"{0}\">आरंभ करना</a> दस्तावेज़ में वर्णित है।", "CreateUnlimitedSolutions": "एक बार जब आप एबीपी वाणिज्यिक लाइसेंस खरीद लेते हैं, तो आप असीमित समाधान बनाने में सक्षम होंगे जैसा कि <a href=\"{0}\">आरंभ करना</a> दस्तावेज़ में वर्णित है।",
@ -177,7 +177,7 @@
"ChangingLicenseType": "क्या मैं भविष्य में अपना लाइसेंस प्रकार बदल सकता हूं?", "ChangingLicenseType": "क्या मैं भविष्य में अपना लाइसेंस प्रकार बदल सकता हूं?",
"ChangingLicenseTypeExplanation": "आप अपने समान लाइसेंस प्रकार में हमेशा नए डेवलपर्स को जोड़ सकते हैं। यह भी देखें \"एबीपी कमर्शियल पर कितने डेवलपर काम कर सकते हैं?\"। आप गणना मूल्य अंतर का भुगतान करके एक उच्च लाइसेंस के लिए भी अपग्रेड कर सकते हैं। जब आप उच्च लाइसेंस योजना में अपग्रेड करते हैं, तो आपको नई योजना का लाभ मिलता है, लेकिन लाइसेंस अपग्रेड लाइसेंस की समाप्ति की तारीख को नहीं बदलता है।", "ChangingLicenseTypeExplanation": "आप अपने समान लाइसेंस प्रकार में हमेशा नए डेवलपर्स को जोड़ सकते हैं। यह भी देखें \"एबीपी कमर्शियल पर कितने डेवलपर काम कर सकते हैं?\"। आप गणना मूल्य अंतर का भुगतान करके एक उच्च लाइसेंस के लिए भी अपग्रेड कर सकते हैं। जब आप उच्च लाइसेंस योजना में अपग्रेड करते हैं, तो आपको नई योजना का लाभ मिलता है, लेकिन लाइसेंस अपग्रेड लाइसेंस की समाप्ति की तारीख को नहीं बदलता है।",
"LicenseExtendUpgradeDiff": "लाइसेंस विस्तार और उन्नयन के बीच क्या अंतर है?", "LicenseExtendUpgradeDiff": "लाइसेंस विस्तार और उन्नयन के बीच क्या अंतर है?",
"LicenseExtendUpgradeDiffExplanation": "<strong> विस्तार: </ strong> अपने लाइसेंस का विस्तार / नवीनीकरण करके, आप प्रीमियम समर्थन प्राप्त करना और मॉड्यूल और थीम के लिए प्रमुख अपडेट प्राप्त करना जारी रखेंगे। इसके अलावा, आप नई परियोजनाओं को जारी रखने में सक्षम होंगे। और आप अभी भी एबीपी सूट का उपयोग कर पाएंगे जो आपके विकास को गति देता है। <hr /> <strong> उन्नयन: </ strong> अपने लाइसेंस को अपग्रेड करके, आप एक उच्च लाइसेंस योजना को बढ़ावा देंगे जिससे आप अतिरिक्त लाभ प्राप्त कर सकेंगे। । लाइसेंस योजनाओं के बीच अंतर की जांच करने के लिए <a href=\"/pricing\"> लाइसेंस तुलना तालिका </a> देखें। <strong> दूसरी ओर, जब आप अपग्रेड करते हैं, तो आपकी लाइसेंस की समाप्ति तिथि नहीं बदलेगी! </ Strong> > अपनी लाइसेंस की अंतिम तिथि बढ़ाने के लिए, आपको अपने लाइसेंस का विस्तार करना होगा।", "LicenseExtendUpgradeDiffExplanation": "<strong>Extending:</strong> By extending/renewing your license, you will continue to get premium support and get major 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.<hr/><strong>Upgrading:</strong> By upgrading your license, you will promote to a higher license plan which will allow you to get additional benefits. See the <a href=\"/pricing\">license comparison table</a> to check the differences between the license plans.<strong>On the other hand, when you upgrade, your license expiry date will not change!</strong>To extend your license end date, you need to extend your license.",
"LicenseRenewalCost": "1 वर्ष के बाद लाइसेंस नवीनीकरण लागत क्या है?", "LicenseRenewalCost": "1 वर्ष के बाद लाइसेंस नवीनीकरण लागत क्या है?",
"LicenseRenewalCostExplanation": "सभी एबीपी वाणिज्यिक स्थायी लाइसेंसों की नवीनीकरण (विस्तार) दर लाइसेंस सूची मूल्य का {0} है। मानक टीम लाइसेंस का नवीनीकरण मूल्य ${1} है, मानक व्यवसाय लाइसेंस ${2} है और मानक एंटरप्राइज़ लाइसेंस ${3} है। यदि आप पहले से ही ग्राहक हैं, तो उपलब्ध नवीनीकरण मूल्य-निर्धारण की समीक्षा के लिए <a href='{4}' target='_blank'>अपने खाते में लॉग इन करें</a>।", "LicenseRenewalCostExplanation": "सभी एबीपी वाणिज्यिक स्थायी लाइसेंसों की नवीनीकरण (विस्तार) दर लाइसेंस सूची मूल्य का {0} है। मानक टीम लाइसेंस का नवीनीकरण मूल्य ${1} है, मानक व्यवसाय लाइसेंस ${2} है और मानक एंटरप्राइज़ लाइसेंस ${3} है। यदि आप पहले से ही ग्राहक हैं, तो उपलब्ध नवीनीकरण मूल्य-निर्धारण की समीक्षा के लिए <a href='{4}' target='_blank'>अपने खाते में लॉग इन करें</a>।",
"HowDoIRenewMyLicense": "मैं अपने लाइसेंस का नवीनीकरण कैसे करूँ?", "HowDoIRenewMyLicense": "मैं अपने लाइसेंस का नवीनीकरण कैसे करूँ?",
@ -192,7 +192,7 @@
"WhatHappensWhenLicenseEnds": "मेरे लाइसेंस की अवधि समाप्त होने पर क्या होता है?", "WhatHappensWhenLicenseEnds": "मेरे लाइसेंस की अवधि समाप्त होने पर क्या होता है?",
"WhatHappensWhenLicenseEndsExplanation1": "ABP वाणिज्यिक लाइसेंस प्रकार <a href=\"{0}\" target=\"_blank\">स्थायी लाइसेंस</a> है। आपके लाइसेंस की समय सीमा समाप्त होने के बाद, आप अपने प्रोजेक्ट को विकसित करना जारी रख सकते हैं। और आप अपने लाइसेंस को नवीनीकृत करने के लिए बाध्य नहीं हैं। आपका लाइसेंस बॉक्स से बाहर एक साल के अपडेट और समर्थन योजना के साथ आता है। नई सुविधाओं, प्रदर्शन में सुधार, बग फिक्स, समर्थन प्राप्त करना जारी रखने और एबीपी सूट का उपयोग जारी रखने के लिए, हर साल अपनी योजना को नवीनीकृत करना सुनिश्चित करें। जब आपका लाइसेंस समाप्त हो जाता है, तो आप निम्नलिखित में से अधिक लाभ प्राप्त नहीं कर पाएंगे;", "WhatHappensWhenLicenseEndsExplanation1": "ABP वाणिज्यिक लाइसेंस प्रकार <a href=\"{0}\" target=\"_blank\">स्थायी लाइसेंस</a> है। आपके लाइसेंस की समय सीमा समाप्त होने के बाद, आप अपने प्रोजेक्ट को विकसित करना जारी रख सकते हैं। और आप अपने लाइसेंस को नवीनीकृत करने के लिए बाध्य नहीं हैं। आपका लाइसेंस बॉक्स से बाहर एक साल के अपडेट और समर्थन योजना के साथ आता है। नई सुविधाओं, प्रदर्शन में सुधार, बग फिक्स, समर्थन प्राप्त करना जारी रखने और एबीपी सूट का उपयोग जारी रखने के लिए, हर साल अपनी योजना को नवीनीकृत करना सुनिश्चित करें। जब आपका लाइसेंस समाप्त हो जाता है, तो आप निम्नलिखित में से अधिक लाभ प्राप्त नहीं कर पाएंगे;",
"WhatHappensWhenLicenseEndsExplanation2": "आप एबीपी कमर्शियल का उपयोग करके नए समाधान नहीं बना सकते हैं, लेकिन आप अपने मौजूदा अनुप्रयोगों को हमेशा के लिए विकसित कर सकते हैं।", "WhatHappensWhenLicenseEndsExplanation2": "आप एबीपी कमर्शियल का उपयोग करके नए समाधान नहीं बना सकते हैं, लेकिन आप अपने मौजूदा अनुप्रयोगों को हमेशा के लिए विकसित कर सकते हैं।",
"WhatHappensWhenLicenseEndsExplanation3": "आप अपने मुख्य संस्करण के भीतर मॉड्यूल और विषयों के लिए अद्यतन प्राप्त करने में सक्षम होंगे। उदाहरण के लिए; यदि आप किसी मॉड्यूल के v3.2.0 का उपयोग कर रहे हैं, तो आप उस मॉड्यूल के v3.x.x (v3.3.0, v3.5.2 ... आदि) के लिए अपडेट प्राप्त कर सकते हैं। लेकिन आपको अगले प्रमुख संस्करण के लिए अपडेट नहीं मिल सकता है (जैसे v4.x, v5.x)", "WhatHappensWhenLicenseEndsExplanation3": "आप अपने मुख्य संस्करण के भीतर मॉड्यूल और विषयों के लिए अद्यतन प्राप्त करने में सक्षम होंगे। उदाहरण के लिए; यदि आप किसी मॉड्यूल के v3.2.0 का उपयोग कर रहे हैं, तो आप उस मॉड्यूल के v3.x.x (v3.3.0, v3.5.2... आदि) के लिए अपडेट प्राप्त कर सकते हैं। लेकिन आपको अगले प्रमुख संस्करण के लिए अपडेट नहीं मिल सकता है (जैसे v4.x, v5.x)",
"WhatHappensWhenLicenseEndsExplanation4": "आप अपने लाइसेंस समाप्त होने के बाद एबीपी वाणिज्यिक मंच में जोड़े गए नए मॉड्यूल और थीम स्थापित नहीं कर सकते।", "WhatHappensWhenLicenseEndsExplanation4": "आप अपने लाइसेंस समाप्त होने के बाद एबीपी वाणिज्यिक मंच में जोड़े गए नए मॉड्यूल और थीम स्थापित नहीं कर सकते।",
"WhatHappensWhenLicenseEndsExplanation5": "आप एबीपी सूट का उपयोग नहीं कर सकते।", "WhatHappensWhenLicenseEndsExplanation5": "आप एबीपी सूट का उपयोग नहीं कर सकते।",
"WhatHappensWhenLicenseEndsExplanation6": "अब आपको <a href=\"{0}\">प्रीमियम सहायता</a> नहीं मिल सकती है।", "WhatHappensWhenLicenseEndsExplanation6": "अब आपको <a href=\"{0}\">प्रीमियम सहायता</a> नहीं मिल सकती है।",
@ -203,7 +203,7 @@
"TrialPlan": "क्या आपके पास एक परीक्षण योजना है?", "TrialPlan": "क्या आपके पास एक परीक्षण योजना है?",
"TrialPlanExplanation": "अभी के लिए, एबीपी कमर्शियल में ट्रायल प्लान नहीं है। टीम लाइसेंस के लिए हम 30 दिन की मनी बैक गारंटी प्रदान करते हैं। आप पहले 30 दिनों में धनवापसी का अनुरोध कर सकते हैं। बिजनेस और एंटरप्राइज लाइसेंस के लिए, हम 30 दिनों में 60% रिफंड प्रदान करते हैं। ऐसा इसलिए है क्योंकि व्यवसाय और एंटरप्राइज़ लाइसेंस में सभी मॉड्यूल और थीम का पूर्ण स्रोत कोड शामिल है।", "TrialPlanExplanation": "अभी के लिए, एबीपी कमर्शियल में ट्रायल प्लान नहीं है। टीम लाइसेंस के लिए हम 30 दिन की मनी बैक गारंटी प्रदान करते हैं। आप पहले 30 दिनों में धनवापसी का अनुरोध कर सकते हैं। बिजनेस और एंटरप्राइज लाइसेंस के लिए, हम 30 दिनों में 60% रिफंड प्रदान करते हैं। ऐसा इसलिए है क्योंकि व्यवसाय और एंटरप्राइज़ लाइसेंस में सभी मॉड्यूल और थीम का पूर्ण स्रोत कोड शामिल है।",
"DoYouAcceptBankWireTransfer": "क्या आप बैंक वायर ट्रांसफर स्वीकार करते हैं?", "DoYouAcceptBankWireTransfer": "क्या आप बैंक वायर ट्रांसफर स्वीकार करते हैं?",
"DoYouAcceptBankWireTransferExplanation": "हां, हम बैंक वायर ट्रांसफर स्वीकार करते हैं। <br /> बैंक वायर ट्रांसफर के माध्यम से लाइसेंस राशि भेजने के बाद, हमें अपनी रसीद और अनुरोधित लाइसेंस प्रकार ई-मेल के माध्यम से भेजें। <br /> हमारे अंतरराष्ट्रीय बैंक खाते की जानकारी:", "DoYouAcceptBankWireTransferExplanation": "हां, हम बैंक वायर ट्रांसफर स्वीकार करते हैं। <br/> बैंक वायर ट्रांसफर के माध्यम से लाइसेंस राशि भेजने के बाद, हमें अपनी रसीद और अनुरोधित लाइसेंस प्रकार ई-मेल के माध्यम से भेजें। <br/> हमारे अंतरराष्ट्रीय बैंक खाते की जानकारी:",
"HowToUpgrade": "नया संस्करण उपलब्ध होने पर मौजूदा एप्लिकेशन को कैसे अपग्रेड किया जाए?", "HowToUpgrade": "नया संस्करण उपलब्ध होने पर मौजूदा एप्लिकेशन को कैसे अपग्रेड किया जाए?",
"HowToUpgradeExplanation1": "जब आप ABP कमर्शियल का उपयोग करके एक नया एप्लिकेशन बनाते हैं, तो सभी मॉड्यूल और थीम को NuGet और NPM पैकेज के रूप में उपयोग किया जाता है। इसलिए, नया संस्करण उपलब्ध होने पर आप आसानी से संकुल को अपग्रेड कर सकते हैं।", "HowToUpgradeExplanation1": "जब आप ABP कमर्शियल का उपयोग करके एक नया एप्लिकेशन बनाते हैं, तो सभी मॉड्यूल और थीम को NuGet और NPM पैकेज के रूप में उपयोग किया जाता है। इसलिए, नया संस्करण उपलब्ध होने पर आप आसानी से संकुल को अपग्रेड कर सकते हैं।",
"HowToUpgradeExplanation2": "मानक NuGet/NPM अपग्रेड के अलावा, <a href=\"{0}\">ABP CLI</a> एक अपडेट कमांड प्रदान करता है जो आपके समाधान में सभी ABP संबंधित पैकेजों को स्वचालित रूप से ढूंढता और अपग्रेड करता है।", "HowToUpgradeExplanation2": "मानक NuGet/NPM अपग्रेड के अलावा, <a href=\"{0}\">ABP CLI</a> एक अपडेट कमांड प्रदान करता है जो आपके समाधान में सभी ABP संबंधित पैकेजों को स्वचालित रूप से ढूंढता और अपग्रेड करता है।",

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

@ -42,7 +42,7 @@
"NotOrganizationMember": "Non sei membro di nessuna organizzazione.", "NotOrganizationMember": "Non sei membro di nessuna organizzazione.",
"UnsubscribeLicenseExpirationEmailSuccessTitle": "Iscrizione annullata con successo", "UnsubscribeLicenseExpirationEmailSuccessTitle": "Iscrizione annullata con successo",
"UnsubscribeLicenseExpirationEmailSuccessMessage": "Non riceverai più email di promemoria della data di scadenza della licenza.", "UnsubscribeLicenseExpirationEmailSuccessMessage": "Non riceverai più email di promemoria della data di scadenza della licenza.",
"IndexPageHeroSection": "<span class = \"first-line\"> Una completa </span> <span class = \"second-line\"> piattaforma di sviluppo web </span> <span class = \"third-line\"> integrata <img src = \"{0}\" width = \"110\" class = \"ml-1\" /> framework </span>", "IndexPageHeroSection": "<span class=\"first-line\"> Una completa </span><span class=\"second-line\"> piattaforma di sviluppo web </span><span class=\"third-line\"> integrata <img src=\"{0}\" width=\"110\" class=\"ml-1\" /> framework </span>",
"AbpCommercialShortDescription": "ABP Commercial fornisce moduli applicativi predefiniti, strumenti per lo sviluppo rapido di applicazioni, temi dell'interfaccia utente professionale, supporto premium e altro ancora.", "AbpCommercialShortDescription": "ABP Commercial fornisce moduli applicativi predefiniti, strumenti per lo sviluppo rapido di applicazioni, temi dell'interfaccia utente professionale, supporto premium e altro ancora.",
"LiveDemo": "Dimostrazione dal vivo", "LiveDemo": "Dimostrazione dal vivo",
"GetLicence": "Ottieni una licenza", "GetLicence": "Ottieni una licenza",
@ -51,47 +51,47 @@
"Startup": "Avviare", "Startup": "Avviare",
"Templates": "Modelli", "Templates": "Modelli",
"Developer": "Sviluppatore", "Developer": "Sviluppatore",
"Tools": "Utensili", "Tools": "Strumenti",
"Premium": "Premium", "Premium": "Premium",
"PremiumSupport": "Supporto premium", "PremiumSupport": "Supporto Premium",
"PremiumForumSupport": "Supporto forum premium", "PremiumForumSupport": "Supporto Forum Premium",
"UI": "UI", "UI": "Interfaccia Utente",
"Themes": "Temi", "Themes": "Temi",
"JoinOurNewsletter": "Iscriviti alla nostra newsletter", "JoinOurNewsletter": "Iscriviti alla nostra newsletter",
"Send": "Spedire", "Send": "Spedire",
"Learn": "Imparare", "Learn": "Imparare",
"AdditionalServices": "Servizi aggiuntivi", "AdditionalServices": "Servizi aggiuntivi",
"WhatIsABPFramework": "QUAL È IL QUADRO ABP?", "WhatIsABPFramework": "COSA E` IL FRAMEWORK ABP?",
"OpenSourceBaseFramework": "Framework di base open source", "OpenSourceBaseFramework": "Framework di base open source",
"ABPFrameworkExplanation": "<p class = \"lead\"> ABP Commercial si basa su ABP Framework, un framework per applicazioni web open source e guidato dalla comunità per ASP.NET Core. </p> <p> ABP Framework fornisce un'eccellente infrastruttura per la scrittura gestibile ed estensibile e codice testabile con best practice. </p> <p> Costruito e integrato in strumenti popolari che già conosci. Bassa curva di apprendimento, facile adattamento, sviluppo confortevole. </p>", "ABPFrameworkExplanation": "<p class=\"lead\"> ABP Commercial si basa su ABP Framework, un framework per applicazioni web open source e guidato dalla comunità per ASP.NET Core.</p><p> ABP Framework fornisce un'eccellente infrastruttura per la scrittura gestibile ed estensibile e codice testabile con best practice.</p><p> Costruito e integrato in strumenti popolari che già conosci. Bassa curva di apprendimento, facile adattamento, sviluppo confortevole.</p>",
"Modular": "Modulare", "Modular": "Modulare",
"MicroserviceCompatible": "Compatibile con microservizi", "MicroserviceCompatible": "Compatibile con microservizi",
"DomainDrivenDesignInfrastructure": "Infrastruttura di progettazione basata sul dominio", "DomainDrivenDesignInfrastructure": "Infrastruttura Domain Driven Design",
"MultiTenancy": "Multi-Tenancy", "MultiTenancy": "Multi-Tenancy",
"DistributedMessaging": "Messaggistica distribuita", "DistributedMessaging": "Messaggistica distribuita",
"DynamicProxying": "Proxying dinamico", "DynamicProxying": "Proxying dinamico",
"BackgroundJobs": "Lavori in background", "BackgroundJobs": "Operazioni in background",
"AuditLogging": "Registrazione di audit", "AuditLogging": "Registri di controllo",
"BLOBStoring": "Archiviazione BLOB", "BLOBStoring": "Archiviazione BLOB",
"BundlingMinification": "Raggruppamento e minimizzazione", "BundlingMinification": "Raggruppamento e minimizzazione",
"AdvancedLocalization": "Localizzazione avanzata", "AdvancedLocalization": "Localizzazione avanzata",
"ManyMore": "Molti altri", "ManyMore": "Molti altri",
"ExploreTheABPFramework": "Esplora il framework ABP", "ExploreTheABPFramework": "Esplora il framework ABP",
"WhyUseTheABPCommercial": "Perché utilizzare lo spot pubblicitario ABP?", "WhyUseTheABPCommercial": "Perché utilizzare ABP Commercial?",
"WhyUseTheABPCommercialExplanation": "<p class = \"lead mt- 5\"> La creazione di applicazioni Web di livello aziendale può essere complessa e richiede tempo. </p> <p> ABP Commercial offre l'infrastruttura di base perfetta necessaria per tutti i moderni ASP.NET Core di livello aziendale soluzioni basate. Dalla progettazione all'implementazione, l'intero ciclo di sviluppo è potenziato dalle funzionalità e dai moduli integrati di ABP. </p>", "WhyUseTheABPCommercialExplanation": "<p class=\"lead mt-5\"> La creazione di applicazioni Web di livello aziendale può essere complessa e richiede tempo.</p><p> ABP Commercial offre l'infrastruttura di base perfetta necessaria per tutti i moderni ASP.NET Core di livello aziendale soluzioni basate. Dalla progettazione all'implementazione, l'intero ciclo di sviluppo è potenziato dalle funzionalità e dai moduli integrati di ABP.</p>",
"StartupTemplatesShortDescription": "I modelli di avvio ti consentono di avviare rapidamente il tuo progetto in pochi secondi.", "StartupTemplatesShortDescription": "I modelli di avvio ti consentono di avviare rapidamente il tuo progetto in pochi secondi.",
"UIFrameworksOptions": "Opzioni dei framework dell'interfaccia utente;", "UIFrameworksOptions": "Opzioni dei framework dell'interfaccia utente;",
"DatabaseProviderOptions": "Opzioni del provider di database;", "DatabaseProviderOptions": "Opzioni del provider di database;",
"PreBuiltApplicationModules": "Moduli applicativi predefiniti", "PreBuiltApplicationModules": "Moduli applicativi predefiniti",
"PreBuiltApplicationModulesShortDescription": "I requisiti delle applicazioni più comuni sono già stati sviluppati per te come moduli riutilizzabili.", "PreBuiltApplicationModulesShortDescription": "I requisiti delle applicazioni più comuni sono già stati sviluppati per te come moduli riutilizzabili.",
"Account": "account", "Account": "Account",
"Blogging": "Blogging", "Blogging": "Blogging",
"Identity": "Identità", "Identity": "Identità",
"IdentityServer": "Identity Server", "IdentityServer": "Identity Server",
"Saas": "Saas", "Saas": "Saas",
"LanguageManagement": "Gestione della lingua", "LanguageManagement": "Gestione della lingua",
"TextTemplateManagement": "Gestione dei modelli di testo", "TextTemplateManagement": "Gestione dei modelli di testo",
"See All Modules": "SeeAllModules", "See All Modules": "Vedi tutti i moduli",
"ABPSuite": "ABP Suite", "ABPSuite": "ABP Suite",
"AbpSuiteShortDescription": "ABP Suite è uno strumento complementare all'ABP Commercial.", "AbpSuiteShortDescription": "ABP Suite è uno strumento complementare all'ABP Commercial.",
"AbpSuiteExplanation": "Ti consente di creare pagine web in pochi minuti. È uno strumento .NET Core Global che può essere installato dalla riga di comando. Può creare una nuova soluzione ABP, generare pagine CRUD dal database al front-end.", "AbpSuiteExplanation": "Ti consente di creare pagine web in pochi minuti. È uno strumento .NET Core Global che può essere installato dalla riga di comando. Può creare una nuova soluzione ABP, generare pagine CRUD dal database al front-end.",
@ -100,7 +100,7 @@
"ProfessionalModernUIThemes": "Temi dell'interfaccia utente moderni e professionali", "ProfessionalModernUIThemes": "Temi dell'interfaccia utente moderni e professionali",
"LeptonThemeExplanation": "Lepton fornisce una gamma di temi di amministrazione Bootstrap che fungono da solida base per qualsiasi progetto che richieda dashboard di amministrazione.", "LeptonThemeExplanation": "Lepton fornisce una gamma di temi di amministrazione Bootstrap che fungono da solida base per qualsiasi progetto che richieda dashboard di amministrazione.",
"DefaultTheme": "Tema predefinito", "DefaultTheme": "Tema predefinito",
"MaterialTheme": "Tema materiale", "MaterialTheme": "Tema Material",
"Default2Theme": "Tema predefinito 2", "Default2Theme": "Tema predefinito 2",
"DarkTheme": "Tema scuro", "DarkTheme": "Tema scuro",
"DarkBlueTheme": "Tema blu scuro", "DarkBlueTheme": "Tema blu scuro",
@ -111,13 +111,13 @@
"AdditionalServicesExplanation": "Hai bisogno di servizi aggiuntivi o personalizzati? <strong> Noi e i nostri partner possiamo fornire; </strong>", "AdditionalServicesExplanation": "Hai bisogno di servizi aggiuntivi o personalizzati? <strong> Noi e i nostri partner possiamo fornire; </strong>",
"CustomProjectDevelopment": "Sviluppo di progetti personalizzati", "CustomProjectDevelopment": "Sviluppo di progetti personalizzati",
"CustomProjectDevelopmentExplanation": "Sviluppatori dedicati per i tuoi progetti personalizzati.", "CustomProjectDevelopmentExplanation": "Sviluppatori dedicati per i tuoi progetti personalizzati.",
"PortingExistingProjects": "Porting di progetti esistenti", "PortingExistingProjects": "Miigrazione di progetti esistenti",
"PortingExistingProjectsExplanation": "Migrazione dei tuoi progetti legacy alla piattaforma ABP.", "PortingExistingProjectsExplanation": "Migrazione dei tuoi progetti legacy alla piattaforma ABP.",
"LiveSupport": "Supporto dal vivo", "LiveSupport": "Supporto dal vivo",
"LiveSupportExplanation": "Opzione di supporto remoto dal vivo quando ne hai bisogno.", "LiveSupportExplanation": "Opzione di supporto remoto dal vivo quando ne hai bisogno.",
"Training": "Formazione", "Training": "Formazione",
"TrainingExplanation": "Formazione dedicata per i tuoi sviluppatori.", "TrainingExplanation": "Formazione dedicata per i tuoi sviluppatori.",
"OnBoarding": "Onboarding", "OnBoarding": "Affiancamento",
"OnBoardingExplanation": "Aiuta a configurare i tuoi ambienti di sviluppo, CI e CD.", "OnBoardingExplanation": "Aiuta a configurare i tuoi ambienti di sviluppo, CI e CD.",
"PrioritizedTechnicalSupport": "Assistenza tecnica prioritaria", "PrioritizedTechnicalSupport": "Assistenza tecnica prioritaria",
"PremiumSupportExplanation": "Oltre al grande supporto della comunità del framework ABP, il nostro team di supporto risponde alle domande tecniche e ai problemi degli utenti commerciali con alta priorità.", "PremiumSupportExplanation": "Oltre al grande supporto della comunità del framework ABP, il nostro team di supporto risponde alle domande tecniche e ai problemi degli utenti commerciali con alta priorità.",
@ -132,7 +132,7 @@
"SendMessage": "Invia messaggio", "SendMessage": "Invia messaggio",
"Success": "Successo", "Success": "Successo",
"WeWillReplyYou": "Abbiamo ricevuto il tuo messaggio e ti contatteremo a breve.", "WeWillReplyYou": "Abbiamo ricevuto il tuo messaggio e ti contatteremo a breve.",
"GoHome": "Andare a casa", "GoHome": "Torna all'inizio",
"CreateLiveDemo": "Crea demo live", "CreateLiveDemo": "Crea demo live",
"RegisterToTheNewsletter": "Registrati alla newsletter per ricevere informazioni su ABP.IO, comprese le nuove versioni ecc.", "RegisterToTheNewsletter": "Registrati alla newsletter per ricevere informazioni su ABP.IO, comprese le nuove versioni ecc.",
"EnterYourEmailOrLogin": "Inserisci il tuo indirizzo e-mail per creare la tua demo o <a href=\"{0}\"> Accedi </a> utilizzando il tuo account esistente.", "EnterYourEmailOrLogin": "Inserisci il tuo indirizzo e-mail per creare la tua demo o <a href=\"{0}\"> Accedi </a> utilizzando il tuo account esistente.",
@ -143,28 +143,28 @@
"ApplicationTemplateArchitecture": "Questo modello di applicazione supporta anche un'architettura a più livelli in cui il livello dell'interfaccia utente, il livello API e il servizio di autenticazione sono fisicamente separati.", "ApplicationTemplateArchitecture": "Questo modello di applicazione supporta anche un'architettura a più livelli in cui il livello dell'interfaccia utente, il livello API e il servizio di autenticazione sono fisicamente separati.",
"SeeTheGuideOrGoToTheLiveDemo": "Consulta la guida per sviluppatori per informazioni tecniche su questo modello o vai alla demo live.", "SeeTheGuideOrGoToTheLiveDemo": "Consulta la guida per sviluppatori per informazioni tecniche su questo modello o vai alla demo live.",
"DeveloperGuide": "Guida per sviluppatori", "DeveloperGuide": "Guida per sviluppatori",
"ModuleTemplate": "Modello di modulo", "ModuleTemplate": "Modello per modulo",
"ModuleTemplateExplanation1": "Vuoi creare un modulo e riutilizzarlo in diverse applicazioni? Questo modello di avvio prepara tutto per iniziare a creare un <strong> modulo dell'applicazione </strong> riutilizzabile o un <strong> microservizio </strong>.", "ModuleTemplateExplanation1": "Vuoi creare un modulo e riutilizzarlo in diverse applicazioni? Questo modello di avvio prepara tutto per iniziare a creare un <strong> modulo dell'applicazione </strong> riutilizzabile o un <strong> microservizio </strong>.",
"ModuleTemplateExplanation2": "<p> Puoi supportare uno o più framework UI, uno o più provider di database per un singolo modulo. Il modello di avvio è configurato per eseguire e <strong> testare il modulo </strong> in un'applicazione minima oltre all'unità e all'infrastruttura di test di integrazione. </p> <p> Consulta la guida per sviluppatori per informazioni tecniche su questo modello. </p>", "ModuleTemplateExplanation2": "<p> Puoi supportare uno o più framework UI, uno o più provider di database per un singolo modulo. Il modello di avvio è configurato per eseguire e <strong> testare il modulo </strong> in un'applicazione minima oltre all'unità e all'infrastruttura di test di integrazione.</p><p> Consulta la guida per sviluppatori per informazioni tecniche su questo modello.</p>",
"WithAllStyleOptions": "con tutte le opzioni di stile", "WithAllStyleOptions": "con tutte le opzioni di stile",
"Demo": "Demo", "Demo": "Demo",
"SeeAllModules": "Vedi tutti i moduli", "SeeAllModules": "Vedi tutti i moduli",
"ABPCLIExplanation": "ABP CLI (Command Line Interface) è uno strumento a riga di comando per eseguire alcune operazioni comuni per soluzioni basate su ABP.", "ABPCLIExplanation": "ABP CLI (Command Line Interface) è uno strumento a riga di comando per eseguire alcune operazioni comuni per soluzioni basate su ABP.",
"ABPSuiteEasilyCURD": "ABP Suite è uno strumento che ti permette di creare facilmente pagine CRUD", "ABPSuiteEasilyCURD": "ABP Suite è uno strumento che ti permette di creare facilmente pagine CRUD",
"WeAreHereToHelp": "Siamo qui per <span class=\"zero-text\"> Aiuto </span>", "WeAreHereToHelp": "Siamo qui per <span class=\"zero-text\">Aiutarti</span>",
"BrowseOrAskQuestion": "Puoi sfogliare i nostri argomenti della guida o cercare nelle domande frequenti oppure puoi farci una domanda utilizzando il <a href=\"{0}\" class=\"text-success\"> modulo di contatto </a>.", "BrowseOrAskQuestion": "Puoi sfogliare i nostri argomenti della guida o cercare nelle domande frequenti oppure puoi farci una domanda utilizzando il <a href=\"{0}\" class=\"text-success\"> modulo di contatto </a>.",
"SearchQuestionPlaceholder": "Cerca nelle domande frequenti", "SearchQuestionPlaceholder": "Cerca nelle domande frequenti",
"WhatIsTheABPCommercial": "Cos'è l'ABP Commercial?", "WhatIsTheABPCommercial": "Cos'è ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "Quali sono le differenze tra ABP Framework open source e ABP Commercial?", "WhatAreDifferencesThanAbpFramework": "Quali sono le differenze tra ABP Framework open source e ABP Commercial?",
"ABPCommercialExplanation": "ABP Commercial è un insieme di moduli, strumenti, temi e servizi premium basati sul <a target=\"_blank\" href=\"{0}\"> framework ABP </a> open source. ABP Commercial è sviluppato e supportato dallo stesso team dietro il framework ABP.", "ABPCommercialExplanation": "ABP Commercial è un insieme di moduli, strumenti, temi e servizi premium basati sul <a target=\"_blank\" href=\"{0}\"> framework ABP </a> open source. ABP Commercial è sviluppato e supportato dallo stesso team dietro il framework ABP.",
"WhatAreDifferencesThanABPFrameworkExplanation": "<p> <a target=\"_blank\" href=\"{0}\"> ABP framework </a> è un framework di sviluppo di applicazioni compatibile con micro-servizi per ASP.NET Core modulare. Fornisce un'architettura completa e una solida infrastruttura per farti concentrare sul tuo codice aziendale piuttosto che ripetere te stesso per ogni nuovo progetto. Si basa sulle migliori pratiche di sviluppo software e su strumenti popolari che già conosci. </p> <p> Il framework ABP è completamente gratuito, open source e guidato dalla comunità. Fornisce inoltre un tema gratuito e alcuni moduli predefiniti (ad es. Gestione delle identità e gestione dei tenant). </p>", "WhatAreDifferencesThanABPFrameworkExplanation": "<p><a target=\"_blank\" href=\"{0}\"> ABP framework </a> è un framework di sviluppo di applicazioni compatibile con micro-servizi per ASP.NET Core modulare. Fornisce un'architettura completa e una solida infrastruttura per farti concentrare sul tuo codice aziendale piuttosto che ripetere te stesso per ogni nuovo progetto. Si basa sulle migliori pratiche di sviluppo software e su strumenti popolari che già conosci.</p><p> Il framework ABP è completamente gratuito, open source e guidato dalla comunità. Fornisce inoltre un tema gratuito e alcuni moduli predefiniti (ad es. Gestione delle identità e gestione dei tenant).</p>",
"VisitTheFrameworkVSCommercialDocument": "Visita il seguente link, per ulteriori informazioni <a href=\"{0}\" target=\"_blank\"> {1} </a>", "VisitTheFrameworkVSCommercialDocument": "Visita il seguente link, per ulteriori informazioni <a href=\"{0}\" target=\"_blank\"> {1} </a>",
"ABPCommercialFollowingBenefits": "ABP Commercial aggiunge i seguenti vantaggi al framework ABP;", "ABPCommercialFollowingBenefits": "ABP Commercial aggiunge i seguenti vantaggi al framework ABP;",
"Professional": "Professionale", "Professional": "Professionale",
"UIThemes": "Temi dell'interfaccia utente", "UIThemes": "Temi dell'interfaccia utente",
"EnterpriseModules": "<a href=\"{0}\"> moduli applicativi </a> preconfigurati, ricchi di funzionalità (ad es. Gestione di Identity Server, gestione SaaS, gestione della lingua)", "EnterpriseModules": "Pronto per le imprese, <a href=\"{0}\"> moduli applicativi </a> preconfigurati, ricchi di funzionalità (ad es. Gestione di Identity Server, gestione SaaS, gestione della lingua)",
"ToolingToSupport": "Strumenti per supportare la produttività dello sviluppo (ad es. <a href=\"{0}\"> ABP Suite </a>)", "ToolingToSupport": "Strumenti per supportare la produttività dello sviluppo (ad es.<a href=\"{0}\"> ABP Suite </a>)",
"PremiumSupportLink": "Supporto <a href=\"{0}\" target=\"_blank\"> Premium </a> premium", "PremiumSupportLink": "<a href=\"{0}\" target=\"_blank\">Supporto </a> Premium",
"WhatDoIDownloadABPCommercial": "Cosa devo scaricare quando acquisto ABP Commercial?", "WhatDoIDownloadABPCommercial": "Cosa devo scaricare quando acquisto ABP Commercial?",
"CreateUnlimitedSolutions": "Dopo aver acquistato una licenza commerciale ABP, sarai in grado di creare soluzioni illimitate come descritto nel documento <a href=\"{0}\"> Guida introduttiva </a>.", "CreateUnlimitedSolutions": "Dopo aver acquistato una licenza commerciale ABP, sarai in grado di creare soluzioni illimitate come descritto nel documento <a href=\"{0}\"> Guida introduttiva </a>.",
"ABPCommercialSolutionExplanation": "Quando crei una nuova applicazione, ottieni una soluzione Visual Studio (un modello di avvio) in base alle tue preferenze. La soluzione scaricata ha moduli e temi commerciali già installati e configurati per te. Puoi rimuovere un modulo preinstallato o aggiungere un altro modulo, se lo desideri. Tutti i moduli e temi vengono usati come pacchetti NuGet / NPM per impostazione predefinita.", "ABPCommercialSolutionExplanation": "Quando crei una nuova applicazione, ottieni una soluzione Visual Studio (un modello di avvio) in base alle tue preferenze. La soluzione scaricata ha moduli e temi commerciali già installati e configurati per te. Puoi rimuovere un modulo preinstallato o aggiungere un altro modulo, se lo desideri. Tutti i moduli e temi vengono usati come pacchetti NuGet / NPM per impostazione predefinita.",
@ -177,7 +177,7 @@
"ChangingLicenseType": "Posso cambiare il mio tipo di licenza in futuro?", "ChangingLicenseType": "Posso cambiare il mio tipo di licenza in futuro?",
"ChangingLicenseTypeExplanation": "Puoi sempre aggiungere nuovi sviluppatori con lo stesso tipo di licenza. Vedi anche \"Quanti sviluppatori possono lavorare su ABP Commercial?\". Puoi anche passare a una licenza superiore pagando la differenza di prezzo calcolata. Quando esegui l'aggiornamento a un piano di licenza superiore, ottieni i vantaggi del nuovo piano, ma l'aggiornamento della licenza non modifica la data di scadenza della licenza.", "ChangingLicenseTypeExplanation": "Puoi sempre aggiungere nuovi sviluppatori con lo stesso tipo di licenza. Vedi anche \"Quanti sviluppatori possono lavorare su ABP Commercial?\". Puoi anche passare a una licenza superiore pagando la differenza di prezzo calcolata. Quando esegui l'aggiornamento a un piano di licenza superiore, ottieni i vantaggi del nuovo piano, ma l'aggiornamento della licenza non modifica la data di scadenza della licenza.",
"LicenseExtendUpgradeDiff": "Qual è la differenza tra estensione della licenza e aggiornamento?", "LicenseExtendUpgradeDiff": "Qual è la differenza tra estensione della licenza e aggiornamento?",
"LicenseExtendUpgradeDiffExplanation": "<strong> Estensione: </strong> estendendo/rinnovando la tua licenza, continuerai a ricevere supporto premium e a ricevere aggiornamenti importanti per moduli e temi. Inoltre, potrai continuare a creare nuovi progetti. E sarai ancora in grado di utilizzare ABP Suite che accelera il tuo sviluppo. <hr/> <strong> Upgrade: </strong> aggiornando la tua licenza, promuoverai un piano di licenza superiore che ti consentirà di ottenere ulteriori vantaggi . Consulta la <a href=\"/pricing\"> tabella di confronto delle licenze </a> per verificare le differenze tra i piani di licenza. <strong> D'altra parte, quando esegui l'upgrade, la data di scadenza della licenza non cambierà! </strong> Per estendere la data di fine della licenza, è necessario estendere la licenza.", "LicenseExtendUpgradeDiffExplanation": "<strong> Estensione: </strong> estendendo/rinnovando la tua licenza, continuerai a ricevere supporto premium e a ricevere aggiornamenti importanti per moduli e temi. Inoltre, potrai continuare a creare nuovi progetti. E sarai ancora in grado di utilizzare ABP Suite che accelera il tuo sviluppo.<hr/><strong> Upgrade: </strong> aggiornando la tua licenza, promuoverai un piano di licenza superiore che ti consentirà di ottenere ulteriori vantaggi . Consulta la <a href=\"/pricing\"> tabella di confronto delle licenze </a> per verificare le differenze tra i piani di licenza.<strong> D'altra parte, quando esegui l'upgrade, la data di scadenza della licenza non cambierà! </strong> Per estendere la data di fine della licenza, è necessario estendere la licenza.",
"LicenseRenewalCost": "Qual è il costo del rinnovo della licenza dopo 1 anno?", "LicenseRenewalCost": "Qual è il costo del rinnovo della licenza dopo 1 anno?",
"LicenseRenewalCostExplanation": "La tariffa di rinnovo (estensione) di tutte le licenze perpetue ABP Commercial è {0} del prezzo di listino della licenza. Il prezzo di rinnovo della licenza Team standard è $ {1}, la licenza Business standard è $ {2} e la licenza Enterprise standard è $ {3}. Se sei già un cliente, <a href='{4}' target='_blank'> accedi al tuo account </a> per esaminare i prezzi di rinnovo disponibili.", "LicenseRenewalCostExplanation": "La tariffa di rinnovo (estensione) di tutte le licenze perpetue ABP Commercial è {0} del prezzo di listino della licenza. Il prezzo di rinnovo della licenza Team standard è $ {1}, la licenza Business standard è $ {2} e la licenza Enterprise standard è $ {3}. Se sei già un cliente, <a href='{4}' target='_blank'> accedi al tuo account </a> per esaminare i prezzi di rinnovo disponibili.",
"HowDoIRenewMyLicense": "Come rinnovo la mia licenza?", "HowDoIRenewMyLicense": "Come rinnovo la mia licenza?",
@ -185,14 +185,14 @@
"IsSourceCodeIncluded": "La mia licenza include il codice sorgente dei moduli e dei temi commerciali?", "IsSourceCodeIncluded": "La mia licenza include il codice sorgente dei moduli e dei temi commerciali?",
"IsSourceCodeIncludedExplanation1": "Dipende dal tipo di licenza che hai acquistato:", "IsSourceCodeIncludedExplanation1": "Dipende dal tipo di licenza che hai acquistato:",
"IsSourceCodeIncludedExplanation2": "<strong> Team </strong>: la soluzione utilizza i moduli e i temi come pacchetti NuGet e NPM. Non include il loro codice sorgente. In questo modo, puoi aggiornare facilmente questi moduli e temi ogni volta che è disponibile una nuova versione. Tuttavia, non è possibile ottenere il codice sorgente dei moduli e dei temi.", "IsSourceCodeIncludedExplanation2": "<strong> Team </strong>: la soluzione utilizza i moduli e i temi come pacchetti NuGet e NPM. Non include il loro codice sorgente. In questo modo, puoi aggiornare facilmente questi moduli e temi ogni volta che è disponibile una nuova versione. Tuttavia, non è possibile ottenere il codice sorgente dei moduli e dei temi.",
"IsSourceCodeIncludedExplanation3": "<strong> Business / Enterprise </strong>: oltre alla licenza Team, puoi scaricare il codice sorgente di qualsiasi modulo o tema di cui hai bisogno. È anche possibile rimuovere i riferimenti al pacchetto NuGet / NPM per un particolare modulo e aggiungere il relativo codice sorgente direttamente alla soluzione per modificarlo completamente.", "IsSourceCodeIncludedExplanation3": "<strong> Business/Enterprise </strong>: in aggiunta alla licenza Team, puoi scaricare il codice sorgente di qualsiasi modulo o tema di cui hai bisogno. È anche possibile rimuovere i riferimenti al pacchetto NuGet/NPM per un particolare modulo e aggiungere il relativo codice sorgente direttamente alla soluzione per modificarlo completamente.",
"IsSourceCodeIncludedExplanation4": "<p> Includere il codice sorgente di un modulo nella tua soluzione ti dà la massima libertà di personalizzare quel modulo. Tuttavia, non sarà possibile aggiornare automaticamente il modulo quando viene rilasciata una nuova versione. </p> <p> Nessuna delle licenze include il codice sorgente di ABP Suite, che è uno strumento esterno che genera codice per te e assiste al tuo sviluppo. </p> <p> Vedi <a href=\"{0}\"> la pagina dei prezzi </a> per altre differenze tra i tipi di licenza. </p>", "IsSourceCodeIncludedExplanation4": "<p> Includere il codice sorgente di un modulo nella tua soluzione ti dà la massima libertà di personalizzare quel modulo. Tuttavia, non sarà possibile aggiornare automaticamente il modulo quando viene rilasciata una nuova versione.</p><p> Nessuna delle licenze include il codice sorgente di ABP Suite, che è uno strumento esterno che genera codice per te e assiste al tuo sviluppo.</p><p> Vedi <a href=\"{0}\"> la pagina dei prezzi </a> per altre differenze tra i tipi di licenza.</p>",
"ChangingDevelopers": "Posso cambiare gli sviluppatori registrati della mia organizzazione in futuro?", "ChangingDevelopers": "Posso cambiare gli sviluppatori registrati della mia organizzazione in futuro?",
"ChangingDevelopersExplanation": "Oltre ad aggiungere nuovi sviluppatori alla tua licenza, puoi anche modificare gli sviluppatori esistenti (puoi rimuovere uno sviluppatore e aggiungerne uno nuovo alla stessa postazione) senza alcun costo aggiuntivo.", "ChangingDevelopersExplanation": "Oltre ad aggiungere nuovi sviluppatori alla tua licenza, puoi anche Modifica gli sviluppatori esistenti (puoi rimuovere uno sviluppatore e aggiungerne uno nuovo alla stessa postazione) senza alcun costo aggiuntivo.",
"WhatHappensWhenLicenseEnds": "Cosa succede al termine del periodo di licenza?", "WhatHappensWhenLicenseEnds": "Cosa succede al termine del periodo di licenza?",
"WhatHappensWhenLicenseEndsExplanation1": "Il tipo di licenza commerciale ABP è <a href=\"{0}\" target=\"_blank\"> licenza perpetua </a>. Dopo la scadenza della licenza, puoi continuare a sviluppare il tuo progetto. E non sei obbligato a rinnovare la tua licenza. La tua licenza viene fornita con un anno di aggiornamenti e piano di supporto pronto all'uso. Per continuare a ricevere nuove funzionalità, miglioramenti delle prestazioni, correzioni di bug, supporto e continuare a utilizzare ABP Suite, assicurati di rinnovare il tuo piano ogni anno. Quando la tua licenza scade, non sarai in grado di ottenere più dei seguenti vantaggi;", "WhatHappensWhenLicenseEndsExplanation1": "Il tipo di licenza ABP Commercial è <a href=\"{0}\" target=\"_blank\"> licenza perpetua </a>. Dopo la scadenza della licenza, puoi continuare a sviluppare il tuo progetto. E non sei obbligato a rinnovare la tua licenza. La tua licenza viene fornita con un anno di aggiornamenti e piano di supporto pronto all'uso. Per continuare a ricevere nuove funzionalità, miglioramenti delle prestazioni, correzioni di bug, supporto e continuare a utilizzare ABP Suite, assicurati di rinnovare il tuo piano ogni anno. Quando la tua licenza scade, non sarai in grado di ottenere più dei seguenti vantaggi;",
"WhatHappensWhenLicenseEndsExplanation2": "Non è possibile creare nuove soluzioni utilizzando ABP Commercial, ma è possibile continuare a sviluppare le applicazioni esistenti per sempre.", "WhatHappensWhenLicenseEndsExplanation2": "Non è possibile creare nuove soluzioni utilizzando ABP Commercial, ma è possibile continuare a sviluppare le applicazioni esistenti per sempre.",
"WhatHappensWhenLicenseEndsExplanation3": "Sarai in grado di ottenere aggiornamenti per i moduli e i temi nella tua versione MAJOR. Per esempio; se stai usando la v3.2.0 di un modulo, puoi comunque ottenere gli aggiornamenti per la v3.x.x (v3.3.0, v3.5.2 ... ecc.) di quel modulo. Ma non puoi ottenere aggiornamenti per la prossima versione principale (come v4.x, v5.x)", "WhatHappensWhenLicenseEndsExplanation3": "Sarai in grado di ottenere aggiornamenti per i moduli e i temi nella tua versione MAJOR. Per esempio; se stai usando la v3.2.0 di un modulo, puoi comunque ottenere gli aggiornamenti per la v3.x.x (v3.3.0, v3.5.2... ecc.) di quel modulo. Ma non puoi ottenere aggiornamenti per la prossima versione principale (come v4.x, v5.x)",
"WhatHappensWhenLicenseEndsExplanation4": "Non è possibile installare nuovi moduli e temi aggiunti alla piattaforma ABP Commercial al termine della licenza.", "WhatHappensWhenLicenseEndsExplanation4": "Non è possibile installare nuovi moduli e temi aggiunti alla piattaforma ABP Commercial al termine della licenza.",
"WhatHappensWhenLicenseEndsExplanation5": "Non è possibile utilizzare ABP Suite.", "WhatHappensWhenLicenseEndsExplanation5": "Non è possibile utilizzare ABP Suite.",
"WhatHappensWhenLicenseEndsExplanation6": "Non puoi più ottenere l '<a href=\"{0}\"> assistenza premium </a>.", "WhatHappensWhenLicenseEndsExplanation6": "Non puoi più ottenere l '<a href=\"{0}\"> assistenza premium </a>.",
@ -203,7 +203,7 @@
"TrialPlan": "Hai un piano di prova?", "TrialPlan": "Hai un piano di prova?",
"TrialPlanExplanation": "Per ora, ABP Commercial non ha un piano di prova. Per le licenze Team forniamo una garanzia di rimborso di 30 giorni. Puoi richiedere un rimborso solo nei primi 30 giorni. Per le licenze Business ed Enterprise, forniamo un rimborso del 60% in 30 giorni. Questo perché le licenze Business ed Enterprise includono il codice sorgente completo di tutti i moduli e i temi.", "TrialPlanExplanation": "Per ora, ABP Commercial non ha un piano di prova. Per le licenze Team forniamo una garanzia di rimborso di 30 giorni. Puoi richiedere un rimborso solo nei primi 30 giorni. Per le licenze Business ed Enterprise, forniamo un rimborso del 60% in 30 giorni. Questo perché le licenze Business ed Enterprise includono il codice sorgente completo di tutti i moduli e i temi.",
"DoYouAcceptBankWireTransfer": "Accettate bonifici bancari?", "DoYouAcceptBankWireTransfer": "Accettate bonifici bancari?",
"DoYouAcceptBankWireTransferExplanation": "Sì, accettiamo bonifico bancario. <br /> Dopo aver inviato l'importo della licenza tramite bonifico bancario, inviaci la ricevuta e il tipo di licenza richiesto tramite e-mail. <br /> Informazioni sul nostro conto bancario internazionale:", "DoYouAcceptBankWireTransferExplanation": "Sì, accettiamo bonifico bancario.<br/> Dopo aver inviato l'importo della licenza tramite bonifico bancario, inviaci la ricevuta e il tipo di licenza richiesto tramite e-mail.<br/> Informazioni sul nostro conto bancario internazionale:",
"HowToUpgrade": "Come aggiornare le applicazioni esistenti quando è disponibile una nuova versione?", "HowToUpgrade": "Come aggiornare le applicazioni esistenti quando è disponibile una nuova versione?",
"HowToUpgradeExplanation1": "Quando crei una nuova applicazione utilizzando ABP Commercial, tutti i moduli e il tema vengono utilizzati come pacchetti NuGet e NPM. Quindi, puoi facilmente aggiornare i pacchetti quando è disponibile una nuova versione.", "HowToUpgradeExplanation1": "Quando crei una nuova applicazione utilizzando ABP Commercial, tutti i moduli e il tema vengono utilizzati come pacchetti NuGet e NPM. Quindi, puoi facilmente aggiornare i pacchetti quando è disponibile una nuova versione.",
"HowToUpgradeExplanation2": "Oltre agli aggiornamenti NuGet / NPM standard, <a href=\"{0}\"> ABP CLI </a> fornisce un comando di aggiornamento che trova e aggiorna automaticamente tutti i pacchetti relativi a ABP nella soluzione.", "HowToUpgradeExplanation2": "Oltre agli aggiornamenti NuGet / NPM standard, <a href=\"{0}\"> ABP CLI </a> fornisce un comando di aggiornamento che trova e aggiorna automaticamente tutti i pacchetti relativi a ABP nella soluzione.",
@ -230,24 +230,24 @@
"HowCanIRefundVatExplanation2": "Accedi al tuo account <a href=\"https://secure.2checkout.com/cpanel/login.php\" target=\"_blank\"> 2Checkout </a>", "HowCanIRefundVatExplanation2": "Accedi al tuo account <a href=\"https://secure.2checkout.com/cpanel/login.php\" target=\"_blank\"> 2Checkout </a>",
"HowCanIRefundVatExplanation3": "Trova l'ordine appropriato e premi \"Rimborsa IVA tardiva\" (inserisci il tuo numero di partita IVA)", "HowCanIRefundVatExplanation3": "Trova l'ordine appropriato e premi \"Rimborsa IVA tardiva\" (inserisci il tuo numero di partita IVA)",
"HowCanIGetMyInvoice": "Come posso ricevere la mia fattura?", "HowCanIGetMyInvoice": "Come posso ricevere la mia fattura?",
"HowCanIGetMyInvoiceExplanation": "Esistono 2 gateway di pagamento per l'acquisto di una licenza: PayU e 2Checkout. Se acquisti la tua licenza tramite il gateway 2Checkout, invia la fattura in PDF al tuo indirizzo e-mail, vedi <a href = \"https://knowledgecenter.2checkout.com/Documentation/03Billing-and-payments/Payment-operations/How-do -invoices-work \"> Fatturazione 2Checkout. </a> Se acquisti tramite il gateway PayU o tramite bonifico bancario, prepareremo e invieremo la tua fattura. Puoi richiedere la fattura dalla <a href=\"{0}\"> pagina di gestione dell'organizzazione. </a>", "HowCanIGetMyInvoiceExplanation": "Esistono 2 gateway di pagamento per l'acquisto di una licenza: PayU e 2Checkout. Se acquisti la tua licenza tramite il gateway 2Checkout, invia la fattura in PDF al tuo indirizzo e-mail, vedi <a href=\"https://knowledgecenter.2checkout.com/Documentation/03Billing-and-payments/Payment-operations/How-do-invoices-work\"> Fatturazione 2Checkout.</a> Se acquisti tramite il gateway PayU o tramite bonifico bancario, prepareremo e invieremo la tua fattura. Puoi richiedere la fattura dalla <a href=\"{0}\"> pagina di gestione dell'organizzazione.</a>",
"Forum": "Forum", "Forum": "Forum",
"SupportExplanation": "Le licenze commerciali di ABP forniscono un supporto forum premium da parte di un team composto dagli esperti di ABP Framework.", "SupportExplanation": "Le licenze commerciali di ABP forniscono un supporto forum premium da parte di un team composto dagli esperti di ABP Framework.",
"PrivateTicket": "Biglietto privato", "PrivateTicket": "Ticket privato",
"PrivateTicketExplanation": "Enterprise License include anche un supporto privato con e-mail e sistema di ticket.", "PrivateTicketExplanation": "Enterprise License include anche un supporto privato con e-mail e sistema di ticket.",
"AbpSuiteExplanation1": "ABP Suite ti consente di creare pagine web in pochi minuti. È uno strumento .NET Core Global che può essere installato dalla riga di comando.", "AbpSuiteExplanation1": "ABP Suite ti consente di creare pagine web in pochi minuti. È uno strumento .NET Core Global che può essere installato dalla riga di comando.",
"AbpSuiteExplanation2": "Può creare una nuova soluzione ABP, generare pagine CRUD dal database al front-end. Per una panoramica tecnica, vedere <a href=\"{0}\"> il documento </a>", "AbpSuiteExplanation2": "Può creare una nuova soluzione ABP, generare pagine CRUD dal database al front-end. Per una panoramica tecnica, vedere <a href=\"{0}\"> il documento </a>",
"FastEasy": "Veloce e facile", "FastEasy": "Veloce e facile",
"AbpSuiteExplanation3": "ABP Suite ti consente di creare facilmente pagine CRUD. Devi solo definire la tua entità e le sue proprietà, lascia che il resto sia ABP Suite per te! ABP Suite genera tutto il codice necessario per la tua pagina CRUD in pochi secondi. Supporta le interfacce utente Angular, MVC e Blazor.", "AbpSuiteExplanation3": "ABP Suite ti consente di creare facilmente pagine CRUD. Devi solo definire la tua entità e le sue proprietà, lascia che il resto sia ABP Suite per te! ABP Suite genera tutto il codice necessario per la tua pagina CRUD in pochi secondi. Supporta le interfacce utente Angular, MVC e Blazor.",
"RichOptions": "Opzioni ricche", "RichOptions": "Opzioni ricche",
"AbpSuiteExplanation4": "ABP Suite supporta più opzioni dell'interfaccia utente come <a href=\"https://docs.microsoft.com/en-us/aspnet/core/razor-pages\"> Razor Pages </a> e <a href = \"https: / /angular.io\">Angular </a>. Supporta anche più database come <a href=\"https://www.mongodb.com\"> MongoDB </a> e tutti i database supportati da <strong> EntityFramework Core < / strong> (MS SQL Server, Oracle, MySql, PostgreSQL e <a href=\"https://docs.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli\"> altro </a>).", "AbpSuiteExplanation4": "ABP Suite supporta più opzioni dell'interfaccia utente come <a href=\"https://docs.microsoft.com/en-us/aspnet/core/razor-pages\"> Razor Pages </a> e <a href=\"https://angular.io\">Angular </a>. Supporta anche più database come <a href=\"https://www.mongodb.com\"> MongoDB </a> e tutti i database supportati da <strong> EntityFramework Core < / strong> (MS SQL Server, Oracle, MySql, PostgreSQL e <a href=\"https://docs.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli\"> altro </a>).",
"AbpSuiteExplanation5": "La cosa buona è che non devi preoccuparti di quelle opzioni. ABP Suite comprende il tipo di progetto e genera il codice per il progetto e inserisce il codice generato nella posizione corretta nel progetto.", "AbpSuiteExplanation5": "La cosa buona è che non devi preoccuparti di quelle opzioni. ABP Suite comprende il tipo di progetto e genera il codice per il progetto e inserisce il codice generato nella posizione corretta nel progetto.",
"SourceCode": "Codice sorgente", "SourceCode": "Codice sorgente",
"AbpSuiteExplanation6": "ABP Suite genera il codice sorgente per te! Non genera file magici per generare la pagina web. ABP Suite genera il codice sorgente per <strong> Entity, Repository, Application Service, Code First Migration, JavaScript / TypeScript e CSHTML / HTML </strong> e anche le interfacce necessarie. ABP Suite genera anche il codice in base alle <strong> Best Practices </strong> di sviluppo software, quindi non devi preoccuparti della qualità del codice generato.", "AbpSuiteExplanation6": "ABP Suite genera il codice sorgente per te! Non genera file magici per generare la pagina web. ABP Suite genera il codice sorgente per <strong> Entity, Repository, Application Service, Code First Migration, JavaScript / TypeScript e CSHTML / HTML </strong> e anche le interfacce necessarie. ABP Suite genera anche il codice in base alle <strong> Best Practices </strong> di sviluppo software, quindi non devi preoccuparti della qualità del codice generato.",
"AbpSuiteExplanation7": "Dal momento che hai il codice sorgente dei blocchi costitutivi della pagina CRUD generata nei livelli di applicazione corretti, puoi facilmente modificare il codice sorgente e inserire la tua logica personalizzata / aziendale nel codice generato.", "AbpSuiteExplanation7": "Dal momento che hai il codice sorgente dei blocchi costitutivi della pagina CRUD generata nei livelli di applicazione corretti, puoi facilmente Modifica il codice sorgente e inserire la tua logica personalizzata/aziendale nel codice generato.",
"CrossPlatform": "Piattaforma multipla", "CrossPlatform": "Piattaforma multipla",
"AbpSuiteExplanation8": "ABP Suite è costruito con .NET Core ed è multipiattaforma. Funziona come un'applicazione web sul tuo computer locale. Puoi eseguirlo su <strong> Windows </strong>, <strong> Mac </strong> e <strong> Linux </strong>", "AbpSuiteExplanation8": "ABP Suite è costruito con .NET Core ed è multipiattaforma. E` un'applicazione web sul tuo computer locale. Puoi eseguirlo su <strong>Windows</strong>, <strong> Mac </strong> e <strong>Linux</strong>",
"OtherFeatures": "Altre caratteristiche", "OtherFeatures": "Altre Funzionalità",
"OtherFeatures1": "Aggiorna facilmente i pacchetti <strong> NuGet </strong> e <strong> NPM </strong> sulla tua soluzione.", "OtherFeatures1": "Aggiorna facilmente i pacchetti <strong> NuGet </strong> e <strong> NPM </strong> sulla tua soluzione.",
"OtherFeatures2": "Rigenera le pagine già generate da zero.", "OtherFeatures2": "Rigenera le pagine già generate da zero.",
"OtherFeatures3": "Crea nuove soluzioni", "OtherFeatures3": "Crea nuove soluzioni",
@ -255,7 +255,7 @@
"HotToRunSolution": "Come eseguire la tua soluzione?", "HotToRunSolution": "Come eseguire la tua soluzione?",
"HotToRunSolutionExplanation": "Vedere il documento introduttivo per apprendere come configurare ed eseguire la soluzione.", "HotToRunSolutionExplanation": "Vedere il documento introduttivo per apprendere come configurare ed eseguire la soluzione.",
"GettingStarted": "Iniziare", "GettingStarted": "Iniziare",
"WebAppDevTutorial": "Tutorial per sviluppatori di app Web", "WebAppDevTutorial": "Tutorial per sviluppatori di App Web",
"WebAppDevTutorialExplanation": "Vedere il documento tutorial sullo sviluppo di applicazioni Web per un esempio di sviluppo passo passo.", "WebAppDevTutorialExplanation": "Vedere il documento tutorial sullo sviluppo di applicazioni Web per un esempio di sviluppo passo passo.",
"Document": "Documento", "Document": "Documento",
"UsingABPSuiteToCURD": "Utilizzo di ABP Suite per la generazione di pagine CRUD e gli strumenti", "UsingABPSuiteToCURD": "Utilizzo di ABP Suite per la generazione di pagine CRUD e gli strumenti",
@ -264,9 +264,9 @@
"Documentation": "Documentazione", "Documentation": "Documentazione",
"SeeModulesDocument": "Vedere il documento dei moduli per un elenco di tutti i moduli commerciali (pro) e dei relativi documenti.", "SeeModulesDocument": "Vedere il documento dei moduli per un elenco di tutti i moduli commerciali (pro) e dei relativi documenti.",
"Pricing": "Prezzi", "Pricing": "Prezzi",
"PricingExplanation": "Scegli le caratteristiche e le funzionalità di cui la tua azienda ha bisogno oggi. Esegui facilmente l'upgrade man mano che la tua attività cresce.", "PricingExplanation": "Scegli le Funzionalità e le funzionalità di cui la tua azienda ha bisogno oggi. Esegui facilmente l'upgrade man mano che la tua attività cresce.",
"Team": "Squadra", "Team": "Team",
"Business": "Attività commerciale", "Business": "Business",
"Enterprise": "Enterprise", "Enterprise": "Enterprise",
"Custom": "Personalizzato", "Custom": "Personalizzato",
"IncludedDeveloperLicenses": "Licenze per sviluppatori incluse", "IncludedDeveloperLicenses": "Licenze per sviluppatori incluse",
@ -285,7 +285,7 @@
"UnlimitedServerDeployment": "Distribuzione illimitata del server", "UnlimitedServerDeployment": "Distribuzione illimitata del server",
"YearUpgrade": "1 anno di aggiornamento", "YearUpgrade": "1 anno di aggiornamento",
"YearPremiumForumSupport": "1 anno di supporto forum premium", "YearPremiumForumSupport": "1 anno di supporto forum premium",
"ForumSupportIncidentCountYear": "Conteggio degli incidenti di supporto del forum / anno", "ForumSupportIncidentCountYear": "Conteggio delle richieste di supporto del forum/anno",
"PrivateTicketEmailSupport": "Ticket privato e supporto via e-mail", "PrivateTicketEmailSupport": "Ticket privato e supporto via e-mail",
"BuyNow": "Acquista ora", "BuyNow": "Acquista ora",
"PayViaAmexCard": "Come posso pagare tramite la mia carta AMEX?", "PayViaAmexCard": "Come posso pagare tramite la mia carta AMEX?",

42
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/fi.json

@ -29,14 +29,14 @@
"ContributionGuide": "Contribution Guide", "ContributionGuide": "Contribution Guide",
"BugReport": "Virhe raportti", "BugReport": "Virhe raportti",
"SeeAllArticles": "Katso kaikki viestit", "SeeAllArticles": "Katso kaikki viestit",
"WelcomeToABPCommunity!": "Tervetuloa ABP-yhteisöön!", "WelcomeToABPCommunity!": "Tervetuloa ABP Community!",
"MyProfile": "Profiilini", "MyProfile": "Profiilini",
"MyOrganizations": "Omat organisaatiot", "MyOrganizations": "Omat organisaatiot",
"EmailNotValid": "Ole hyvä ja syötä toimiva sähköpostiosoite.", "EmailNotValid": "Ole hyvä ja syötä toimiva sähköpostiosoite.",
"FeatureRequest": "Ominaisuuspyyntö", "FeatureRequest": "Ominaisuuspyyntö",
"CreateArticleTitleInfo": "Viestiluettelossa näytettävän viestin nimi.", "CreateArticleTitleInfo": "Viestiluettelossa näytettävän viestin nimi.",
"CreateArticleSummaryInfo": "Lyhyt yhteenveto viestistä, joka näytetään postituslistalla.", "CreateArticleSummaryInfo": "Lyhyt yhteenveto viestistä, joka näytetään postituslistalla.",
"CreateArticleCoverInfo": "Lisää tehokkaan artikkelin luomiseksi kansikuva. Lataa 16: 9-kuvasuhteen kuvat parhaan näkymän saamiseksi. Tiedoston enimmäiskoko: 1 Mt.", "CreateArticleCoverInfo": "Lisää tehokkaan artikkelin luomiseksi kansikuva. Lataa 16:9 -kuvasuhteen kuvat parhaan näkymän saamiseksi. Tiedoston enimmäiskoko: 1MB.",
"ThisExtensionIsNotAllowed": "Tätä laajennusta ei sallita.", "ThisExtensionIsNotAllowed": "Tätä laajennusta ei sallita.",
"TheFileIsTooLarge": "Tiedosto on liian suuri.", "TheFileIsTooLarge": "Tiedosto on liian suuri.",
"GoToTheArticle": "Siirry artikkeliin", "GoToTheArticle": "Siirry artikkeliin",
@ -55,18 +55,18 @@
"Asked": "kysyi", "Asked": "kysyi",
"AllQuestions": "Kaikki kysymykset", "AllQuestions": "Kaikki kysymykset",
"NextVersion": "Seuraava versio", "NextVersion": "Seuraava versio",
"MilestoneErrorMessage": "Nykyisiä virstanpylväitä koskevia tietoja ei saatu Githubilta.", "MilestoneErrorMessage": "Nykyisiä virstanpylväitä koskevia tietoja ei saatu Github.",
"QuestionItemErrorMessage": "Viimeisimmät kysymystiedot Stackoverflow'sta epäonnistui.", "QuestionItemErrorMessage": "Viimeisimmät kysymystiedot Stackoverflow'sta epäonnistui.",
"Oops": "Oho!", "Oops": "Oho!",
"CreateArticleSuccessMessage": "Artikkeli on lähetetty onnistuneesti. Se julkaistaan sivuston järjestelmänvalvojan tarkistuksen jälkeen.", "CreateArticleSuccessMessage": "Artikkeli on lähetetty onnistuneesti. Se julkaistaan sivuston järjestelmänvalvojan tarkistuksen jälkeen.",
"ChooseCoverImage": "Valitse kansikuva ...", "ChooseCoverImage": "Valitse kansikuva...",
"CoverImage": "Kansikuva", "CoverImage": "Kansikuva",
"ShareYourExperiencesWithTheABPFramework": "Jaa kokemuksesi ABP-puitteista!", "ShareYourExperiencesWithTheABPFramework": "Jaa kokemuksesi ABP-puitteista!",
"Optional": "Valinnainen", "Optional": "Valinnainen",
"UpdateUserWebSiteInfo": "Esimerkki: https://johndoe.com", "UpdateUserWebSiteInfo": "Esimerkki: https://johndoe.com",
"UpdateUserTwitterInfo": "Esimerkki: johndoe", "UpdateUserTwitterInfo": "Esimerkki: johndoe",
"UpdateUserGithubInfo": "Esimerkki: johndoe", "UpdateUserGithubInfo": "Esimerkki: johndoe",
"UpdateUserLinkedinInfo": "Esimerkki: https: //www.linkedin.com / ...", "UpdateUserLinkedinInfo": "Esimerkki: https://www.linkedin.com/...",
"UpdateUserCompanyInfo": "Esimerkki: Volosoft", "UpdateUserCompanyInfo": "Esimerkki: Volosoft",
"UpdateUserJobTitleInfo": "Esimerkki: Ohjelmistokehittäjä", "UpdateUserJobTitleInfo": "Esimerkki: Ohjelmistokehittäjä",
"UserName": "Käyttäjänimi", "UserName": "Käyttäjänimi",
@ -84,7 +84,7 @@
"ProfileImageChange": "Vaihda profiilikuva", "ProfileImageChange": "Vaihda profiilikuva",
"BlogItemErrorMessage": "Viimeisimpiä blogiviestitietoja ei saatu ABP: ltä.", "BlogItemErrorMessage": "Viimeisimpiä blogiviestitietoja ei saatu ABP: ltä.",
"PlannedReleaseDate": "Suunniteltu julkaisupäivä", "PlannedReleaseDate": "Suunniteltu julkaisupäivä",
"CommunityArticleRequestErrorMessage": "Uusinta artikkelipyyntöä ei saatu Githubilta.", "CommunityArticleRequestErrorMessage": "Uusinta artikkelipyyntöä ei saatu Github.",
"ArticleRequestFromGithubIssue": "Artikkelipyyntöjä ei ole nyt.", "ArticleRequestFromGithubIssue": "Artikkelipyyntöjä ei ole nyt.",
"LatestArticles": "Uusimmat viestit", "LatestArticles": "Uusimmat viestit",
"ArticleRequests": "Artikkelipyynnöt", "ArticleRequests": "Artikkelipyynnöt",
@ -115,30 +115,30 @@
"VideoUrl": "Videon URL-osoite", "VideoUrl": "Videon URL-osoite",
"GithubArticleUrl": "Github-artikkelien URL-osoite", "GithubArticleUrl": "Github-artikkelien URL-osoite",
"ExternalArticleUrl": "Ulkoisen artikkelin URL-osoite", "ExternalArticleUrl": "Ulkoisen artikkelin URL-osoite",
"CreatePostCoverInfo": "Lisää kansikuva, jotta voit luoda tehokkaan viestin. Lataa 16: 9-kuvasuhteen kuvat parhaan näkymän saamiseksi. Tiedoston enimmäiskoko: 1 Mt.", "CreatePostCoverInfo": "Lisää kansikuva, jotta voit luoda tehokkaan viestin. Lataa 16:9 -kuvasuhteen kuvat parhaan näkymän saamiseksi. Tiedoston enimmäiskoko: 1MB.",
"ThankYouForContribution": "Kiitos osallistumisesta ABP-yhteisöön.", "ThankYouForContribution": "Kiitos osallistumisesta ABP Community.",
"GithubArticle": "Github-artikkeli", "GithubArticle": "Github-artikkeli",
"GithubArticleSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> Kirjoita artikkeli mistä tahansa julkisesta GitHub-arkistosta Markdown-muodossa. <a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\"> esimerkki </a>", "GithubArticleSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> Kirjoita artikkeli mistä tahansa julkisesta GitHub-arkistosta Markdown-muodossa.<a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\"> esimerkki </a>",
"GithubArticleSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Lähetä artikkelin URL-osoite lomaketta käyttämällä.", "GithubArticleSubmitStepTwo": "<span class=\"font-weight-bold\"> 2.</span> Lähetä artikkelin URL-osoite lomaketta käyttämällä.",
"GithubArticleSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Artikkelisi renderöidään tällä verkkosivustolla.", "GithubArticleSubmitStepThree": "<span class=\"font-weight-bold\"> 3.</span> Artikkelisi renderöidään tällä verkkosivustolla.",
"YoutubeVideo": "Youtube-video", "YoutubeVideo": "Youtube-video",
"YoutubeVideoSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Julkaise videosi YouTubessa.", "YoutubeVideoSubmitStepOne": "<span class=\"font-weight-bold\"> 1.</span> Julkaise videosi YouTubessa.",
"YoutubeVideoSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Lähetä videon URL-osoite lomaketta käyttäen.", "YoutubeVideoSubmitStepTwo": "<span class=\"font-weight-bold\"> 2.</span> Lähetä videon URL-osoite lomaketta käyttäen.",
"YoutubeVideoSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Vierailijat voivat katsella videosisältöäsi suoraan tällä verkkosivustolla.", "YoutubeVideoSubmitStepThree": "<span class=\"font-weight-bold\"> 3.</span> Vierailijat voivat katsella videosisältöäsi suoraan tällä verkkosivustolla.",
"ExternalContent": "Ulkoinen sisältö", "ExternalContent": "Ulkoinen sisältö",
"ExternalContentSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Luo sisältöä mille tahansa julkiselle alustalle (media, oma blogi tai mihin tahansa haluat).", "ExternalContentSubmitStepOne": "<span class=\"font-weight-bold\"> 1.</span> Luo sisältöä mille tahansa julkiselle alustalle (media, oma blogi tai mihin tahansa haluat).",
"ExternalContentSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Lähetä sisällön URL-osoite lomaketta käyttämällä.", "ExternalContentSubmitStepTwo": "<span class=\"font-weight-bold\"> 2.</span> Lähetä sisällön URL-osoite lomaketta käyttämällä.",
"ExternalContentSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Vierailijat ohjataan alkuperäisen verkkosivuston sisältöön.", "ExternalContentSubmitStepThree": "<span class=\"font-weight-bold\"> 3.</span> Vierailijat ohjataan alkuperäisen verkkosivuston sisältöön.",
"ChooseYourContentType": "Valitse tapa, jolla haluat lisätä sisältöä.", "ChooseYourContentType": "Valitse tapa, jolla haluat lisätä sisältöä.",
"PostContentViaGithub": "Haluan lisätä artikkelini <span class = \"font-weight-bold\"> <i class = \"fa fa-github\"> </i> GitHub </span> -merkintäsääntöjen mukaisesti.", "PostContentViaGithub": "Haluan lisätä artikkelini <span class=\"font-weight-bold\"><i class=\"fa fa-github\"></i> GitHub </span> -merkintäsääntöjen mukaisesti.",
"PostContentViaYoutube": "Haluan jakaa videoni, jotka ovat käytettävissä <span class = \"font-weight-bold\"> <i class = \"fa fa-youtube\"> </i> Youtube </span> täällä.", "PostContentViaYoutube": "Haluan jakaa videoni, jotka ovat käytettävissä <span class=\"font-weight-bold\"><i class=\"fa fa-youtube\"></i> Youtube </span> täällä.",
"PostContentViaExternalSource": "Haluan lisätä <span class = \"font-weight-bold\"> toisella alustalla </span> julkaisemani sisällön tähän.", "PostContentViaExternalSource": "Haluan lisätä <span class=\"font-weight-bold\"> toisella alustalla </span> julkaisemani sisällön tähän.",
"GitHubUserNameValidationMessage": "Github-käyttäjänimesi ei voi sisältää välilyöntiä. Varmista, että Github-käyttäjänimesi on oikea.", "GitHubUserNameValidationMessage": "Github-käyttäjänimesi ei voi sisältää välilyöntiä. Varmista, että Github-käyttäjänimesi on oikea.",
"PersonalSiteUrlValidationMessage": "Henkilökohtaisen sivuston URL-osoite ei voi sisältää välilyöntiä. Varmista, että henkilökohtaisen sivuston URL-osoite on oikea.", "PersonalSiteUrlValidationMessage": "Henkilökohtaisen sivuston URL-osoite ei voi sisältää välilyöntiä. Varmista, että henkilökohtaisen sivuston URL-osoite on oikea.",
"TwitterUserNameValidationMessage": "Twitter-käyttäjänimesi ei voi sisältää välilyöntiä. Varmista, että Twitter-käyttäjänimesi on oikea.", "TwitterUserNameValidationMessage": "Twitter-käyttäjänimesi ei voi sisältää välilyöntiä. Varmista, että Twitter-käyttäjänimesi on oikea.",
"LinkedinUrlValidationMessage": "Linkedin-URL-osoitteesi ei voi sisältää välilyöntiä. Varmista, että Linkedin-URL-osoitteesi on oikea.", "LinkedinUrlValidationMessage": "Linkedin-URL-osoitteesi ei voi sisältää välilyöntiä. Varmista, että Linkedin-URL-osoitteesi on oikea.",
"NoPostsFound": "Viestejä ei löytynyt!", "NoPostsFound": "Viestejä ei löytynyt!",
"SearchInPosts": "Hae viesteistä ...", "SearchInPosts": "Hae viesteistä...",
"MinimumSearchContent": "Sinun on annettava vähintään 3 merkkiä!" "MinimumSearchContent": "Sinun on annettava vähintään 3 merkkiä!"
} }
} }

30
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/fr.json

@ -59,14 +59,14 @@
"QuestionItemErrorMessage": "Impossible d'obtenir les derniers détails de la question de Stackoverflow.", "QuestionItemErrorMessage": "Impossible d'obtenir les derniers détails de la question de Stackoverflow.",
"Oops": "Oops!", "Oops": "Oops!",
"CreateArticleSuccessMessage": "L'article a été soumis avec succès. Il sera publié après un examen de l'administrateur du site.", "CreateArticleSuccessMessage": "L'article a été soumis avec succès. Il sera publié après un examen de l'administrateur du site.",
"ChooseCoverImage": "Choisissez une image de couverture ...", "ChooseCoverImage": "Choisissez une image de couverture...",
"CoverImage": "Image de couverture", "CoverImage": "Image de couverture",
"ShareYourExperiencesWithTheABPFramework": "Partagez vos expériences avec le Framework ABP!", "ShareYourExperiencesWithTheABPFramework": "Partagez vos expériences avec le Framework ABP!",
"Optional": "Optionnel", "Optional": "Optionnel",
"UpdateUserWebSiteInfo": "Exemple: https://johndoe.com", "UpdateUserWebSiteInfo": "Exemple: https://johndoe.com",
"UpdateUserTwitterInfo": "Exemple: johndoe", "UpdateUserTwitterInfo": "Exemple: johndoe",
"UpdateUserGithubInfo": "Exemple: johndoe", "UpdateUserGithubInfo": "Exemple: johndoe",
"UpdateUserLinkedinInfo": "Exemple: https: //www.linkedin.com / ...", "UpdateUserLinkedinInfo": "Exemple: https://www.linkedin.com/...",
"UpdateUserCompanyInfo": "Exemple: Volosoft", "UpdateUserCompanyInfo": "Exemple: Volosoft",
"UpdateUserJobTitleInfo": "Exemple: développeur de logiciels", "UpdateUserJobTitleInfo": "Exemple: développeur de logiciels",
"UserName": "Nom d'utilisateur", "UserName": "Nom d'utilisateur",
@ -118,27 +118,27 @@
"CreatePostCoverInfo": "Pour créer un article efficace, ajoutez une photo de couverture. Téléchargez des images au format 16: 9 pour une meilleure vue. Taille maximale du fichier: 1 Mo.", "CreatePostCoverInfo": "Pour créer un article efficace, ajoutez une photo de couverture. Téléchargez des images au format 16: 9 pour une meilleure vue. Taille maximale du fichier: 1 Mo.",
"ThankYouForContribution": "Merci de contribuer à la communauté ABP.", "ThankYouForContribution": "Merci de contribuer à la communauté ABP.",
"GithubArticle": "Article Github", "GithubArticle": "Article Github",
"GithubArticleSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Rédigez un article sur n'importe quel référentiel GitHub public au format Markdown. Exemple de <a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\"> </a>", "GithubArticleSubmitStepOne": "<span class=\"font-weight-bold\"> 1.</span> Rédigez un article sur n'importe quel référentiel GitHub public au format Markdown. Exemple de <a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\"></a>",
"GithubArticleSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Envoyez l'URL de votre article à l'aide du formulaire.", "GithubArticleSubmitStepTwo": "<span class=\"font-weight-bold\"> 2.</span> Envoyez l'URL de votre article à l'aide du formulaire.",
"GithubArticleSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Votre article sera rendu sur ce site Web.", "GithubArticleSubmitStepThree": "<span class=\"font-weight-bold\"> 3.</span> Votre article sera rendu sur ce site Web.",
"YoutubeVideo": "Vidéo Youtube", "YoutubeVideo": "Vidéo Youtube",
"YoutubeVideoSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Publiez votre vidéo sur YouTube.", "YoutubeVideoSubmitStepOne": "<span class=\"font-weight-bold\"> 1.</span> Publiez votre vidéo sur YouTube.",
"YoutubeVideoSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Envoyez l'URL de la vidéo à l'aide du formulaire.", "YoutubeVideoSubmitStepTwo": "<span class=\"font-weight-bold\"> 2.</span> Envoyez l'URL de la vidéo à l'aide du formulaire.",
"YoutubeVideoSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Les visiteurs pourront visionner votre contenu vidéo directement sur ce site Web.", "YoutubeVideoSubmitStepThree": "<span class=\"font-weight-bold\"> 3.</span> Les visiteurs pourront visionner votre contenu vidéo directement sur ce site Web.",
"ExternalContent": "Contenu externe", "ExternalContent": "Contenu externe",
"ExternalContentSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Créez un contenu sur n'importe quelle plate-forme publique (support, votre propre blog ou partout où vous le souhaitez).", "ExternalContentSubmitStepOne": "<span class=\"font-weight-bold\"> 1.</span> Créez un contenu sur n'importe quelle plate-forme publique (support, votre propre blog ou partout où vous le souhaitez).",
"ExternalContentSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Envoyez votre URL de contenu à l'aide du formulaire.", "ExternalContentSubmitStepTwo": "<span class=\"font-weight-bold\"> 2.</span> Envoyez votre URL de contenu à l'aide du formulaire.",
"ExternalContentSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Les visiteurs sont redirigés vers le contenu du site Web d'origine.", "ExternalContentSubmitStepThree": "<span class=\"font-weight-bold\"> 3.</span> Les visiteurs sont redirigés vers le contenu du site Web d'origine.",
"ChooseYourContentType": "Veuillez choisir la manière dont vous souhaitez ajouter votre contenu.", "ChooseYourContentType": "Veuillez choisir la manière dont vous souhaitez ajouter votre contenu.",
"PostContentViaGithub": "Je souhaite ajouter mon article avec <span class = \"font-weight-bold\"> <i class = \"fa fa-github\"> </i> GitHub </span> conformément aux règles de démarque.", "PostContentViaGithub": "Je souhaite ajouter mon article avec <span class=\"font-weight-bold\"><i class=\"fa fa-github\"></i> GitHub </span> conformément aux règles de démarque.",
"PostContentViaYoutube": "Je souhaite partager mes vidéos disponibles sur <span class = \"font-weight-bold\"> <i class = \"fa fa-youtube\"> </i> Youtube </span> ici.", "PostContentViaYoutube": "Je souhaite partager mes vidéos disponibles sur <span class=\"font-weight-bold\"><i class=\"fa fa-youtube\"></i> Youtube </span> ici.",
"PostContentViaExternalSource": "Je souhaite ajouter le contenu que j'ai publié sur <span class = \"font-weight-bold\"> une autre plate-forme </span> ici.", "PostContentViaExternalSource": "Je souhaite ajouter le contenu que j'ai publié sur <span class=\"font-weight-bold\"> une autre plate-forme </span> ici.",
"GitHubUserNameValidationMessage": "Votre nom d'utilisateur Github ne peut pas inclure d'espaces, veuillez vous assurer que votre nom d'utilisateur Github est correct.", "GitHubUserNameValidationMessage": "Votre nom d'utilisateur Github ne peut pas inclure d'espaces, veuillez vous assurer que votre nom d'utilisateur Github est correct.",
"PersonalSiteUrlValidationMessage": "L'URL de votre site personnel ne peut pas inclure d'espaces, veuillez vous assurer que l'URL de votre site personnel est correcte.", "PersonalSiteUrlValidationMessage": "L'URL de votre site personnel ne peut pas inclure d'espaces, veuillez vous assurer que l'URL de votre site personnel est correcte.",
"TwitterUserNameValidationMessage": "Votre nom d'utilisateur Twitter ne peut pas inclure d'espaces, veuillez vous assurer que votre nom d'utilisateur Twitter est correct.", "TwitterUserNameValidationMessage": "Votre nom d'utilisateur Twitter ne peut pas inclure d'espaces, veuillez vous assurer que votre nom d'utilisateur Twitter est correct.",
"LinkedinUrlValidationMessage": "Votre URL Linkedin ne peut pas inclure d'espace blanc, veuillez vous assurer que votre URL Linkedin est correcte.", "LinkedinUrlValidationMessage": "Votre URL Linkedin ne peut pas inclure d'espace blanc, veuillez vous assurer que votre URL Linkedin est correcte.",
"NoPostsFound": "Aucun article trouvé!", "NoPostsFound": "Aucun article trouvé!",
"SearchInPosts": "Rechercher dans les messages ...", "SearchInPosts": "Rechercher dans les messages...",
"MinimumSearchContent": "Vous devez saisir au moins 3 caractères!" "MinimumSearchContent": "Vous devez saisir au moins 3 caractères!"
} }
} }

28
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/hi.json

@ -59,14 +59,14 @@
"QuestionItemErrorMessage": "Stackoverflow से नवीनतम प्रश्न विवरण प्राप्त नहीं कर सका।", "QuestionItemErrorMessage": "Stackoverflow से नवीनतम प्रश्न विवरण प्राप्त नहीं कर सका।",
"Oops": "उफ़!", "Oops": "उफ़!",
"CreateArticleSuccessMessage": "अनुच्छेद सफलतापूर्वक प्रस्तुत किया गया है। इसे साइट व्यवस्थापक से समीक्षा के बाद प्रकाशित किया जाएगा।", "CreateArticleSuccessMessage": "अनुच्छेद सफलतापूर्वक प्रस्तुत किया गया है। इसे साइट व्यवस्थापक से समीक्षा के बाद प्रकाशित किया जाएगा।",
"ChooseCoverImage": "कवर छवि चुनें ...", "ChooseCoverImage": "कवर छवि चुनें...",
"CoverImage": "कवर छवि", "CoverImage": "कवर छवि",
"ShareYourExperiencesWithTheABPFramework": "ABP फ्रेमवर्क के साथ अपने अनुभव साझा करें!", "ShareYourExperiencesWithTheABPFramework": "ABP फ्रेमवर्क के साथ अपने अनुभव साझा करें!",
"Optional": "ऐच्छिक", "Optional": "ऐच्छिक",
"UpdateUserWebSiteInfo": "उदाहरण: https://johndoe.com", "UpdateUserWebSiteInfo": "उदाहरण: https://johndoe.com",
"UpdateUserTwitterInfo": "उदाहरण: जॉन्डो", "UpdateUserTwitterInfo": "उदाहरण: जॉन्डो",
"UpdateUserGithubInfo": "उदाहरण: जॉन्डो", "UpdateUserGithubInfo": "उदाहरण: जॉन्डो",
"UpdateUserLinkedinInfo": "उदाहरण: https: //www.linkedin.com / ...", "UpdateUserLinkedinInfo": "उदाहरण: https://www.linkedin.com/...",
"UpdateUserCompanyInfo": "उदाहरण: वोलोसॉफ्ट", "UpdateUserCompanyInfo": "उदाहरण: वोलोसॉफ्ट",
"UpdateUserJobTitleInfo": "उदाहरण: सॉफ्टवेयर डेवलपर", "UpdateUserJobTitleInfo": "उदाहरण: सॉफ्टवेयर डेवलपर",
"UserName": "उपयोगकर्ता नाम", "UserName": "उपयोगकर्ता नाम",
@ -119,26 +119,26 @@
"ThankYouForContribution": "ABP समुदाय में योगदान के लिए धन्यवाद।", "ThankYouForContribution": "ABP समुदाय में योगदान के लिए धन्यवाद।",
"GithubArticle": "गीथब लेख", "GithubArticle": "गीथब लेख",
"GithubArticleSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> मार्कडाउन प्रारूप के साथ किसी भी सार्वजनिक GitHub रिपॉजिटरी पर एक लेख लिखें। <a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\">उदाहरण </a>", "GithubArticleSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> मार्कडाउन प्रारूप के साथ किसी भी सार्वजनिक GitHub रिपॉजिटरी पर एक लेख लिखें। <a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\">उदाहरण </a>",
"GithubArticleSubmitStepTwo": "<span class = \"font-weight-bold\"> 2। </ span> फ़ॉर्म का उपयोग करके अपना लेख URL सबमिट करें।", "GithubArticleSubmitStepTwo": "<span class=\"font-weight-bold\"> 2। </span> फ़ॉर्म का उपयोग करके अपना लेख URL सबमिट करें।",
"GithubArticleSubmitStepThree": "<span class = \"font-weight-bold\"> 3। </ span> इस वेब साइट में आपका लेख प्रस्तुत किया जाएगा।", "GithubArticleSubmitStepThree": "<span class=\"font-weight-bold\"> 3। </span> इस वेब साइट में आपका लेख प्रस्तुत किया जाएगा।",
"YoutubeVideo": "यूट्यूब वीडियो", "YoutubeVideo": "यूट्यूब वीडियो",
"YoutubeVideoSubmitStepOne": "<span class = \"font-weight-bold\"> 1। </ span> YouTube पर अपना वीडियो प्रकाशित करें।", "YoutubeVideoSubmitStepOne": "<span class=\"font-weight-bold\"> 1। </span> YouTube पर अपना वीडियो प्रकाशित करें।",
"YoutubeVideoSubmitStepTwo": "<span class = \"font-weight-bold\"> 2। </ span> फ़ॉर्म का उपयोग करके वीडियो URL सबमिट करें।", "YoutubeVideoSubmitStepTwo": "<span class=\"font-weight-bold\"> 2। </span> फ़ॉर्म का उपयोग करके वीडियो URL सबमिट करें।",
"YoutubeVideoSubmitStepThree": "<span class = \"font-weight-bold\"> 3। </ span> आगंतुक इस वेबसाइट पर सीधे आपकी वीडियो सामग्री देख सकेंगे।", "YoutubeVideoSubmitStepThree": "<span class=\"font-weight-bold\"> 3। </span> आगंतुक इस वेबसाइट पर सीधे आपकी वीडियो सामग्री देख सकेंगे।",
"ExternalContent": "बाहरी सामग्री", "ExternalContent": "बाहरी सामग्री",
"ExternalContentSubmitStepOne": "<span class = \"font-weight-bold\"> 1। </ span> किसी भी सार्वजनिक मंच पर एक सामग्री बनाएं (मध्यम, अपना स्वयं का ब्लॉग या कहीं भी आप चाहें)।", "ExternalContentSubmitStepOne": "<span class=\"font-weight-bold\"> 1। </span> किसी भी सार्वजनिक मंच पर एक सामग्री बनाएं (मध्यम, अपना स्वयं का ब्लॉग या कहीं भी आप चाहें)।",
"ExternalContentSubmitStepTwo": "<span class = \"font-weight-bold\"> 2। </ span> फ़ॉर्म का उपयोग करके अपना सामग्री URL सबमिट करें।", "ExternalContentSubmitStepTwo": "<span class=\"font-weight-bold\"> 2। </span> फ़ॉर्म का उपयोग करके अपना सामग्री URL सबमिट करें।",
"ExternalContentSubmitStepThree": "<span class = \"font-weight-bold\"> 3। </ span> मूल वेबसाइट पर आगंतुकों को सामग्री पर पुनर्निर्देशित किया गया है।", "ExternalContentSubmitStepThree": "<span class=\"font-weight-bold\"> 3। </span> मूल वेबसाइट पर आगंतुकों को सामग्री पर पुनर्निर्देशित किया गया है।",
"ChooseYourContentType": "कृपया अपनी सामग्री जोड़ने का तरीका चुनें।", "ChooseYourContentType": "कृपया अपनी सामग्री जोड़ने का तरीका चुनें।",
"PostContentViaGithub": "मैं अपना लेख जोड़ना चाहता हूं <span class = \"font-weight-bold\"> <i class = \"fa fa-github\"> </ i> GitHub </ span> अंकन नियमों के अनुसार।", "PostContentViaGithub": "मैं अपना लेख जोड़ना चाहता हूं <span class=\"font-weight-bold\"><i class=\"fa fa-github\"></i> GitHub </span> अंकन नियमों के अनुसार।",
"PostContentViaYoutube": "मैं यहां उपलब्ध अपने वीडियो को <span class = \"font-weight-bold\"> <i class = \"fa fa-youtube\"> </ i> Youtube </ span> पर साझा करना चाहता हूं।", "PostContentViaYoutube": "मैं यहां उपलब्ध अपने वीडियो को <span class=\"font-weight-bold\"><i class=\"fa fa-youtube\"></i> Youtube </span> पर साझा करना चाहता हूं।",
"PostContentViaExternalSource": "मैं यहां <span class = \"font-weight-bold\"> एक अन्य प्लेटफ़ॉर्म </ span> पर प्रकाशित सामग्री जोड़ना चाहता हूं।", "PostContentViaExternalSource": "मैं यहां <span class=\"font-weight-bold\"> एक अन्य प्लेटफ़ॉर्म </span> पर प्रकाशित सामग्री जोड़ना चाहता हूं।",
"GitHubUserNameValidationMessage": "आपके Github उपयोगकर्ता नाम में व्हॉट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका Github उपयोगकर्ता नाम सही है।", "GitHubUserNameValidationMessage": "आपके Github उपयोगकर्ता नाम में व्हॉट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका Github उपयोगकर्ता नाम सही है।",
"PersonalSiteUrlValidationMessage": "आपके व्यक्तिगत साइट URL में व्हॉट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका व्यक्तिगत साइट URL सही है।", "PersonalSiteUrlValidationMessage": "आपके व्यक्तिगत साइट URL में व्हॉट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका व्यक्तिगत साइट URL सही है।",
"TwitterUserNameValidationMessage": "आपके ट्विटर उपयोगकर्ता नाम में व्हाट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका ट्विटर उपयोगकर्ता नाम सही है।", "TwitterUserNameValidationMessage": "आपके ट्विटर उपयोगकर्ता नाम में व्हाट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका ट्विटर उपयोगकर्ता नाम सही है।",
"LinkedinUrlValidationMessage": "आपके लिंक्डइन URL में व्हॉट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका लिंक्डइन URL सही है।", "LinkedinUrlValidationMessage": "आपके लिंक्डइन URL में व्हॉट्सएप शामिल नहीं हो सकता है, कृपया सुनिश्चित करें कि आपका लिंक्डइन URL सही है।",
"NoPostsFound": "कोई प्रकाशन नहीं मिला!", "NoPostsFound": "कोई प्रकाशन नहीं मिला!",
"SearchInPosts": "पदों में खोजें ...", "SearchInPosts": "पदों में खोजें...",
"MinimumSearchContent": "आपको कम से कम 3 वर्ण दर्ज करने होंगे!", "MinimumSearchContent": "आपको कम से कम 3 वर्ण दर्ज करने होंगे!",
"Volo.AbpIo.Domain:060001": "स्रोत URL (\"{ArticleUrl}\") जीथब URL नहीं है", "Volo.AbpIo.Domain:060001": "स्रोत URL (\"{ArticleUrl}\") जीथब URL नहीं है",
"Volo.AbpIo.Domain:060002": "लेख सामग्री Github (\"{ArticleUrl}\") संसाधन से उपलब्ध नहीं है।", "Volo.AbpIo.Domain:060002": "लेख सामग्री Github (\"{ArticleUrl}\") संसाधन से उपलब्ध नहीं है।",

70
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/it.json

@ -1,21 +1,21 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"Permission:CommunityArticle": "Articolo comunitario", "Permission:CommunityArticle": "Articolo della comunità",
"Permission:Edit": "modificare", "Permission:Edit": "modifica",
"Waiting": "In attesa", "Waiting": "In attesa",
"Approved": "Approvato", "Approved": "Approvato",
"Rejected": "Respinto", "Rejected": "Respinto",
"Wait": "Aspettare", "Wait": "Attendere",
"Approve": "Approvare", "Approve": "Approva",
"Reject": "Rifiutare", "Reject": "Rifiuta",
"ReadArticle": "Leggi l'articolo", "ReadArticle": "Leggi l'articolo",
"Status": "Stato", "Status": "Stato",
"ContentSource": "Fonte di contenuto", "ContentSource": "Fonte contenuto",
"Details": "Dettagli", "Details": "Dettagli",
"Url": "Url", "Url": "Url",
"Title": "Titolo", "Title": "Titolo",
"CreationTime": "Tempo di creazione", "CreationTime": "Orario di creazione",
"Save": "Salva", "Save": "Salva",
"SameUrlAlreadyExist": "Lo stesso URL esiste già se vuoi aggiungere questo articolo, dovresti cambiare l'URL!", "SameUrlAlreadyExist": "Lo stesso URL esiste già se vuoi aggiungere questo articolo, dovresti cambiare l'URL!",
"UrlIsNotValid": "URL non valido.", "UrlIsNotValid": "URL non valido.",
@ -26,8 +26,8 @@
"Latest": "Ultimo", "Latest": "Ultimo",
"ContributeAbpCommunity": "Contribuisci alla comunità ABP", "ContributeAbpCommunity": "Contribuisci alla comunità ABP",
"SubmitYourArticle": "Invia il tuo post", "SubmitYourArticle": "Invia il tuo post",
"ContributionGuide": "Guida al contributo", "ContributionGuide": "Guida per i contributi",
"BugReport": "Riportare un errore", "BugReport": "Segnala un errore",
"SeeAllArticles": "Vedi tutti i post", "SeeAllArticles": "Vedi tutti i post",
"WelcomeToABPCommunity!": "Benvenuto nella comunità ABP!", "WelcomeToABPCommunity!": "Benvenuto nella comunità ABP!",
"MyProfile": "Il mio profilo", "MyProfile": "Il mio profilo",
@ -36,11 +36,11 @@
"FeatureRequest": "Richiesta di funzionalità", "FeatureRequest": "Richiesta di funzionalità",
"CreateArticleTitleInfo": "Titolo del post da mostrare nell'elenco dei post.", "CreateArticleTitleInfo": "Titolo del post da mostrare nell'elenco dei post.",
"CreateArticleSummaryInfo": "Un breve riassunto del post da mostrare nell'elenco dei post.", "CreateArticleSummaryInfo": "Un breve riassunto del post da mostrare nell'elenco dei post.",
"CreateArticleCoverInfo": "Per creare un articolo efficace, aggiungi una foto di copertina. Carica immagini in formato 16: 9 per una visualizzazione migliore. Dimensione massima del file: 1 MB.", "CreateArticleCoverInfo": "Per creare un articolo efficace, aggiungi una foto di copertina. Carica immagini in formato 16: 9 per una visualizzazione migliore. Dimensione massima del file: 1MB.",
"ThisExtensionIsNotAllowed": "Questa estensione non è consentita.", "ThisExtensionIsNotAllowed": "Questa estensione non è consentita.",
"TheFileIsTooLarge": "Il file è troppo grande.", "TheFileIsTooLarge": "Il file è troppo grande.",
"GoToTheArticle": "Vai all'articolo", "GoToTheArticle": "Vai all'articolo",
"Contribute": "Contribuire", "Contribute": "Contribuisci",
"OverallProgress": "Progressi generali", "OverallProgress": "Progressi generali",
"Done": "Fatto", "Done": "Fatto",
"Open": "Aperto", "Open": "Aperto",
@ -59,28 +59,28 @@
"QuestionItemErrorMessage": "Impossibile ottenere gli ultimi dettagli della domanda da Stackoverflow.", "QuestionItemErrorMessage": "Impossibile ottenere gli ultimi dettagli della domanda da Stackoverflow.",
"Oops": "Ops!", "Oops": "Ops!",
"CreateArticleSuccessMessage": "L'articolo è stato inviato con successo. Verrà pubblicato dopo una revisione da parte dell'amministratore del sito.", "CreateArticleSuccessMessage": "L'articolo è stato inviato con successo. Verrà pubblicato dopo una revisione da parte dell'amministratore del sito.",
"ChooseCoverImage": "Scegli un'immagine di copertina ...", "ChooseCoverImage": "Scegli un'immagine di copertina...",
"CoverImage": "Immagine di copertina", "CoverImage": "Immagine di copertina",
"ShareYourExperiencesWithTheABPFramework": "Condividi le tue esperienze con ABP Framework!", "ShareYourExperiencesWithTheABPFramework": "Condividi le tue esperienze con ABP Framework!",
"Optional": "Opzionale", "Optional": "Opzionale",
"UpdateUserWebSiteInfo": "Esempio: https://johndoe.com", "UpdateUserWebSiteInfo": "Esempio: https://johndoe.com",
"UpdateUserTwitterInfo": "Esempio: johndoe", "UpdateUserTwitterInfo": "Esempio: johndoe",
"UpdateUserGithubInfo": "Esempio: johndoe", "UpdateUserGithubInfo": "Esempio: johndoe",
"UpdateUserLinkedinInfo": "Esempio: https: //www.linkedin.com / ...", "UpdateUserLinkedinInfo": "Esempio: https://www.linkedin.com/...",
"UpdateUserCompanyInfo": "Esempio: Volosoft", "UpdateUserCompanyInfo": "Esempio: Volosoft",
"UpdateUserJobTitleInfo": "Esempio: sviluppatore di software", "UpdateUserJobTitleInfo": "Esempio: sviluppatore di software",
"UserName": "Nome utente", "UserName": "Nome utente",
"Company": "Azienda", "Company": "Azienda",
"PersonalWebsite": "Sito web personale", "PersonalWebsite": "Sito web personale",
"RegistrationDate": "Data di registrazione", "RegistrationDate": "Data di registrazione",
"Social": "Sociale", "Social": "Social",
"Biography": "Biografia", "Biography": "Biografia",
"HasNoPublishedArticlesYet": "non ha ancora articoli pubblicati", "HasNoPublishedArticlesYet": "non ha ancora articoli pubblicati",
"Author": "Autore", "Author": "Autore",
"LatestGithubAnnouncements": "Ultimi annunci su GitHub", "LatestGithubAnnouncements": "Ultimi annunci su GitHub",
"SeeAllAnnouncements": "Vedi tutti gli annunci", "SeeAllAnnouncements": "Vedi tutti gli annunci",
"LatestBlogPost": "Ultimo post sul blog", "LatestBlogPost": "Ultimo post sul blog",
"Edit": "modificare", "Edit": "modifica",
"ProfileImageChange": "Cambia l'immagine del profilo", "ProfileImageChange": "Cambia l'immagine del profilo",
"BlogItemErrorMessage": "Impossibile ottenere i dettagli più recenti del post del blog da ABP.", "BlogItemErrorMessage": "Impossibile ottenere i dettagli più recenti del post del blog da ABP.",
"PlannedReleaseDate": "Data di rilascio prevista", "PlannedReleaseDate": "Data di rilascio prevista",
@ -96,14 +96,14 @@
"JoinOurArticleNewsletter": "Iscriviti alla nostra newsletter articolo", "JoinOurArticleNewsletter": "Iscriviti alla nostra newsletter articolo",
"Community": "Comunità", "Community": "Comunità",
"Marketing": "Marketing", "Marketing": "Marketing",
"CommunityPrivacyPolicyConfirmation": "Accetto i Termini e condizioni e l '<a href=\"https://commercial.abp.io/Privacy\"> Informativa sulla privacy </a>.", "CommunityPrivacyPolicyConfirmation": "Accetto i Termini e condizioni e l '<a href=\"https://commercial.abp.io/Privacy\">Informativa sulla privacy</a>.",
"ArticleRequestMessageTitle": "<a href=\"https://github.com/abpframework/abp/issues/new\"> Apri un numero </a> su GitHub per richiedere un articolo / tutorial che desideri vedere su questo sito web.", "ArticleRequestMessageTitle": "<a href=\"https://github.com/abpframework/abp/issues/new\">Apri un numero</a> su GitHub per richiedere un articolo / tutorial che desideri vedere su questo sito web.",
"ArticleRequestMessageBody": "Di seguito l'elenco degli articoli richiesti dalla community. Vuoi scrivere un articolo richiesto? Fare clic sulla richiesta e partecipare alla discussione.", "ArticleRequestMessageBody": "Di seguito l'elenco degli articoli richiesti dalla community. Vuoi scrivere un articolo richiesto? Fare clic sulla richiesta e partecipare alla discussione.",
"Language": "linguaggio", "Language": "Lingua",
"CreateArticleLanguageInfo": "La lingua per il contenuto del post.", "CreateArticleLanguageInfo": "La lingua per il contenuto del post.",
"VideoPost": "Post video", "VideoPost": "Post video",
"Article": "Articolo", "Article": "Articolo",
"Read": "Leggere", "Read": "Leggi",
"CreateGithubArticleUrlInfo": "URL originale di GitHub dell'articolo.", "CreateGithubArticleUrlInfo": "URL originale di GitHub dell'articolo.",
"CreateVideoContentUrlInfo": "URL YouTube originale del post.", "CreateVideoContentUrlInfo": "URL YouTube originale del post.",
"CreateExternalArticleUrlInfo": "URL esterno originale dell'articolo.", "CreateExternalArticleUrlInfo": "URL esterno originale dell'articolo.",
@ -115,33 +115,33 @@
"VideoUrl": "URL video", "VideoUrl": "URL video",
"GithubArticleUrl": "URL articolo Github", "GithubArticleUrl": "URL articolo Github",
"ExternalArticleUrl": "URL articolo esterno", "ExternalArticleUrl": "URL articolo esterno",
"CreatePostCoverInfo": "Per creare un post efficace, aggiungi una foto di copertina. Carica immagini in formato 16: 9 per una visualizzazione migliore. Dimensione massima del file: 1 MB.", "CreatePostCoverInfo": "Per creare un post efficace, aggiungi una foto di copertina. Carica immagini in formato 16: 9 per una visualizzazione migliore. Dimensione massima del file: 1MB.",
"ThankYouForContribution": "Grazie per aver contribuito alla comunità ABP.", "ThankYouForContribution": "Grazie per aver contribuito alla comunità ABP.",
"GithubArticle": "Articolo GitHub", "GithubArticle": "Articolo GitHub",
"GithubArticleSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Scrivi un articolo su qualsiasi repository GitHub pubblico con il formato Markdown. <a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\"> esempio </a>", "GithubArticleSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> Scrivi un articolo su qualsiasi repository GitHub pubblico con il formato Markdown.<a target=\"_blank\" href=\"https://github.com/abpframework/abp/blob/dev/docs/en/Community-Articles/2020-12-04-Event-Organizer/Post.md\">esempio</a>",
"GithubArticleSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Invia l'URL del tuo articolo utilizzando il modulo.", "GithubArticleSubmitStepTwo": "<span class=\"font-weight-bold\">2.</span> Invia l'URL del tuo articolo utilizzando il modulo.",
"GithubArticleSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> Il tuo articolo verrà visualizzato in questo sito web.", "GithubArticleSubmitStepThree": "<span class=\"font-weight-bold\">3.</span> Il tuo articolo verrà visualizzato in questo sito web.",
"YoutubeVideo": "Video Youtube", "YoutubeVideo": "Video Youtube",
"YoutubeVideoSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Pubblica il tuo video su YouTube.", "YoutubeVideoSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> Pubblica il tuo video su YouTube.",
"YoutubeVideoSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Invia l'URL del video utilizzando il modulo.", "YoutubeVideoSubmitStepTwo": "<span class=\"font-weight-bold\">2.</span> Invia l'URL del video utilizzando il modulo.",
"YoutubeVideoSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> I visitatori potranno guardare i tuoi contenuti video direttamente su questo sito web.", "YoutubeVideoSubmitStepThree": "<span class=\"font-weight-bold\">3.</span> I visitatori potranno guardare i tuoi contenuti video direttamente su questo sito web.",
"ExternalContent": "Contenuto esterno", "ExternalContent": "Contenuto esterno",
"ExternalContentSubmitStepOne": "<span class = \"font-weight-bold\"> 1. </span> Crea un contenuto su qualsiasi piattaforma pubblica (mezzo, il tuo blog o ovunque tu voglia).", "ExternalContentSubmitStepOne": "<span class=\"font-weight-bold\">1.</span> Crea un contenuto su qualsiasi piattaforma pubblica (mezzo, il tuo blog o ovunque tu voglia).",
"ExternalContentSubmitStepTwo": "<span class = \"font-weight-bold\"> 2. </span> Invia l'URL dei tuoi contenuti utilizzando il modulo.", "ExternalContentSubmitStepTwo": "<span class=\"font-weight-bold\">2.</span> Invia l'URL dei tuoi contenuti utilizzando il modulo.",
"ExternalContentSubmitStepThree": "<span class = \"font-weight-bold\"> 3. </span> I visitatori vengono reindirizzati al contenuto del sito web originale.", "ExternalContentSubmitStepThree": "<span class=\"font-weight-bold\">3.</span> I visitatori vengono reindirizzati al contenuto del sito web originale.",
"ChooseYourContentType": "Scegli il modo in cui desideri aggiungere i tuoi contenuti.", "ChooseYourContentType": "Scegli il modo in cui desideri aggiungere i tuoi contenuti.",
"PostContentViaGithub": "Voglio aggiungere il mio articolo con <span class = \"font-weight-bold\"> <i class = \"fa fa-github\"> </i> GitHub </span> in conformità con le regole di markdown.", "PostContentViaGithub": "Voglio aggiungere il mio articolo con <span class=\"font-weight-bold\"><i class=\"fa fa-github\"></i> GitHub</span> in conformità con le regole di markdown.",
"PostContentViaYoutube": "Voglio condividere i miei video disponibili su <span class = \"font-weight-bold\"> <i class = \"fa fa-youtube\"> </i> Youtube </span> qui.", "PostContentViaYoutube": "Voglio condividere i miei video disponibili su <span class=\"font-weight-bold\"><i class=\"fa fa-youtube\"></i> Youtube</span> qui.",
"PostContentViaExternalSource": "Voglio aggiungere qui il contenuto che ho pubblicato su <span class = \"font-weight-bold\"> un'altra piattaforma </span>.", "PostContentViaExternalSource": "Voglio aggiungere qui il contenuto che ho pubblicato su <span class=\"font-weight-bold\">un'altra piattaforma</span>.",
"GitHubUserNameValidationMessage": "Il tuo nome utente Github non può includere spazi bianchi, assicurati che il tuo nome utente Github sia corretto.", "GitHubUserNameValidationMessage": "Il tuo nome utente Github non può includere spazi bianchi, assicurati che il tuo nome utente Github sia corretto.",
"PersonalSiteUrlValidationMessage": "L'URL del tuo sito personale non può includere spazi bianchi, assicurati che l'URL del tuo sito personale sia corretto.", "PersonalSiteUrlValidationMessage": "L'URL del tuo sito personale non può includere spazi bianchi, assicurati che l'URL del tuo sito personale sia corretto.",
"TwitterUserNameValidationMessage": "Il tuo nome utente Twitter non può includere spazi bianchi, assicurati che il tuo nome utente Twitter sia corretto.", "TwitterUserNameValidationMessage": "Il tuo nome utente Twitter non può includere spazi bianchi, assicurati che il tuo nome utente Twitter sia corretto.",
"LinkedinUrlValidationMessage": "Il tuo URL di Linkedin non può includere spazi bianchi, assicurati che il tuo URL di Linkedin sia corretto.", "LinkedinUrlValidationMessage": "Il tuo URL di Linkedin non può includere spazi bianchi, assicurati che il tuo URL di Linkedin sia corretto.",
"NoPostsFound": "Nessun post trovato!", "NoPostsFound": "Nessun post trovato!",
"SearchInPosts": "Cerca nei post ...", "SearchInPosts": "Cerca nei post...",
"MinimumSearchContent": "Devi inserire almeno 3 caratteri!", "MinimumSearchContent": "Devi inserire almeno 3 caratteri!",
"Volo.AbpIo.Domain:060001": "L'URL di origine (\"{ArticleUrl}\") non è l'URL di GitHub", "Volo.AbpIo.Domain:060001": "Source URL(\"{ArticleUrl}\") non è un URL di GitHub",
"Volo.AbpIo.Domain:060002": "Il contenuto dell'articolo non è disponibile dalla risorsa Github (\"{ArticleUrl}\").", "Volo.AbpIo.Domain:060002": "Il contenuto dell'articolo non è disponibile dalla risorsa Github(\"{ArticleUrl}\").",
"Volo.AbpIo.Domain:060003": "Nessun contenuto dell'articolo trovato!" "Volo.AbpIo.Domain:060003": "Nessun contenuto dell'articolo trovato!"
} }
} }

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

@ -36,13 +36,13 @@
"BuiltInBundlingMinification": "Sisäänrakennettu niputtaminen ja pienentäminen", "BuiltInBundlingMinification": "Sisäänrakennettu niputtaminen ja pienentäminen",
"BuiltInBundlingMinificationExplanation": "Niputtamiseen ja pienentämiseen ei tarvitse käyttää ulkoisia työkaluja. ABP tarjoaa yksinkertaisemman, dynaamisemman, tehokkaamman, modulaarisemman ja sisäänrakennetun tavan!", "BuiltInBundlingMinificationExplanation": "Niputtamiseen ja pienentämiseen ei tarvitse käyttää ulkoisia työkaluja. ABP tarjoaa yksinkertaisemman, dynaamisemman, tehokkaamman, modulaarisemman ja sisäänrakennetun tavan!",
"VirtualFileSystem": "Virtuaalinen tiedostojärjestelmä", "VirtualFileSystem": "Virtuaalinen tiedostojärjestelmä",
"VirtualFileSystemExplanation": "Upota näkymät, komentosarjat, tyylit, kuvat ... paketteihin / kirjastoihin ja käytä niitä uudelleen eri sovelluksissa.", "VirtualFileSystemExplanation": "Upota näkymät, komentosarjat, tyylit, kuvat... paketteihin / kirjastoihin ja käytä niitä uudelleen eri sovelluksissa.",
"Theming": "Heidät", "Theming": "Heidät",
"ThemingExplanationShort": "Käytä ja muokkaa bootstrap-pohjaista vakiokäyttöliittymän teemaa tai luo oma.", "ThemingExplanationShort": "Käytä ja muokkaa bootstrap-pohjaista vakiokäyttöliittymän teemaa tai luo oma.",
"BootstrapTagHelpersDynamicForms": "Bootstrap Tag Helpers ja dynaamiset lomakkeet", "BootstrapTagHelpersDynamicForms": "Bootstrap Tag Helpers ja dynaamiset lomakkeet",
"BootstrapTagHelpersDynamicFormsExplanation": "Sen sijaan, että kirjoittaisit manuaalisesti käynnistysstrap-komponenttien toistuvia yksityiskohtia, käytä ABP: n tag-avustajia yksinkertaistaaksesi sitä ja hyödyntääksesi älykkäitä ominaisuuksia. Rakenna käyttöliittymälomakkeet nopeasti C # -mallin perusteella käyttämällä dynaamista lomaketunnisteen auttajaa.", "BootstrapTagHelpersDynamicFormsExplanation": "Sen sijaan, että kirjoittaisit manuaalisesti käynnistysstrap-komponenttien toistuvia yksityiskohtia, käytä ABP: n tag-avustajia yksinkertaistaaksesi sitä ja hyödyntääksesi älykkäitä ominaisuuksia. Rakenna käyttöliittymälomakkeet nopeasti C# -mallin perusteella käyttämällä dynaamista lomaketunnisteen auttajaa.",
"HTTPAPIsDynamicProxies": "HTTP-sovellusliittymät ja dynaamiset välityspalvelimet", "HTTPAPIsDynamicProxies": "HTTP-sovellusliittymät ja dynaamiset välityspalvelimet",
"HTTPAPIsDynamicProxiesExplanation": "Altista sovelluspalvelut automaattisesti REST-tyylisiksi HTTP-sovellusliittymiksi ja kuluta niitä dynaamisilla JavaScript- ja C # -välityspalvelimilla.", "HTTPAPIsDynamicProxiesExplanation": "Altista sovelluspalvelut automaattisesti REST-tyylisiksi HTTP-sovellusliittymiksi ja kuluta niitä dynaamisilla JavaScript- ja C# -välityspalvelimilla.",
"CompleteArchitectureInfo": "Moderni arkkitehtuuri ylläpidettävien ohjelmistoratkaisujen luomiseksi.", "CompleteArchitectureInfo": "Moderni arkkitehtuuri ylläpidettävien ohjelmistoratkaisujen luomiseksi.",
"DomainDrivenDesignBasedLayeringModelExplanation": "Auttaa sinua toteuttamaan DDD-pohjaisen kerrostetun arkkitehtuurin ja rakentamaan ylläpidettävän koodipohjan.", "DomainDrivenDesignBasedLayeringModelExplanation": "Auttaa sinua toteuttamaan DDD-pohjaisen kerrostetun arkkitehtuurin ja rakentamaan ylläpidettävän koodipohjan.",
"DomainDrivenDesignBasedLayeringModelExplanationCont": "Tarjoaa käynnistysmalleja, abstrakteja, perusluokkia, palveluja, dokumentaatiota ja oppaita, joiden avulla voit kehittää sovellustasi DDD-mallien ja -periaatteiden perusteella.", "DomainDrivenDesignBasedLayeringModelExplanationCont": "Tarjoaa käynnistysmalleja, abstrakteja, perusluokkia, palveluja, dokumentaatiota ja oppaita, joiden avulla voit kehittää sovellustasi DDD-mallien ja -periaatteiden perusteella.",
@ -70,7 +70,7 @@
"ConventionOverConfigurationExplanation": "ABP toteuttaa oletusarvoisesti yleiset sovelluskäytännöt minimaalisella tai nolla-kokoonpanolla.", "ConventionOverConfigurationExplanation": "ABP toteuttaa oletusarvoisesti yleiset sovelluskäytännöt minimaalisella tai nolla-kokoonpanolla.",
"ConventionOverConfigurationExplanationList1": "Auto rekisteröi tunnetut palvelut riippuvuusinjektioon.", "ConventionOverConfigurationExplanationList1": "Auto rekisteröi tunnetut palvelut riippuvuusinjektioon.",
"ConventionOverConfigurationExplanationList2": "Paljastaa sovelluspalvelut HTTP-sovellusliittyminä nimeämällä käytäntöjä.", "ConventionOverConfigurationExplanationList2": "Paljastaa sovelluspalvelut HTTP-sovellusliittyminä nimeämällä käytäntöjä.",
"ConventionOverConfigurationExplanationList3": "Luo dynaamiset HTTP-asiakasvälityspalvelimet C #: lle ja JavaScriptille.", "ConventionOverConfigurationExplanationList3": "Luo dynaamiset HTTP-asiakasvälityspalvelimet C# : lle ja JavaScript.",
"ConventionOverConfigurationExplanationList4": "Tarjoaa oletusvarastoja yhteisöillesi.", "ConventionOverConfigurationExplanationList4": "Tarjoaa oletusvarastoja yhteisöillesi.",
"ConventionOverConfigurationExplanationList5": "Hallitsee työyksikköä verkkopyynnön tai sovelluspalvelumenetelmän mukaan.", "ConventionOverConfigurationExplanationList5": "Hallitsee työyksikköä verkkopyynnön tai sovelluspalvelumenetelmän mukaan.",
"ConventionOverConfigurationExplanationList6": "Julkaisee luoda, päivittää ja poistaa tapahtumia yhteisöillesi.", "ConventionOverConfigurationExplanationList6": "Julkaisee luoda, päivittää ja poistaa tapahtumia yhteisöillesi.",
@ -94,7 +94,7 @@
"DynamicForms": "Dynaamiset lomakkeet", "DynamicForms": "Dynaamiset lomakkeet",
"BundlingMinification": "Niputtaminen ja minimointi", "BundlingMinification": "Niputtaminen ja minimointi",
"BackgroundJobs": "Taustatyöt", "BackgroundJobs": "Taustatyöt",
"BackgroundJobsExplanation": "Määritä yksinkertaiset luokat taustalla olevien töiden suorittamiseksi jonossa. Käytä sisäänrakennettua työnhallintaa tai integroi oma. <a href=\"{0}\"> Hangfire </a> ja <a href=\"{1}\"> RabbitMQ </a> -integraatiot ovat jo käytettävissä.", "BackgroundJobsExplanation": "Määritä yksinkertaiset luokat taustalla olevien töiden suorittamiseksi jonossa. Käytä sisäänrakennettua työnhallintaa tai integroi oma.<a href=\"{0}\"> Hangfire </a> ja <a href=\"{1}\"> RabbitMQ </a> -integraatiot ovat jo käytettävissä.",
"DDDInfrastructure": "DDD-infrastruktuuri", "DDDInfrastructure": "DDD-infrastruktuuri",
"DomainDrivenDesignInfrastructure": "Toimialueohjattu suunnittelun infrastruktuuri", "DomainDrivenDesignInfrastructure": "Toimialueohjattu suunnittelun infrastruktuuri",
"AutoRESTAPIs": "Auto REST -sovellusliittymät", "AutoRESTAPIs": "Auto REST -sovellusliittymät",
@ -121,13 +121,13 @@
"MultiTenancyExplanation3": "Tukee yhtä tietokantaa, tietokantaa vuokralaista kohti ja hybridi-lähestymistapoja.", "MultiTenancyExplanation3": "Tukee yhtä tietokantaa, tietokantaa vuokralaista kohti ja hybridi-lähestymistapoja.",
"MultiTenancyExplanation4": "Keskity yrityksesi koodiin ja annat kehyksen hoitamaan monivuokrausta puolestasi.", "MultiTenancyExplanation4": "Keskity yrityksesi koodiin ja annat kehyksen hoitamaan monivuokrausta puolestasi.",
"BootstrapTagHelpersExplanation": "Sen sijaan, että kirjoittaisit manuaalisesti uudelleenkäynnistyskomponenttien yksityiskohtia, käytä ABP: n tunnisteita yksinkertaistaaksesi sitä ja hyödyntäksesi älykkäitä ominaisuuksia. Voit ehdottomasti käyttää Bootstrapia milloin tahansa.", "BootstrapTagHelpersExplanation": "Sen sijaan, että kirjoittaisit manuaalisesti uudelleenkäynnistyskomponenttien yksityiskohtia, käytä ABP: n tunnisteita yksinkertaistaaksesi sitä ja hyödyntäksesi älykkäitä ominaisuuksia. Voit ehdottomasti käyttää Bootstrapia milloin tahansa.",
"DynamicFormsExplanation": "Dynaamiset lomake- ja syöttötunnisteiden apurit voivat luoda täydellisen lomakkeen mallina C # -luokasta.", "DynamicFormsExplanation": "Dynaamiset lomake- ja syöttötunnisteiden apurit voivat luoda täydellisen lomakkeen mallina C# -luokasta.",
"AuthenticationAuthorizationExplanation": "ASP.NET Core Identity & IdentityServer4 -palveluun integroidut monipuoliset todennus- ja todennusvaihtoehdot. Tarjoaa laajennettavan ja yksityiskohtaisen lupajärjestelmän.", "AuthenticationAuthorizationExplanation": "ASP.NET Core Identity & IdentityServer4 -palveluun integroidut monipuoliset todennus- ja todennusvaihtoehdot. Tarjoaa laajennettavan ja yksityiskohtaisen lupajärjestelmän.",
"CrossCuttingConcernsExplanation": "Älä toista itseäsi kaikkien näiden yleisten asioiden toteuttamiseksi uudelleen ja uudelleen. Keskity yrityskoodiin ja anna ABP: n automatisoida ne käytäntöjen mukaan.", "CrossCuttingConcernsExplanation": "Älä toista itseäsi kaikkien näiden yleisten asioiden toteuttamiseksi uudelleen ja uudelleen. Keskity yrityskoodiin ja anna ABP: n automatisoida ne käytäntöjen mukaan.",
"DatabaseConnectionTransactionManagement": "Tietokantayhteys ja tapahtumien hallinta", "DatabaseConnectionTransactionManagement": "Tietokantayhteys ja tapahtumien hallinta",
"CorrelationIdTracking": "Korrelaatio-Id-seuranta", "CorrelationIdTracking": "Korrelaatio-Id-seuranta",
"BundlingMinificationExplanation": "ABP tarjoaa yksinkertaisen, dynaamisen, tehokkaan, modulaarisen ja sisäänrakennetun niputus- ja pienentämisjärjestelmän.", "BundlingMinificationExplanation": "ABP tarjoaa yksinkertaisen, dynaamisen, tehokkaan, modulaarisen ja sisäänrakennetun niputus- ja pienentämisjärjestelmän.",
"VirtualFileSystemnExplanation": "Virtuaalinen tiedostojärjestelmä mahdollistaa sellaisten tiedostojen hallinnan, joita ei ole fyysisesti tiedostojärjestelmässä (levyllä). Sitä käytetään pääasiassa upottamaan (js, css, kuva, cshtml ...) tiedostot kokoonpanoiksi ja käyttämään niitä kuin fyysisiä tiedostoja ajon aikana.", "VirtualFileSystemnExplanation": "Virtuaalinen tiedostojärjestelmä mahdollistaa sellaisten tiedostojen hallinnan, joita ei ole fyysisesti tiedostojärjestelmässä (levyllä). Sitä käytetään pääasiassa upottamaan (js, css, kuva, cshtml...) tiedostot kokoonpanoiksi ja käyttämään niitä kuin fyysisiä tiedostoja ajon aikana.",
"ThemingExplanation": "Theming-järjestelmän avulla voit kehittää sovellus- ja moduuliteemasi itsenäisesti määrittelemällä joukon yhteisiä peruskirjastoja ja asetteluja uusimman Bootstrap-kehyksen perusteella.", "ThemingExplanation": "Theming-järjestelmän avulla voit kehittää sovellus- ja moduuliteemasi itsenäisesti määrittelemällä joukon yhteisiä peruskirjastoja ja asetteluja uusimman Bootstrap-kehyksen perusteella.",
"DomainDrivenDesignInfrastructureExplanation": "Täydellinen infrastruktuuri kerrostettujen sovellusten rakentamiseen, joka perustuu toimialueohjattuihin suunnittelumalleihin ja periaatteisiin;", "DomainDrivenDesignInfrastructureExplanation": "Täydellinen infrastruktuuri kerrostettujen sovellusten rakentamiseen, joka perustuu toimialueohjattuihin suunnittelumalleihin ja periaatteisiin;",
"Specification": "Erittely", "Specification": "Erittely",
@ -138,7 +138,7 @@
"DataTransferObject": "Tiedonsiirtokohde", "DataTransferObject": "Tiedonsiirtokohde",
"AggregateRootEntity": "Kokonaisjuuri, entiteetti", "AggregateRootEntity": "Kokonaisjuuri, entiteetti",
"AutoRESTAPIsExplanation": "ABP voi määrittää sovelluspalvelut automaattisesti API-ohjaimiksi sopimuksen mukaan.", "AutoRESTAPIsExplanation": "ABP voi määrittää sovelluspalvelut automaattisesti API-ohjaimiksi sopimuksen mukaan.",
"DynamicClientProxiesExplanation": "Kuluta helposti API: si JavaScript- ja C # -asiakkailta.", "DynamicClientProxiesExplanation": "Kuluta helposti API: si JavaScript- ja C# -asiakkailta.",
"DistributedEventBusWithRabbitMQIntegrationExplanation": "Julkaise ja kuluta jaettuja tapahtumia helposti käyttämällä sisäänrakennettua hajautettua tapahtumaväylää, jossa on käytettävissä RabbitMQ-integraatio.", "DistributedEventBusWithRabbitMQIntegrationExplanation": "Julkaise ja kuluta jaettuja tapahtumia helposti käyttämällä sisäänrakennettua hajautettua tapahtumaväylää, jossa on käytettävissä RabbitMQ-integraatio.",
"TestInfrastructureExplanation": "Kehys on kehitetty yksikkö- ja integraatiotestaus ajatellen. Tarjoaa sinulle perusluokkia helpottamaan. Käynnistysmalleissa on valmiiksi konfiguroitu testaus.", "TestInfrastructureExplanation": "Kehys on kehitetty yksikkö- ja integraatiotestaus ajatellen. Tarjoaa sinulle perusluokkia helpottamaan. Käynnistysmalleissa on valmiiksi konfiguroitu testaus.",
"AuditLoggingEntityHistoriesExplanation": "Sisäänrakennettu tarkastuskirjaus yrityskriittisille sovelluksille. Pyyntö-, palvelu-, menetelmätason tarkastusloki ja entiteettihistoria omaisuuden tason yksityiskohdilla.", "AuditLoggingEntityHistoriesExplanation": "Sisäänrakennettu tarkastuskirjaus yrityskriittisille sovelluksille. Pyyntö-, palvelu-, menetelmätason tarkastusloki ja entiteettihistoria omaisuuden tason yksityiskohdilla.",
@ -155,7 +155,7 @@
"Code": "Koodi", "Code": "Koodi",
"Result": "Tulos", "Result": "Tulos",
"SeeTheDocumentForMoreInformation": "Katso lisätietoja <a href=\"{1}\"> {0} asiakirjasta </a>", "SeeTheDocumentForMoreInformation": "Katso lisätietoja <a href=\"{1}\"> {0} asiakirjasta </a>",
"IndexPageHeroSection": "<span class = \"first-line shine\"> <strong> avoin lähdekoodi </strong> </span> <span class = \"second-line text-uppercase\"> verkkosovellus <br /> Framework </span> <span class = \"third-line shine2\"> <strong> asp.net-ytimelle </strong> </span>", "IndexPageHeroSection": "<span class=\"first-line shine\"><strong> avoin lähdekoodi </strong></span><span class=\"second-line text-uppercase\"> verkkosovellus <br/> Framework </span><span class=\"third-line shine2\"><strong> asp.net-ytimelle </strong></span>",
"UiFramework": "Käyttöliittymäkehys", "UiFramework": "Käyttöliittymäkehys",
"EmailAddress": "Sähköpostiosoite", "EmailAddress": "Sähköpostiosoite",
"Mobile": "Matkapuhelin", "Mobile": "Matkapuhelin",
@ -169,13 +169,13 @@
"JoinTheABPCommunityInfo": "Ole mukana elävässä yhteisössä ja tule osallistujana sivutuotteiden kehykseen!", "JoinTheABPCommunityInfo": "Ole mukana elävässä yhteisössä ja tule osallistujana sivutuotteiden kehykseen!",
"AllArticles": "Kaikki artikkelit", "AllArticles": "Kaikki artikkelit",
"SubmitYourArticle": "Lähetä artikkelisi", "SubmitYourArticle": "Lähetä artikkelisi",
"DynamicClientProxyDocument": "Katso dynaamisen asiakkaan välityspalvelimen dokumentaatiot <a href=\"{0}\"> JavaScriptille </a> ja <a href=\"{1}\"> C # </a>.", "DynamicClientProxyDocument": "Katso dynaamisen asiakkaan välityspalvelimen dokumentaatiot <a href=\"{0}\"> JavaScript </a> ja <a href=\"{1}\">C#</a>.",
"EmailSMSAbstractionsDocument": "Katso lisätietoja <a href=\"{0}\"> sähköpostitse </a> ja <a href=\"{1}\"> tekstiviestien lähettäminen </a> -asiakirjoista.", "EmailSMSAbstractionsDocument": "Katso lisätietoja <a href=\"{0}\"> sähköpostitse </a> ja <a href=\"{1}\"> tekstiviestien lähettäminen </a> -asiakirjoista.",
"CreateProjectWizard": "Tämä ohjattu toiminto luo uuden projektin käynnistysmallista, joka on määritetty oikein aloittamaan projekti.", "CreateProjectWizard": "Tämä ohjattu toiminto luo uuden projektin käynnistysmallista, joka on määritetty oikein aloittamaan projekti.",
"TieredOption": "Luo porrastetun ratkaisun, jossa Web- ja Http-API-kerrokset erotetaan fyysisesti. Jos sitä ei ole valittu, luodaan kerrostettu ratkaisu, joka on vähemmän monimutkainen ja sopii useimpiin tilanteisiin.", "TieredOption": "Luo porrastetun ratkaisun, jossa Web- ja Http-API-kerrokset erotetaan fyysisesti. Jos sitä ei ole valittu, luodaan kerrostettu ratkaisu, joka on vähemmän monimutkainen ja sopii useimpiin tilanteisiin.",
"SeparateIdentityServerOption": "Erottaa palvelinpuolen kahteen sovellukseen: Ensimmäinen on identiteettipalvelimelle ja toinen palvelinpuolen HTTP-sovellusliittymälle.", "SeparateIdentityServerOption": "Erottaa palvelinpuolen kahteen sovellukseen: Ensimmäinen on identiteettipalvelimelle ja toinen palvelinpuolen HTTP-sovellusliittymälle.",
"UseslatestPreVersion": "Käyttää uusinta julkaisua edeltävää versiota", "UseslatestPreVersion": "Käyttää uusinta julkaisua edeltävää versiota",
"ReadTheDocumentation": "<span class = \"text-primary\"> Lue </span> <span class = \"text-success\"> Dokumentaatio </span>", "ReadTheDocumentation": "<span class=\"text-primary\"> Lue </span><span class=\"text-success\"> Dokumentaatio </span>",
"Documentation": "Dokumentointi", "Documentation": "Dokumentointi",
"GettingStartedTutorial": "Aloitusopas", "GettingStartedTutorial": "Aloitusopas",
"ApplicationDevelopmentTutorial": "Sovelluskehitysopastus", "ApplicationDevelopmentTutorial": "Sovelluskehitysopastus",
@ -195,7 +195,7 @@
"MultipleUIOptionsExplanation": "Ydinkehys on suunniteltu käyttöliittymästä riippumattomaksi ja se voi toimia minkä tahansa tyyppisen käyttöliittymäjärjestelmän kanssa, kun taas useita valmiiksi rakennettuja ja integroituja vaihtoehtoja toimitetaan heti.", "MultipleUIOptionsExplanation": "Ydinkehys on suunniteltu käyttöliittymästä riippumattomaksi ja se voi toimia minkä tahansa tyyppisen käyttöliittymäjärjestelmän kanssa, kun taas useita valmiiksi rakennettuja ja integroituja vaihtoehtoja toimitetaan heti.",
"MultipleDBOptionsExplanation": "Kehys voi toimia minkä tahansa tietolähteen kanssa, kun taas seuraavat palveluntarjoajat on virallisesti kehitetty ja tuettu;", "MultipleDBOptionsExplanation": "Kehys voi toimia minkä tahansa tietolähteen kanssa, kun taas seuraavat palveluntarjoajat on virallisesti kehitetty ja tuettu;",
"SelectLanguage": "Valitse kieli", "SelectLanguage": "Valitse kieli",
"LatestArticleOnCommunity": "Viimeisin artikkeli ABP-yhteisöstä", "LatestArticleOnCommunity": "Viimeisin artikkeli ABP Community",
"Register": "Rekisteröidy", "Register": "Rekisteröidy",
"IsDownloadable": "On ladattavissa" "IsDownloadable": "On ladattavissa"
} }

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

@ -36,11 +36,11 @@
"BuiltInBundlingMinification": "Regroupement et minification intégrés", "BuiltInBundlingMinification": "Regroupement et minification intégrés",
"BuiltInBundlingMinificationExplanation": "Pas besoin d'utiliser des outils externes pour le regroupement et la minimisation. ABP offre un moyen plus simple, dynamique, puissant, modulaire et intégré!", "BuiltInBundlingMinificationExplanation": "Pas besoin d'utiliser des outils externes pour le regroupement et la minimisation. ABP offre un moyen plus simple, dynamique, puissant, modulaire et intégré!",
"VirtualFileSystem": "Système de fichiers virtuel", "VirtualFileSystem": "Système de fichiers virtuel",
"VirtualFileSystemExplanation": "Incorporez des vues, des scripts, des styles, des images ... dans des packages / bibliothèques et réutilisez-les dans différentes applications.", "VirtualFileSystemExplanation": "Incorporez des vues, des scripts, des styles, des images... dans des packages / bibliothèques et réutilisez-les dans différentes applications.",
"Theming": "Thème", "Theming": "Thème",
"ThemingExplanationShort": "Utilisez et personnalisez le thème d'interface utilisateur standard basé sur le bootstrap ou créez le vôtre.", "ThemingExplanationShort": "Utilisez et personnalisez le thème d'interface utilisateur standard basé sur le bootstrap ou créez le vôtre.",
"BootstrapTagHelpersDynamicForms": "Aide aux balises Bootstrap et formulaires dynamiques", "BootstrapTagHelpersDynamicForms": "Aide aux balises Bootstrap et formulaires dynamiques",
"BootstrapTagHelpersDynamicFormsExplanation": "Au lieu d'écrire manuellement les détails répétitifs des composants d'amorçage, utilisez les assistants de balises d'ABP pour le simplifier et tirer parti d'intellisense. Créez rapidement des formulaires d'interface utilisateur basés sur un modèle C # à l'aide de l'assistant de balise de formulaire dynamique.", "BootstrapTagHelpersDynamicFormsExplanation": "Au lieu d'écrire manuellement les détails répétitifs des composants d'amorçage, utilisez les assistants de balises d'ABP pour le simplifier et tirer parti d'intellisense. Créez rapidement des formulaires d'interface utilisateur basés sur un modèle C# à l'aide de l'assistant de balise de formulaire dynamique.",
"HTTPAPIsDynamicProxies": "API HTTP et proxys dynamiques", "HTTPAPIsDynamicProxies": "API HTTP et proxys dynamiques",
"HTTPAPIsDynamicProxiesExplanation": "Exposez automatiquement les services d'application en tant qu'API HTTP de style REST et utilisez-les avec des proxys JavaScript et C# dynamiques.", "HTTPAPIsDynamicProxiesExplanation": "Exposez automatiquement les services d'application en tant qu'API HTTP de style REST et utilisez-les avec des proxys JavaScript et C# dynamiques.",
"CompleteArchitectureInfo": "Architecture moderne pour créer des solutions logicielles maintenables.", "CompleteArchitectureInfo": "Architecture moderne pour créer des solutions logicielles maintenables.",
@ -127,7 +127,7 @@
"DatabaseConnectionTransactionManagement": "Connexion à la base de données et gestion des transactions", "DatabaseConnectionTransactionManagement": "Connexion à la base de données et gestion des transactions",
"CorrelationIdTracking": "Suivi des identifiants de corrélation", "CorrelationIdTracking": "Suivi des identifiants de corrélation",
"BundlingMinificationExplanation": "ABP offre un système de regroupement et de minification simple, dynamique, puissant, modulaire et intégré.", "BundlingMinificationExplanation": "ABP offre un système de regroupement et de minification simple, dynamique, puissant, modulaire et intégré.",
"VirtualFileSystemnExplanation": "Le système de fichiers virtuel permet de gérer des fichiers qui n'existent pas physiquement sur le système de fichiers (disque). Il est principalement utilisé pour incorporer des fichiers (js, css, image, cshtml ...) dans des assemblys et les utiliser comme des fichiers physiques lors de l'exécution.", "VirtualFileSystemnExplanation": "Le système de fichiers virtuel permet de gérer des fichiers qui n'existent pas physiquement sur le système de fichiers (disque). Il est principalement utilisé pour incorporer des fichiers (js, css, image, cshtml...) dans des assemblys et les utiliser comme des fichiers physiques lors de l'exécution.",
"ThemingExplanation": "Le système de thématisation permet de développer votre application et vos modules indépendamment du thème en définissant un ensemble de bibliothèques et de mises en page de base communes, basées sur le dernier framework Bootstrap.", "ThemingExplanation": "Le système de thématisation permet de développer votre application et vos modules indépendamment du thème en définissant un ensemble de bibliothèques et de mises en page de base communes, basées sur le dernier framework Bootstrap.",
"DomainDrivenDesignInfrastructureExplanation": "Une infrastructure complète pour créer des applications en couches basées sur les modèles et principes de conception pilotée par domaine;", "DomainDrivenDesignInfrastructureExplanation": "Une infrastructure complète pour créer des applications en couches basées sur les modèles et principes de conception pilotée par domaine;",
"Specification": "spécification", "Specification": "spécification",
@ -138,7 +138,7 @@
"DataTransferObject": "Objet de transfert de données", "DataTransferObject": "Objet de transfert de données",
"AggregateRootEntity": "Racine agrégée, entité", "AggregateRootEntity": "Racine agrégée, entité",
"AutoRESTAPIsExplanation": "ABP peut configurer automatiquement vos services d'application en tant que contrôleurs d'API par convention.", "AutoRESTAPIsExplanation": "ABP peut configurer automatiquement vos services d'application en tant que contrôleurs d'API par convention.",
"DynamicClientProxiesExplanation": "Utilisez facilement vos API à partir de clients JavaScript et C#.", "DynamicClientProxiesExplanation": "Utilisez facilement vos API à partir de clients JavaScript et C# .",
"DistributedEventBusWithRabbitMQIntegrationExplanation": "Publiez et consommez facilement des événements distribués à l'aide du bus d'événements distribués intégré avec l'intégration RabbitMQ disponible.", "DistributedEventBusWithRabbitMQIntegrationExplanation": "Publiez et consommez facilement des événements distribués à l'aide du bus d'événements distribués intégré avec l'intégration RabbitMQ disponible.",
"TestInfrastructureExplanation": "Le framework a été développé en pensant aux tests unitaires et d'intégration. Vous fournit des classes de base pour vous faciliter la tâche. Les modèles de démarrage sont pré-configurés pour les tests.", "TestInfrastructureExplanation": "Le framework a été développé en pensant aux tests unitaires et d'intégration. Vous fournit des classes de base pour vous faciliter la tâche. Les modèles de démarrage sont pré-configurés pour les tests.",
"AuditLoggingEntityHistoriesExplanation": "Journalisation d'audit intégrée pour les applications stratégiques. Requête, service, journalisation d'audit au niveau de la méthode et historiques d'entités avec des détails au niveau de la propriété.", "AuditLoggingEntityHistoriesExplanation": "Journalisation d'audit intégrée pour les applications stratégiques. Requête, service, journalisation d'audit au niveau de la méthode et historiques d'entités avec des détails au niveau de la propriété.",
@ -155,7 +155,7 @@
"Code": "Code", "Code": "Code",
"Result": "Résultat", "Result": "Résultat",
"SeeTheDocumentForMoreInformation": "Consultez le <a href=\"{1}\"> {0} document </a> pour plus d'informations", "SeeTheDocumentForMoreInformation": "Consultez le <a href=\"{1}\"> {0} document </a> pour plus d'informations",
"IndexPageHeroSection": "<span class=\"first-line shine\"><strong>open source</strong></span><span class=\"second-line text-uppercase\">Web Application<br />Framework </span><span class=\"third-line shine2\"><strong>for asp.net core</strong></span>", "IndexPageHeroSection": "<span class=\"first-line shine\"><strong>open source</strong></span><span class=\"second-line text-uppercase\">Web Application<br/>Framework </span><span class=\"third-line shine2\"><strong>for asp.net core</strong></span>",
"UiFramework": "Framework de l'interface utilisateur", "UiFramework": "Framework de l'interface utilisateur",
"EmailAddress": "Adresse e-mail", "EmailAddress": "Adresse e-mail",
"Mobile": "Mobile", "Mobile": "Mobile",
@ -169,13 +169,13 @@
"JoinTheABPCommunityInfo": "Impliquez-vous dans une communauté dynamique et devenez un contributeur au cadre ABP!", "JoinTheABPCommunityInfo": "Impliquez-vous dans une communauté dynamique et devenez un contributeur au cadre ABP!",
"AllArticles": "Tous les articles", "AllArticles": "Tous les articles",
"SubmitYourArticle": "Soumettez votre article", "SubmitYourArticle": "Soumettez votre article",
"DynamicClientProxyDocument": "Consultez les documentations sur le proxy client dynamique pour <a href=\"{0}\"> JavaScript </a> et <a href=\"{1}\"> C # </a>.", "DynamicClientProxyDocument": "Consultez les documentations sur le proxy client dynamique pour <a href=\"{0}\"> JavaScript </a> et <a href=\"{1}\">C#</a>.",
"EmailSMSAbstractionsDocument": "Consultez les documents <a href=\"{0}\"> e-mail </a> et <a href=\"{1}\"> Envoi de SMS </a> pour plus d'informations.", "EmailSMSAbstractionsDocument": "Consultez les documents <a href=\"{0}\"> e-mail </a> et <a href=\"{1}\"> Envoi de SMS </a> pour plus d'informations.",
"CreateProjectWizard": "Cet assistant crée un nouveau projet à partir du modèle de démarrage qui est correctement configuré pour démarrer rapidement votre projet.", "CreateProjectWizard": "Cet assistant crée un nouveau projet à partir du modèle de démarrage qui est correctement configuré pour démarrer rapidement votre projet.",
"TieredOption": "Crée une solution à plusieurs niveaux dans laquelle les couches API Web et Http sont physiquement séparées. Si elle n'est pas cochée, crée une solution en couches qui est moins complexe et adaptée à la plupart des scénarios.", "TieredOption": "Crée une solution à plusieurs niveaux dans laquelle les couches API Web et Http sont physiquement séparées. Si elle n'est pas cochée, crée une solution en couches qui est moins complexe et adaptée à la plupart des scénarios.",
"SeparateIdentityServerOption": "Sépare le côté serveur en deux applications: la première est pour le serveur d'identité et la seconde pour votre API HTTP côté serveur.", "SeparateIdentityServerOption": "Sépare le côté serveur en deux applications: la première est pour le serveur d'identité et la seconde pour votre API HTTP côté serveur.",
"UseslatestPreVersion": "Utilise la dernière version préliminaire", "UseslatestPreVersion": "Utilise la dernière version préliminaire",
"ReadTheDocumentation": "<span class = \"text-primary\"> Lire </span> <span class = \"text-success\"> La documentation </span>", "ReadTheDocumentation": "<span class=\"text-primary\"> Lire </span><span class=\"text-success\"> La documentation </span>",
"Documentation": "Documentation", "Documentation": "Documentation",
"GettingStartedTutorial": "Tutoriel de mise en route", "GettingStartedTutorial": "Tutoriel de mise en route",
"ApplicationDevelopmentTutorial": "Tutoriel de développement d'applications", "ApplicationDevelopmentTutorial": "Tutoriel de développement d'applications",

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

@ -40,9 +40,9 @@
"Theming": "थीम", "Theming": "थीम",
"ThemingExplanationShort": "बूटस्ट्रैप-आधारित मानक UI थीम का उपयोग करें और अनुकूलित करें या अपना स्वयं का बनाएं।", "ThemingExplanationShort": "बूटस्ट्रैप-आधारित मानक UI थीम का उपयोग करें और अनुकूलित करें या अपना स्वयं का बनाएं।",
"BootstrapTagHelpersDynamicForms": "बूटस्ट्रैप टैग हेल्पर्स और डायनामिक फॉर्म", "BootstrapTagHelpersDynamicForms": "बूटस्ट्रैप टैग हेल्पर्स और डायनामिक फॉर्म",
"BootstrapTagHelpersDynamicFormsExplanation": "बूटस्ट्रैप घटकों के दोहराए गए विवरणों को मैन्युअल रूप से लिखने के बजाय, इसे सरल बनाने और अंतरंगता का लाभ उठाने के लिए एबीपी के टैग सहायकों का उपयोग करें। डायनामिक फॉर्म टैग हेल्पर का उपयोग करके C # मॉडल के आधार पर जल्दी से UI फॉर्म का निर्माण करें।", "BootstrapTagHelpersDynamicFormsExplanation": "बूटस्ट्रैप घटकों के दोहराए गए विवरणों को मैन्युअल रूप से लिखने के बजाय, इसे सरल बनाने और अंतरंगता का लाभ उठाने के लिए एबीपी के टैग सहायकों का उपयोग करें। डायनामिक फॉर्म टैग हेल्पर का उपयोग करके C# मॉडल के आधार पर जल्दी से UI फॉर्म का निर्माण करें।",
"HTTPAPIsDynamicProxies": "HTTP एपीआई और डायनेमिक प्रॉक्सी", "HTTPAPIsDynamicProxies": "HTTP एपीआई और डायनेमिक प्रॉक्सी",
"HTTPAPIsDynamicProxiesExplanation": "REST शैली HTTP API के रूप में एप्लिकेशन सेवाओं को स्वचालित रूप से उजागर करें, और उन्हें गतिशील जावास्क्रिप्ट और C # प्रॉक्सी के साथ उपभोग करें।", "HTTPAPIsDynamicProxiesExplanation": "REST शैली HTTP API के रूप में एप्लिकेशन सेवाओं को स्वचालित रूप से उजागर करें, और उन्हें गतिशील जावास्क्रिप्ट और C# प्रॉक्सी के साथ उपभोग करें।",
"CompleteArchitectureInfo": "बनाए रखने योग्य सॉफ़्टवेयर समाधान बनाने के लिए आधुनिक वास्तुकला।", "CompleteArchitectureInfo": "बनाए रखने योग्य सॉफ़्टवेयर समाधान बनाने के लिए आधुनिक वास्तुकला।",
"DomainDrivenDesignBasedLayeringModelExplanation": "डीडीडी आधारित स्तरित वास्तुकला को लागू करने और बनाए रखने योग्य कोड आधार बनाने में आपकी सहायता करता है।", "DomainDrivenDesignBasedLayeringModelExplanation": "डीडीडी आधारित स्तरित वास्तुकला को लागू करने और बनाए रखने योग्य कोड आधार बनाने में आपकी सहायता करता है।",
"DomainDrivenDesignBasedLayeringModelExplanationCont": "DDD पैटर्न और सिद्धांतों के आधार पर आपके एप्लिकेशन को विकसित करने में मदद करने के लिए स्टार्टअप टेम्प्लेट, सार, आधार कक्षाएं, सेवाएं, प्रलेखन और मार्गदर्शिका प्रदान करता है।", "DomainDrivenDesignBasedLayeringModelExplanationCont": "DDD पैटर्न और सिद्धांतों के आधार पर आपके एप्लिकेशन को विकसित करने में मदद करने के लिए स्टार्टअप टेम्प्लेट, सार, आधार कक्षाएं, सेवाएं, प्रलेखन और मार्गदर्शिका प्रदान करता है।",
@ -70,7 +70,7 @@
"ConventionOverConfigurationExplanation": "ABP न्यूनतम या शून्य कॉन्फ़िगरेशन के साथ डिफ़ॉल्ट रूप से सामान्य अनुप्रयोग सम्मेलनों को लागू करता है।", "ConventionOverConfigurationExplanation": "ABP न्यूनतम या शून्य कॉन्फ़िगरेशन के साथ डिफ़ॉल्ट रूप से सामान्य अनुप्रयोग सम्मेलनों को लागू करता है।",
"ConventionOverConfigurationExplanationList1": "ऑटो निर्भरता इंजेक्शन के लिए सेवाओं को पंजीकृत करता है।", "ConventionOverConfigurationExplanationList1": "ऑटो निर्भरता इंजेक्शन के लिए सेवाओं को पंजीकृत करता है।",
"ConventionOverConfigurationExplanationList2": "नामकरण सम्मेलनों द्वारा HTTP APIs के रूप में अनुप्रयोग सेवाओं का प्रस्ताव है।", "ConventionOverConfigurationExplanationList2": "नामकरण सम्मेलनों द्वारा HTTP APIs के रूप में अनुप्रयोग सेवाओं का प्रस्ताव है।",
"ConventionOverConfigurationExplanationList3": "C # और JavaScript के लिए गतिशील HTTP क्लाइंट प्रॉक्सी बनाता है।", "ConventionOverConfigurationExplanationList3": " C# और JavaScript के लिए गतिशील HTTP क्लाइंट प्रॉक्सी बनाता है।",
"ConventionOverConfigurationExplanationList4": "आपकी संस्थाओं के लिए डिफ़ॉल्ट रिपॉजिटरी प्रदान करता है।", "ConventionOverConfigurationExplanationList4": "आपकी संस्थाओं के लिए डिफ़ॉल्ट रिपॉजिटरी प्रदान करता है।",
"ConventionOverConfigurationExplanationList5": "वेब अनुरोध या एप्लिकेशन सेवा पद्धति के अनुसार कार्य की इकाई का प्रबंधन।", "ConventionOverConfigurationExplanationList5": "वेब अनुरोध या एप्लिकेशन सेवा पद्धति के अनुसार कार्य की इकाई का प्रबंधन।",
"ConventionOverConfigurationExplanationList6": "आपकी संस्थाओं के लिए ईवेंट बनाएं, अपडेट करें और हटाएं।", "ConventionOverConfigurationExplanationList6": "आपकी संस्थाओं के लिए ईवेंट बनाएं, अपडेट करें और हटाएं।",
@ -121,13 +121,13 @@
"MultiTenancyExplanation3": "एकल डेटाबेस, डेटाबेस प्रति किरायेदार और हाइब्रिड दृष्टिकोण का समर्थन करता है।", "MultiTenancyExplanation3": "एकल डेटाबेस, डेटाबेस प्रति किरायेदार और हाइब्रिड दृष्टिकोण का समर्थन करता है।",
"MultiTenancyExplanation4": "आप अपने व्यवसाय कोड पर ध्यान केंद्रित करते हैं और आपकी ओर से मल्टी-टेनेंसी को संभालने की रूपरेखा तैयार करते हैं।", "MultiTenancyExplanation4": "आप अपने व्यवसाय कोड पर ध्यान केंद्रित करते हैं और आपकी ओर से मल्टी-टेनेंसी को संभालने की रूपरेखा तैयार करते हैं।",
"BootstrapTagHelpersExplanation": "बूटस्ट्रैप घटकों के दोहराए गए विवरणों को मैन्युअल रूप से लिखने के बजाय, इसे सरल बनाने और अंतरंगता का लाभ उठाने के लिए एबीपी के टैग सहायकों का उपयोग करें। जब भी आपको जरूरत हो आप बूटस्ट्रैप का इस्तेमाल जरूर कर सकते हैं।", "BootstrapTagHelpersExplanation": "बूटस्ट्रैप घटकों के दोहराए गए विवरणों को मैन्युअल रूप से लिखने के बजाय, इसे सरल बनाने और अंतरंगता का लाभ उठाने के लिए एबीपी के टैग सहायकों का उपयोग करें। जब भी आपको जरूरत हो आप बूटस्ट्रैप का इस्तेमाल जरूर कर सकते हैं।",
"DynamicFormsExplanation": "डायनामिक फॉर्म और इनपुट टैग हेल्पर्स मॉडल के रूप में C # क्लास से पूरा फॉर्म बना सकते हैं।", "DynamicFormsExplanation": "डायनामिक फॉर्म और इनपुट टैग हेल्पर्स मॉडल के रूप में C# क्लास से पूरा फॉर्म बना सकते हैं।",
"AuthenticationAuthorizationExplanation": "रिच प्रमाणीकरण और प्राधिकरण विकल्प ASP.NET कोर आइडेंटिटी और आइडेंटिटी सेवर 4 को एकीकृत करता है। एक एक्स्टेंसिबल और विस्तृत अनुमति प्रणाली प्रदान करता है।", "AuthenticationAuthorizationExplanation": "रिच प्रमाणीकरण और प्राधिकरण विकल्प ASP.NET कोर आइडेंटिटी और आइडेंटिटी सेवर 4 को एकीकृत करता है। एक एक्स्टेंसिबल और विस्तृत अनुमति प्रणाली प्रदान करता है।",
"CrossCuttingConcernsExplanation": "इन सभी सामान्य चीज़ों को बार-बार लागू करने के लिए अपने आप को दोहराएं नहीं। अपने व्यवसाय कोड पर ध्यान दें और एबीपी को उन्हें सम्मेलनों द्वारा स्वचालित करें।", "CrossCuttingConcernsExplanation": "इन सभी सामान्य चीज़ों को बार-बार लागू करने के लिए अपने आप को दोहराएं नहीं। अपने व्यवसाय कोड पर ध्यान दें और एबीपी को उन्हें सम्मेलनों द्वारा स्वचालित करें।",
"DatabaseConnectionTransactionManagement": "डेटाबेस कनेक्शन और लेनदेन प्रबंधन", "DatabaseConnectionTransactionManagement": "डेटाबेस कनेक्शन और लेनदेन प्रबंधन",
"CorrelationIdTracking": "सहसंबंध-आईडी ट्रैकिंग", "CorrelationIdTracking": "सहसंबंध-आईडी ट्रैकिंग",
"BundlingMinificationExplanation": "ABP एक सरल, गतिशील, शक्तिशाली, मॉड्यूलर और बिल्ट-इन बंडलिंग और मिनिफिकेशन सिस्टम प्रदान करता है।", "BundlingMinificationExplanation": "ABP एक सरल, गतिशील, शक्तिशाली, मॉड्यूलर और बिल्ट-इन बंडलिंग और मिनिफिकेशन सिस्टम प्रदान करता है।",
"VirtualFileSystemnExplanation": "वर्चुअल फ़ाइल सिस्टम उन फ़ाइलों को प्रबंधित करना संभव बनाता है जो फ़ाइल सिस्टम (डिस्क) पर भौतिक रूप से मौजूद नहीं हैं। यह मुख्य रूप से विधानसभाओं में (js, css, image, cshtml ...) फ़ाइलों को एम्बेड करने और रनटाइम के दौरान भौतिक फ़ाइलों की तरह उपयोग करने के लिए उपयोग किया जाता है।", "VirtualFileSystemnExplanation": "वर्चुअल फ़ाइल सिस्टम उन फ़ाइलों को प्रबंधित करना संभव बनाता है जो फ़ाइल सिस्टम (डिस्क) पर भौतिक रूप से मौजूद नहीं हैं। यह मुख्य रूप से विधानसभाओं में (js, css, image, cshtml...) फ़ाइलों को एम्बेड करने और रनटाइम के दौरान भौतिक फ़ाइलों की तरह उपयोग करने के लिए उपयोग किया जाता है।",
"ThemingExplanation": "थिमिंग सिस्टम नवीनतम बूटस्ट्रैप ढांचे के आधार पर, सामान्य आधार पुस्तकालयों और लेआउट के एक सेट को परिभाषित करके आपके एप्लिकेशन और मॉड्यूल विषय को विकसित करने की अनुमति देता है।", "ThemingExplanation": "थिमिंग सिस्टम नवीनतम बूटस्ट्रैप ढांचे के आधार पर, सामान्य आधार पुस्तकालयों और लेआउट के एक सेट को परिभाषित करके आपके एप्लिकेशन और मॉड्यूल विषय को विकसित करने की अनुमति देता है।",
"DomainDrivenDesignInfrastructureExplanation": "डोमेन संचालित डिज़ाइन पैटर्न और सिद्धांतों के आधार पर स्तरित अनुप्रयोगों के निर्माण के लिए एक पूर्ण बुनियादी ढांचा;", "DomainDrivenDesignInfrastructureExplanation": "डोमेन संचालित डिज़ाइन पैटर्न और सिद्धांतों के आधार पर स्तरित अनुप्रयोगों के निर्माण के लिए एक पूर्ण बुनियादी ढांचा;",
"Specification": "विनिर्देश", "Specification": "विनिर्देश",
@ -155,7 +155,7 @@
"Code": "कोड", "Code": "कोड",
"Result": "परिणाम", "Result": "परिणाम",
"SeeTheDocumentForMoreInformation": "अधिक जानकारी के लिए <a href=\"{1}\">{0} दस्तावेज़</a> देखें", "SeeTheDocumentForMoreInformation": "अधिक जानकारी के लिए <a href=\"{1}\">{0} दस्तावेज़</a> देखें",
"IndexPageHeroSection": "<span class=\"first-line shine\"><strong>open source</strong></span><span class=\"second-line text-uppercase\">Web Application<br />Framework </span><span class=\"third-line shine2\"><strong>for asp.net core</strong></span>", "IndexPageHeroSection": "<span class=\"first-line shine\"><strong>open source</strong></span><span class=\"second-line text-uppercase\">Web Application<br/>Framework </span><span class=\"third-line shine2\"><strong>for asp.net core</strong></span>",
"UiFramework": "यूआई फ्रेमवर्क", "UiFramework": "यूआई फ्रेमवर्क",
"EmailAddress": "ईमेल पता", "EmailAddress": "ईमेल पता",
"Mobile": "मोबाइल", "Mobile": "मोबाइल",

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

@ -2,7 +2,7 @@
"culture": "it", "culture": "it",
"texts": { "texts": {
"GetStarted": "Inizia - Modelli di avvio", "GetStarted": "Inizia - Modelli di avvio",
"Create": "Creare", "Create": "Crea",
"NewProject": "Nuovo progetto", "NewProject": "Nuovo progetto",
"DirectDownload": "Download diretto", "DirectDownload": "Download diretto",
"ProjectName": "Nome del progetto", "ProjectName": "Nome del progetto",
@ -18,35 +18,35 @@
"SeeDetails": "Vedi i dettagli", "SeeDetails": "Vedi i dettagli",
"AbpShortDescription": "ABP Framework è un'infrastruttura completa per creare applicazioni Web moderne seguendo le migliori pratiche e convenzioni di sviluppo software.", "AbpShortDescription": "ABP Framework è un'infrastruttura completa per creare applicazioni Web moderne seguendo le migliori pratiche e convenzioni di sviluppo software.",
"SourceCodeUpper": "CODICE SORGENTE", "SourceCodeUpper": "CODICE SORGENTE",
"LatestReleaseLogs": "Ultimi registri di rilascio", "LatestReleaseLogs": "Ultimi note di rilascio",
"Infrastructure": "Infrastruttura", "Infrastructure": "Infrastruttura",
"Architecture": "Architettura", "Architecture": "Architettura",
"Modular": "Modulare", "Modular": "Modulare",
"DontRepeatYourself": "Non ripetere te stesso", "DontRepeatYourself": "Non ripetere te stesso",
"DeveloperFocused": "Concentrato sullo sviluppatore", "DeveloperFocused": "Incentrato sullo sviluppatore",
"FullStackApplicationInfrastructure": "Infrastruttura applicativa full stack.", "FullStackApplicationInfrastructure": "Infrastruttura applicativa full stack.",
"DomainDrivenDesign": "Progettazione basata sul dominio", "DomainDrivenDesign": "Domain Driven Design",
"DomainDrivenDesignExplanation": "Progettato e sviluppato sulla base di modelli e principi DDD. Fornisce un modello a più livelli per la tua applicazione.", "DomainDrivenDesignExplanation": "Progettato e sviluppato sulla base di modelli e principi DDD. Fornisce un modello a più livelli per la tua applicazione.",
"Authorization": "Autorizzazione", "Authorization": "Autorizzazione",
"AuthorizationExplanation": "Autorizzazione avanzata con utente, ruolo e sistema di autorizzazioni granulare. Basato sulla libreria Microsoft Identity.", "AuthorizationExplanation": "Autorizzazione avanzata con utente, ruolo e sistema di autorizzazioni granulare. Basato sulla libreria Microsoft Identity.",
"MultiTenancy": "Multi-Tenancy", "MultiTenancy": "Multi-Tenancy",
"MultiTenancyExplanationShort": "Applicazioni SaaS rese facili! Multi-tenancy integrato dal database all'interfaccia utente.", "MultiTenancyExplanationShort": "Applicazioni SaaS rese facili! Multi-tenancy integrato dal database all'interfaccia utente.",
"CrossCuttingConcerns": "Preoccupazioni trasversali", "CrossCuttingConcerns": "Questioni trasversali",
"CrossCuttingConcernsExplanationShort": "Infrastruttura completa per autorizzazione, convalida, gestione delle eccezioni, memorizzazione nella cache, registrazione di audit, gestione delle transazioni e altro ancora.", "CrossCuttingConcernsExplanationShort": "Infrastruttura completa per autorizzazione, convalida, gestione delle eccezioni, memorizzazione nella cache, registrazione di audit, gestione delle transazioni e altro ancora.",
"BuiltInBundlingMinification": "Raggruppamento e minimizzazione incorporati", "BuiltInBundlingMinification": "Raggruppamento e minimizzazione incorporati",
"BuiltInBundlingMinificationExplanation": "Non è necessario utilizzare strumenti esterni per raggruppare e minimizzare. ABP offre un modo più semplice, dinamico, potente, modulare e integrato!", "BuiltInBundlingMinificationExplanation": "Non è necessario utilizzare strumenti esterni per raggruppare e minimizzare. ABP offre un modo più semplice, dinamico, potente, modulare e integrato!",
"VirtualFileSystem": "File system virtuale", "VirtualFileSystem": "File system virtuale",
"VirtualFileSystemExplanation": "Incorpora viste, script, stili, immagini ... in pacchetti / librerie e riutilizzali in diverse applicazioni.", "VirtualFileSystemExplanation": "Incorpora viste, script, stili, immagini... in pacchetti / librerie e riutilizzali in diverse applicazioni.",
"Theming": "Theming", "Theming": "Personalizzazione tema",
"ThemingExplanationShort": "Usa e personalizza il tema dell'interfaccia utente standard basato su bootstrap o creane uno tuo.", "ThemingExplanationShort": "Usa e personalizza il tema dell'interfaccia utente standard basato su bootstrap o creane uno tuo.",
"BootstrapTagHelpersDynamicForms": "Bootstrap Tag Helpers e moduli dinamici", "BootstrapTagHelpersDynamicForms": "Bootstrap Tag Helpers e moduli dinamici",
"BootstrapTagHelpersDynamicFormsExplanation": "Invece di scrivere manualmente i dettagli ripetuti dei componenti bootstrap, usa gli helper tag di ABP per semplificarlo e sfruttare intellisense. Crea rapidamente moduli dell'interfaccia utente basati su un modello C # utilizzando l'helper tag del modulo dinamico.", "BootstrapTagHelpersDynamicFormsExplanation": "Invece di scrivere manualmente i dettagli ripetuti dei componenti bootstrap, usa i tag helper di ABP per semplificarlo e sfruttare intellisense. Crea rapidamente moduli dell'interfaccia utente basati su un modello C# utilizzando l'helper tag del modulo dinamico.",
"HTTPAPIsDynamicProxies": "API HTTP e proxy dinamici", "HTTPAPIsDynamicProxies": "API HTTP e proxy dinamici",
"HTTPAPIsDynamicProxiesExplanation": "Esponi automaticamente i servizi dell'applicazione come API HTTP in stile REST e utilizzali con JavaScript dinamici e proxy C #.", "HTTPAPIsDynamicProxiesExplanation": "Esponi automaticamente i servizi dell'applicazione come API HTTP in stile REST e utilizzali con JavaScript dinamici e proxy C# .",
"CompleteArchitectureInfo": "Architettura moderna per creare soluzioni software manutenibili.", "CompleteArchitectureInfo": "Architettura moderna per creare soluzioni software manutenibili.",
"DomainDrivenDesignBasedLayeringModelExplanation": "Aiuta a implementare un'architettura a strati basata su DDD e a costruire una base di codice gestibile.", "DomainDrivenDesignBasedLayeringModelExplanation": "Aiuta a implementare un'architettura a strati basata su DDD e a costruire una base di codice gestibile.",
"DomainDrivenDesignBasedLayeringModelExplanationCont": "Fornisce modelli di avvio, astrazioni, classi di base, servizi, documentazione e guide per aiutarti a sviluppare la tua applicazione in base a modelli e principi DDD.", "DomainDrivenDesignBasedLayeringModelExplanationCont": "Fornisce modelli di avvio, astrazioni, classi di base, servizi, documentazione e guide per aiutarti a sviluppare la tua applicazione in base a modelli e principi DDD.",
"MicroserviceCompatibleModelExplanation": "Il framework principale ei moduli di pre-compilazione sono progettati pensando all'architettura dei microservizi.", "MicroserviceCompatibleModelExplanation": "Il framework principale ed i moduli predefiniti sono progettati pensando all'architettura dei microservizi.",
"MicroserviceCompatibleModelExplanationCont": "Fornisce infrastruttura, integrazioni, campioni e documentazione per implementare più facilmente soluzioni di microservizi, mentre non apporta ulteriore complessità se si desidera un'applicazione monolitica.", "MicroserviceCompatibleModelExplanationCont": "Fornisce infrastruttura, integrazioni, campioni e documentazione per implementare più facilmente soluzioni di microservizi, mentre non apporta ulteriore complessità se si desidera un'applicazione monolitica.",
"ModularInfo": "ABP fornisce un sistema di moduli che consente di sviluppare moduli applicativi riutilizzabili, collegarsi agli eventi del ciclo di vita dell'applicazione ed esprimere le dipendenze tra le parti principali del sistema.", "ModularInfo": "ABP fornisce un sistema di moduli che consente di sviluppare moduli applicativi riutilizzabili, collegarsi agli eventi del ciclo di vita dell'applicazione ed esprimere le dipendenze tra le parti principali del sistema.",
"PreBuiltModulesThemes": "Moduli e temi predefiniti", "PreBuiltModulesThemes": "Moduli e temi predefiniti",
@ -62,18 +62,18 @@
"Validation": "Validazione", "Validation": "Validazione",
"DatabaseConnection": "Connessione al database", "DatabaseConnection": "Connessione al database",
"TransactionManagement": "Gestione delle transazioni", "TransactionManagement": "Gestione delle transazioni",
"AuditLogging": "Registrazione di audit", "AuditLogging": "Registri di controllo",
"Caching": "Caching", "Caching": "Caching",
"Multitenancy": "Multitenancy", "Multitenancy": "Multitenancy",
"DataFiltering": "Filtraggio dei dati", "DataFiltering": "Filtraggio dei dati",
"ConventionOverConfiguration": "Convenzione sulla configurazione", "ConventionOverConfiguration": "Configurazione su convenzioni",
"ConventionOverConfigurationExplanation": "ABP implementa convenzioni di applicazioni comuni per impostazione predefinita con una configurazione minima o zero.", "ConventionOverConfigurationExplanation": "ABP implementa convenzioni di applicazioni comuni per impostazione predefinita con una configurazione minima o zero.",
"ConventionOverConfigurationExplanationList1": "Registra automaticamente i servizi noti per l'inserimento delle dipendenze.", "ConventionOverConfigurationExplanationList1": "Registra automaticamente i servizi noti per l'inserimento delle dipendenze.",
"ConventionOverConfigurationExplanationList2": "Espone i servizi dell'applicazione come API HTTP mediante convenzioni di denominazione.", "ConventionOverConfigurationExplanationList2": "Espone i servizi dell'applicazione come API HTTP mediante convenzioni di denominazione.",
"ConventionOverConfigurationExplanationList3": "Crea proxy client HTTP dinamici per C # e JavaScript.", "ConventionOverConfigurationExplanationList3": "Crea proxy client HTTP dinamici per C# e JavaScript.",
"ConventionOverConfigurationExplanationList4": "Fornisce archivi predefiniti per le tue entità.", "ConventionOverConfigurationExplanationList4": "Fornisce archivi predefiniti per le tue entità.",
"ConventionOverConfigurationExplanationList5": "Gestisce l'unità di lavoro per richiesta Web o metodo di servizio dell'applicazione.", "ConventionOverConfigurationExplanationList5": "Gestisce l'UnitofWork per richieste Web o per i metodi dei servizi dell'applicazione.",
"ConventionOverConfigurationExplanationList6": "Pubblica creare, aggiornare ed eliminare eventi per le tue entità.", "ConventionOverConfigurationExplanationList6": "Pubblica gli eventi creazione, aggiornamento ed eliminazione per le tue entità.",
"BaseClasses": "Classi di base", "BaseClasses": "Classi di base",
"BaseClassesExplanation": "Classi di base predefinite per modelli di applicazioni comuni.", "BaseClassesExplanation": "Classi di base predefinite per modelli di applicazioni comuni.",
"DeveloperFocusedExplanation": "ABP è per gli sviluppatori.", "DeveloperFocusedExplanation": "ABP è per gli sviluppatori.",
@ -91,16 +91,16 @@
"ABPCLI": "ABP CLI", "ABPCLI": "ABP CLI",
"Modularity": "Modularità", "Modularity": "Modularità",
"BootstrapTagHelpers": "Bootstrap Tag Helpers", "BootstrapTagHelpers": "Bootstrap Tag Helpers",
"DynamicForms": "Forme dinamiche", "DynamicForms": "Moduli dinamici",
"BundlingMinification": "Raggruppamento e minimizzazione", "BundlingMinification": "Raggruppamento e minimizzazione",
"BackgroundJobs": "Lavori in background", "BackgroundJobs": "Operazioni in background",
"BackgroundJobsExplanation": "Definire classi semplici per eseguire lavori in background come in coda. Usa il gestore dei lavori integrato o integra il tuo. Le integrazioni <a href=\"{0}\"> Hangfire </a> e <a href=\"{1}\"> RabbitMQ </a> sono già disponibili.", "BackgroundJobsExplanation": "Definire classi semplici per eseguire Operazioni in background come in coda. Usa il gestore dei lavori integrato o integra il tuo. Le integrazioni <a href=\"{0}\"> Hangfire </a> e <a href=\"{1}\"> RabbitMQ </a> sono già disponibili.",
"DDDInfrastructure": "Infrastruttura DDD", "DDDInfrastructure": "Infrastruttura DDD",
"DomainDrivenDesignInfrastructure": "Infrastruttura di progettazione basata sul dominio", "DomainDrivenDesignInfrastructure": "Infrastruttura Domain Driven Design",
"AutoRESTAPIs": "API REST automatiche", "AutoRESTAPIs": "API REST automatiche",
"DynamicClientProxies": "Proxy client dinamici", "DynamicClientProxies": "Proxy client dinamici",
"DistributedEventBus": "Bus di eventi distribuito", "DistributedEventBus": "Bus Eventi Distribuito",
"DistributedEventBusWithRabbitMQIntegration": "Bus di eventi distribuito con integrazione RabbitMQ", "DistributedEventBusWithRabbitMQIntegration": "Bus Eventi Distribuito con integrazione RabbitMQ",
"TestInfrastructure": "Infrastruttura di test", "TestInfrastructure": "Infrastruttura di test",
"AuditLoggingEntityHistories": "Registrazione di audit e cronologie delle entità", "AuditLoggingEntityHistories": "Registrazione di audit e cronologie delle entità",
"ObjectToObjectMapping": "Mappatura da oggetto a oggetto", "ObjectToObjectMapping": "Mappatura da oggetto a oggetto",
@ -109,36 +109,36 @@
"EmailSMSAbstractionsWithTemplatingSupport": "Astrazioni tramite posta elettronica e SMS con supporto per i modelli", "EmailSMSAbstractionsWithTemplatingSupport": "Astrazioni tramite posta elettronica e SMS con supporto per i modelli",
"Localization": "Localizzazione", "Localization": "Localizzazione",
"SettingManagement": "Gestione delle impostazioni", "SettingManagement": "Gestione delle impostazioni",
"ExtensionMethods": "Metodi di estensione", "ExtensionMethods": "Metodi estensione",
"ExtensionMethodsHelpers": "Metodi di estensione e aiutanti", "ExtensionMethodsHelpers": "Metodi estensione e assistenti",
"AspectOrientedProgramming": "Programmazione orientata agli aspetti", "AspectOrientedProgramming": "Programmazione orientata agli aspetti",
"DependencyInjection": "Iniezione di dipendenza", "DependencyInjection": "Iniezione delle dipendenze",
"DependencyInjectionByConventions": "Inserimento delle dipendenze mediante convenzioni", "DependencyInjectionByConventions": "Inserimento delle dipendenze mediante convenzioni",
"ABPCLIExplanation": "ABP CLI (Command Line Interface) è uno strumento a riga di comando per eseguire alcune operazioni comuni per soluzioni basate su ABP.", "ABPCLIExplanation": "ABP CLI (Command Line Interface) è uno strumento a riga di comando per eseguire alcune operazioni comuni per soluzioni basate su ABP.",
"ModularityExplanation": "ABP fornisce un'infrastruttura completa per creare i propri moduli applicativi che possono avere entità, servizi, integrazione di database, API, componenti dell'interfaccia utente e così via.", "ModularityExplanation": "ABP fornisce un'infrastruttura completa per creare i propri moduli applicativi che possono avere entità, servizi, integrazione di database, API, componenti dell'interfaccia utente e così via.",
"MultiTenancyExplanation": "Il framework ABP non solo supporta lo sviluppo di applicazioni multi-tenant, ma rende anche il tuo codice per lo più inconsapevole del multi-tenancy.", "MultiTenancyExplanation": "Il framework ABP non solo supporta lo sviluppo di applicazioni multi-tenant, ma rende anche il tuo codice per lo più inconsapevole del multi-tenancy.",
"MultiTenancyExplanation2": "Può determinare automaticamente l'inquilino corrente, isolare i dati di diversi inquilini l'uno dall'altro.", "MultiTenancyExplanation2": "Può determinare automaticamente il tenant corrente, isolare i dati di diversi inquilini l'uno dall'altro.",
"MultiTenancyExplanation3": "Supporta database singolo, database per tenant e approcci ibridi.", "MultiTenancyExplanation3": "Supporta database singolo, database per tenant e approcci ibridi.",
"MultiTenancyExplanation4": "Ti concentri sul tuo codice aziendale e lasci che il framework gestisca il multi-tenancy per tuo conto.", "MultiTenancyExplanation4": "Ti concentri sul tuo codice aziendale e lasci che il framework gestisca il multi-tenancy per tuo conto.",
"BootstrapTagHelpersExplanation": "Invece di scrivere manualmente i dettagli ripetuti dei componenti bootstrap, usa gli helper tag di ABP per semplificarlo e sfruttare intellisense. Puoi sicuramente usare Bootstrap ogni volta che ne hai bisogno.", "BootstrapTagHelpersExplanation": "Invece di scrivere manualmente i dettagli ripetuti dei componenti bootstrap, usa gli helper tag di ABP per semplificarlo e sfruttare intellisense. Puoi sicuramente usare Bootstrap ogni volta che ne hai bisogno.",
"DynamicFormsExplanation": "Gli helper dei moduli dinamici e dei tag di input possono creare il modulo completo da una classe C # come modello.", "DynamicFormsExplanation": "Gli helper dei moduli dinamici e dei tag di input possono creare il modulo completo da una classe C# come modello.",
"AuthenticationAuthorizationExplanation": "Ricche opzioni di autenticazione e autorizzazione integrate in ASP.NET Core Identity & IdentityServer4. Fornisce un sistema di autorizzazione estensibile e dettagliato.", "AuthenticationAuthorizationExplanation": "Ricche opzioni di autenticazione e autorizzazione integrate in ASP.NET Core Identity & IdentityServer4. Fornisce un sistema di autorizzazione estensibile e dettagliato.",
"CrossCuttingConcernsExplanation": "Non ripetere te stesso per implementare tutte queste cose comuni ancora e ancora. Concentrati sul tuo codice aziendale e lascia che ABP li automatizzi secondo le convenzioni.", "CrossCuttingConcernsExplanation": "Non ripetere te stesso per implementare tutte queste cose comuni ancora e ancora. Concentrati sul tuo codice aziendale e lascia che ABP li automatizzi secondo le convenzioni.",
"DatabaseConnectionTransactionManagement": "Connessione al database e gestione delle transazioni", "DatabaseConnectionTransactionManagement": "Connessione al database e gestione delle transazioni",
"CorrelationIdTracking": "Monitoraggio dell'ID di correlazione", "CorrelationIdTracking": "Monitoraggio dell'ID di correlazione",
"BundlingMinificationExplanation": "ABP offre un sistema di raggruppamento e minimizzazione semplice, dinamico, potente, modulare e integrato.", "BundlingMinificationExplanation": "ABP offre un sistema di raggruppamento e minimizzazione semplice, dinamico, potente, modulare e integrato.",
"VirtualFileSystemnExplanation": "Il Virtual File System consente di gestire file che non esistono fisicamente nel file system (disco). Viene utilizzato principalmente per incorporare file (js, css, immagine, cshtml ...) negli assembly e utilizzarli come file fisici in runtime.", "VirtualFileSystemnExplanation": "Il Virtual File System consente di gestire file che non esistono fisicamente nel file system (disco). Viene utilizzato principalmente per incorporare file (js, css, immagine, cshtml...) negli assembly e utilizzarli come file fisici in runtime.",
"ThemingExplanation": "Il sistema di temi consente di sviluppare applicazioni e moduli indipendentemente dal tema definendo un set di librerie e layout di base comuni, basati sul più recente framework Bootstrap.", "ThemingExplanation": "Il sistema di temi consente di sviluppare applicazioni e moduli indipendentemente dal tema definendo un set di librerie e layout di base comuni, basati sul più recente framework Bootstrap.",
"DomainDrivenDesignInfrastructureExplanation": "Un'infrastruttura completa per creare applicazioni a più livelli basate sui modelli e sui principi di Domain Driven Design;", "DomainDrivenDesignInfrastructureExplanation": "Un'infrastruttura completa per creare applicazioni a più livelli basate sui modelli e sui principi di Domain Driven Design;",
"Specification": "Specifica", "Specification": "Specificazione",
"Repository": "Repository", "Repository": "Repository",
"DomainService": "Servizio di dominio", "DomainService": "Servizio di dominio",
"ValueObject": "Oggetto valore", "ValueObject": "Oggetto valore",
"ApplicationService": "Servizio applicazioni", "ApplicationService": "Servizio applicazione",
"DataTransferObject": "Oggetto trasferimento dati", "DataTransferObject": "Oggetto trasferimento dati",
"AggregateRootEntity": "Radice aggregata, entità", "AggregateRootEntity": "Aggregate Root, entità",
"AutoRESTAPIsExplanation": "ABP può configurare automaticamente i servizi dell'applicazione come controller API per convenzione.", "AutoRESTAPIsExplanation": "ABP può configurare automaticamente i servizi dell'applicazione come controller API per convenzione.",
"DynamicClientProxiesExplanation": "Utilizza facilmente le tue API da client JavaScript e C #.", "DynamicClientProxiesExplanation": "Utilizza facilmente le tue API da client JavaScript e C# .",
"DistributedEventBusWithRabbitMQIntegrationExplanation": "Pubblica e utilizza facilmente eventi distribuiti utilizzando Distributed Event Bus integrato con integrazione RabbitMQ disponibile.", "DistributedEventBusWithRabbitMQIntegrationExplanation": "Pubblica e utilizza facilmente eventi distribuiti utilizzando Distributed Event Bus integrato con integrazione RabbitMQ disponibile.",
"TestInfrastructureExplanation": "Il framework è stato sviluppato in mente per test di unità e integrazione. Fornisce classi di base per renderlo più facile. I modelli di avvio vengono forniti preconfigurati per i test.", "TestInfrastructureExplanation": "Il framework è stato sviluppato in mente per test di unità e integrazione. Fornisce classi di base per renderlo più facile. I modelli di avvio vengono forniti preconfigurati per i test.",
"AuditLoggingEntityHistoriesExplanation": "Registrazione di audit integrata per applicazioni business-critical. Richiesta, servizio, registrazione di controllo a livello di metodo e cronologie di entità con dettagli a livello di proprietà.", "AuditLoggingEntityHistoriesExplanation": "Registrazione di audit integrata per applicazioni business-critical. Richiesta, servizio, registrazione di controllo a livello di metodo e cronologie di entità con dettagli a livello di proprietà.",
@ -151,17 +151,17 @@
"DataFilteringExplanation": "Definisci e utilizza i filtri di dati che vengono applicati automaticamente quando esegui query sulle entità dal database. Quando si implementano interfacce semplici, vengono forniti filtri Soft Delete e MultiTenant.", "DataFilteringExplanation": "Definisci e utilizza i filtri di dati che vengono applicati automaticamente quando esegui query sulle entità dal database. Quando si implementano interfacce semplici, vengono forniti filtri Soft Delete e MultiTenant.",
"PublishEvents": "Pubblica eventi", "PublishEvents": "Pubblica eventi",
"HandleEvents": "Gestisci eventi", "HandleEvents": "Gestisci eventi",
"AndMore": "e altro ancora ...", "AndMore": "e altro ancora...",
"Code": "Codice", "Code": "Codice",
"Result": "Risultato", "Result": "Risultato",
"SeeTheDocumentForMoreInformation": "Consulta il <a href=\"{1}\"> {0} documento </a> per ulteriori informazioni", "SeeTheDocumentForMoreInformation": "Consulta il <a href=\"{1}\"> {0} documento </a> per ulteriori informazioni",
"IndexPageHeroSection": "<span class=\"first-line shine\"> <strong> open source </strong> </span> <span class=\"second-line text-uppercase\"> Framework <br /> applicazione web </span> <span class=\"third-line shine2\"> <strong> per asp.net core </strong> </span>", "IndexPageHeroSection": "<span class=\"first-line shine\"><strong>open source</strong></span><span class=\"second-line text-uppercase\">Framework <br/>applicazione web</span><span class=\"third-line shine2\"><strong>per asp.net core</strong></span>",
"UiFramework": "Framework dell'interfaccia utente", "UiFramework": "Framework dell'interfaccia utente",
"EmailAddress": "Indirizzo e-mail", "EmailAddress": "Indirizzo e-mail",
"Mobile": "Mobile", "Mobile": "Mobile",
"ReactNative": "React Native", "ReactNative": "React Native",
"Strong": "Forte", "Strong": "Forte",
"Complete": "Completare", "Complete": "Completa",
"BasedLayeringModel": "Modello di stratificazione basato", "BasedLayeringModel": "Modello di stratificazione basato",
"Microservice": "Microservizio", "Microservice": "Microservizio",
"Compatible": "Compatibile", "Compatible": "Compatibile",
@ -169,21 +169,21 @@
"JoinTheABPCommunityInfo": "Fatti coinvolgere da una vivace comunità e diventa un collaboratore di ABP Framework!", "JoinTheABPCommunityInfo": "Fatti coinvolgere da una vivace comunità e diventa un collaboratore di ABP Framework!",
"AllArticles": "Tutti gli articoli", "AllArticles": "Tutti gli articoli",
"SubmitYourArticle": "Invia il tuo articolo", "SubmitYourArticle": "Invia il tuo articolo",
"DynamicClientProxyDocument": "Consulta la documentazione relativa al proxy del client dinamico per <a href=\"{0}\"> JavaScript </a> e <a href=\"{1}\"> C # </a>.", "DynamicClientProxyDocument": "Consulta la documentazione relativa al proxy del client dinamico per <a href=\"{0}\">JavaScript</a> e <a href=\"{1}\">C#</a>.",
"EmailSMSAbstractionsDocument": "Per ulteriori informazioni, consulta i documenti di <a href=\"{0}\"> invio di email </a> e <a href=\"{1}\"> invio di SMS </a>.", "EmailSMSAbstractionsDocument": "Per ulteriori informazioni, consulta i documenti di <a href=\"{0}\">invio di email</a> e <a href=\"{1}\">invio di SMS</a>.",
"CreateProjectWizard": "Questa procedura guidata crea un nuovo progetto dal modello di avvio che è configurato correttamente per avviare rapidamente il progetto.", "CreateProjectWizard": "Questa procedura guidata crea un nuovo progetto dal modello di avvio che è configurato correttamente per avviare rapidamente il progetto.",
"TieredOption": "Crea una soluzione a più livelli in cui i livelli API Web e Http sono fisicamente separati. Se non selezionata, crea una soluzione a più livelli meno complessa e adatta alla maggior parte degli scenari.", "TieredOption": "Crea una soluzione a più livelli in cui i livelli API Web e Http sono fisicamente separati. Se non selezionata, crea una soluzione a più livelli meno complessa e adatta alla maggior parte degli scenari.",
"SeparateIdentityServerOption": "Separa il lato server in due applicazioni: la prima è per il server di identità e la seconda è per l'API HTTP lato server.", "SeparateIdentityServerOption": "Separa il lato server in due applicazioni: la prima è per il server di identità e la seconda è per l'API HTTP lato server.",
"UseslatestPreVersion": "Utilizza l'ultima versione pre-rilascio", "UseslatestPreVersion": "Utilizza l'ultima versione pre-rilascio",
"ReadTheDocumentation": "<span class=\"text-primary\"> Leggi </span> <span class=\"text-success\"> La documentazione </span>", "ReadTheDocumentation": "<span class=\"text-primary\">Leggi</span><span class=\"text-success\">La documentazione</span>",
"Documentation": "Documentazione", "Documentation": "Documentazione",
"GettingStartedTutorial": "Tutorial introduttivo", "GettingStartedTutorial": "Tutorial introduttivo",
"ApplicationDevelopmentTutorial": "Tutorial sullo sviluppo di applicazioni", "ApplicationDevelopmentTutorial": "Tutorial sullo sviluppo di applicazioni",
"TheStartupTemplate": "Il modello di avvio", "TheStartupTemplate": "Il modello di avvio",
"InstallABPCLIInfo": "ABP CLI è il modo più veloce per avviare una nuova soluzione con il framework ABP. Installa ABP CLI utilizzando una finestra della riga di comando:", "InstallABPCLIInfo": "ABP CLI è il modo più veloce per avviare una nuova soluzione con il framework ABP. Installa ABP CLI utilizzando una finestra della riga di comando:",
"DifferentLevelOfNamespaces": "È possibile utilizzare diversi livelli di spazi dei nomi; per esempio. BookStore, Acme.BookStore o Acme.Retail.BookStore.", "DifferentLevelOfNamespaces": "È possibile utilizzare diversi livelli di spazi dei nomi; per esempio. BookStore, Acme.BookStore o Acme.Retail.BookStore.",
"ABPCLIExamplesInfo": "Il comando <strong> nuovo </strong> crea un '<strong> applicazione MVC a più livelli </strong> con <strong> Entity Framework Core </strong> come provider di database. Tuttavia, ha opzioni aggiuntive. Esempi:", "ABPCLIExamplesInfo": "Il comando <strong>nuovo</strong> crea un '<strong>applicazione MVC a più livelli</strong> con <strong>Entity Framework Core</strong> come provider di database. Tuttavia, ha opzioni aggiuntive. Esempi:",
"SeeCliDocumentForMoreInformation": "Consulta il <a href=\"{0}\"> documento ABP CLI </a> per ulteriori opzioni o seleziona la scheda \"Download diretto\" in alto.", "SeeCliDocumentForMoreInformation": "Consulta la <a href=\"{0}\">documentazione ABP CLI</a> per ulteriori opzioni o seleziona la scheda \"Download diretto\" in alto.",
"Optional": "Opzionale", "Optional": "Opzionale",
"LocalFrameworkRef": "Mantieni il riferimento al progetto locale per i pacchetti del framework.", "LocalFrameworkRef": "Mantieni il riferimento al progetto locale per i pacchetti del framework.",
"BlobStoring": "Archiviazione BLOB", "BlobStoring": "Archiviazione BLOB",
@ -191,7 +191,7 @@
"TextTemplating": "Modelli di testo", "TextTemplating": "Modelli di testo",
"TextTemplatingExplanation": "La creazione di modelli di testo viene utilizzata per eseguire il rendering dinamico dei contenuti in base a un modello e un modello (un oggetto dati). Ad esempio, puoi utilizzarlo per creare contenuti di posta elettronica dinamici con un modello predefinito.", "TextTemplatingExplanation": "La creazione di modelli di testo viene utilizzata per eseguire il rendering dinamico dei contenuti in base a un modello e un modello (un oggetto dati). Ad esempio, puoi utilizzarlo per creare contenuti di posta elettronica dinamici con un modello predefinito.",
"MultipleUIOptions": "Molteplici opzioni di interfaccia utente", "MultipleUIOptions": "Molteplici opzioni di interfaccia utente",
"MultipleDBOptions": "Più fornitori di database", "MultipleDBOptions": "Più provider per database",
"MultipleUIOptionsExplanation": "Il framework principale è progettato come indipendente dall'interfaccia utente e può funzionare con qualsiasi tipo di sistema di interfaccia utente, mentre sono disponibili più opzioni predefinite e integrate.", "MultipleUIOptionsExplanation": "Il framework principale è progettato come indipendente dall'interfaccia utente e può funzionare con qualsiasi tipo di sistema di interfaccia utente, mentre sono disponibili più opzioni predefinite e integrate.",
"MultipleDBOptionsExplanation": "Il framework può funzionare con qualsiasi fonte di dati, mentre i seguenti provider sono ufficialmente sviluppati e supportati;", "MultipleDBOptionsExplanation": "Il framework può funzionare con qualsiasi fonte di dati, mentre i seguenti provider sono ufficialmente sviluppati e supportati;",
"SelectLanguage": "Seleziona la lingua", "SelectLanguage": "Seleziona la lingua",

3
docs/en/Customizing-Application-Modules-Guide.md

@ -31,7 +31,8 @@ If you don't think to make huge changes on the pre-built modules, re-using them
If you want to make **huge changes** or add **major features** on a pre-built module, but the available extension points are not enough, you can consider to directly work the source code of the depended module. If you want to make **huge changes** or add **major features** on a pre-built module, but the available extension points are not enough, you can consider to directly work the source code of the depended module.
In this case, you typically **add the source code** of the module to your solution and **replace package references** by local project references. **[ABP CLI](CLI.md)** automates this process for you. In this case, you typically **add the source code** of the module to your solution and replace **every** package reference in the solution with its corresponding local project references. **[ABP CLI](CLI.md)** automates this process for you.
#### Separating the Module Solution #### Separating the Module Solution

18
docs/en/Startup-Templates/Module.md

@ -20,23 +20,9 @@ abp new Acme.IssueManagement -t module
- `Acme.IssueManagement` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming. - `Acme.IssueManagement` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming.
### Specify the UI Framework
This template provides multiple UI frameworks:
* `mvc`: ASP.NET Core MVC UI with Razor Pages (default)
* `blazor`: Blazor UI
* `angular`: Angular UI
Use `-u` or `--ui` option to specify the UI framework:
````bash
abp new Acme.IssueManagement -t module -u angular
````
### Without User Interface ### Without User Interface
The template comes with an MVC UI by default. You can use `--no-ui` option to not include the UI layer. The template comes with MVC, Blazor & Angular user interfaces by default. You can use `--no-ui` option to not include any of these UI layers.
````bash ````bash
abp new Acme.IssueManagement -t module --no-ui abp new Acme.IssueManagement -t module --no-ui
@ -179,7 +165,7 @@ You should run the application with the given order:
### Angular UI ### Angular UI
If you choose `Angular` as the UI framework (using the `-u angular` option), the solution will have a folder called `angular` in it. This is where the client-side code is located. When you open that folder in an IDE, the folder structure will look like below: The solution will have a folder called `angular` in it. This is where the Angular client-side code is located. When you open that folder in an IDE, the folder structure will look like below:
![Folder structure of ABP Angular module project](../images/angular-module-folder-structure.png) ![Folder structure of ABP Angular module project](../images/angular-module-folder-structure.png)

12
framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs

@ -19,9 +19,7 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
{ {
public IHttpClientFactory HttpClientFactory { get; } public IHttpClientFactory HttpClientFactory { get; }
public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; } public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; }
public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
public AbpRemoteServiceOptions RemoteServiceOptions { get; }
public ICurrentTenant CurrentTenant { get; } public ICurrentTenant CurrentTenant { get; }
public IHttpContextAccessor HttpContextAccessor { get; } public IHttpContextAccessor HttpContextAccessor { get; }
public NavigationManager NavigationManager { get; } public NavigationManager NavigationManager { get; }
@ -29,16 +27,16 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
public BlazorServerLookupApiRequestService(IHttpClientFactory httpClientFactory, public BlazorServerLookupApiRequestService(IHttpClientFactory httpClientFactory,
IRemoteServiceHttpClientAuthenticator httpClientAuthenticator, IRemoteServiceHttpClientAuthenticator httpClientAuthenticator,
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IOptions<AbpRemoteServiceOptions> remoteServiceOptions,
IHttpContextAccessor httpContextAccessor, IHttpContextAccessor httpContextAccessor,
NavigationManager navigationManager) NavigationManager navigationManager,
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{ {
HttpClientFactory = httpClientFactory; HttpClientFactory = httpClientFactory;
HttpClientAuthenticator = httpClientAuthenticator; HttpClientAuthenticator = httpClientAuthenticator;
RemoteServiceOptions = remoteServiceOptions.Value;
CurrentTenant = currentTenant; CurrentTenant = currentTenant;
HttpContextAccessor = httpContextAccessor; HttpContextAccessor = httpContextAccessor;
NavigationManager = navigationManager; NavigationManager = navigationManager;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
} }
public async Task<string> SendAsync(string url) public async Task<string> SendAsync(string url)
@ -53,7 +51,7 @@ namespace Volo.Abp.AspNetCore.Components.Server.Extensibility
try try
{ {
//Blazor tiered -- mode //Blazor tiered -- mode
var remoteServiceConfig = RemoteServiceOptions.RemoteServices.GetConfigurationOrDefault("Default"); var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
baseUrl = remoteServiceConfig.BaseUrl; baseUrl = remoteServiceConfig.BaseUrl;
client.BaseAddress = new Uri(baseUrl); client.BaseAddress = new Uri(baseUrl);
AddHeaders(requestMessage); AddHeaders(requestMessage);

7
framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DefaultServerUrlProvider.cs

@ -1,12 +1,13 @@
using Volo.Abp.DependencyInjection; using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Web namespace Volo.Abp.AspNetCore.Components.Web
{ {
public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency
{ {
public string GetBaseUrl(string remoteServiceName = null) public Task<string> GetBaseUrlAsync(string remoteServiceName = null)
{ {
return "/"; return Task.FromResult("/");
} }
} }
} }

6
framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IServerUrlProvider.cs

@ -1,7 +1,9 @@
namespace Volo.Abp.AspNetCore.Components.Web using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Components.Web
{ {
public interface IServerUrlProvider public interface IServerUrlProvider
{ {
string GetBaseUrl(string remoteServiceName = null); Task<string> GetBaseUrlAsync(string remoteServiceName = null);
} }
} }

10
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs

@ -17,20 +17,18 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility
{ {
public IHttpClientFactory HttpClientFactory { get; } public IHttpClientFactory HttpClientFactory { get; }
public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; } public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; }
public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
public AbpRemoteServiceOptions RemoteServiceOptions { get; }
public ICurrentTenant CurrentTenant { get; } public ICurrentTenant CurrentTenant { get; }
public WebAssemblyLookupApiRequestService(IHttpClientFactory httpClientFactory, public WebAssemblyLookupApiRequestService(IHttpClientFactory httpClientFactory,
IRemoteServiceHttpClientAuthenticator httpClientAuthenticator, IRemoteServiceHttpClientAuthenticator httpClientAuthenticator,
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IOptions<AbpRemoteServiceOptions> remoteServiceOptions) IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{ {
HttpClientFactory = httpClientFactory; HttpClientFactory = httpClientFactory;
HttpClientAuthenticator = httpClientAuthenticator; HttpClientAuthenticator = httpClientAuthenticator;
RemoteServiceOptions = remoteServiceOptions.Value;
CurrentTenant = currentTenant; CurrentTenant = currentTenant;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
} }
public async Task<string> SendAsync(string url) public async Task<string> SendAsync(string url)
@ -42,7 +40,7 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility
var uri = new Uri(url, UriKind.RelativeOrAbsolute); var uri = new Uri(url, UriKind.RelativeOrAbsolute);
if (!uri.IsAbsoluteUri) if (!uri.IsAbsoluteUri)
{ {
var remoteServiceConfig = RemoteServiceOptions.RemoteServices.GetConfigurationOrDefault("Default"); var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default");
client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl); client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl);
await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty)); await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty));
} }

16
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs

@ -1,5 +1,5 @@
using System; using System;
using Microsoft.Extensions.Options; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Components.Web; using Volo.Abp.AspNetCore.Components.Web;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
@ -9,19 +9,21 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
[Dependency(ReplaceServices = true)] [Dependency(ReplaceServices = true)]
public class WebAssemblyServerUrlProvider : IServerUrlProvider, ITransientDependency public class WebAssemblyServerUrlProvider : IServerUrlProvider, ITransientDependency
{ {
public AbpRemoteServiceOptions Options { get; } protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
public WebAssemblyServerUrlProvider( public WebAssemblyServerUrlProvider(
IOptions<AbpRemoteServiceOptions> options) IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{ {
Options = options.Value; RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
} }
public string GetBaseUrl(string remoteServiceName = null) public async Task<string> GetBaseUrlAsync(string remoteServiceName = null)
{ {
return Options.RemoteServices.GetConfigurationOrDefault( var remoteServiceConfiguration = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(
remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName
).BaseUrl.EnsureEndsWith('/'); );
return remoteServiceConfiguration.BaseUrl.EnsureEndsWith('/');
} }
} }
} }

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/it.json

@ -3,11 +3,11 @@
"texts": { "texts": {
"GivenTenantIsNotExist": "Il tenant specificato non esiste: {0}", "GivenTenantIsNotExist": "Il tenant specificato non esiste: {0}",
"GivenTenantIsNotAvailable": "Il tenant specificato non è disponibile: {0}", "GivenTenantIsNotAvailable": "Il tenant specificato non è disponibile: {0}",
"Tenant": "Inquilino", "Tenant": "Tenant",
"Switch": "interruttore", "Switch": "Cambia",
"Name": "Nome", "Name": "Nome",
"SwitchTenantHint": "Lascia vuoto il campo del nome per passare al lato host.", "SwitchTenantHint": "Lascia vuoto il campo del nome per passare al lato host.",
"SwitchTenant": "Cambia inquilino", "SwitchTenant": "Cambia tenant",
"NotSelected": "Non selezionato" "NotSelected": "Non selezionato"
} }
} }

8
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplateBase.cs

@ -40,6 +40,14 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Module
"MyCompanyName.MyProjectName.Blazor" "MyCompanyName.MyProjectName.Blazor"
)); ));
steps.Add(new RemoveProjectFromSolutionStep(
"MyCompanyName.MyProjectName.Blazor.Server"
));
steps.Add(new RemoveProjectFromSolutionStep(
"MyCompanyName.MyProjectName.Blazor.WebAssembly"
));
steps.Add(new RemoveProjectFromSolutionStep( steps.Add(new RemoveProjectFromSolutionStep(
"MyCompanyName.MyProjectName.Blazor.Host", "MyCompanyName.MyProjectName.Blazor.Host",
projectFolderPath: "/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host" projectFolderPath: "/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host"

12
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/it.json

@ -1,17 +1,17 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"DisplayName:Abp.Mailing.DefaultFromAddress": "Indirizzo predefinito dall'indirizzo", "DisplayName:Abp.Mailing.DefaultFromAddress": "Indirizzo mittente predefinito",
"DisplayName:Abp.Mailing.DefaultFromDisplayName": "Predefinito dal nome visualizzato", "DisplayName:Abp.Mailing.DefaultFromDisplayName": "Nome mittente visualizzato predefinito",
"DisplayName:Abp.Mailing.Smtp.Host": "Ospite", "DisplayName:Abp.Mailing.Smtp.Host": "Host",
"DisplayName:Abp.Mailing.Smtp.Port": "Porta", "DisplayName:Abp.Mailing.Smtp.Port": "Porta",
"DisplayName:Abp.Mailing.Smtp.UserName": "Nome utente", "DisplayName:Abp.Mailing.Smtp.UserName": "Nome utente",
"DisplayName:Abp.Mailing.Smtp.Password": "Parola d'ordine", "DisplayName:Abp.Mailing.Smtp.Password": "Password",
"DisplayName:Abp.Mailing.Smtp.Domain": "Dominio", "DisplayName:Abp.Mailing.Smtp.Domain": "Dominio",
"DisplayName:Abp.Mailing.Smtp.EnableSsl": "Abilita SSL", "DisplayName:Abp.Mailing.Smtp.EnableSsl": "Abilita SSL",
"DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "Usa credenziali predefinite", "DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "Usa credenziali predefinite",
"Description:Abp.Mailing.DefaultFromAddress": "L'indirizzo predefinito da", "Description:Abp.Mailing.DefaultFromAddress": "L'indirizzo predefinito mittente",
"Description:Abp.Mailing.DefaultFromDisplayName": "Il valore predefinito dal nome visualizzato", "Description:Abp.Mailing.DefaultFromDisplayName": "Il valore nome mittente visualizzato predefinito",
"Description:Abp.Mailing.Smtp.Host": "Il nome o l'indirizzo IP dell'host utilizzato per le transazioni SMTP.", "Description:Abp.Mailing.Smtp.Host": "Il nome o l'indirizzo IP dell'host utilizzato per le transazioni SMTP.",
"Description:Abp.Mailing.Smtp.Port": "La porta utilizzata per le transazioni SMTP.", "Description:Abp.Mailing.Smtp.Port": "La porta utilizzata per le transazioni SMTP.",
"Description:Abp.Mailing.Smtp.UserName": "Nome utente associato alle credenziali.", "Description:Abp.Mailing.Smtp.UserName": "Nome utente associato alle credenziali.",

26
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

@ -34,7 +34,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
protected AbpCorrelationIdOptions AbpCorrelationIdOptions { get; } protected AbpCorrelationIdOptions AbpCorrelationIdOptions { get; }
protected IDynamicProxyHttpClientFactory HttpClientFactory { get; } protected IDynamicProxyHttpClientFactory HttpClientFactory { get; }
protected IApiDescriptionFinder ApiDescriptionFinder { get; } protected IApiDescriptionFinder ApiDescriptionFinder { get; }
protected AbpRemoteServiceOptions AbpRemoteServiceOptions { get; } protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; }
protected AbpHttpClientOptions ClientOptions { get; } protected AbpHttpClientOptions ClientOptions { get; }
protected IJsonSerializer JsonSerializer { get; } protected IJsonSerializer JsonSerializer { get; }
protected IRemoteServiceHttpClientAuthenticator ClientAuthenticator { get; } protected IRemoteServiceHttpClientAuthenticator ClientAuthenticator { get; }
@ -51,25 +51,25 @@ namespace Volo.Abp.Http.Client.DynamicProxying
public DynamicHttpProxyInterceptor( public DynamicHttpProxyInterceptor(
IDynamicProxyHttpClientFactory httpClientFactory, IDynamicProxyHttpClientFactory httpClientFactory,
IOptions<AbpHttpClientOptions> clientOptions, IOptions<AbpHttpClientOptions> clientOptions,
IOptionsSnapshot<AbpRemoteServiceOptions> remoteServiceOptions,
IApiDescriptionFinder apiDescriptionFinder, IApiDescriptionFinder apiDescriptionFinder,
IJsonSerializer jsonSerializer, IJsonSerializer jsonSerializer,
IRemoteServiceHttpClientAuthenticator clientAuthenticator, IRemoteServiceHttpClientAuthenticator clientAuthenticator,
ICancellationTokenProvider cancellationTokenProvider, ICancellationTokenProvider cancellationTokenProvider,
ICorrelationIdProvider correlationIdProvider, ICorrelationIdProvider correlationIdProvider,
IOptions<AbpCorrelationIdOptions> correlationIdOptions, IOptions<AbpCorrelationIdOptions> correlationIdOptions,
ICurrentTenant currentTenant) ICurrentTenant currentTenant,
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{ {
CancellationTokenProvider = cancellationTokenProvider; CancellationTokenProvider = cancellationTokenProvider;
CorrelationIdProvider = correlationIdProvider; CorrelationIdProvider = correlationIdProvider;
CurrentTenant = currentTenant; CurrentTenant = currentTenant;
RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider;
AbpCorrelationIdOptions = correlationIdOptions.Value; AbpCorrelationIdOptions = correlationIdOptions.Value;
HttpClientFactory = httpClientFactory; HttpClientFactory = httpClientFactory;
ApiDescriptionFinder = apiDescriptionFinder; ApiDescriptionFinder = apiDescriptionFinder;
JsonSerializer = jsonSerializer; JsonSerializer = jsonSerializer;
ClientAuthenticator = clientAuthenticator; ClientAuthenticator = clientAuthenticator;
ClientOptions = clientOptions.Value; ClientOptions = clientOptions.Value;
AbpRemoteServiceOptions = remoteServiceOptions.Value;
Logger = NullLogger<DynamicHttpProxyInterceptor<TService>>.Instance; Logger = NullLogger<DynamicHttpProxyInterceptor<TService>>.Instance;
} }
@ -135,7 +135,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
private async Task<HttpContent> MakeRequestAsync(IAbpMethodInvocation invocation) private async Task<HttpContent> MakeRequestAsync(IAbpMethodInvocation invocation)
{ {
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}."); var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
var remoteServiceConfig = AbpRemoteServiceOptions.RemoteServices.GetConfigurationOrDefault(clientConfig.RemoteServiceName); var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync(clientConfig.RemoteServiceName);
var client = HttpClientFactory.Create(clientConfig.RemoteServiceName); var client = HttpClientFactory.Create(clientConfig.RemoteServiceName);
@ -146,7 +146,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
invocation.Method invocation.Method
); );
var apiVersion = GetApiVersionInfo(action); var apiVersion = await GetApiVersionInfoAsync(action);
var url = remoteServiceConfig.BaseUrl.EnsureEndsWith('/') + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion); var url = remoteServiceConfig.BaseUrl.EnsureEndsWith('/') + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion);
var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url) var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url)
@ -182,9 +182,9 @@ namespace Volo.Abp.Http.Client.DynamicProxying
return response.Content; return response.Content;
} }
private ApiVersionInfo GetApiVersionInfo(ActionApiDescriptionModel action) private async Task<ApiVersionInfo> GetApiVersionInfoAsync(ActionApiDescriptionModel action)
{ {
var apiVersion = FindBestApiVersion(action); var apiVersion = await FindBestApiVersionAsync(action);
//TODO: Make names configurable? //TODO: Make names configurable?
var versionParam = action.Parameters.FirstOrDefault(p => p.Name == "apiVersion" && p.BindingSourceId == ParameterBindingSources.Path) ?? var versionParam = action.Parameters.FirstOrDefault(p => p.Name == "apiVersion" && p.BindingSourceId == ParameterBindingSources.Path) ??
@ -193,9 +193,9 @@ namespace Volo.Abp.Http.Client.DynamicProxying
return new ApiVersionInfo(versionParam?.BindingSourceId, apiVersion); return new ApiVersionInfo(versionParam?.BindingSourceId, apiVersion);
} }
private string FindBestApiVersion(ActionApiDescriptionModel action) private async Task<string> FindBestApiVersionAsync(ActionApiDescriptionModel action)
{ {
var configuredVersion = GetConfiguredApiVersion(); var configuredVersion = await GetConfiguredApiVersionAsync();
if (action.SupportedVersions.IsNullOrEmpty()) if (action.SupportedVersions.IsNullOrEmpty())
{ {
@ -258,13 +258,13 @@ namespace Volo.Abp.Http.Client.DynamicProxying
requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest"); requestMessage.Headers.Add("X-Requested-With", "XMLHttpRequest");
} }
private string GetConfiguredApiVersion() private async Task<string> GetConfiguredApiVersionAsync()
{ {
var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) var clientConfig = ClientOptions.HttpClientProxies.GetOrDefault(typeof(TService))
?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}."); ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}.");
return AbpRemoteServiceOptions.RemoteServices.GetOrDefault(clientConfig.RemoteServiceName)?.Version return (await RemoteServiceConfigurationProvider
?? AbpRemoteServiceOptions.RemoteServices.Default?.Version; .GetConfigurationOrDefaultOrNullAsync(clientConfig.RemoteServiceName))?.Version;
} }
private async Task ThrowExceptionForResponseAsync(HttpResponseMessage response) private async Task ThrowExceptionForResponseAsync(HttpResponseMessage response)

14
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/IRemoteServiceConfigurationProvider.cs

@ -0,0 +1,14 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
namespace Volo.Abp.Http.Client
{
public interface IRemoteServiceConfigurationProvider
{
[ItemNotNull]
Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name);
[ItemCanBeNull]
Task<RemoteServiceConfiguration> GetConfigurationOrDefaultOrNullAsync(string name);
}
}

9
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationDictionary.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Http.Client namespace Volo.Abp.Http.Client
{ {
@ -12,11 +13,19 @@ namespace Volo.Abp.Http.Client
set => this[DefaultName] = value; set => this[DefaultName] = value;
} }
[NotNull]
public RemoteServiceConfiguration GetConfigurationOrDefault(string name) public RemoteServiceConfiguration GetConfigurationOrDefault(string name)
{ {
return this.GetOrDefault(name) return this.GetOrDefault(name)
?? Default ?? Default
?? throw new AbpException($"Remote service '{name}' was not found and there is no default configuration."); ?? throw new AbpException($"Remote service '{name}' was not found and there is no default configuration.");
} }
[CanBeNull]
public RemoteServiceConfiguration GetConfigurationOrDefaultOrNull(string name)
{
return this.GetOrDefault(name)
?? Default;
}
} }
} }

26
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProvider.cs

@ -0,0 +1,26 @@
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Http.Client
{
public class RemoteServiceConfigurationProvider : IRemoteServiceConfigurationProvider, IScopedDependency
{
protected AbpRemoteServiceOptions Options { get; }
public RemoteServiceConfigurationProvider(IOptionsSnapshot<AbpRemoteServiceOptions> options)
{
Options = options.Value;
}
public Task<RemoteServiceConfiguration> GetConfigurationOrDefaultAsync(string name)
{
return Task.FromResult(Options.RemoteServices.GetConfigurationOrDefault(name));
}
public Task<RemoteServiceConfiguration> GetConfigurationOrDefaultOrNullAsync(string name)
{
return Task.FromResult(Options.RemoteServices.GetConfigurationOrDefaultOrNull(name));
}
}
}

5
framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs

@ -64,7 +64,10 @@ namespace Volo.Abp.Http.ProxyScripting
using (var scope = _serviceProvider.CreateScope()) using (var scope = _serviceProvider.CreateScope())
{ {
return scope.ServiceProvider.GetRequiredService(generatorType).As<IProxyScriptGenerator>().CreateScript(apiModel); return scope.ServiceProvider
.GetRequiredService(generatorType)
.As<IProxyScriptGenerator>()
.CreateScript(apiModel);
} }
} }

8
framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/it.json

@ -1,15 +1,15 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"DisplayName:Abp.Ldap.ServerHost": "Host del server", "DisplayName:Abp.Ldap.ServerHost": "Server host",
"Description:Abp.Ldap.ServerHost": "Host del server", "Description:Abp.Ldap.ServerHost": "Server host",
"DisplayName:Abp.Ldap.ServerPort": "Porta del server", "DisplayName:Abp.Ldap.ServerPort": "Porta del server",
"Description:Abp.Ldap.ServerPort": "Porta del server", "Description:Abp.Ldap.ServerPort": "Porta del server",
"DisplayName:Abp.Ldap.BaseDc": "Componente del dominio di base", "DisplayName:Abp.Ldap.BaseDc": "Componente del dominio di base",
"Description:Abp.Ldap.BaseDc": "Componente del dominio di base", "Description:Abp.Ldap.BaseDc": "Componente del dominio di base",
"DisplayName:Abp.Ldap.UserName": "Nome utente", "DisplayName:Abp.Ldap.UserName": "Nome utente",
"Description:Abp.Ldap.UserName": "Nome utente", "Description:Abp.Ldap.UserName": "Nome utente",
"DisplayName:Abp.Ldap.Password": "Parola d'ordine", "DisplayName:Abp.Ldap.Password": "Password",
"Description:Abp.Ldap.Password": "Parola d'ordine" "Description:Abp.Ldap.Password": "Password"
} }
} }

2
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json

@ -17,7 +17,7 @@
"Refresh": "virkistää", "Refresh": "virkistää",
"Language": "Kieli", "Language": "Kieli",
"LoadMore": "Lataa lisää", "LoadMore": "Lataa lisää",
"ProcessingWithThreeDot": "Käsitellään ...", "ProcessingWithThreeDot": "Käsitellään...",
"LoadingWithThreeDot": "Ladataan...", "LoadingWithThreeDot": "Ladataan...",
"Welcome": "Tervetuloa", "Welcome": "Tervetuloa",
"Login": "Kirjaudu sisään", "Login": "Kirjaudu sisään",

4
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json

@ -10,14 +10,14 @@
"Ok": "ठीक है", "Ok": "ठीक है",
"Close": "बंद करे", "Close": "बंद करे",
"Save": "सहेजें", "Save": "सहेजें",
"SavingWithThreeDot": "सहेजा जा रहा है ...", "SavingWithThreeDot": "सहेजा जा रहा है...",
"Actions": "कार्रवाई", "Actions": "कार्रवाई",
"Delete": "हटाएं", "Delete": "हटाएं",
"Edit": "संपादित करें", "Edit": "संपादित करें",
"Refresh": "ताज़ा करना", "Refresh": "ताज़ा करना",
"Language": "भाषा: हिन्दी", "Language": "भाषा: हिन्दी",
"LoadMore": "और लोड करें", "LoadMore": "और लोड करें",
"ProcessingWithThreeDot": "प्रसंस्करण ...", "ProcessingWithThreeDot": "प्रसंस्करण...",
"LoadingWithThreeDot": "लोड हो रहा है...", "LoadingWithThreeDot": "लोड हो रहा है...",
"Welcome": "स्वागत हे", "Welcome": "स्वागत हे",
"Login": "लॉग इन करें", "Login": "लॉग इन करें",

34
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json

@ -1,42 +1,42 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"Languages": "Le lingue", "Languages": "Linguaggi",
"AreYouSure": "Sei sicuro?", "AreYouSure": "Sei sicuro?",
"Cancel": "Annulla", "Cancel": "Annulla",
"Clear": "Chiaro", "Clear": "Pulisci",
"Yes": "sì", "Yes": "Sì",
"No": "No", "No": "No",
"Ok": "Ok", "Ok": "Ok",
"Close": "Vicino", "Close": "Chiudi",
"Save": "Salva", "Save": "Salva",
"SavingWithThreeDot": "Salvataggio...", "SavingWithThreeDot": "Salvataggio...",
"Actions": "Azioni", "Actions": "Azioni",
"Delete": "Elimina", "Delete": "Elimina",
"Edit": "modificare", "Edit": "Modifica",
"Refresh": "ricaricare", "Refresh": "Ricarica",
"Language": "linguaggio", "Language": "Lingua",
"LoadMore": "Carica di più", "LoadMore": "Carica altro",
"ProcessingWithThreeDot": "In lavorazione...", "ProcessingWithThreeDot": "In lavorazione...",
"LoadingWithThreeDot": "Caricamento in corso...", "LoadingWithThreeDot": "Caricamento in corso...",
"Welcome": "benvenuto", "Welcome": "Benvenuto",
"Login": "Login", "Login": "Accedi",
"Register": "Registrati", "Register": "Registrati",
"Logout": "Disconnettersi", "Logout": "Disconnettiti",
"Submit": "Invia", "Submit": "Invia",
"Back": "Indietro", "Back": "Indietro",
"PagerSearch": "Ricerca", "PagerSearch": "Ricerca",
"PagerNext": "Il prossimo", "PagerNext": "Successivo",
"PagerPrevious": "Precedente", "PagerPrevious": "Precedente",
"PagerFirst": "Primo", "PagerFirst": "Primo",
"PagerLast": "Scorso", "PagerLast": "Ultimo",
"PagerInfo": "Visualizzazione da _START_ a _END_ di _TOTAL_ voci", "PagerInfo": "Visualizzazione da _START_ a _END_ di _TOTAL_ voci",
"PagerInfo{0}{1}{2}": "Visualizzazione da {0} a {1} di {2} voci", "PagerInfo{0}{1}{2}": "Visualizzazione da {0} a {1} di {2} voci",
"PagerInfoEmpty": "Mostra da 0 a 0 di 0 voci", "PagerInfoEmpty": "Mostra da 0 a 0 di 0 voci",
"PagerInfoFiltered": "(filtrato da _MAX_ voci totali)", "PagerInfoFiltered": "(filtrato da _MAX_ voci totali)",
"NoDataAvailableInDatatable": "Nessun dato disponibile", "NoDataAvailableInDatatable": "Nessun dato disponibile",
"Total": "totale", "Total": "Totale",
"Selected": "selezionato", "Selected": "Selezionato",
"PagerShowMenuEntries": "Mostra voci _MENU_", "PagerShowMenuEntries": "Mostra voci _MENU_",
"DatatableActionDropdownDefaultText": "Azioni", "DatatableActionDropdownDefaultText": "Azioni",
"ChangePassword": "Cambia la password", "ChangePassword": "Cambia la password",
@ -46,7 +46,7 @@
"GoBack": "Torna indietro", "GoBack": "Torna indietro",
"Search": "Ricerca", "Search": "Ricerca",
"ItemWillBeDeletedMessageWithFormat": "{0} verrà eliminato!", "ItemWillBeDeletedMessageWithFormat": "{0} verrà eliminato!",
"ItemWillBeDeletedMessage": "Questo articolo sarà eliminato!", "ItemWillBeDeletedMessage": "Questo elemento sarà eliminato!",
"ManageYourAccount": "Gestire il tuo account" "ManageYourAccount": "Gestisci il tuo account"
} }
} }

12
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/it.json

@ -1,13 +1,13 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"'{0}' and '{1}' do not match.": "\"{0}\" e \"{1}\" non corrispondono.", "'{0}' and '{1}' do not match.": "'{0}' e '{1}' non corrispondono.",
"The {0} field is not a valid credit card number.": "Il campo {0} non è un numero di carta di credito valido.", "The {0} field is not a valid credit card number.": "Il campo {0} non è un numero di carta di credito valido.",
"{0} is not valid.": "{0} non è valido.", "{0} is not valid.": "{0} non è valido.",
"The {0} field is not a valid e-mail address.": "Il campo {0} non è un indirizzo e-mail valido.", "The {0} field is not a valid e-mail address.": "Il campo {0} non è un indirizzo e-mail valido.",
"The {0} field only accepts files with the following extensions: {1}": "Il campo {0} accetta solo file con le seguenti estensioni: {1}", "The {0} field only accepts files with the following extensions: {1}": "Il campo {0} accetta solo file con le seguenti estensioni: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "Il campo {0} deve essere una stringa o un tipo di matrice con una lunghezza massima di \"{1}\".", "The field {0} must be a string or array type with a maximum length of '{1}'.": "Il campo {0} deve essere una stringa o un tipo di matrice con una lunghezza massima di '{1}'.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "Il campo {0} deve essere una stringa o un tipo di matrice con una lunghezza minima di \"{1}\".", "The field {0} must be a string or array type with a minimum length of '{1}'.": "Il campo {0} deve essere una stringa o un tipo di matrice con una lunghezza minima di '{1}'.",
"The {0} field is not a valid phone number.": "Il campo {0} non è un numero di telefono valido.", "The {0} field is not a valid phone number.": "Il campo {0} non è un numero di telefono valido.",
"The field {0} must be between {1} and {2}.": "Il campo {0} deve essere compreso tra {1} e {2}.", "The field {0} must be between {1} and {2}.": "Il campo {0} deve essere compreso tra {1} e {2}.",
"The field {0} must match the regular expression '{1}'.": "Il campo {0} non corrisponde al formato richiesto.", "The field {0} must match the regular expression '{1}'.": "Il campo {0} non corrisponde al formato richiesto.",
@ -20,11 +20,11 @@
"ThisFieldIsNotValid.": "Questo campo non è valido.", "ThisFieldIsNotValid.": "Questo campo non è valido.",
"ThisFieldIsNotAValidEmailAddress.": "Questo campo non è un indirizzo e-mail valido.", "ThisFieldIsNotAValidEmailAddress.": "Questo campo non è un indirizzo e-mail valido.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Questo campo accetta solo file con le seguenti estensioni: {0}", "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Questo campo accetta solo file con le seguenti estensioni: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Questo campo deve essere un tipo stringa o matrice con una lunghezza massima di \"{0}\".", "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Questo campo deve essere un tipo stringa o matrice con una lunghezza massima di '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Questo campo deve essere una stringa o un tipo di matrice con una lunghezza minima di \"{0}\".", "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Questo campo deve essere una stringa o un tipo di matrice con una lunghezza minima di '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "Questo campo non è un numero di telefono valido.", "ThisFieldIsNotAValidPhoneNumber.": "Questo campo non è un numero di telefono valido.",
"ThisFieldMustBeBetween{0}And{1}": "Questo campo deve essere compreso tra {0} e {1}.", "ThisFieldMustBeBetween{0}And{1}": "Questo campo deve essere compreso tra {0} e {1}.",
"ThisFieldMustMatchTheRegularExpression{0}": "Questo campo deve corrispondere all'espressione regolare \"{0}\".", "ThisFieldMustMatchTheRegularExpression{0}": "Questo campo deve corrispondere all'espressione regolare '{0}'.",
"ThisFieldIsRequired.": "Questo campo è obbligatorio.", "ThisFieldIsRequired.": "Questo campo è obbligatorio.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Questo campo deve essere una stringa con una lunghezza massima di {0}.", "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Questo campo deve essere una stringa con una lunghezza massima di {0}.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Questo campo deve essere una stringa con una lunghezza minima di {1} e una lunghezza massima di {0}.", "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Questo campo deve essere una stringa con una lunghezza minima di {1} e una lunghezza massima di {0}.",

2
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/it.json

@ -2,6 +2,6 @@
"culture": "it", "culture": "it",
"texts": { "texts": {
"BirthDate": "Data di nascita", "BirthDate": "Data di nascita",
"Value1": "Valore uno" "Value1": "Valore Uno"
} }
} }

2
framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/it.json

@ -1,6 +1,6 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"Volo.Abp.Http.DynamicProxying:10001": "Eccezione aziendale con dati: {0}" "Volo.Abp.Http.DynamicProxying:10001": "Business exception con dati: {0}"
} }
} }

2
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/it.json

@ -2,6 +2,6 @@
"culture": "it", "culture": "it",
"texts": { "texts": {
"ThisFieldIsRequired": "Questo campo è obbligatorio", "ThisFieldIsRequired": "Questo campo è obbligatorio",
"MaxLenghtErrorMessage": "Questo campo può contenere un massimo di caratteri \"{0}\"" "MaxLenghtErrorMessage": "Questo campo può contenere un massimo di caratteri '{0}'"
} }
} }

2
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/hi.json

@ -1,7 +1,7 @@
{ {
"culture": "hi", "culture": "hi",
"texts": { "texts": {
"Hello <b>{0}</b>.": "नमस्ते <b> {0} </ b>।", "Hello <b>{0}</b>.": "नमस्ते <b> {0} </b>।",
"Car": "गाड़ी", "Car": "गाड़ी",
"CarPlural": "कारों", "CarPlural": "कारों",
"MaxLenghtErrorMessage": "इस क्षेत्र की लंबाई अधिकतम '{0}' वर्ण हो सकती है", "MaxLenghtErrorMessage": "इस क्षेत्र की लंबाई अधिकतम '{0}' वर्ण हो सकती है",

4
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/it.json

@ -1,10 +1,10 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"Hello <b>{0}</b>.": "Salve <b> {0} </b>.", "Hello <b>{0}</b>.": "Salve <b>{0}</b>.",
"Car": "Auto", "Car": "Auto",
"CarPlural": "Automobili", "CarPlural": "Automobili",
"MaxLenghtErrorMessage": "La lunghezza di questo campo può essere al massimo di caratteri \"{0}\"", "MaxLenghtErrorMessage": "La lunghezza di questo campo può essere al massimo di caratteri '{0}'",
"Universe": "Universo", "Universe": "Universo",
"FortyTwo": "Quarantadue" "FortyTwo": "Quarantadue"
} }

2
modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/it.json

@ -28,7 +28,7 @@
"DisplayName:Email": "E-mail", "DisplayName:Email": "E-mail",
"DisplayName:Name": "Nome", "DisplayName:Name": "Nome",
"DisplayName:Surname": "Cognome", "DisplayName:Surname": "Cognome",
"DisplayName:Password": "Parola d'ordine", "DisplayName:Password": "Password",
"DisplayName:EmailAddress": "Indirizzo e-mail", "DisplayName:EmailAddress": "Indirizzo e-mail",
"DisplayName:PhoneNumber": "Numero di telefono", "DisplayName:PhoneNumber": "Numero di telefono",
"PersonalSettings": "Impostazioni personali", "PersonalSettings": "Impostazioni personali",

14
modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/it.json

@ -4,8 +4,8 @@
"Menu:Blogs": "Blog", "Menu:Blogs": "Blog",
"Menu:BlogManagement": "Blogging", "Menu:BlogManagement": "Blogging",
"Permission:Management": "Gestione", "Permission:Management": "Gestione",
"Permission:Edit": "modificare", "Permission:Edit": "Modifica",
"Permission:Create": "Creare", "Permission:Create": "Crea",
"Permission:Delete": "Elimina", "Permission:Delete": "Elimina",
"Permission:Blogging": "Blog", "Permission:Blogging": "Blog",
"Permission:Blogs": "Blog", "Permission:Blogs": "Blog",
@ -15,7 +15,7 @@
"Permission:ClearCache": "Cancella cache", "Permission:ClearCache": "Cancella cache",
"Title": "Titolo", "Title": "Titolo",
"Delete": "Elimina", "Delete": "Elimina",
"Reply": "rispondere", "Reply": "Rispondi",
"ReplyTo": "Rispondi a {0}", "ReplyTo": "Rispondi a {0}",
"ContinueReading": "Continua a leggere", "ContinueReading": "Continua a leggere",
"DaysAgo": "{0} giorni fa", "DaysAgo": "{0} giorni fa",
@ -26,7 +26,7 @@
"SecondsAgo": "{0} secondi fa", "SecondsAgo": "{0} secondi fa",
"HoursAgo": "{0} ore fa", "HoursAgo": "{0} ore fa",
"Now": "adesso", "Now": "adesso",
"Content": "Soddisfare", "Content": "Contenuto",
"SeeAll": "Vedi tutto", "SeeAll": "Vedi tutto",
"PopularTags": "Tag popolari", "PopularTags": "Tag popolari",
"WiewsWithCount": "{0} visualizzazioni", "WiewsWithCount": "{0} visualizzazioni",
@ -34,7 +34,7 @@
"LeaveComment": "Lascia un commento", "LeaveComment": "Lascia un commento",
"TagsInThisArticle": "Tag in questo articolo", "TagsInThisArticle": "Tag in questo articolo",
"Posts": "Messaggi", "Posts": "Messaggi",
"Edit": "modificare", "Edit": "Modifica",
"BLOG": "BLOG", "BLOG": "BLOG",
"CommentDeletionWarningMessage": "Il commento verrà eliminato.", "CommentDeletionWarningMessage": "Il commento verrà eliminato.",
"PostDeletionWarningMessage": "Il post verrà eliminato.", "PostDeletionWarningMessage": "Il post verrà eliminato.",
@ -48,8 +48,8 @@
"CreateANewBlog": "Crea un nuovo blog", "CreateANewBlog": "Crea un nuovo blog",
"WhatIsNew": "Cosa c'è di nuovo?", "WhatIsNew": "Cosa c'è di nuovo?",
"Name": "Nome", "Name": "Nome",
"ShortName": "Nome corto", "ShortName": "Nome abbreviato",
"CreationTime": "Tempo di creazione", "CreationTime": "Orario di creazione",
"Description": "Descrizione", "Description": "Descrizione",
"Blogs": "Blog", "Blogs": "Blog",
"Tags": "Tag", "Tags": "Tag",

90
modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20210614072230_Initial.Designer.cs → modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20210622142314_Initial.Designer.cs

@ -11,7 +11,7 @@ using Volo.CmsKit.EntityFrameworkCore;
namespace Volo.CmsKit.Migrations namespace Volo.CmsKit.Migrations
{ {
[DbContext(typeof(UnifiedDbContext))] [DbContext(typeof(UnifiedDbContext))]
[Migration("20210614072230_Initial")] [Migration("20210622142314_Initial")]
partial class Initial partial class Initial
{ {
protected override void BuildTargetModel(ModelBuilder modelBuilder) protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -71,9 +71,7 @@ namespace Volo.CmsKit.Migrations
.HasColumnName("CorrelationId"); .HasColumnName("CorrelationId");
b.Property<string>("Exceptions") b.Property<string>("Exceptions")
.HasMaxLength(4000) .HasColumnType("nvarchar(max)");
.HasColumnType("nvarchar(4000)")
.HasColumnName("Exceptions");
b.Property<int>("ExecutionDuration") b.Property<int>("ExecutionDuration")
.HasColumnType("int") .HasColumnType("int")
@ -1458,7 +1456,7 @@ namespace Volo.CmsKit.Migrations
b.ToTable("CmsMediaDescriptors"); b.ToTable("CmsMediaDescriptors");
}); });
modelBuilder.Entity("Volo.CmsKit.Menus.Menu", b => modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -1478,61 +1476,6 @@ namespace Volo.CmsKit.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId"); .HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("ExtraProperties")
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<bool>("IsMainMenu")
.HasColumnType("bit");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.HasColumnType("nvarchar(max)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("CmsMenus");
});
modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<string>("CssClass") b.Property<string>("CssClass")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
@ -1544,6 +1487,10 @@ namespace Volo.CmsKit.Migrations
b.Property<string>("ElementId") b.Property<string>("ElementId")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<string>("ExtraProperties")
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<string>("Icon") b.Property<string>("Icon")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
@ -1558,9 +1505,6 @@ namespace Volo.CmsKit.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<Guid>("MenuId")
.HasColumnType("uniqueidentifier");
b.Property<int>("Order") b.Property<int>("Order")
.HasColumnType("int"); .HasColumnType("int");
@ -1573,6 +1517,10 @@ namespace Volo.CmsKit.Migrations
b.Property<string>("Target") b.Property<string>("Target")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("Url") b.Property<string>("Url")
.IsRequired() .IsRequired()
.HasMaxLength(1024) .HasMaxLength(1024)
@ -1580,8 +1528,6 @@ namespace Volo.CmsKit.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.HasIndex("MenuId");
b.ToTable("CmsMenuItems"); b.ToTable("CmsMenuItems");
}); });
@ -2039,15 +1985,6 @@ namespace Volo.CmsKit.Migrations
b.Navigation("Author"); b.Navigation("Author");
}); });
modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b =>
{
b.HasOne("Volo.CmsKit.Menus.Menu", null)
.WithMany("Items")
.HasForeignKey("MenuId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
{ {
b.Navigation("Actions"); b.Navigation("Actions");
@ -2087,11 +2024,6 @@ namespace Volo.CmsKit.Migrations
{ {
b.Navigation("ConnectionStrings"); b.Navigation("ConnectionStrings");
}); });
modelBuilder.Entity("Volo.CmsKit.Menus.Menu", b =>
{
b.Navigation("Items");
});
#pragma warning restore 612, 618 #pragma warning restore 612, 618
} }
} }

63
modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20210614072230_Initial.cs → modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/20210622142314_Initial.cs

@ -28,7 +28,7 @@ namespace Volo.CmsKit.Migrations
BrowserInfo = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true), BrowserInfo = table.Column<string>(type: "nvarchar(512)", maxLength: 512, nullable: true),
HttpMethod = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true), HttpMethod = table.Column<string>(type: "nvarchar(16)", maxLength: 16, nullable: true),
Url = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true), Url = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
Exceptions = table.Column<string>(type: "nvarchar(4000)", maxLength: 4000, nullable: true), Exceptions = table.Column<string>(type: "nvarchar(max)", nullable: true),
Comments = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true), Comments = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
HttpStatusCode = table.Column<int>(type: "int", nullable: true), HttpStatusCode = table.Column<int>(type: "int", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
@ -369,26 +369,31 @@ namespace Volo.CmsKit.Migrations
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "CmsMenus", name: "CmsMenuItems",
columns: table => new columns: table => new
{ {
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(max)", nullable: true), ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsMainMenu = table.Column<bool>(type: "bit", nullable: false), DisplayName = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
Url = table.Column<string>(type: "nvarchar(1024)", maxLength: 1024, nullable: false),
Icon = table.Column<string>(type: "nvarchar(max)", nullable: true),
Order = table.Column<int>(type: "int", nullable: false),
Target = table.Column<string>(type: "nvarchar(max)", nullable: true),
ElementId = table.Column<string>(type: "nvarchar(max)", nullable: true),
CssClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
PageId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_CmsMenus", x => x.Id); table.PrimaryKey("PK_CmsMenuItems", x => x.Id);
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
@ -750,38 +755,6 @@ namespace Volo.CmsKit.Migrations
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable(
name: "CmsMenuItems",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MenuId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DisplayName = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false),
Url = table.Column<string>(type: "nvarchar(1024)", maxLength: 1024, nullable: false),
Icon = table.Column<string>(type: "nvarchar(max)", nullable: true),
Order = table.Column<int>(type: "int", nullable: false),
Target = table.Column<string>(type: "nvarchar(max)", nullable: true),
ElementId = table.Column<string>(type: "nvarchar(max)", nullable: true),
CssClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
PageId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_CmsMenuItems", x => x.Id);
table.ForeignKey(
name: "FK_CmsMenuItems_CmsMenus_MenuId",
column: x => x.MenuId,
principalTable: "CmsMenus",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "CmsBlogPosts", name: "CmsBlogPosts",
columns: table => new columns: table => new
@ -1026,11 +999,6 @@ namespace Volo.CmsKit.Migrations
table: "CmsEntityTags", table: "CmsEntityTags",
columns: new[] { "TenantId", "EntityId", "TagId" }); columns: new[] { "TenantId", "EntityId", "TagId" });
migrationBuilder.CreateIndex(
name: "IX_CmsMenuItems_MenuId",
table: "CmsMenuItems",
column: "MenuId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_CmsPages_TenantId_Slug", name: "IX_CmsPages_TenantId_Slug",
table: "CmsPages", table: "CmsPages",
@ -1174,9 +1142,6 @@ namespace Volo.CmsKit.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "CmsUsers"); name: "CmsUsers");
migrationBuilder.DropTable(
name: "CmsMenus");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "AbpAuditLogs"); name: "AbpAuditLogs");
} }

88
modules/cms-kit/host/Volo.CmsKit.Web.Unified/Migrations/UnifiedDbContextModelSnapshot.cs

@ -69,9 +69,7 @@ namespace Volo.CmsKit.Migrations
.HasColumnName("CorrelationId"); .HasColumnName("CorrelationId");
b.Property<string>("Exceptions") b.Property<string>("Exceptions")
.HasMaxLength(4000) .HasColumnType("nvarchar(max)");
.HasColumnType("nvarchar(4000)")
.HasColumnName("Exceptions");
b.Property<int>("ExecutionDuration") b.Property<int>("ExecutionDuration")
.HasColumnType("int") .HasColumnType("int")
@ -1456,7 +1454,7 @@ namespace Volo.CmsKit.Migrations
b.ToTable("CmsMediaDescriptors"); b.ToTable("CmsMediaDescriptors");
}); });
modelBuilder.Entity("Volo.CmsKit.Menus.Menu", b => modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@ -1476,61 +1474,6 @@ namespace Volo.CmsKit.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId"); .HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("ExtraProperties")
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<bool>("IsMainMenu")
.HasColumnType("bit");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.HasColumnType("nvarchar(max)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("CmsMenus");
});
modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<string>("CssClass") b.Property<string>("CssClass")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
@ -1542,6 +1485,10 @@ namespace Volo.CmsKit.Migrations
b.Property<string>("ElementId") b.Property<string>("ElementId")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<string>("ExtraProperties")
.HasColumnType("nvarchar(max)")
.HasColumnName("ExtraProperties");
b.Property<string>("Icon") b.Property<string>("Icon")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
@ -1556,9 +1503,6 @@ namespace Volo.CmsKit.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId"); .HasColumnName("LastModifierId");
b.Property<Guid>("MenuId")
.HasColumnType("uniqueidentifier");
b.Property<int>("Order") b.Property<int>("Order")
.HasColumnType("int"); .HasColumnType("int");
@ -1571,6 +1515,10 @@ namespace Volo.CmsKit.Migrations
b.Property<string>("Target") b.Property<string>("Target")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.Property<string>("Url") b.Property<string>("Url")
.IsRequired() .IsRequired()
.HasMaxLength(1024) .HasMaxLength(1024)
@ -1578,8 +1526,6 @@ namespace Volo.CmsKit.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.HasIndex("MenuId");
b.ToTable("CmsMenuItems"); b.ToTable("CmsMenuItems");
}); });
@ -2037,15 +1983,6 @@ namespace Volo.CmsKit.Migrations
b.Navigation("Author"); b.Navigation("Author");
}); });
modelBuilder.Entity("Volo.CmsKit.Menus.MenuItem", b =>
{
b.HasOne("Volo.CmsKit.Menus.Menu", null)
.WithMany("Items")
.HasForeignKey("MenuId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b =>
{ {
b.Navigation("Actions"); b.Navigation("Actions");
@ -2085,11 +2022,6 @@ namespace Volo.CmsKit.Migrations
{ {
b.Navigation("ConnectionStrings"); b.Navigation("ConnectionStrings");
}); });
modelBuilder.Entity("Volo.CmsKit.Menus.Menu", b =>
{
b.Navigation("Items");
});
#pragma warning restore 612, 618 #pragma warning restore 612, 618
} }
} }

36
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs

@ -1,36 +0,0 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.CmsKit.Menus;
namespace Volo.CmsKit.Admin.Menus
{
public interface IMenuAdminAppService : IApplicationService
{
Task<PagedResultDto<MenuWithDetailsDto>> GetListAsync(PagedAndSortedResultRequestDto input);
Task<MenuWithDetailsDto> GetAsync(Guid id);
Task<MenuWithDetailsDto> CreateAsync(MenuCreateInput input);
Task<MenuWithDetailsDto> UpdateAsync(Guid menuId, MenuUpdateInput input);
Task DeleteAsync(Guid menuId);
Task<MenuItemDto> GetMenuItemAsync(Guid menuId, Guid menuItemId);
Task<MenuItemDto> CreateMenuItemAsync(Guid menuId, MenuItemCreateInput input);
Task<MenuItemDto> UpdateMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemUpdateInput input);
Task DeleteMenuItemAsync(Guid menuId, Guid menuItemId);
Task MoveMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemMoveInput input);
Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input);
Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync(PageLookupInputDto input);
}
}

25
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuItemAdminAppService.cs

@ -0,0 +1,25 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.CmsKit.Menus;
namespace Volo.CmsKit.Admin.Menus
{
public interface IMenuItemAdminAppService : IApplicationService
{
Task<ListResultDto<MenuItemDto>> GetListAsync();
Task<MenuItemDto> GetAsync(Guid id);
Task<MenuItemDto> CreateAsync(MenuItemCreateInput input);
Task<MenuItemDto> UpdateAsync(Guid id, MenuItemUpdateInput input);
Task DeleteAsync(Guid id);
Task MoveMenuItemAsync(Guid id, MenuItemMoveInput input);
Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync(PageLookupInputDto input);
}
}

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs

@ -6,8 +6,6 @@ namespace Volo.CmsKit.Admin.Menus
[Serializable] [Serializable]
public class MenuItemCreateInput public class MenuItemCreateInput
{ {
public Guid MenuId { get; set; }
public Guid? ParentId { get; set; } public Guid? ParentId { get; set; }
[Required] [Required]

1
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs

@ -43,7 +43,6 @@ namespace Volo.CmsKit.Admin
CreateMap<MediaDescriptor, MediaDescriptorDto>(); CreateMap<MediaDescriptor, MediaDescriptorDto>();
CreateMap<Menu, MenuWithDetailsDto>();
CreateMap<MenuItem, MenuItemDto>(); CreateMap<MenuItem, MenuItemDto>();
} }
} }

207
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs

@ -1,207 +0,0 @@
using Microsoft.AspNetCore.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Permissions;
namespace Volo.CmsKit.Admin.Menus
{
[RequiresGlobalFeature(typeof(MenuFeature))]
[Authorize(CmsKitAdminPermissions.Menus.Default)]
public class MenuAdminAppService : CmsKitAdminAppServiceBase, IMenuAdminAppService
{
protected MenuManager MenuManager { get; }
protected IMenuRepository MenuRepository { get; }
protected IPageRepository PageRepository { get; }
public MenuAdminAppService(
MenuManager menuManager,
IMenuRepository menuRepository,
IPageRepository pageRepository)
{
MenuManager = menuManager;
MenuRepository = menuRepository;
PageRepository = pageRepository;
}
public async Task<PagedResultDto<MenuWithDetailsDto>> GetListAsync(PagedAndSortedResultRequestDto input)
{
var menus = await MenuRepository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, input.Sorting);
return new PagedResultDto<MenuWithDetailsDto>(
await MenuRepository.GetCountAsync(),
ObjectMapper.Map<List<Menu>, List<MenuWithDetailsDto>>(menus)
);
}
public async Task<MenuWithDetailsDto> GetAsync(Guid id)
{
var menu = await MenuRepository.GetAsync(id, includeDetails: true);
return ObjectMapper.Map<Menu, MenuWithDetailsDto>(menu);
}
public async Task<MenuWithDetailsDto> GetSimpleAsync(Guid id)
{
var menu = await MenuRepository.GetAsync(id, includeDetails: false);
return ObjectMapper.Map<Menu, MenuWithDetailsDto>(menu);
}
[Authorize(CmsKitAdminPermissions.Menus.Create)]
public async Task<MenuWithDetailsDto> CreateAsync(MenuCreateInput input)
{
var menu = await MenuManager.CreateAsync(CurrentTenant.Id, input.Name);
await MenuRepository.InsertAsync(menu);
return ObjectMapper.Map<Menu, MenuWithDetailsDto>(menu);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public async Task<MenuWithDetailsDto> UpdateAsync(Guid menuId, MenuUpdateInput input)
{
var menu = await MenuRepository.GetAsync(menuId);
menu.SetName(input.Name);
await MenuRepository.UpdateAsync(menu);
return ObjectMapper.Map<Menu, MenuWithDetailsDto>(menu);
}
[Authorize(CmsKitAdminPermissions.Menus.Delete)]
public virtual Task DeleteAsync(Guid menuId)
{
return MenuRepository.DeleteAsync(menuId);
}
public async Task<MenuItemDto> GetMenuItemAsync(Guid menuId, Guid menuItemId)
{
var menu = await MenuRepository.GetAsync(menuId);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId)
?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual async Task<MenuItemDto> CreateMenuItemAsync(Guid menuId, MenuItemCreateInput input)
{
var menu = await MenuRepository.GetAsync(menuId, includeDetails: true);
var menuItem =
new MenuItem(
GuidGenerator.Create(),
menuId,
input.DisplayName,
input.Url.IsNullOrEmpty() ? "#" : input.Url,
input.IsActive,
input.ParentId,
input.Icon,
input.Order,
input.Target,
input.ElementId,
input.CssClass);
if (input.PageId.HasValue)
{
var page = await PageRepository.GetAsync(input.PageId.Value);
MenuManager.SetPageUrl(menuItem, page);
}
menu.Items.Add(menuItem);
MenuManager.OrganizeTreeOrderForMenuItem(menu, menuItem);
await MenuRepository.UpdateAsync(menu);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual async Task<MenuItemDto> UpdateMenuItemAsync(Guid menuId, Guid menuItemId,
MenuItemUpdateInput input)
{
var menu = await MenuRepository.GetAsync(menuId, includeDetails: true);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId)
?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId);
if (input.PageId.HasValue)
{
MenuManager.SetPageUrl(menuItem, await PageRepository.GetAsync(input.PageId.Value));
}
else
{
menuItem.SetUrl(input.Url);
}
menuItem.SetDisplayName(input.DisplayName);
menuItem.IsActive = input.IsActive;
menuItem.Icon = input.Icon;
menuItem.Target = input.Target;
menuItem.ElementId = input.ElementId;
menuItem.CssClass = input.CssClass;
await MenuRepository.UpdateAsync(menu);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual async Task DeleteMenuItemAsync(Guid menuId, Guid menuItemId)
{
var menu = await MenuRepository.GetAsync(menuId, includeDetails: true);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId)
?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId);
menu.Items.Remove(menuItem);
await MenuRepository.UpdateAsync(menu);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual Task MoveMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemMoveInput input)
{
return MenuManager.MoveAsync(menuId, menuItemId, input.NewParentId, input.Position);
}
public virtual async Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input)
{
if (input.IsMainMenu)
{
await MenuManager.SetMainMenuAsync(menuId);
}
else
{
await MenuManager.UnSetMainMenuAsync(menuId);
}
}
public virtual async Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync(PageLookupInputDto input)
{
var count = await PageRepository.GetCountAsync(input.Filter);
var pages = await PageRepository.GetListAsync(
input.Filter,
input.MaxResultCount,
input.SkipCount,
input.Sorting
);
return new PagedResultDto<PageLookupDto>(
count,
ObjectMapper.Map<List<Page>, List<PageLookupDto>>(pages)
);
}
}
}

125
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs

@ -0,0 +1,125 @@
using Microsoft.AspNetCore.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Permissions;
namespace Volo.CmsKit.Admin.Menus
{
[RequiresGlobalFeature(typeof(MenuFeature))]
[Authorize(CmsKitAdminPermissions.Menus.Default)]
public class MenuItemAdminAppService : CmsKitAdminAppServiceBase, IMenuItemAdminAppService
{
protected MenuItemManager MenuManager { get; }
protected IMenuItemRepository MenuItemRepository { get; }
protected IPageRepository PageRepository { get; }
public MenuItemAdminAppService(
MenuItemManager menuManager,
IMenuItemRepository menuRepository,
IPageRepository pageRepository)
{
MenuManager = menuManager;
MenuItemRepository = menuRepository;
PageRepository = pageRepository;
}
public virtual async Task<ListResultDto<MenuItemDto>> GetListAsync()
{
var menuItems = await MenuItemRepository.GetListAsync();
return new ListResultDto<MenuItemDto>(
ObjectMapper.Map<List<MenuItem>, List<MenuItemDto>>(menuItems)
);
}
public virtual async Task<MenuItemDto> GetAsync(Guid id)
{
var menu = await MenuItemRepository.GetAsync(id);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menu);
}
[Authorize(CmsKitAdminPermissions.Menus.Create)]
public virtual async Task<MenuItemDto> CreateAsync(MenuItemCreateInput input)
{
var menuItem = new MenuItem(
GuidGenerator.Create(),
input.DisplayName,
input.Url.IsNullOrEmpty() ? "#" : input.Url,
input.IsActive,
input.ParentId,
input.Icon,
input.Order,
input.Target,
input.ElementId,
input.CssClass
);
await MenuItemRepository.InsertAsync(menuItem);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual async Task<MenuItemDto> UpdateAsync(Guid id, MenuItemUpdateInput input)
{
var menuItem = await MenuItemRepository.GetAsync(id);
if (input.PageId.HasValue)
{
MenuManager.SetPageUrl(menuItem, await PageRepository.GetAsync(input.PageId.Value));
}
else
{
menuItem.SetUrl(input.Url);
}
menuItem.SetDisplayName(input.DisplayName);
menuItem.IsActive = input.IsActive;
menuItem.Icon = input.Icon;
menuItem.Target = input.Target;
menuItem.ElementId = input.ElementId;
menuItem.CssClass = input.CssClass;
await MenuItemRepository.UpdateAsync(menuItem);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
}
[Authorize(CmsKitAdminPermissions.Menus.Delete)]
public virtual Task DeleteAsync(Guid id)
{
return MenuItemRepository.DeleteAsync(id);
}
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual Task MoveMenuItemAsync(Guid id, MenuItemMoveInput input)
{
return MenuManager.MoveAsync(id, input.NewParentId, input.Position);
}
public virtual async Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync(PageLookupInputDto input)
{
var count = await PageRepository.GetCountAsync(input.Filter);
var pages = await PageRepository.GetListAsync(
input.Filter,
input.MaxResultCount,
input.SkipCount,
input.Sorting
);
return new PagedResultDto<PageLookupDto>(
count,
ObjectMapper.Map<List<Page>, List<PageLookupDto>>(pages)
);
}
}
}

123
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs

@ -1,123 +0,0 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.UI.Navigation;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Permissions;
namespace Volo.CmsKit.Admin.Menus
{
[RequiresGlobalFeature(typeof(MenuFeature))]
[RemoteService(Name = CmsKitAdminRemoteServiceConsts.RemoteServiceName)]
[Area("cms-kit")]
[Authorize(CmsKitAdminPermissions.Menus.Default)]
[Route("api/cms-kit-admin/menus")]
public class MenuAdminController : CmsKitAdminController, IMenuAdminAppService
{
protected IMenuAdminAppService MenuAdminAppService { get; }
public MenuAdminController(IMenuAdminAppService menuAdminAppService)
{
MenuAdminAppService = menuAdminAppService;
}
[HttpPost]
[Authorize(CmsKitAdminPermissions.Menus.Create)]
public Task<MenuWithDetailsDto> CreateAsync(MenuCreateInput input)
{
return MenuAdminAppService.CreateAsync(input);
}
[Route("{menuId}/menu-items/{menuItemId}")]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
[HttpGet]
public Task<MenuItemDto> GetMenuItemAsync(Guid menuId, Guid menuItemId)
{
return MenuAdminAppService.GetMenuItemAsync(menuId, menuItemId);
}
[Route("{menuId}/menu-items")]
[HttpPost]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public Task<MenuItemDto> CreateMenuItemAsync(Guid menuId, MenuItemCreateInput input)
{
return MenuAdminAppService.CreateMenuItemAsync(menuId, input);
}
[Route("{menuId}")]
[HttpDelete]
[Authorize(CmsKitAdminPermissions.Menus.Delete)]
public Task DeleteAsync(Guid menuId)
{
return MenuAdminAppService.DeleteAsync(menuId);
}
[Route("{menuId}/menu-items/{menuItemId}")]
[HttpDelete]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public Task DeleteMenuItemAsync(Guid menuId, Guid menuItemId)
{
return MenuAdminAppService.DeleteMenuItemAsync(menuId, menuItemId);
}
[Route("{menuId}")]
[HttpGet]
public Task<MenuWithDetailsDto> GetAsync(Guid menuId)
{
return MenuAdminAppService.GetAsync(menuId);
}
[HttpGet]
public Task<PagedResultDto<MenuWithDetailsDto>> GetListAsync(PagedAndSortedResultRequestDto input)
{
return MenuAdminAppService.GetListAsync(input);
}
[Route("{menuId}/menu-items/{menuItemId}/move")]
[HttpPut]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public Task MoveMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemMoveInput input)
{
return MenuAdminAppService.MoveMenuItemAsync(menuId, menuItemId, input);
}
[Route("{menuId}/main-menu")]
[HttpPut]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input)
{
return MenuAdminAppService.UpdateMainMenuAsync(menuId, input);
}
[Route("{menuId}")]
[HttpPut]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public Task<MenuWithDetailsDto> UpdateAsync(Guid menuId, MenuUpdateInput input)
{
return MenuAdminAppService.UpdateAsync(menuId, input);
}
[Route("{menuId}/menu-items/{menuItemId}")]
[HttpPut]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public Task<MenuItemDto> UpdateMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemUpdateInput input)
{
return MenuAdminAppService.UpdateMenuItemAsync(menuId, menuItemId, input);
}
[HttpGet]
[Route("lookup/pages")]
public virtual Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync([FromQuery]PageLookupInputDto input)
{
return MenuAdminAppService.GetPageLookupAsync(input);
}
}
}

79
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuItemAdminController.cs

@ -0,0 +1,79 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Permissions;
namespace Volo.CmsKit.Admin.Menus
{
[RequiresGlobalFeature(typeof(MenuFeature))]
[RemoteService(Name = CmsKitAdminRemoteServiceConsts.RemoteServiceName)]
[Area("cms-kit")]
[Authorize(CmsKitAdminPermissions.Menus.Default)]
[Route("api/cms-kit-admin/menu-items")]
public class MenuItemAdminController : CmsKitAdminController, IMenuItemAdminAppService
{
protected IMenuItemAdminAppService MenuItemAdminAppService { get; }
public MenuItemAdminController(IMenuItemAdminAppService menuAdminAppService)
{
MenuItemAdminAppService = menuAdminAppService;
}
[HttpGet]
public virtual Task<ListResultDto<MenuItemDto>> GetListAsync()
{
return MenuItemAdminAppService.GetListAsync();
}
[HttpGet]
[Route("{id}")]
public virtual Task<MenuItemDto> GetAsync(Guid id)
{
return MenuItemAdminAppService.GetAsync(id);
}
[HttpPost]
[Authorize(CmsKitAdminPermissions.Menus.Create)]
public virtual Task<MenuItemDto> CreateAsync(MenuItemCreateInput input)
{
return MenuItemAdminAppService.CreateAsync(input);
}
[HttpPut]
[Route("{id}")]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual Task<MenuItemDto> UpdateAsync(Guid id, MenuItemUpdateInput input)
{
return MenuItemAdminAppService.UpdateAsync(id, input);
}
[HttpDelete]
[Route("{id}")]
[Authorize(CmsKitAdminPermissions.Menus.Delete)]
public virtual Task DeleteAsync(Guid id)
{
return MenuItemAdminAppService.DeleteAsync(id);
}
[HttpPut]
[Route("{id}/move")]
[Authorize(CmsKitAdminPermissions.Menus.Update)]
public virtual Task MoveMenuItemAsync(Guid id, MenuItemMoveInput input)
{
return MenuItemAdminAppService.MoveMenuItemAsync(id, input);
}
[HttpGet]
[Route("lookup/pages")]
public virtual Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync(PageLookupInputDto input)
{
return MenuItemAdminAppService.GetPageLookupAsync(input);
}
}
}

19
modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs

@ -70,8 +70,8 @@ namespace Volo.CmsKit.Admin.Web
options.Conventions.AuthorizeFolder("/CmsKit/Comments/", CmsKitAdminPermissions.Comments.Default); options.Conventions.AuthorizeFolder("/CmsKit/Comments/", CmsKitAdminPermissions.Comments.Default);
options.Conventions.AuthorizeFolder("/CmsKit/Comments/Details", CmsKitAdminPermissions.Comments.Default); options.Conventions.AuthorizeFolder("/CmsKit/Comments/Details", CmsKitAdminPermissions.Comments.Default);
options.Conventions.AuthorizeFolder("/CmsKit/Menus", CmsKitAdminPermissions.Menus.Default); options.Conventions.AuthorizeFolder("/CmsKit/Menus", CmsKitAdminPermissions.Menus.Default);
options.Conventions.AuthorizePage("/CmsKit/Menus/CreateModal", CmsKitAdminPermissions.Menus.Create); options.Conventions.AuthorizePage("/CmsKit/Menus/MenuItems/CreateModal", CmsKitAdminPermissions.Menus.Create);
options.Conventions.AuthorizePage("/CmsKit/Menus/UpdateModal", CmsKitAdminPermissions.Menus.Update); options.Conventions.AuthorizePage("/CmsKit/Menus/MenuItems/UpdateModal", CmsKitAdminPermissions.Menus.Update);
options.Conventions.AuthorizeFolder("/CmsKit/Menus/MenuItems", CmsKitAdminPermissions.Menus.Update); options.Conventions.AuthorizeFolder("/CmsKit/Menus/MenuItems", CmsKitAdminPermissions.Menus.Update);
}); });
@ -87,8 +87,7 @@ namespace Volo.CmsKit.Admin.Web
options.Conventions.AddPageRoute("/CmsKit/BlogPosts/Update", "/Cms/BlogPosts/Update/{Id}"); options.Conventions.AddPageRoute("/CmsKit/BlogPosts/Update", "/Cms/BlogPosts/Update/{Id}");
options.Conventions.AddPageRoute("/CmsKit/Comments/Index", "/Cms/Comments"); options.Conventions.AddPageRoute("/CmsKit/Comments/Index", "/Cms/Comments");
options.Conventions.AddPageRoute("/CmsKit/Comments/Details", "/Cms/Comments/{Id}"); options.Conventions.AddPageRoute("/CmsKit/Comments/Details", "/Cms/Comments/{Id}");
options.Conventions.AddPageRoute("/CmsKit/Menus/Index", "/Cms/Menus"); options.Conventions.AddPageRoute("/CmsKit/Menus/MenuItems/Index", "/Cms/Menus/Items");
options.Conventions.AddPageRoute("/CmsKit/Menus/MenuItems/Index", "/Cms/Menus/{Id}/menu-items");
}); });
Configure<AbpPageToolbarOptions>(options => Configure<AbpPageToolbarOptions>(options =>
@ -141,18 +140,6 @@ namespace Volo.CmsKit.Admin.Web
); );
}); });
options.Configure<Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.IndexModel>(
toolbar =>
{
toolbar.AddButton(
LocalizableString.Create<CmsKitResource>("NewMenu"),
icon: "plus",
name: "CreateMenu",
id: "CreateMenu",
requiredPolicyName: CmsKitAdminPermissions.Menus.Create
);
});
options.Configure<Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.IndexModel>( options.Configure<Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.IndexModel>(
toolbar => toolbar =>
{ {

4
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Menus/CmsKitAdminMenuContributor.cs

@ -74,8 +74,8 @@ namespace Volo.CmsKit.Admin.Web.Menus
cmsMenus.Add(new ApplicationMenuItem( cmsMenus.Add(new ApplicationMenuItem(
CmsKitAdminMenus.Menus.MenusMenu, CmsKitAdminMenus.Menus.MenusMenu,
l["Menus"], l["Menus"],
"/Cms/Menus", "/Cms/Menus/Items",
"fa fa-bars") "fa fa-stream")
.RequireGlobalFeatures(typeof(MenuFeature)) .RequireGlobalFeatures(typeof(MenuFeature))
.RequirePermissions(CmsKitAdminPermissions.Menus.Default)); .RequirePermissions(CmsKitAdminPermissions.Menus.Default));

23
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/CreateModal.cshtml

@ -1,23 +0,0 @@
@page
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@inherits CmsKitAdminPageBase
@model CreateModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/Menus/CreateModal">
<abp-modal>
<abp-modal-header title="@L["New"].Value"></abp-modal-header>
<abp-modal-body>
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

44
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/CreateModal.cshtml.cs

@ -1,44 +0,0 @@
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Menus;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus
{
public class CreateModalModel : CmsKitAdminPageModel
{
protected IMenuAdminAppService MenuAdminAppService { get; }
[BindProperty]
public CreateMenuViewModel ViewModel { get; set; }
public CreateModalModel(IMenuAdminAppService menuAdminAppService)
{
MenuAdminAppService = menuAdminAppService;
}
public async Task<IActionResult> OnPostAsync()
{
var input = ObjectMapper.Map<CreateMenuViewModel, MenuCreateInput>(ViewModel);
await MenuAdminAppService.CreateAsync(input);
return NoContent();
}
[AutoMap(typeof(MenuCreateInput), ReverseMap = true)]
public class CreateMenuViewModel
{
[Required]
[DynamicMaxLength(typeof(MenuConsts), nameof(MenuConsts.MaxNameLength))]
public string Name { get; set; }
}
}
}

34
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/Index.cshtml

@ -1,34 +0,0 @@
@page
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.CmsKit.Admin.Web.Menus
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Pages.Shared.Components.AbpPageToolbar
@inherits CmsKitAdminPageBase
@model IndexModel
@{
PageLayout.Content.Title = L["Menus"].Value;
PageLayout.Content.BreadCrumb.Add(L["Menu:CMS"].Value);
PageLayout.Content.MenuItemName = CmsKitAdminMenus.Menus.MenusMenu;
}
@section scripts {
<abp-script-bundle>
<abp-script src="/Pages/CmsKit/Menus/index.js" />
</abp-script-bundle>
}
@section content_toolbar {
@await Component.InvokeAsync(typeof(AbpPageToolbarViewComponent), new { pageName = typeof(IndexModel).FullName })
}
<div id="CmsKitMenusWrapper">
<abp-card>
<abp-card-body>
<abp-table striped-rows="true" id="MenusTable" class="nowrap"></abp-table>
</abp-card-body>
</abp-card>
</div>

13
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/Index.cshtml.cs

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus
{
public class IndexModel
{
}
}

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml

@ -34,7 +34,6 @@
</abp-tabs> </abp-tabs>
<hr/> <hr/>
<abp-input asp-for="ViewModel.MenuId"/>
<abp-input asp-for="ViewModel.ParentId"/> <abp-input asp-for="ViewModel.ParentId"/>
<abp-input asp-for="ViewModel.DisplayName"/> <abp-input asp-for="ViewModel.DisplayName"/>
<abp-input asp-for="ViewModel.IsActive"/> <abp-input asp-for="ViewModel.IsActive"/>

12
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml.cs

@ -13,20 +13,19 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
{ {
public class CreateModalModel : CmsKitAdminPageModel public class CreateModalModel : CmsKitAdminPageModel
{ {
protected IMenuAdminAppService MenuAdminAppService { get; } protected IMenuItemAdminAppService MenuAdminAppService { get; }
[BindProperty] [BindProperty]
public MenuItemCreateViewModel ViewModel { get; set; } public MenuItemCreateViewModel ViewModel { get; set; }
public CreateModalModel(IMenuAdminAppService menuAdminAppService) public CreateModalModel(IMenuItemAdminAppService menuAdminAppService)
{ {
MenuAdminAppService = menuAdminAppService; MenuAdminAppService = menuAdminAppService;
ViewModel = new MenuItemCreateViewModel(); ViewModel = new MenuItemCreateViewModel();
} }
public virtual Task OnGetAsync(Guid menuId, Guid? parentId) public virtual Task OnGetAsync(Guid? parentId)
{ {
ViewModel.MenuId = menuId;
ViewModel.ParentId = parentId; ViewModel.ParentId = parentId;
return Task.CompletedTask; return Task.CompletedTask;
@ -36,7 +35,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
{ {
var input = ObjectMapper.Map<MenuItemCreateViewModel, MenuItemCreateInput>(ViewModel); var input = ObjectMapper.Map<MenuItemCreateViewModel, MenuItemCreateInput>(ViewModel);
var dto = await MenuAdminAppService.CreateMenuItemAsync(ViewModel.MenuId, input); var dto = await MenuAdminAppService.CreateAsync(input);
return new OkObjectResult(dto); return new OkObjectResult(dto);
} }
@ -44,9 +43,6 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
[AutoMap(typeof(MenuItemCreateInput), ReverseMap = true)] [AutoMap(typeof(MenuItemCreateInput), ReverseMap = true)]
public class MenuItemCreateViewModel public class MenuItemCreateViewModel
{ {
[HiddenInput]
public Guid MenuId { get; set; }
[HiddenInput] [HiddenInput]
public Guid? ParentId { get; set; } public Guid? ParentId { get; set; }

7
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/Index.cshtml

@ -11,9 +11,8 @@
@model IndexModel @model IndexModel
@{ @{
PageLayout.Content.Title = @Model.Menu.Name + " - " + L["MenuItems"].Value; PageLayout.Content.Title = L["MenuItems"].Value;
PageLayout.Content.BreadCrumb.Add(L["Menu:CMS"].Value); PageLayout.Content.BreadCrumb.Add(L["Menu:CMS"].Value);
PageLayout.Content.BreadCrumb.Add(L["Menus"].Value, "/Cms/Menus");
PageLayout.Content.MenuItemName = CmsKitAdminMenus.Menus.MenusMenu; PageLayout.Content.MenuItemName = CmsKitAdminMenus.Menus.MenusMenu;
} }
@ -37,11 +36,11 @@
@await Component.InvokeAsync(typeof(AbpPageToolbarViewComponent), new {pageName = typeof(IndexModel).FullName}) @await Component.InvokeAsync(typeof(AbpPageToolbarViewComponent), new {pageName = typeof(IndexModel).FullName})
} }
<div id="CmsKitMenuItemsWrapper" data-menu-id="@Model.Id"> <div id="CmsKitMenuItemsWrapper">
<abp-card> <abp-card>
<abp-card-body> <abp-card-body>
<abp-card-title> <abp-card-title>
@Model.Menu.Name @L["MenuItems"].Value
</abp-card-title> </abp-card-title>
<div id="MenuItemsEditTree"></div> <div id="MenuItemsEditTree"></div>

16
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/Index.cshtml.cs

@ -11,21 +11,5 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
{ {
public class IndexModel : CmsKitAdminPageModel public class IndexModel : CmsKitAdminPageModel
{ {
protected IMenuAdminAppService MenuAdminAppService { get; }
[BindProperty(SupportsGet = true)]
public Guid Id { get; set; }
public MenuWithDetailsDto Menu { get; protected set; }
public IndexModel(IMenuAdminAppService menuAdminAppService)
{
MenuAdminAppService = menuAdminAppService;
}
public async Task OnGetAsync()
{
Menu = await MenuAdminAppService.GetAsync(Id);
}
} }
} }

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml

@ -16,7 +16,6 @@
<abp-modal> <abp-modal>
<abp-modal-header title="@L["New"].Value"></abp-modal-header> <abp-modal-header title="@L["New"].Value"></abp-modal-header>
<abp-modal-body> <abp-modal-body>
<abp-input asp-for="MenuId"/>
<abp-input asp-for="Id"/> <abp-input asp-for="Id"/>
<abp-tabs tab-style="Tab"> <abp-tabs tab-style="Tab">

12
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs

@ -11,27 +11,23 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
{ {
public class UpdateModalModel : CmsKitAdminPageModel public class UpdateModalModel : CmsKitAdminPageModel
{ {
protected IMenuAdminAppService MenuAdminAppService { get; } protected IMenuItemAdminAppService MenuAdminAppService { get; }
[BindProperty] [BindProperty]
public MenuItemUpdateViewModel ViewModel { get; set; } public MenuItemUpdateViewModel ViewModel { get; set; }
[HiddenInput]
[BindProperty(SupportsGet = true)]
public Guid MenuId { get; set; }
[HiddenInput] [HiddenInput]
[BindProperty(SupportsGet = true)] [BindProperty(SupportsGet = true)]
public Guid Id { get; set; } public Guid Id { get; set; }
public UpdateModalModel(IMenuAdminAppService menuAdminAppService) public UpdateModalModel(IMenuItemAdminAppService menuAdminAppService)
{ {
MenuAdminAppService = menuAdminAppService; MenuAdminAppService = menuAdminAppService;
} }
public async Task OnGetAsync() public async Task OnGetAsync()
{ {
var menuItemDto = await MenuAdminAppService.GetMenuItemAsync(MenuId, Id); var menuItemDto = await MenuAdminAppService.GetAsync(Id);
ViewModel = ObjectMapper.Map<MenuItemDto, MenuItemUpdateViewModel>(menuItemDto); ViewModel = ObjectMapper.Map<MenuItemDto, MenuItemUpdateViewModel>(menuItemDto);
} }
@ -40,7 +36,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
{ {
var input = ObjectMapper.Map<MenuItemUpdateViewModel, MenuItemUpdateInput>(ViewModel); var input = ObjectMapper.Map<MenuItemUpdateViewModel, MenuItemUpdateInput>(ViewModel);
var result = await MenuAdminAppService.UpdateMenuItemAsync(MenuId, Id, input); var result = await MenuAdminAppService.UpdateAsync(Id, input);
return new OkObjectResult(result); return new OkObjectResult(result);
} }

2
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js

@ -28,7 +28,7 @@ $(function () {
}) })
function initSelectPageId() { function initSelectPageId() {
$pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/menus/lookup/pages'); $pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/menu-items/lookup/pages');
$pageId.data('autocompleteDisplayProperty', 'title'); $pageId.data('autocompleteDisplayProperty', 'title');
$pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteValueProperty', 'id');
$pageId.data('autocompleteItemsProperty', 'items'); $pageId.data('autocompleteItemsProperty', 'items');

16
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/index.js

@ -2,9 +2,7 @@
$(function () { $(function () {
var l = abp.localization.getResource("CmsKit"); var l = abp.localization.getResource("CmsKit");
var menuId = $('#CmsKitMenuItemsWrapper').data('menu-id'); var menuService = volo.cmsKit.admin.menus.menuItemAdmin;
var menuService = volo.cmsKit.admin.menus.menuAdmin;
var createModal = new abp.ModalManager({ viewUrl: abp.appPath + 'CmsKit/Menus/MenuItems/CreateModal', modalClass: 'createMenuItem' }); var createModal = new abp.ModalManager({ viewUrl: abp.appPath + 'CmsKit/Menus/MenuItems/CreateModal', modalClass: 'createMenuItem' });
var updateModal = new abp.ModalManager({ viewUrl: abp.appPath + 'CmsKit/Menus/MenuItems/UpdateModal', modalClass: 'updateMenuItem'}); var updateModal = new abp.ModalManager({ viewUrl: abp.appPath + 'CmsKit/Menus/MenuItems/UpdateModal', modalClass: 'updateMenuItem'});
@ -96,8 +94,7 @@ $(function () {
var instance = $.jstree.reference(data.reference); var instance = $.jstree.reference(data.reference);
updateModal.open({ updateModal.open({
id: node.id, id: node.id
menuId: menuId
}) })
} }
}, },
@ -124,7 +121,7 @@ $(function () {
function (isConfirmed) { function (isConfirmed) {
if (isConfirmed) { if (isConfirmed) {
menuService menuService
.deleteMenuItem(menuId, node.id) .delete(node.id)
.done(function () { .done(function () {
instance.delete_node(node); instance.delete_node(node);
menuTree.refreshItemCount(); menuTree.refreshItemCount();
@ -147,7 +144,6 @@ $(function () {
var instance = $.jstree.reference(menuTree.$tree); var instance = $.jstree.reference(menuTree.$tree);
createModal.open({ createModal.open({
menuId: menuId,
parentId: parentId, parentId: parentId,
}, function (newMenuItem) { }, function (newMenuItem) {
instance.create_node( instance.create_node(
@ -182,7 +178,7 @@ $(function () {
}, },
getTreeDataFromServer: function (callback) { getTreeDataFromServer: function (callback) {
menuService.get(menuId).done(function (result) { menuService.getList().done(function (result) {
var treeData = _.map(result.items, function (item) { var treeData = _.map(result.items, function (item) {
return { return {
id: item.id, id: item.id,
@ -233,7 +229,7 @@ $(function () {
function (isConfirmed) { function (isConfirmed) {
if (isConfirmed) { if (isConfirmed) {
menuService menuService
.moveMenuItem(menuId, data.node.id, { .moveMenuItem(data.node.id, {
newParentId: data.parent === '#' ? null : data.parent, newParentId: data.parent === '#' ? null : data.parent,
position: data.position position: data.position
}) })
@ -285,7 +281,7 @@ $(function () {
$('button[name=CreateMenuItem]').click(function (e) { $('button[name=CreateMenuItem]').click(function (e) {
e.preventDefault(); e.preventDefault();
createModal.open({menuId: menuId}); createModal.open();
}); });
createModal.onResult(function () { createModal.onResult(function () {

2
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js

@ -29,7 +29,7 @@ $(function () {
}); });
function initSelectPageId() { function initSelectPageId() {
$pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/menus/lookup/pages'); $pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/menu-items/lookup/pages');
$pageId.data('autocompleteDisplayProperty', 'title'); $pageId.data('autocompleteDisplayProperty', 'title');
$pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteValueProperty', 'id');
$pageId.data('autocompleteItemsProperty', 'items'); $pageId.data('autocompleteItemsProperty', 'items');

23
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/UpdateModal.cshtml

@ -1,23 +0,0 @@
@page
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@inherits CmsKitAdminPageBase
@model UpdateModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/Menus/UpdateModal">
<abp-modal>
<abp-modal-header title="@L["Edit"].Value"></abp-modal-header>
<abp-modal-body>
<abp-input asp-for="Id" />
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

53
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/UpdateModal.cshtml.cs

@ -1,53 +0,0 @@
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Menus;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus
{
public class UpdateModalModel : CmsKitAdminPageModel
{
protected IMenuAdminAppService MenuAdminAppService { get; }
[HiddenInput]
[BindProperty(SupportsGet = true)]
public Guid Id { get; set; }
[BindProperty]
public UpdateMenuViewModel ViewModel { get; set; }
public UpdateModalModel(IMenuAdminAppService menuAdminAppService)
{
MenuAdminAppService = menuAdminAppService;
}
public async Task OnGetAsync()
{
var menu = await MenuAdminAppService.GetAsync(Id);
ViewModel = ObjectMapper.Map<MenuWithDetailsDto, UpdateMenuViewModel>(menu);
}
public async Task<IActionResult> OnPostAsync()
{
var input = ObjectMapper.Map<UpdateMenuViewModel, MenuUpdateInput>(ViewModel);
await MenuAdminAppService.UpdateAsync(Id, input);
return NoContent();
}
[AutoMap(typeof(MenuWithDetailsDto))]
[AutoMap(typeof(MenuUpdateInput), ReverseMap = true)]
public class UpdateMenuViewModel
{
[Required]
[DynamicMaxLength(typeof(MenuConsts), nameof(MenuConsts.MaxNameLength))]
public string Name { get; set; }
}
}
}

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/createModal.js

@ -1 +0,0 @@


118
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/index.js

@ -1,118 +0,0 @@
$(function () {
var l = abp.localization.getResource("CmsKit");
var createModal = new abp.ModalManager(abp.appPath + "CmsKit/Menus/CreateModal");
var updateModal = new abp.ModalManager(abp.appPath + "CmsKit/Menus/UpdateModal");
var menusService = volo.cmsKit.admin.menus.menuAdmin;
var dataTable = $("#MenusTable").DataTable(abp.libs.datatables.normalizeConfiguration({
processing: true,
serverSide: true,
paging: true,
searching: false,
scrollCollapse: true,
scrollX: true,
ordering: true,
order: [[1, "desc"]],
ajax: abp.libs.datatables.createAjax(menusService.getList),
columnDefs: [
{
title: l("Details"),
targets: 0,
rowAction: {
items: [
{
text: l('MenuItems'),
visible: abp.auth.isGranted('CmsKit.Menus.Update'),
action: function (data) {
location.href = "/Cms/Menus/" + data.record.id + "/menu-items"
}
},
{
text: l('MakeMainMenu'),
visible: function (data) {
return abp.auth.isGranted('CmsKit.Menus.Update') && !data.isMainMenu
},
action: function (data) {
menusService
.updateMainMenu(data.record.id, {isMainMenu: true})
.then(function () {
dataTable.ajax.reload();
});
}
},
{
text: l('UnMakeMainMenu'),
visible: function (data) {
return abp.auth.isGranted('CmsKit.Menus.Update') && data.isMainMenu
},
action: function (data) {
menusService
.updateMainMenu(data.record.id, {isMainMenu: false})
.then(function () {
dataTable.ajax.reload();
});
}
},
{
text: l('Edit'),
visible: abp.auth.isGranted('CmsKit.Menus.Update'),
action: function (data) {
updateModal.open({id: data.record.id});
}
},
{
text: l('Delete'),
visible: abp.auth.isGranted('CmsKit.Menus.Delete'),
confirmMessage: function (data) {
return l("MenuDeletionConfirmationMessage", data.record.name)
},
action: function (data) {
menusService
.delete(data.record.id)
.then(function () {
dataTable.ajax.reload();
});
}
}
]
}
},
{
title: l("Name"),
orderable: true,
data: "name",
render: function (data, val, record) {
if (record.isMainMenu) {
return (
data
+
'<span class="badge badge-pill badge-info ml-1">'
+
l("MainMenu")
+
'</span>'
);
} else {
return data;
}
}
}
]
}));
$('#AbpContentToolbar button[name=CreateMenu]').on('click', function (e) {
e.preventDefault();
createModal.open();
});
createModal.onResult(function () {
dataTable.ajax.reload();
});
updateModal.onResult(function () {
dataTable.ajax.reload();
});
});

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/updateModal.js

@ -1 +0,0 @@


1
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs

@ -7,7 +7,6 @@ namespace Volo.CmsKit.Menus
[Serializable] [Serializable]
public class MenuItemDto : AuditedEntityDto<Guid> public class MenuItemDto : AuditedEntityDto<Guid>
{ {
public Guid MenuId { get; set; }
public Guid? ParentId { get; set; } public Guid? ParentId { get; set; }
public string DisplayName { get; set; } public string DisplayName { get; set; }
public bool IsActive { get; set; } public bool IsActive { get; set; }

20
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuWithDetailsDto.cs

@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Menus
{
[Serializable]
public class MenuWithDetailsDto : FullAuditedEntityDto<Guid>
{
public string Name { get; set; }
public bool IsMainMenu { get; set; }
public List<MenuItemDto> Items { get; set; }
}
}

19
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Menus/MenuChangedHandler.cs

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -7,23 +8,29 @@ using Volo.Abp.EventBus;
namespace Volo.CmsKit.Menus namespace Volo.CmsKit.Menus
{ {
public class MenuChangedHandler : public class MenuChangedHandler :
ILocalEventHandler<EntityUpdatedEventData<Menu>>, ILocalEventHandler<EntityUpdatedEventData<MenuItem>>,
ILocalEventHandler<EntityDeletedEventData<Menu>>, ILocalEventHandler<EntityDeletedEventData<MenuItem>>,
ILocalEventHandler<EntityCreatedEventData<MenuItem>>,
ITransientDependency ITransientDependency
{ {
protected IDistributedCache<MenuWithDetailsDto> DistributedCache { get; } protected IDistributedCache<List<MenuItemDto>> DistributedCache { get; }
public MenuChangedHandler(IDistributedCache<MenuWithDetailsDto> distributedCache) public MenuChangedHandler(IDistributedCache<List<MenuItemDto>> distributedCache)
{ {
DistributedCache = distributedCache; DistributedCache = distributedCache;
} }
public Task HandleEventAsync(EntityUpdatedEventData<Menu> eventData) public Task HandleEventAsync(EntityUpdatedEventData<MenuItem> eventData)
{ {
return DistributedCache.RemoveAsync(MenuApplicationConsts.MainMenuCacheKey); return DistributedCache.RemoveAsync(MenuApplicationConsts.MainMenuCacheKey);
} }
public Task HandleEventAsync(EntityDeletedEventData<Menu> eventData) public Task HandleEventAsync(EntityDeletedEventData<MenuItem> eventData)
{
return DistributedCache.RemoveAsync(MenuApplicationConsts.MainMenuCacheKey);
}
public Task HandleEventAsync(EntityCreatedEventData<MenuItem> eventData)
{ {
return DistributedCache.RemoveAsync(MenuApplicationConsts.MainMenuCacheKey); return DistributedCache.RemoveAsync(MenuApplicationConsts.MainMenuCacheKey);
} }

6
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fi.json

@ -7,7 +7,7 @@
"BlogPostDeletionConfirmationMessage": "Blogiviesti {0} poistetaan. Oletko varma?", "BlogPostDeletionConfirmationMessage": "Blogiviesti {0} poistetaan. Oletko varma?",
"BlogPosts": "Blogiviestit", "BlogPosts": "Blogiviestit",
"Blogs": "Blogit", "Blogs": "Blogit",
"ChoosePreference": "Valitse asetus ...", "ChoosePreference": "Valitse asetus...",
"Cms": "Cms", "Cms": "Cms",
"CmsKit.Comments": "Kommentit", "CmsKit.Comments": "Kommentit",
"CmsKit.Ratings": "Arviot", "CmsKit.Ratings": "Arviot",
@ -52,14 +52,14 @@
"Menu:CMS": "CMS", "Menu:CMS": "CMS",
"Message": "Viesti", "Message": "Viesti",
"MessageDeletionConfirmationMessage": "Tämä kommentti poistetaan kokonaan.", "MessageDeletionConfirmationMessage": "Tämä kommentti poistetaan kokonaan.",
"NewPage": "Uusi sivu",
"NewBlog": "Uusi blogi", "NewBlog": "Uusi blogi",
"NewBlogPost": "Uusi blogiviesti", "NewBlogPost": "Uusi blogiviesti",
"NewPage": "Uusi sivu",
"NewTag": "Uusi tunniste", "NewTag": "Uusi tunniste",
"OK": "OK", "OK": "OK",
"PageDeletionConfirmationMessage": "Haluatko varmasti poistaa tämän sivun?", "PageDeletionConfirmationMessage": "Haluatko varmasti poistaa tämän sivun?",
"Pages": "Sivut", "Pages": "Sivut",
"PageSlugInformation": "Etanaa käytetään URL-osoitteessa. URL-osoitteesi on '/ pages / {{slug}}.", "PageSlugInformation": "Etanaa käytetään URL-osoitteessa. URL-osoitteesi on '/pages/{{slug}}'.",
"Permission:BlogManagement": "Blogin hallinta", "Permission:BlogManagement": "Blogin hallinta",
"Permission:BlogManagement.Create": "Luoda", "Permission:BlogManagement.Create": "Luoda",
"Permission:BlogManagement.Delete": "Poistaa", "Permission:BlogManagement.Delete": "Poistaa",

6
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/fr.json

@ -7,7 +7,7 @@
"BlogPostDeletionConfirmationMessage": "L'article de blog \"{0}\" sera supprimé. Êtes-vous sûr?", "BlogPostDeletionConfirmationMessage": "L'article de blog \"{0}\" sera supprimé. Êtes-vous sûr?",
"BlogPosts": "Articles de blog", "BlogPosts": "Articles de blog",
"Blogs": "Blogs", "Blogs": "Blogs",
"ChoosePreference": "Choisissez la préférence ...", "ChoosePreference": "Choisissez la préférence...",
"Cms": "Cms", "Cms": "Cms",
"CmsKit.Comments": "commentaires", "CmsKit.Comments": "commentaires",
"CmsKit.Ratings": "Évaluations", "CmsKit.Ratings": "Évaluations",
@ -52,14 +52,14 @@
"Menu:CMS": "CMS", "Menu:CMS": "CMS",
"Message": "Message", "Message": "Message",
"MessageDeletionConfirmationMessage": "Ce commentaire sera complètement supprimé.", "MessageDeletionConfirmationMessage": "Ce commentaire sera complètement supprimé.",
"NewPage": "Nouvelle page",
"NewBlog": "Nouveau Blog", "NewBlog": "Nouveau Blog",
"NewBlogPost": "Nouveau billet de blog", "NewBlogPost": "Nouveau billet de blog",
"NewPage": "Nouvelle page",
"NewTag": "Nouveau tag", "NewTag": "Nouveau tag",
"OK": "d'accord", "OK": "d'accord",
"PageDeletionConfirmationMessage": "Êtes-vous sûr de vouloir supprimer cette page?", "PageDeletionConfirmationMessage": "Êtes-vous sûr de vouloir supprimer cette page?",
"Pages": "Pages", "Pages": "Pages",
"PageSlugInformation": "Slug est utilisé sur l'url. Votre URL sera \"/ pages / {{slug}}\".", "PageSlugInformation": "Slug est utilisé sur l'url. Votre URL sera '/pages/{{slug}}'.",
"Permission:BlogManagement": "Gestion de blog", "Permission:BlogManagement": "Gestion de blog",
"Permission:BlogManagement.Create": "Créer", "Permission:BlogManagement.Create": "Créer",
"Permission:BlogManagement.Delete": "Effacer", "Permission:BlogManagement.Delete": "Effacer",

10
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/hi.json

@ -7,7 +7,7 @@
"BlogPostDeletionConfirmationMessage": "ब्लॉग पोस्ट '{0}' हटा दी जाएगी। क्या आपको यकीन है?", "BlogPostDeletionConfirmationMessage": "ब्लॉग पोस्ट '{0}' हटा दी जाएगी। क्या आपको यकीन है?",
"BlogPosts": "वेबदैनिकी डाक", "BlogPosts": "वेबदैनिकी डाक",
"Blogs": "ब्लॉग", "Blogs": "ब्लॉग",
"ChoosePreference": "पसंद चुनें ...", "ChoosePreference": "पसंद चुनें...",
"Cms": "मुख्यमंत्रियों", "Cms": "मुख्यमंत्रियों",
"CmsKit.Comments": "टिप्पणियाँ", "CmsKit.Comments": "टिप्पणियाँ",
"CmsKit.Ratings": "रेटिंग्स", "CmsKit.Ratings": "रेटिंग्स",
@ -45,6 +45,7 @@
"Features": "विशेषताएं", "Features": "विशेषताएं",
"GenericDeletionConfirmationMessage": "क्या आप '{0}' को हटाना सुनिश्चित कर रहे हैं?", "GenericDeletionConfirmationMessage": "क्या आप '{0}' को हटाना सुनिश्चित कर रहे हैं?",
"LastModification": "आखरी बदलाव", "LastModification": "आखरी बदलाव",
"LastModificationTime": "अंतिम संशोधन समय",
"LoginToAddComment": "टिप्पणी जोड़ने के लिए लॉगिन करें", "LoginToAddComment": "टिप्पणी जोड़ने के लिए लॉगिन करें",
"LoginToRate": "दर करने के लिए लॉगिन करें", "LoginToRate": "दर करने के लिए लॉगिन करें",
"LoginToReact": "प्रतिक्रिया करने के लिए लॉगिन करें", "LoginToReact": "प्रतिक्रिया करने के लिए लॉगिन करें",
@ -52,14 +53,14 @@
"Menu:CMS": "मुख्यमंत्रियों", "Menu:CMS": "मुख्यमंत्रियों",
"Message": "संदेश", "Message": "संदेश",
"MessageDeletionConfirmationMessage": "यह टिप्पणी पूरी तरह से हटा दी जाएगी।", "MessageDeletionConfirmationMessage": "यह टिप्पणी पूरी तरह से हटा दी जाएगी।",
"NewPage": "नया पृष्ठ",
"NewBlog": "नया ब्लॉग", "NewBlog": "नया ब्लॉग",
"NewBlogPost": "नई ब्लॉग पोस्ट", "NewBlogPost": "नई ब्लॉग पोस्ट",
"NewPage": "नया पृष्ठ",
"NewTag": "नया टैग", "NewTag": "नया टैग",
"OK": "ठीक है", "OK": "ठीक है",
"PageDeletionConfirmationMessage": "क्या आप इस पृष्ठ को हटाना सुनिश्चित कर रहे हैं?", "PageDeletionConfirmationMessage": "क्या आप इस पृष्ठ को हटाना सुनिश्चित कर रहे हैं?",
"Pages": "पृष्ठों", "Pages": "पृष्ठों",
"PageSlugInformation": "स्लग का उपयोग url पर किया जाता है। आपका url '/ Pages / {{slug}}' होगा।", "PageSlugInformation": "स्लग का उपयोग url पर किया जाता है। आपका url '/pages/{{slug}}' होगा।",
"Permission:BlogManagement": "ब्लॉग प्रबंधन", "Permission:BlogManagement": "ब्लॉग प्रबंधन",
"Permission:BlogManagement.Create": "सृजन करना", "Permission:BlogManagement.Create": "सृजन करना",
"Permission:BlogManagement.Delete": "हटाएं", "Permission:BlogManagement.Delete": "हटाएं",
@ -129,7 +130,6 @@
"YourEmailAddress": "आपका ईमेल पता", "YourEmailAddress": "आपका ईमेल पता",
"YourFullName": "आपका पूरा नाम", "YourFullName": "आपका पूरा नाम",
"YourMessage": "आपका संदेश", "YourMessage": "आपका संदेश",
"YourReply": "आपके उत्तर", "YourReply": "आपके उत्तर"
"LastModificationTime": "अंतिम संशोधन समय"
} }
} }

76
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/it.json

@ -1,16 +1,16 @@
{ {
"culture": "it", "culture": "it",
"texts": { "texts": {
"BlogDeletionConfirmationMessage": "Il blog \"{0}\" verrà eliminato. Sei sicuro?", "BlogDeletionConfirmationMessage": "Il blog '{0}' verrà eliminato. Sei sicuro?",
"BlogFeatureNotAvailable": "Questa funzione non è ora disponibile. Abilita con \"GlobalFeatureManager\" per usarlo.", "BlogFeatureNotAvailable": "Questa funzione non è ora disponibile. Abilita con 'GlobalFeatureManager' per usarlo.",
"BlogId": "Blog", "BlogId": "Blog",
"BlogPostDeletionConfirmationMessage": "Il post del blog \"{0}\" verrà eliminato. Sei sicuro?", "BlogPostDeletionConfirmationMessage": "Il post del blog '{0}' verrà eliminato. Sei sicuro?",
"BlogPosts": "I post del blog", "BlogPosts": "I post del blog",
"Blogs": "Blog", "Blogs": "Blog",
"ChoosePreference": "Scegli preferenza ...", "ChoosePreference": "Scegli preferenza...",
"Cms": "CMS", "Cms": "CMS",
"CmsKit.Comments": "Commenti", "CmsKit.Comments": "Commenti",
"CmsKit.Ratings": "Giudizi", "CmsKit.Ratings": "Valutazioni",
"CmsKit.Reactions": "Reazioni", "CmsKit.Reactions": "Reazioni",
"CmsKit.Tags": "Tag", "CmsKit.Tags": "Tag",
"CmsKit:0002": "Il contenuto esiste già!", "CmsKit:0002": "Il contenuto esiste già!",
@ -18,7 +18,7 @@
"CmsKit:Blog:0001": "Lo slug specificato ({Slug}) esiste già!", "CmsKit:Blog:0001": "Lo slug specificato ({Slug}) esiste già!",
"CmsKit:BlogPost:0001": "Lo slug dato esiste già!", "CmsKit:BlogPost:0001": "Lo slug dato esiste già!",
"CmsKit:Comments:0001": "L'entità {EntityType} non è commentabile.", "CmsKit:Comments:0001": "L'entità {EntityType} non è commentabile.",
"CmsKit:Media:0001": "\"{Name}\" non è un nome di supporto valido.", "CmsKit:Media:0001": "'{Name}' non è un nome di supporto valido.",
"CmsKit:Media:0002": "L'entità non può avere media.", "CmsKit:Media:0002": "L'entità non può avere media.",
"CmsKit:Page:0001": "L'URL fornito ({Slug}) esiste già. Prova con un URL diverso.", "CmsKit:Page:0001": "L'URL fornito ({Slug}) esiste già. Prova con un URL diverso.",
"CmsKit:Rating:0001": "L'entità {EntityType} non può essere valutata.", "CmsKit:Rating:0001": "L'entità {EntityType} non può essere valutata.",
@ -27,24 +27,25 @@
"CommentAuthorizationExceptionMessage": "Tali commenti non sono consentiti per la visualizzazione pubblica.", "CommentAuthorizationExceptionMessage": "Tali commenti non sono consentiti per la visualizzazione pubblica.",
"CommentDeletionConfirmationMessage": "Questo commento e tutte le risposte verranno cancellate!", "CommentDeletionConfirmationMessage": "Questo commento e tutte le risposte verranno cancellate!",
"Comments": "Commenti", "Comments": "Commenti",
"Content": "Soddisfare", "Content": "Contenuto",
"ContentDeletionConfirmationMessage": "Sei sicuro di eliminare questo contenuto?", "ContentDeletionConfirmationMessage": "Sei sicuro di eliminare questo contenuto?",
"Contents": "Contenuti", "Contents": "Contenuti",
"CoverImage": "Immagine di copertina", "CoverImage": "Immagine di copertina",
"CreateBlogPostPage": "Nuovo post sul blog", "CreateBlogPostPage": "Nuovo post sul blog",
"CreationTime": "Tempo di creazione", "CreationTime": "Orario di creazione",
"Delete": "Elimina", "Delete": "Elimina",
"Detail": "Dettaglio", "Detail": "Dettaglio",
"Details": "Dettagli", "Details": "Dettagli",
"DoYouPreferAdditionalEmails": "Preferisci email aggiuntive?", "DoYouPreferAdditionalEmails": "Preferisci email aggiuntive?",
"Edit": "modificare", "Edit": "modifica",
"EndDate": "Data di fine", "EndDate": "Data di fine",
"EntityId": "Entity Id", "EntityId": "Id Entità",
"EntityType": "Tipo di entità", "EntityType": "Tipo di Entità",
"ExportCSV": "Esporta CSV", "ExportCSV": "Esporta CSV",
"Features": "Caratteristiche", "Features": "Funzionalità",
"GenericDeletionConfirmationMessage": "Sei sicuro di eliminare \"{0}\"?", "GenericDeletionConfirmationMessage": "Sei sicuro di eliminare '{0}'?",
"LastModification": "Ultima modifica", "LastModification": "Ultima modifica",
"LastModificationTime": "Ora ultima modifica",
"LoginToAddComment": "Accedi per aggiungere un commento", "LoginToAddComment": "Accedi per aggiungere un commento",
"LoginToRate": "Accedi per votare", "LoginToRate": "Accedi per votare",
"LoginToReact": "Accedi per reagire", "LoginToReact": "Accedi per reagire",
@ -52,23 +53,23 @@
"Menu:CMS": "CMS", "Menu:CMS": "CMS",
"Message": "Messaggio", "Message": "Messaggio",
"MessageDeletionConfirmationMessage": "Questo commento verrà completamente cancellato.", "MessageDeletionConfirmationMessage": "Questo commento verrà completamente cancellato.",
"NewPage": "Nuova pagina",
"NewBlog": "Nuovo blog", "NewBlog": "Nuovo blog",
"NewBlogPost": "Nuovo post sul blog", "NewBlogPost": "Nuovo post sul blog",
"NewPage": "Nuova pagina",
"NewTag": "Nuovo tag", "NewTag": "Nuovo tag",
"OK": "ok", "OK": "OK",
"PageDeletionConfirmationMessage": "Sei sicuro di cancellare questa pagina?", "PageDeletionConfirmationMessage": "Sei sicuro di cancellare questa pagina?",
"Pages": "Pages", "Pages": "Pagine",
"PageSlugInformation": "Lo slug viene utilizzato sull'URL. Il tuo URL sarà \"/ pages / {{slug}}\".", "PageSlugInformation": "Lo slug viene utilizzato sull'URL. Il tuo URL sarà '/pages/{{slug}}'.",
"Permission:BlogManagement": "Gestione del blog", "Permission:BlogManagement": "Gestione del blog",
"Permission:BlogManagement.Create": "Creare", "Permission:BlogManagement.Create": "Crea",
"Permission:BlogManagement.Delete": "Elimina", "Permission:BlogManagement.Delete": "Elimina",
"Permission:BlogManagement.Features": "Caratteristiche", "Permission:BlogManagement.Features": "Funzionalità",
"Permission:BlogManagement.Update": "Aggiornare", "Permission:BlogManagement.Update": "Aggiorna",
"Permission:BlogPostManagement": "Gestione dei post sul blog", "Permission:BlogPostManagement": "Gestione dei post sul blog",
"Permission:BlogPostManagement.Create": "Creare", "Permission:BlogPostManagement.Create": "Crea",
"Permission:BlogPostManagement.Delete": "Elimina", "Permission:BlogPostManagement.Delete": "Elimina",
"Permission:BlogPostManagement.Update": "Aggiornare", "Permission:BlogPostManagement.Update": "Aggiorna",
"Permission:CmsKit": "CmsKit", "Permission:CmsKit": "CmsKit",
"Permission:Comments": "Gestione dei commenti", "Permission:Comments": "Gestione dei commenti",
"Permission:Comments.Delete": "Elimina", "Permission:Comments.Delete": "Elimina",
@ -77,23 +78,23 @@
"Permission:Contents.Delete": "Elimina contenuto", "Permission:Contents.Delete": "Elimina contenuto",
"Permission:Contents.Update": "Aggiorna contenuto", "Permission:Contents.Update": "Aggiorna contenuto",
"Permission:MediaDescriptorManagement": "Gestione dei media", "Permission:MediaDescriptorManagement": "Gestione dei media",
"Permission:MediaDescriptorManagement:Create": "Creare", "Permission:MediaDescriptorManagement:Create": "Crea",
"Permission:MediaDescriptorManagement:Delete": "Elimina", "Permission:MediaDescriptorManagement:Delete": "Elimina",
"Permission:PageManagement": "Gestione della pagina", "Permission:PageManagement": "Gestione della pagina",
"Permission:PageManagement:Create": "Creare", "Permission:PageManagement:Create": "Crea",
"Permission:PageManagement:Delete": "Elimina", "Permission:PageManagement:Delete": "Elimina",
"Permission:PageManagement:Update": "Aggiornare", "Permission:PageManagement:Update": "Aggiorna",
"Permission:TagManagement": "Gestione dei tag", "Permission:TagManagement": "Gestione dei tag",
"Permission:TagManagement.Create": "Creare", "Permission:TagManagement.Create": "Crea",
"Permission:TagManagement.Delete": "Elimina", "Permission:TagManagement.Delete": "Elimina",
"Permission:TagManagement.Update": "Aggiornare", "Permission:TagManagement.Update": "Aggiorna",
"PickYourReaction": "Scegli la tua reazione", "PickYourReaction": "Scegli la tua reazione",
"Rating": "Valutazione", "Rating": "Valutazione",
"RatingUndoMessage": "La tua valutazione verrà annullata.", "RatingUndoMessage": "La tua valutazione verrà annullata.",
"Reactions": "Reazioni", "Reactions": "Reazioni",
"Read": "Leggere", "Read": "Leggi",
"RepliesToThisComment": "Risposte a questo commento", "RepliesToThisComment": "Risposte a questo commento",
"Reply": "rispondere", "Reply": "Rispondere",
"ReplyTo": "Rispondi a", "ReplyTo": "Rispondi a",
"SamplePageMessage": "Una pagina di esempio per il modulo Pro", "SamplePageMessage": "Una pagina di esempio per il modulo Pro",
"SaveChanges": "Salvare le modifiche", "SaveChanges": "Salvare le modifiche",
@ -102,24 +103,24 @@
"Send": "Spedire", "Send": "Spedire",
"SendMessage": "Invia messaggio", "SendMessage": "Invia messaggio",
"ShortDescription": "Breve descrizione", "ShortDescription": "Breve descrizione",
"Slug": "Lumaca", "Slug": "Slug",
"Source": "fonte", "Source": "Origine",
"SourceUrl": "URL di origine", "SourceUrl": "URL Origine",
"Star": "Stella", "Star": "Stella",
"StartDate": "Data d'inizio", "StartDate": "Data d'inizio",
"Style": "Stile", "Style": "Stile",
"Subject": "Soggetto", "Subject": "Soggetto",
"SubjectPlaceholder": "Si prega di digitare un oggetto", "SubjectPlaceholder": "Si prega di digitare un oggetto",
"Submit": "Invia", "Submit": "Invia",
"Subscribe": "sottoscrivi", "Subscribe": "Sottoscrivi",
"SuccessfullySaved": "Salvato con successo!", "SuccessfullySaved": "Salvato con successo!",
"TagDeletionConfirmationMessage": "Sei sicuro di eliminare il tag \"{0}\"?", "TagDeletionConfirmationMessage": "Sei sicuro di eliminare il tag '{0}'?",
"Tags": "Tag", "Tags": "Tag",
"Text": "Testo", "Text": "Testo",
"ThankYou": "Grazie", "ThankYou": "Grazie",
"Title": "Titolo", "Title": "Titolo",
"Undo": "Disfare", "Undo": "Ripristina",
"Update": "Aggiornare", "Update": "Aggiorna",
"UpdatePreferenceSuccessMessage": "Le tue preferenze sono state salvate.", "UpdatePreferenceSuccessMessage": "Le tue preferenze sono state salvate.",
"UpdateYourEmailPreferences": "Aggiorna le tue preferenze email", "UpdateYourEmailPreferences": "Aggiorna le tue preferenze email",
"UploadFailedMessage": "Caricamento fallito.", "UploadFailedMessage": "Caricamento fallito.",
@ -129,7 +130,6 @@
"YourEmailAddress": "Il tuo indirizzo di posta elettronica", "YourEmailAddress": "Il tuo indirizzo di posta elettronica",
"YourFullName": "Il tuo nome completo", "YourFullName": "Il tuo nome completo",
"YourMessage": "Il tuo messaggio", "YourMessage": "Il tuo messaggio",
"YourReply": "La tua risposta", "YourReply": "La tua risposta"
"LastModificationTime": "Ora ultima modifica"
} }
} }

9
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/IMenuItemRepository.cs

@ -0,0 +1,9 @@
using System;
using Volo.Abp.Domain.Repositories;
namespace Volo.CmsKit.Menus
{
public interface IMenuItemRepository : IBasicRepository<MenuItem, Guid>
{
}
}

18
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/IMenuRepository.cs

@ -1,18 +0,0 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace Volo.CmsKit.Menus
{
public interface IMenuRepository : IBasicRepository<Menu, Guid>
{
Task<Menu> FindMainMenuAsync(bool includeDetails = true, CancellationToken cancellationToken = default);
Task<List<Menu>> GetCurrentAndNextMainMenusAsync(
Guid nextMainMenuId,
bool includeDetails = true,
CancellationToken cancellationToken = default);
}
}

33
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/Menu.cs

@ -1,33 +0,0 @@
using JetBrains.Annotations;
using System;
using System.Collections;
using System.Collections.Generic;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Menus
{
public class Menu : FullAuditedAggregateRoot<Guid>, IMultiTenant
{
public string Name { get; protected set; }
public bool IsMainMenu { get; internal set; }
public Guid? TenantId { get; protected set; }
public ICollection<MenuItem> Items { get; protected set; }
internal Menu(Guid id, Guid? tenantId, [NotNull] string name) : base(id)
{
TenantId = tenantId;
SetName(name);
Items = new HashSet<MenuItem>();
}
public void SetName([NotNull] string name)
{
Name = Check.NotNullOrEmpty(name, nameof(name), MenuConsts.MaxNameLength);
}
}
}

11
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/MenuItem.cs

@ -7,16 +7,12 @@ using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Authorization.Permissions; using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Menus namespace Volo.CmsKit.Menus
{ {
public class MenuItem : AuditedEntity<Guid> public class MenuItem : AuditedAggregateRoot<Guid>, IMultiTenant
{ {
/// <summary>
/// Parent <see cref="Menu"/> Id.
/// </summary>
public Guid MenuId { get; set; }
/// <summary> /// <summary>
/// Presents another <see cref="MenuItem"/> Id. /// Presents another <see cref="MenuItem"/> Id.
/// If it's <see langword="null"/>, then it's a root menu item. /// If it's <see langword="null"/>, then it's a root menu item.
@ -43,9 +39,9 @@ namespace Volo.CmsKit.Menus
public Guid? PageId { get; protected set; } public Guid? PageId { get; protected set; }
public Guid? TenantId { get; }
public MenuItem(Guid id, public MenuItem(Guid id,
Guid menuId,
[NotNull] string displayName, [NotNull] string displayName,
[NotNull] string url, [NotNull] string url,
bool isActive = true, bool isActive = true,
@ -57,7 +53,6 @@ namespace Volo.CmsKit.Menus
[CanBeNull] string cssClass = null) [CanBeNull] string cssClass = null)
:base(id) :base(id)
{ {
MenuId = menuId;
SetDisplayName(displayName); SetDisplayName(displayName);
IsActive = isActive; IsActive = isActive;
ParentId = parentId; ParentId = parentId;

63
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/MenuItemManager.cs

@ -0,0 +1,63 @@
using JetBrains.Annotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Uow;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Menus
{
public class MenuItemManager : CmsKitDomainServiceBase
{
protected IMenuItemRepository MenuItemRepository { get; }
public MenuItemManager(IMenuItemRepository menuRepository)
{
MenuItemRepository = menuRepository;
}
public virtual void SetPageUrl(MenuItem menuItem, Page page)
{
menuItem.SetPageId(page.Id);
menuItem.SetUrl(PageConsts.UrlPrefix + page.Slug);
}
[UnitOfWork]
public virtual async Task MoveAsync(Guid menuItemId, Guid? newParentMenuItemId, int position = 0)
{
var menuItems = await MenuItemRepository.GetListAsync();
var movedMenuItem = menuItems.FirstOrDefault(x => x.Id == menuItemId)
?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId);
if (newParentMenuItemId.HasValue && !menuItems.Any(a => a.Id == newParentMenuItemId.Value))
{
throw new EntityNotFoundException(typeof(MenuItem), newParentMenuItemId);
}
movedMenuItem.ParentId = newParentMenuItemId;
movedMenuItem.Order = position;
OrganizeTreeOrderForMenuItem(menuItems, movedMenuItem);
await MenuItemRepository.UpdateManyAsync(menuItems);
}
public virtual void OrganizeTreeOrderForMenuItem(List<MenuItem> items, MenuItem menuItem)
{
var sameTree = items.Where(x => x.ParentId == menuItem.ParentId).OrderBy(x => x.Order).ToList();
sameTree.Remove(menuItem); // Remove if exists to prevent misordering with same order number
sameTree.Insert(menuItem.Order, menuItem);
for (int i = 0; i < sameTree.Count; i++)
{
sameTree[i].Order = i;
}
}
}
}

109
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/MenuManager.cs

@ -1,109 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Services;
using Volo.Abp.Uow;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Menus
{
public class MenuManager : CmsKitDomainServiceBase
{
protected IMenuRepository MenuRepository { get; }
public MenuManager(IMenuRepository menuRepository)
{
MenuRepository = menuRepository;
}
/// <summary>
/// Creates a new instance of <see cref="Menu"/> without inserting into database.
/// </summary>
/// <param name="tenantId">Tenant Id of Menu.</param>
/// <param name="name">Name of Menu.</param>
/// <returns>Created instance.</returns>
public virtual async Task<Menu> CreateAsync(Guid? tenantId, [NotNull] string name)
{
var menu = new Menu(
GuidGenerator.Create(),
tenantId,
Check.NotNullOrEmpty(name, nameof(name), MenuConsts.MaxNameLength));
var existingMenuCount = await MenuRepository.GetCountAsync();
if (existingMenuCount == 0)
{
menu.IsMainMenu = true;
}
return menu;
}
public virtual void SetPageUrl(MenuItem menuItem, Page page)
{
menuItem.SetPageId(page.Id);
menuItem.SetUrl(PageConsts.UrlPrefix + page.Slug);
}
[UnitOfWork]
public virtual async Task MoveAsync(Guid menuId, Guid menuItemId, Guid? newParentId, int position = 0)
{
var menu = await MenuRepository.GetAsync(menuId, includeDetails: true);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId)
?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId);
if (newParentId.HasValue && !menu.Items.Any(a => a.Id == newParentId.Value))
{
throw new EntityNotFoundException(typeof(MenuItem), newParentId);
}
menuItem.ParentId = newParentId;
menuItem.Order = position;
OrganizeTreeOrderForMenuItem(menu, menuItem);
await MenuRepository.UpdateAsync(menu);
}
public virtual void OrganizeTreeOrderForMenuItem(Menu menu, MenuItem menuItem)
{
var sameTree = menu.Items.Where(x => x.ParentId == menuItem.ParentId).OrderBy(x => x.Order).ToList();
sameTree.Remove(menuItem); // Remove if exists to prevent misordering with same order number
sameTree.Insert(menuItem.Order, menuItem);
for (int i = 0; i < sameTree.Count; i++)
{
sameTree[i].Order = i;
}
}
public virtual async Task SetMainMenuAsync(Guid menuId)
{
var menus = await MenuRepository.GetCurrentAndNextMainMenusAsync(menuId ,includeDetails: false);
foreach (var menu in menus)
{
menu.IsMainMenu = menuId == menu.Id;
}
await MenuRepository.UpdateManyAsync(menus);
}
public virtual async Task UnSetMainMenuAsync(Guid menuId)
{
var menu = await MenuRepository.GetAsync(menuId, includeDetails: false);
menu.IsMainMenu = false;
await MenuRepository.UpdateAsync(menu);
}
}
}

27
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/PageChangedHandler.cs

@ -1,4 +1,3 @@
using System;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -8,38 +7,36 @@ using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Menus namespace Volo.CmsKit.Menus
{ {
public class PageChangedHandler: ILocalEventHandler<EntityUpdatedEventData<Page>>, public class PageChangedHandler :
ILocalEventHandler<EntityUpdatedEventData<Page>>,
ITransientDependency ITransientDependency
{ {
protected IMenuRepository MenuRepository { get; } protected IMenuItemRepository MenuRepository { get; }
protected MenuManager MenuManager { get; } protected MenuItemManager MenuManager { get; }
public PageChangedHandler( public PageChangedHandler(
IMenuRepository menuRepository, IMenuItemRepository menuRepository,
MenuManager menuManager) MenuItemManager menuManager)
{ {
MenuRepository = menuRepository; MenuRepository = menuRepository;
MenuManager = menuManager; MenuManager = menuManager;
} }
public async Task HandleEventAsync(EntityUpdatedEventData<Page> eventData) public async Task HandleEventAsync(EntityUpdatedEventData<Page> eventData)
{ {
// TODO: Write a repository query. // TODO: Write a repository query.
var allMenus = await MenuRepository.GetListAsync(includeDetails: true); var allMenuItems = await MenuRepository.GetListAsync();
var affectedMenus = allMenus
.Where(menu => menu.Items.Any(x => x.PageId == eventData.Entity.Id))
.ToArray();
var affectedMenuItems = var affectedMenuItems = allMenuItems
affectedMenus.SelectMany(sm => sm.Items).Where(mItem => mItem.PageId == eventData.Entity.Id); .Where(x => x.PageId == eventData.Entity.Id)
.ToArray();
foreach (var menuItem in affectedMenuItems) foreach (var menuItem in affectedMenuItems)
{ {
MenuManager.SetPageUrl(menuItem, eventData.Entity); MenuManager.SetPageUrl(menuItem, eventData.Entity);
} }
await MenuRepository.UpdateManyAsync(affectedMenus); await MenuRepository.UpdateManyAsync(affectedMenuItems);
} }
} }
} }

1
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContext.cs

@ -27,7 +27,6 @@ namespace Volo.CmsKit.EntityFrameworkCore
public DbSet<BlogPost> BlogPosts { get; set; } public DbSet<BlogPost> BlogPosts { get; set; }
public DbSet<BlogFeature> BlogFeatures { get; set; } public DbSet<BlogFeature> BlogFeatures { get; set; }
public DbSet<MediaDescriptor> MediaDescriptors { get; set; } public DbSet<MediaDescriptor> MediaDescriptors { get; set; }
public DbSet<Menu> Menus { get; set; }
public DbSet<MenuItem> MenuItems { get; set; } public DbSet<MenuItem> MenuItems { get; set; }
public CmsKitDbContext(DbContextOptions<CmsKitDbContext> options) public CmsKitDbContext(DbContextOptions<CmsKitDbContext> options)

10
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs

@ -258,15 +258,6 @@ namespace Volo.CmsKit.EntityFrameworkCore
if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>()) if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>())
{ {
builder.Entity<Menu>(b =>
{
b.ToTable(options.TablePrefix + "Menus", options.Schema);
b.ConfigureByConvention();
b.HasMany(x => x.Items).WithOne().HasForeignKey(fk => fk.MenuId);
});
builder.Entity<MenuItem>(b => builder.Entity<MenuItem>(b =>
{ {
b.ToTable(options.TablePrefix + "MenuItems", options.Schema); b.ToTable(options.TablePrefix + "MenuItems", options.Schema);
@ -280,7 +271,6 @@ namespace Volo.CmsKit.EntityFrameworkCore
} }
else else
{ {
builder.Ignore<Menu>();
builder.Ignore<MenuItem>(); builder.Ignore<MenuItem>();
} }

2
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/ICmsKitDbContext.cs

@ -4,6 +4,7 @@ using Volo.Abp.EntityFrameworkCore;
using Volo.CmsKit.Blogs; using Volo.CmsKit.Blogs;
using Volo.CmsKit.Comments; using Volo.CmsKit.Comments;
using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.MediaDescriptors;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Pages; using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings; using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions; using Volo.CmsKit.Reactions;
@ -25,5 +26,6 @@ namespace Volo.CmsKit.EntityFrameworkCore
DbSet<Blog> Blogs { get; } DbSet<Blog> Blogs { get; }
DbSet<BlogPost> BlogPosts { get; } DbSet<BlogPost> BlogPosts { get; }
DbSet<MediaDescriptor> MediaDescriptors { get; } DbSet<MediaDescriptor> MediaDescriptors { get; }
DbSet<MenuItem> MenuItems { get; }
} }
} }

13
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Menus/EfCoreMenuExtensions.cs

@ -1,13 +0,0 @@
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace Volo.CmsKit.Menus
{
public static class EfCoreMenuExtensions
{
public static IQueryable<Menu> IncludeDetails(this IQueryable<Menu> source)
{
return source.Include(i => i.Items);
}
}
}

14
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Menus/EfCoreMenuItemRepository.cs

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.CmsKit.EntityFrameworkCore;
namespace Volo.CmsKit.Menus
{
public class EfCoreMenuItemRepository : EfCoreRepository<ICmsKitDbContext, MenuItem, Guid>, IMenuItemRepository
{
public EfCoreMenuItemRepository(IDbContextProvider<ICmsKitDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}
}

40
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Menus/EfCoreMenuRepository.cs

@ -1,40 +0,0 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.CmsKit.EntityFrameworkCore;
namespace Volo.CmsKit.Menus
{
public class EfCoreMenuRepository : EfCoreRepository<ICmsKitDbContext, Menu, Guid>, IMenuRepository
{
public EfCoreMenuRepository(IDbContextProvider<ICmsKitDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public override async Task<IQueryable<Menu>> WithDetailsAsync()
{
return (await base.WithDetailsAsync()).IncludeDetails();
}
public virtual async Task<Menu> FindMainMenuAsync(bool includeDetails = true, CancellationToken cancellationToken = default)
{
return await (includeDetails ? await WithDetailsAsync() : await GetQueryableAsync())
.FirstOrDefaultAsync(x => x.IsMainMenu, GetCancellationToken(cancellationToken));
}
public virtual async Task<List<Menu>> GetCurrentAndNextMainMenusAsync(
Guid nextMainMenuId,
bool includeDetails = true,
CancellationToken cancellationToken = default)
{
return await (includeDetails ? await WithDetailsAsync() : await GetQueryableAsync())
.Where(x => x.IsMainMenu || x.Id == nextMainMenuId)
.ToListAsync(GetCancellationToken(cancellationToken));
}
}
}

2
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContext.cs

@ -39,7 +39,7 @@ namespace Volo.CmsKit.MongoDB
public IMongoCollection<MediaDescriptor> MediaDescriptors => Collection<MediaDescriptor>(); public IMongoCollection<MediaDescriptor> MediaDescriptors => Collection<MediaDescriptor>();
public IMongoCollection<Menu> Menus => Collection<Menu>(); public IMongoCollection<MenuItem> MenuItems => Collection<MenuItem>();
protected override void CreateModel(IMongoModelBuilder modelBuilder) protected override void CreateModel(IMongoModelBuilder modelBuilder)
{ {

6
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbContextExtensions.cs

@ -4,6 +4,7 @@ using Volo.Abp.MongoDB;
using Volo.CmsKit.Blogs; using Volo.CmsKit.Blogs;
using Volo.CmsKit.Comments; using Volo.CmsKit.Comments;
using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.MediaDescriptors;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Pages; using Volo.CmsKit.Pages;
using Volo.CmsKit.Ratings; using Volo.CmsKit.Ratings;
using Volo.CmsKit.Reactions; using Volo.CmsKit.Reactions;
@ -80,6 +81,11 @@ namespace Volo.CmsKit.MongoDB
{ {
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "MediaDescriptors"; x.CollectionName = CmsKitDbProperties.DbTablePrefix + "MediaDescriptors";
}); });
builder.Entity<MenuItem>(x =>
{
x.CollectionName = CmsKitDbProperties.DbTablePrefix + "MenuItems";
});
} }
} }
} }

3
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/CmsKitMongoDbModule.cs

@ -5,9 +5,11 @@ using Volo.Abp.Users.MongoDB;
using Volo.CmsKit.Blogs; using Volo.CmsKit.Blogs;
using Volo.CmsKit.Comments; using Volo.CmsKit.Comments;
using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.MediaDescriptors;
using Volo.CmsKit.Menus;
using Volo.CmsKit.MongoDB.Blogs; using Volo.CmsKit.MongoDB.Blogs;
using Volo.CmsKit.MongoDB.Comments; using Volo.CmsKit.MongoDB.Comments;
using Volo.CmsKit.MongoDB.MediaDescriptors; using Volo.CmsKit.MongoDB.MediaDescriptors;
using Volo.CmsKit.MongoDB.Menus;
using Volo.CmsKit.MongoDB.Pages; using Volo.CmsKit.MongoDB.Pages;
using Volo.CmsKit.MongoDB.Ratings; using Volo.CmsKit.MongoDB.Ratings;
using Volo.CmsKit.MongoDB.Reactions; using Volo.CmsKit.MongoDB.Reactions;
@ -42,6 +44,7 @@ namespace Volo.CmsKit.MongoDB
options.AddRepository<Blog, MongoBlogRepository>(); options.AddRepository<Blog, MongoBlogRepository>();
options.AddRepository<BlogPost, MongoBlogPostRepository>(); options.AddRepository<BlogPost, MongoBlogPostRepository>();
options.AddRepository<MediaDescriptor, MongoMediaDescriptorRepository>(); options.AddRepository<MediaDescriptor, MongoMediaDescriptorRepository>();
options.AddRepository<MenuItem, MongoMenuItemRepository>();
}); });
} }
} }

2
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/ICmsKitMongoDbContext.cs

@ -39,6 +39,6 @@ namespace Volo.CmsKit.MongoDB
IMongoCollection<MediaDescriptor> MediaDescriptors { get; } IMongoCollection<MediaDescriptor> MediaDescriptors { get; }
IMongoCollection<Menu> Menus { get; } IMongoCollection<MenuItem> MenuItems { get; }
} }
} }

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

Loading…
Cancel
Save