Merge branch 'dev' into hamza/arabic-localization

pull/14662/head
Hamza Albreem 3 years ago committed by GitHub
commit 3a686beffc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -179,6 +179,10 @@
"Post": "邮政",
"ExploreTheContentsCreatedByTheCoreABPTeamAndTheABPCommunity": "探索核心 ABP 团队和 ABP 社区创建的内容。",
"WelcomeFallCampaign": "欢迎秋季活动!",
"GiveAwayForNewPurchases": "新购买将赠送应用程序开发课堂培训!"
"GiveAwayForNewPurchases": "新购买将赠送应用程序开发课堂培训!",
"BlackFriday": "<strong>黑色</strong> <span>星期五</span>",
"ValidForExistingCustomers": "也适用于 <br> 现有用户!",
"CampaignBetweenDates": "从 {0} <br>至 {1}",
"SaveUpTo": "<span>最多节省</span> 至<strong>${0}K</strong>"
}
}
}

@ -747,7 +747,7 @@
"SeeWhatToldAboutAbpCommercial": "See what has been told about ABP Commercial and write your thoughts if you want.",
"BlazoriseLicense": "Do we need to buy Blazorise license?",
"BlazoriseLicenseExplanation": "We have an agreement between Volosoft and Megabit, with this agreement Blazorise license is bundled with ABP Commercial products therefore our customers do not need to purchase an extra Blazorise license.",
"ExtendPaymentInfoSection_DeveloperPrice": "{0} x Developer(s) Price",
"ExtendPaymentInfoSection_DeveloperPrice": "{0}x Additional Developer(s)",
"ExtendPaymentInfoSection_DiscountRate": "Discount {0}%",
"TotalNetPrice": "Total Net Price",
"EFCore": "Entity Framework Core",
@ -804,6 +804,7 @@
"UpgradePaymentInfoSection_LicenseRenewalPrice": "License renewal",
"Total": "Total",
"SupportPolicyFaqTitle": "What is your support policy?",
"SupportPolicyFaqExplanation": "We do support only the active and the previous major version. We do not guarantee a patch release for the 3rd and older major versions. For example, if the active version is 7.0.0, we will release patch releases for both 6.x.x and 7.x.x. Besides, we provide support only for ABP Framework and ABP Commercial related issues. That means no support is given for the 3rd party applications, cloud services and other peripheral libraries used by ABP products. We will use commercially reasonable efforts to provide our customers with technical support during \"Volosoft Bilisim A.S\"s official business hours. On the other hand, we do not commit to a service-level agreement (SLA) response time, but we will try to respond to the technical issues as quickly as possible within our official working hours. Unless a special agreement is made with the customer, we only provide support at https://support.abp.io. We also have private email support, which is only available to Enterprise License holders."
"SupportPolicyFaqExplanation": "We do support only the active and the previous major version. We do not guarantee a patch release for the 3rd and older major versions. For example, if the active version is 7.0.0, we will release patch releases for both 6.x.x and 7.x.x. Besides, we provide support only for ABP Framework and ABP Commercial related issues. That means no support is given for the 3rd party applications, cloud services and other peripheral libraries used by ABP products. We will use commercially reasonable efforts to provide our customers with technical support during \"Volosoft Bilisim A.S\"s official business hours. On the other hand, we do not commit to a service-level agreement (SLA) response time, but we will try to respond to the technical issues as quickly as possible within our official working hours. Unless a special agreement is made with the customer, we only provide support at https://support.abp.io. We also have private email support, which is only available to Enterprise License holders.",
"TotalDevelopers": "Total {0} developer(s)"
}
}

@ -745,9 +745,9 @@
"Testimonial_ShortDescription_4": "Az ABP Commercial volt a legjobban megfelelő az igényeinknek.",
"OnlineReviewersOnAbpCommercial": "Online vélemények az ABP Commercial-ról",
"SeeWhatToldAboutAbpCommercial": "Tekintse meg, mit mondtak az ABP Commercialról, és írja le gondolatait, ha akarja.",
"ExtendPaymentInfoSection_DeveloperPrice": "{0} x Developer(s) Price",
"ExtendPaymentInfoSection_DeveloperPrice": "{0}x További Fejlesztő(k)",
"ExtendPaymentInfoSection_DiscountRate": "Kedvezmény: {0}%",
"TotalNetPrice": "Total Net Price",
"BlackFridayDiscount": "Black Friday Kedvezmény"
}
}
}

@ -737,11 +737,73 @@
"EmailVerificationMailNotSent": "电子邮件验证邮件不能发送。",
"GetConfirmationEmail": "<a href=\"javascript:void(0);\" id=\"{0}\">点击这里获取确认邮件</a> 如果你还没有收到。",
"WhichLicenseTypeYouAreInterestedIn": "你感兴趣的许可证类型是什么?",
"DontTakeOurWordForIt": "不要相信我们的话......",
"ReadAbpCommercialUsersWantYouToKnow": "阅读 ABP Commercial 用户希望您了解到的内容",
"Testimonial_ShortDescription_1": "ABP 的模块化使得团队能够及时交付项目。",
"Testimonial_ShortDescription_2": "比以前更快地构建新功能。",
"Testimonial_ShortDescription_3": "我们从开箱即用的功能开始,只专注于我们真正需要编写的内容。",
"Testimonial_ShortDescription_4": "ABP Commercial 最适合我们的需求。",
"OnlineReviewersOnAbpCommercial": "ABP Commercial 在线评论",
"SeeWhatToldAboutAbpCommercial": "查看关于 ABP Comemrcial 的报道,并根据需要写下您的想法。",
"BlazoriseLicense": "我们是否需要购买Blazorise许可证",
"BlazoriseLicenseExplanation": "我公司Volosoft和公司Megabit之间有合作协议根据此协议购买将同时包含了Blazorise许可证与ABP商业产品因此我们的客户不需要再额外购买Blazorise许可证。",
"ExtendPaymentInfoSection_DeveloperPrice": "{0} x 开发者价格",
"ExtendPaymentInfoSection_DeveloperPrice": "{0}x 额外的 开发者价格",
"ExtendPaymentInfoSection_DiscountRate": "折扣 {0}%",
"TotalNetPrice": "总净价",
"BlackFridayDiscount": "黑色星期五折扣"
"EFCore": "实体框架核心",
"All": "全部",
"Mvc": "MVC",
"DataBaseProvider": "数据提供者",
"UIFramework": "UI 框架",
"LeptonXThemeForDashboard": "管理仪表板的 LeptonX 主题",
"AbpPlatform": "ABP 平台",
"YouDeserveGoodUXUI": "您值得拥有良好的用户界面和更好的用户体验。 ABP 的 LeptonX Theme 就是为它服务的。",
"ViewLiveDemo": "查看在线主题演示",
"GetLeptonX": "立即获取 LeptonX",
"SeeLeptonXDocumentation": "请参阅 LeptonX 文档",
"SimplifiedMenu": "简化菜单",
"SimplifiedMenuDescription": "您可以通过过滤菜单轻松找到您要查找的页面",
"YourFavoritePages": "您最喜欢的页面触手可及",
"YourFavoritePagesDescription": "通过单击页面右上角的星形图标,可以轻松地将页面添加到收藏夹或从中删除。",
"BreadCrumbs": "用于无缝切换的页面路径导航",
"BreadCrumbsDescription": "使用页面路径导航,您可以一键切换到同一级别的页面,即使是左侧菜单关闭,它适用于平板电脑和移动设备响应!",
"YourMenu": "随心所欲的菜单",
"YourMenuDescription": "根据需要自定义用户菜单上可直接单击的图标和下拉框。 用户菜单可完全根据您的需要定制",
"RtlSupport": "对您的语言的 RTL 支持",
"RtlSupportDescription": "LeptonX 主题支持您的语言的 RTL。 语言选项位于设置菜单中,供您更改语言。",
"YourColors": "您在管理仪表板 UI 上的颜色",
"YourColorsDescription": "LeptonX 主题根据您的系统偏好工作,并具有仪表板浅色主题、仪表板深色主题和仪表板半深色主题选项。",
"ArrangeContentWidth": "轻松安排您的内容宽度",
"ArrangeContentWidthDescription": "轻松更改内容区域的宽度。",
"LeptonXCompatibleWith": "与LeptonX主题兼容",
"MobileResponsiveTemplate": "移动设备响应模板",
"MobileResponsiveTemplateDescription1": "从您喜欢的任何设备访问您的LeptonX管理仪表板。",
"MobileResponsiveTemplateDescription2": "它是为您设计的,在您的每一个设备上都可以轻松使用。它可以在移动设备和平板电脑上响应。",
"TopMenuLayoutOption": "菜单顶部布局选项",
"TopMenuLayoutOptionDescription1": "如果你想设置你的网站与相同的管理仪表板通过使用LeptonX主题是可以做到的!",
"TopMenuLayoutOptionDescription2": "只需尝试LeptonX顶部菜单布局就可以实现!",
"EasilyCustomizable": "易于定制您的品牌颜色",
"EasilyCustomizableDescription1": "您可以仅使用几个SCSS变量自定义LeptonX主题。没有重写没有额外的CSS加载!",
"EasilyCustomizableDescription2": "使用LeptonX您可以随意安排您的管理仪表板。",
"IndependentLayout": "独立的布局和内容区域",
"IndependentLayoutDescription1": "LeptonX 的布局基础设施的设计与内容完全分开。",
"IndependentLayoutDescription2": "这意味着您可以根据需要使用 Bootstrap 以外的内容结构自由设计您的项目。",
"MostUsedLibraries": "与 LeptonX 集成的最常用的库",
"MostUsedLibrariesDescription1": "LeptonX包含您最常用的库。它允许您使用库如 ApexCharts, DataTables, DropZone, FullCalender, JSTree, Select2, Toastr 并毫不费力。",
"MostUsedLibrariesDescription2": "LeptonX还支持MVC Angular和Blazor特定的库。",
"CreateAndCustomize": "使用LeptonX自定义页面在几秒钟内创建和自定义所需的页面",
"CreateAndCustomizeDescription": "通过使用LeptonX Theme您还可以访问许多预先制作的html页面。这些包括许多页面如登录页面博客常见问题解答订阅列表发票定价文件管理。",
"LeptonThemeForAdmin": "为您的管理仪表板的Lepton主题",
"LeptonThemeForAdminDescription": "Lepton主题仍然可用并将保持。如果您想以Lepton Theme用户的身份切换到LeptonX Theme您可以查看文档了解如何操作。",
"LeptonCompatibleWith": "Lepton主题兼容",
"BlackFridayDiscount": "黑色星期五折扣",
"UpgradePaymentInfoSection_DeveloperPrice": "{0} 对于 {1} 额外的开发人员",
"Upgrade": "升级",
"Renewal": "续订",
"UpgradePaymentInfoSection_LicensePrice": "{0} 许可证",
"UpgradePaymentInfoSection_LicenseRenewalPrice": "许可证续订",
"Total": "总计",
"SupportPolicyFaqTitle": "您的支持政策是什么?",
"SupportPolicyFaqExplanation": "我们只支持有效的和以前的主要版本。 我们不保证为第 3 个和更早的主要版本发布补丁。 例如,如果有效版本是 7.0.0,我们将发布 6.x.x 和 7.x.x 的补丁版本。 此外,我们仅对 ABP Framework 和 ABP Commercial 相关问题提供支持。 这意味着不支持 ABP 产品使用的第 3 方应用程序、云服务和其他外围库。 我们将尽商业上合理的努力在“Volosoft Bilisim A.S”的正式营业时间内为我们的客户提供技术支持。 另一方面,我们不承诺服务级别协议 (SLA) 响应时间,但我们会尽量在我们的官方工作时间内尽快响应技术问题。 除非与客户达成特殊协议,否则我们仅在 https://support.abp.io 上提供支持。 我们还提供私人电子邮件支持,仅适用于企业许可证持有者。"
}
}
}

@ -186,6 +186,7 @@
"Layout_MetaDescription": "منتدى ABP هو عبارة عن بيئة حيث يمكن للأشخاص مشاركة منشورات حول إطار عمل برنامج ABP ومتابعة المشاريع.",
"Index_Page_CommunityIntroduction": "إن هذا محور لإطار عمل ABP و.NET وتطوير البرامج. يمكنك قراءة المقالات ومشاهدة مقاطع الفيديو التعليمية والحصول على معلومات حول تقدم تطوير ABP والأحداث المتعلقة بـ ABP ومساعدة المطورين الآخرين ومشاركة خبرتك مع منتدى ABP.",
"TagsInArticle": "العلامات في المقال",
"WelcomeToABP": "أهلا بكم في ABP"
"WelcomeToABP": "أهلا بكم في ABP",
"IConsentToMedium": ".https://medium.com/volosoft أوافق على نشر هذا المنشور على"
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "Musíte zadat alespoň 3 znaky!",
"Volo.AbpIo.Domain:060001": "Zdrojová adresa URL („{PostUrl}“) není adresa URL Github",
"Volo.AbpIo.Domain:060002": "Obsah článku není dostupný ze zdroje Github(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Nebyl nalezen žádný obsah článku!"
"Volo.AbpIo.Domain:060003": "Nebyl nalezen žádný obsah článku!",
"IConsentToMedium": "Souhlasím se zveřejněním tohoto příspěvku na https://medium.com/volosoft."
}
}

@ -142,6 +142,7 @@
"Volo.AbpIo.Domain:060001": "Quell-URL(\"{PostUrl}\") ist keine Github-URL",
"Volo.AbpIo.Domain:060002": "Artikelinhalt ist über die Github(\"{PostUrl}\")-Ressource nicht verfügbar.",
"Volo.AbpIo.Domain:060003": "Kein Artikelinhalt gefunden!",
"SeeMore": "Mehr Sehen"
"SeeMore": "Mehr Sehen",
"IConsentToMedium": "Ich stimme der Veröffentlichung dieses Beitrags auf https://medium.com/volosoft zu."
}
}

@ -184,6 +184,7 @@
"Layout_Title": "{0} | ABP Community",
"Layout_MetaDescription": "ABP Community is an environment where people can share posts about ABP framework and follows the projects.",
"Index_Page_CommunityIntroduction": "This is a hub for ABP Framework, .NET and software development. You can read the articles, watch the video tutorials, get informed about ABPs development progress and ABP-related events, help other developers and share your expertise with the ABP community.",
"TagsInArticle": "Tags in article"
"TagsInArticle": "Tags in article",
"IConsentToMedium": "I consent to the publication of this post at https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "La URL de origen (\"{PostUrl}\") no es la URL de Github",
"Volo.AbpIo.Domain:060002": "El contenido del artículo no está disponible en el recurso de Github (\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "¡No se encontró contenido del artículo!",
"SeeMore": "Ver Más"
"SeeMore": "Ver Más",
"IConsentToMedium": "Acepto la publicación de esta publicación en https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "Lähteen URL-osoite (\"{PostUrl}\") ei ole Githubin URL-osoite",
"Volo.AbpIo.Domain:060002": "Artikkelin sisältö ei ole saatavilla Githubin (\"{PostUrl}\") -resurssista.",
"Volo.AbpIo.Domain:060003": "Artikkelin sisältöä ei löytynyt!",
"SeeMore": "Katso Lisää"
"SeeMore": "Katso Lisää",
"IConsentToMedium": "Hyväksyn tämän viestin julkaisemisen osoitteessa https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "L'URL source (\"{PostUrl}\") n'est pas une URL Github",
"Volo.AbpIo.Domain:060002": "Le contenu de l'post n'est pas disponible à partir de la ressource Github(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Aucun contenu d'post trouvé !",
"SeeMore": "Voir Plus"
"SeeMore": "Voir Plus",
"IConsentToMedium": "Je consens à la publication de cet article sur https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "स्रोत URL (\"{PostUrl}\") जीथब URL नहीं है",
"Volo.AbpIo.Domain:060002": "लेख सामग्री Github (\"{PostUrl}\") संसाधन से उपलब्ध नहीं है।",
"Volo.AbpIo.Domain:060003": "कोई लेख सामग्री नहीं मिली!",
"SeeMore": "और देखें"
"SeeMore": "और देखें",
"IConsentToMedium": "मैं https://medium.com/volosoft पर इस पोस्ट के प्रकाशन के लिए सहमति देता/देती हूं।"
}
}

@ -184,6 +184,7 @@
"Layout_Title": "{0} | ABP-közösség",
"Layout_MetaDescription": "Az ABP Community egy olyan környezet, ahol az emberek megoszthatnak bejegyzéseket az ABP keretrendszerről, és követhetik a projekteket.",
"Index_Page_CommunityIntroduction": "Ez az ABP Framework, a .NET és a szoftverfejlesztés központja. Elolvashatja a cikkeket, megnézheti az oktatóvideókat, tájékozódhat az ABP fejlesztési előrehaladásáról és az ABP-vel kapcsolatos eseményekről, segíthet más fejlesztőknek, és megoszthatja szakértelmét az ABP közösséggel.",
"TagsInArticle": "Címkék a cikkben"
"TagsInArticle": "Címkék a cikkben",
"IConsentToMedium": "Hozzájárulok a bejegyzés közzétételéhez a https://medium.com/volosoft oldalon."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "Upprunaslóð (\"{PostUrl} \") er ekki Github slóð",
"Volo.AbpIo.Domain:060002": "Innihald greinar er ekki fáanlegt frá Github (\"{PostUrl} \") resoursum.",
"Volo.AbpIo.Domain:060003": "Innihald greinar fannst ekki!",
"SeeMore": "Sjá Meira"
"SeeMore": "Sjá Meira",
"IConsentToMedium": "Ég samþykki birtingu þessarar færslu á https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "Source URL(\"{PostUrl}\") non è un URL di GitHub",
"Volo.AbpIo.Domain:060002": "Il contenuto dell'articolo non è disponibile dalla risorsa Github(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Nessun contenuto dell'articolo trovato!",
"SeeMore": "Vedi Altro"
"SeeMore": "Vedi Altro",
"IConsentToMedium": "Acconsento alla pubblicazione di questo post su https://medium.com/volosoft."
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "U moet minimaal 3 tekens invoeren!",
"Volo.AbpIo.Domain:060001": "Bron-URL (\"{PostUrl}\") is geen Github-URL",
"Volo.AbpIo.Domain:060002": "Artikelinhoud is niet beschikbaar via Github(\"{PostUrl}\") bron.",
"Volo.AbpIo.Domain:060003": "Geen artikelinhoud gevonden!"
"Volo.AbpIo.Domain:060003": "Geen artikelinhoud gevonden!",
"IConsentToMedium": "Ik stem in met de publicatie van dit bericht op https://medium.com/volosoft."
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "Musisz wpisać co najmniej 3 znaki!",
"Volo.AbpIo.Domain:060001": "Źródłowy adres URL („{PostUrl}”) nie jest adresem URL Github",
"Volo.AbpIo.Domain:060002": "Treść artykułu nie jest dostępna w zasobach Github(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Nie znaleziono treści artykułu!"
"Volo.AbpIo.Domain:060003": "Nie znaleziono treści artykułu!",
"IConsentToMedium": "Wyrażam zgodę na publikację tego posta na stronie https://medium.com/volosoft."
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "Você deve inserir pelo menos 3 caracteres!",
"Volo.AbpIo.Domain:060001": "O URL da fonte (\"{PostUrl}\") não é o URL do Github",
"Volo.AbpIo.Domain:060002": "O conteúdo do artigo não está disponível no recurso Github (\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Nenhum conteúdo do artigo encontrado!"
"Volo.AbpIo.Domain:060003": "Nenhum conteúdo do artigo encontrado!",
"IConsentToMedium": "Eu concordo com a publicação deste post em https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "Sursa URL(\"{PostUrl}\") nu este URL GitHub",
"Volo.AbpIo.Domain:060002": "Conţinutul articolului nu este disponibil din resursa de pe GitHub(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Nu a fost găsit conţinutul articolului!",
"SeeMore": "Vezi mai mult"
"SeeMore": "Vezi mai mult",
"IConsentToMedium": "Sunt de acord cu publicarea acestei postări la https://medium.com/volosoft."
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "Вы должны ввести минимум 3 символа!",
"Volo.AbpIo.Domain:060001": "Исходный URL (\"{PostUrl}\") не является URL-адресом Github",
"Volo.AbpIo.Domain:060002": "Контент статьи недоступен на ресурсе Github (\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Контент статьи не найден!"
"Volo.AbpIo.Domain:060003": "Контент статьи не найден!",
"IConsentToMedium": "Я даю согласие на публикацию этого поста на https://medium.com/volosoft."
}
}

@ -143,6 +143,7 @@
"Volo.AbpIo.Domain:060001": "Zdrojová URL(\"{PostUrl}\") nie je URL Githubu",
"Volo.AbpIo.Domain:060002": "Obsah článku nie je dostupný v Github zdroji(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Nenašiel sa žiadny obsah článku!",
"SeeMore": "Vidět Víc"
"SeeMore": "Vidět Víc",
"IConsentToMedium": "Súhlasím so zverejnením tohto príspevku na https://medium.com/volosoft."
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "Vnesti morate vsaj 3 znake!",
"Volo.AbpIo.Domain:060001": "Izvorni URL (\"{PostUrl}\") ni URL Github",
"Volo.AbpIo.Domain:060002": "Vsebina članka ni na voljo iz vira Github(\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Vsebina članka ni bila najdena!"
"Volo.AbpIo.Domain:060003": "Vsebina članka ni bila najdena!",
"IConsentToMedium": "Soglašam z objavo te objave na https://medium.com/volosoft."
}
}

@ -189,6 +189,7 @@
"Post_Index_Page_MetaDescription": "ABP Topluluğu'nun amacı, ABP çerçevesini kullanan geliştiriciler için bir katkı ortamı yaratmaktır.",
"Layout_Title": "{0} | ABP Topluluğu",
"Layout_MetaDescription": "ABP Topluluğu, insanların ABP çerçevesi hakkında paylaşımlarda bulunabileceği ve projeleri takip edebileceği bir ortamdır.",
"Index_Page_CommunityIntroduction": "Burası ABP Çerçevesi, .NET ve yazılım geliştirme için bir merkezdir. Makaleleri okuyabilir, eğitim videolarını izleyebilir, ABP'nin gelişim süreci ve ABP ile ilgili etkinlikler hakkında bilgi alabilir, diğer geliştiricilere yardımcı olabilir ve uzmanlığınızı ABP topluluğu ile paylaşabilirsiniz."
"Index_Page_CommunityIntroduction": "Burası ABP Çerçevesi, .NET ve yazılım geliştirme için bir merkezdir. Makaleleri okuyabilir, eğitim videolarını izleyebilir, ABP'nin gelişim süreci ve ABP ile ilgili etkinlikler hakkında bilgi alabilir, diğer geliştiricilere yardımcı olabilir ve uzmanlığınızı ABP topluluğu ile paylaşabilirsiniz.",
"IConsentToMedium": "Bu yazının https://medium.com/volosoft adresinde yayınlanmasına izin veriyorum."
}
}

@ -142,6 +142,7 @@
"MinimumSearchContent": "Bạn phải nhập ít nhất 3 ký tự!",
"Volo.AbpIo.Domain:060001": "URL nguồn (\"{PostUrl}\") không phải là URL Github",
"Volo.AbpIo.Domain:060002": "Nội dung Bài viết không có sẵn từ tài nguyên Github (\"{PostUrl}\").",
"Volo.AbpIo.Domain:060003": "Không tìm thấy nội dung bài viết!"
"Volo.AbpIo.Domain:060003": "Không tìm thấy nội dung bài viết!",
"IConsentToMedium": "Tôi đồng ý với việc xuất bản bài đăng này tại https://medium.com/volosoft."
}
}

@ -183,6 +183,8 @@
"Post_Index_Page_MetaDescription": "ABP 社区的目的是为使用 ABP 框架的开发人员创建一个贡献环境。",
"Layout_Title": "{0} | ABP 社区",
"Layout_MetaDescription": "ABP 社区是一个人们可以分享有关 ABP 框架的帖子并关注项目的环境。",
"Index_Page_CommunityIntroduction": "这是 ABP 框架、.NET 和软件开发的中心。 您可以阅读文章,观看视频教程,了解 ABP 的开发进度和 ABP 相关事件,帮助其他开发人员并与 ABP 社区分享您的专业知识。"
"Index_Page_CommunityIntroduction": "这是 ABP 框架、.NET 和软件开发的中心。 您可以阅读文章,观看视频教程,了解 ABP 的开发进度和 ABP 相关事件,帮助其他开发人员并与 ABP 社区分享您的专业知识。",
"TagsInArticle": "文章中的标签",
"IConsentToMedium": "我同意在 https://medium.com/volosoft 上发布这篇文章。"
}
}
}

@ -372,8 +372,42 @@
"MasteringAbpFramework_Book_WhoIsThisBookFor": "这本书是给谁看的",
"MasteringAbpFramework_Book_WhoIsThisBookFor_Description": "本书适用于希望学习软件架构和最佳实践的 Web 开发人员,以使用 Microsoft 技术和 ABP 框架构建\n 可维护的基于 Web 的解决方案。 C#\n 和 ASP.NET Core 的基本知识是开始阅读本书所必需的。",
"ComputersAndTechnology": "计算机与技术",
"BuildingMicroserviceSolutions": "构建微服务解决方案",
"MicroserviceBookPracticalGuide": "本书是使用 ABP 框架开发和管理基于微服务的应用程序的参考指南。 它引用了 <strong>.NET 微服务示例参考应用程序</strong>eShopOnContainers并讨论了使用 ABP 框架的架构设计和实现方法。 读完本书,您将了解 ABP 如何处理常见的微服务复杂性,例如授权、分布式事务、微服务间通信、部署等。",
"IntroducingTheSolution": "介绍 eShopOnAbp 解决方案",
"RunningTheSolution": "运行解决方案",
"UnderstandingTheAuthenticationSystem": "了解身份验证系统",
"ExploringTheApplications": "探索应用",
"UnderstandingTheAPIGateways": "了解 API 网关",
"DevelopingTheMicroservices": "开发微服务",
"UnderstandingTheInfrastructure": "了解基础设施",
"DiggingInTheUseCases": "挖掘用例",
"DeployingTheSolution": "部署解决方案",
"ThisBookIsInDraftStageAndIsNotCompletedYet": "这本书正在草案阶段,还没有完成。",
"SelectUITheme": "选择 UI 主题"
"Authors": "作者",
"MicroserviceEBook": "微服务电子书",
"SelectUITheme": "选择 UI 主题",
"LeptonXLiteTheme": "LeptonX Lite 主题",
"BasicTheme": "基本主题",
"LeptonXLiteThemeInfo": " 现代时尚的 Bootstrap UI 主题。 如果你想要一个生产就绪的 UI 主题,这是理想的选择。 这是最新的主题,也是默认主题。",
"BasicThemeInfo": "具有简单 Bootstrap 颜色和样式的极简 UI 主题。 如果您要构建自己的 UI 主题,则非常适合。",
"SeeDocumentation": "请参阅 <a href='{0}' target='_blank'>文档</a>.",
"SeeFullScreen": "<a href='{0}' target='_blank'>🖼️ 如截图所示</a>",
"BuildingMicroserviceSolutionsShortDescription": "本书是使用 ABP 框架开发和管理基于微服务的应用程序的参考指南。",
"InstallAbpCliMessage": "如果之前没有安装,请在命令行终端中安装 ABP CLI",
"Terminal": "终端",
"Copy": "复制",
"RunTheFollowingCommand": "在命令行终端中运行以下命令:",
"ChangeSolutionOptionsBelow": "您可以更改下面的解决方案选项。",
"MultiLayerApplication": "多层<br>应用",
"MultiLayerApplicationExplanation1": "基于领域驱动设计实践创建完全分层的解决方案。",
"MultiLayerApplicationExplanation2": "推荐用于需要可维护和可扩展代码库的长期项目。",
"SingleLayerApplication": "单层<br>应用",
"SingleLayerApplicationExplanation1": "创建单层 Web 应用程序。 ",
"SingleLayerApplicationExplanation2": "推荐用于构建具有更简单且易于理解的体系结构的应用程序。",
"ApplicationModule": "应用程序模块",
"SeeTheScreenshot": "如截图所示",
"ApplicationModuleExplanation1": "创建可重用的、完全分层的应用程序模块解决方案。",
"ApplicationModuleExplanation2": "您可以使用此选项为您的模块化应用程序创建模块。"
}
}
}

@ -109,10 +109,12 @@ namespace AbpDemo
**Example: Set the distributed lock key prefix for the application**
```csharp
Configure<AbpDistributedLockOptions>(options =>
{
options.KeyPrefix = "MyApp1";
});
```
> Write that code inside the `ConfigureServices` method of your [module class](Module-Development-Basics.md).

@ -4,18 +4,11 @@ This document provides a road map, release schedule and planned features for the
## Next Versions
### v7.0
### v7.1
In the [7.0 milestone](https://github.com/abpframework/abp/milestone/75), we will be mostly working on the following topics:
The next version will be 7.1 and planned to release the stable 7.1 version in February, 2024. In the version 7.1, we will mostly focus on stabilizing and enhancing existing features, improving the developer experience, as well as adding relatively minor new features.
* Dapr integration ([#13337](https://github.com/abpframework/abp/issues/13337))
* Upgrade to .NET 7.0 ([#13336](https://github.com/abpframework/abp/issues/13336))
* Integration Services ([#12470](https://github.com/abpframework/abp/issues/12470))
* Maturing and documenting the [eShopOnAbp](https://github.com/abpframework/eShopOnAbp) project, writing a free e-book that explains the solution.
* Working on the [LeptonX](https://blog.abp.io/abp/LeptonX-Theme-for-ABP-Framework-Alpha-Release) theme.
* Improvements on the existing features and providing more guides.
The planned stable release date for v7.0 is **December, 2022**. We will be publishing more than one pre-release versions before that date.
See the [7.1 milestone](https://github.com/abpframework/abp/milestone/68) for all the issues we've planned to work on.
## Backlog Items

@ -109,10 +109,12 @@ namespace AbpDemo
**示例: 设置应用程序的分布式锁Key前缀**
```csharp
Configure<AbpDistributedLockOptions>(options =>
{
options.KeyPrefix = "MyApp1";
});
```
> 在你的[模块类](Module-Development-Basics.md)中的 `ConfigureServices` 方法进行配置.

@ -9,7 +9,7 @@ public class ApplicationConfigurationCache : ISingletonDependency
{
protected ApplicationConfigurationDto Configuration { get; set; }
public event Func<Action> ApplicationConfigurationChanged;
public event Action ApplicationConfigurationChanged;
public virtual ApplicationConfigurationDto Get()
{

@ -0,0 +1,13 @@
{
"culture": "hr",
"texts": {
"GivenTenantIsNotExist": "Odabrani tenant ne postoji: {0}",
"GivenTenantIsNotAvailable": "Odabrani tenant nije dostupan: {0}",
"Tenant": "Tenant",
"Switch": "promjena",
"Name": "Naziv",
"SwitchTenantHint": "Polje naziv ostavite prazno kako bi se prebacili na host-ovu stranu.",
"SwitchTenant": "Promjena tenant-a",
"NotSelected": "Nije odabrano"
}
}

@ -20,7 +20,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.0" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0-alpha.1" />
</ItemGroup>
</Project>

@ -19,7 +19,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.0-rc.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.0" />
</ItemGroup>
</Project>

@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
using Volo.Abp.Security.Claims;
using Volo.Abp.Security.Encryption;
using Volo.Abp.SecurityLog;
namespace Volo.Abp.Security;
@ -17,6 +18,15 @@ public class AbpSecurityModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context)
{
var applicationName = context.Services.GetApplicationName();
if (!applicationName.IsNullOrEmpty())
{
Configure<AbpSecurityLogOptions>(options =>
{
options.ApplicationName = applicationName;
});
}
var configuration = context.Services.GetConfiguration();
context.Services.Configure<AbpStringEncryptionOptions>(options =>
{

@ -0,0 +1,6 @@
{
"culture": "hr",
"texts": {
"Menu:Administration": "Administracija"
}
}

@ -0,0 +1,53 @@
{
"culture": "hr",
"texts": {
"Languages": "Jezici",
"AreYouSure": "Jeste li sigurni?",
"Cancel": "Odustani",
"Clear": "Očisti",
"Yes": "Da",
"No": "Ne",
"Ok": "Ok",
"Close": "Zatvori",
"Save": "Spremi",
"SavingWithThreeDot": "Spremanje...",
"Actions": "Akcije",
"Delete": "Izbrisati",
"SuccessfullyDeleted": "Uspješno izbrisano",
"Edit": "Uredi",
"Refresh": "Osvježi",
"Language": "Jezik",
"LoadMore": "Učitaj još",
"ProcessingWithThreeDot": "Obrada...",
"LoadingWithThreeDot": "Učitavanje...",
"Welcome": "Dobrodošli",
"Login": "Prijava",
"Register": "Registracija",
"Logout": "Odjava",
"Submit": "Pošalji",
"Back": "Nazad",
"PagerSearch": "Pretraga",
"PagerNext": "Sljedeći",
"PagerPrevious": "Prethodni",
"PagerFirst": "Prvi",
"PagerLast": "Zadnji",
"PagerInfo": "Prikazano _START_ do _END_ do _TOTAL_ zapisa",
"PagerInfo{0}{1}{2}": "Prikazano {0} do {1} od {2} zapisa",
"PagerInfoEmpty": "Prikazano 0 do 0 od 0 zapisa",
"PagerInfoFiltered": "(filtrirano od _MAX_ ukupnih zapisa)",
"NoDataAvailableInDatatable": "Nema dostupnih podataka",
"Total": "ukupno",
"Selected": "odabrano",
"PagerShowMenuEntries": "Pokaži _MENU_ zapise",
"DatatableActionDropdownDefaultText": "Akcije",
"ChangePassword": "Promjena lozinke",
"PersonalInfo": "Moj profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Imate nespremljene promjene.",
"GoHomePage": "Natrag na početnu",
"GoBack": "Idi natrag",
"Search": "Pretraga",
"ItemWillBeDeletedMessageWithFormat": "{0} zapis će biti obrisan!",
"ItemWillBeDeletedMessage": "Ovaj zapis će biti obrisan!",
"ManageYourAccount": "Upravljaj korisničkim računom"
}
}

@ -0,0 +1,36 @@
{
"culture": "hr",
"texts": {
"'{0}' and '{1}' do not match.": "'{0}' i '{1}' se ne podudaraju.",
"The {0} field is not a valid credit card number.": "{0} nije važeći broj kreditne kartice.",
"{0} is not valid.": "{0} nije valjan.",
"The {0} field is not a valid e-mail address.": "{0} nije valjana e-mail adresa.",
"The {0} field only accepts files with the following extensions: {1}": "{0} polje prihvaća samo datoteke sa sljedećim ekstenzijama: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "Polje {0} mora biti text ili niz sa maksimalnom dužinom od '{1}'.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "Polje {0} mora biti text ili niz sa minimalnom dužinom od '{1}'.",
"The {0} field is not a valid phone number.": "{0} nije valjan broj telefona.",
"The field {0} must be between {1} and {2}.": "{0} mora biti između {1} i {2}.",
"The field {0} must match the regular expression '{1}'.": "{0} ne odgovara traženom formatu.",
"The {0} field is required.": "{0} polje je obavezno.",
"The field {0} must be a string with a maximum length of {1}.": "Polje {0} mora biti text sa maksimalnom dužinom od {1}.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "Polje {0} mora biti text sa minimalnom du<64>inom od {2} i maksimalnom dužinom od {1}.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "{0} nije valjan potpuno kvalificirani http, https, ili ftp URL.",
"The field {0} is invalid.": "Polje {0} nije važeće.",
"ThisFieldIsNotAValidCreditCardNumber.": "Ovo polje nije važeći broj kreditne kartice.",
"ThisFieldIsNotValid.": "Ovo polje nije valjano.",
"ThisFieldIsNotAValidEmailAddress.": "Ovo polje nije valjana e-mail adresa.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Ovo polje prihvaća samo datoteke sa sljedećim ekstenzijama: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Ovo polje mora biti text ili niz sa maksimalnom dužinom od '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Ovo polje mora biti text ili niz sa minimalnom dužinom od '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "Ovo polje nije važeći broj telefona.",
"ThisFieldMustBeBetween{0}And{1}": "Ovo polje mora biti između {0} i {1}.",
"ThisFieldMustBeGreaterThanOrEqual{0}": "Ovo polje mora biti veće od ili jednako {0}.",
"ThisFieldMustBeLessOrEqual{0}": "Ovo polje mora biti manje od ili jednako {0}.",
"ThisFieldMustMatchTheRegularExpression{0}": "Ovo polje mora odgovarati regularnom izrazu '{0}'.",
"ThisFieldIsRequired.": "Ovo polje je obavezno.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Ovo polje mora biti niz maksimalne duljine od: {0}.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Ovo polja mora biti tekst sa minimalnom duljinom od {1} i maksimalnom duljinom od {0}.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Ovo polje nije važeći potpuno kvalificirani http, https ili ftp URL.",
"ThisFieldIsInvalid.": "Ovo polje je nevažeće."
}
}

@ -0,0 +1,10 @@
{
"culture": "hr",
"texts": {
"DisplayName:PersonModel:BirthDate1": "Datum rođenja1",
"DisplayName:BirthDate2": "Datum rođenja2",
"PersonModel:BirthDate3": "Datum rođenja3",
"BirthDate": "Datum rođenja",
"Value1": "Vrijednost jedan"
}
}

@ -0,0 +1,6 @@
{
"culture": "hr",
"texts": {
"hello": "Hej"
}
}

@ -0,0 +1,7 @@
{
"culture": "hr",
"texts": {
"USA": "Sjedinjene Američke Države",
"Brazil": "Brazil"
}
}

@ -0,0 +1,7 @@
{
"culture": "hr",
"texts": {
"ThisFieldIsRequired": "Ovo polje je obavezno",
"MaxLenghtErrorMessage": "Ovo polje može imati najviše '{0}' znakova"
}
}

@ -0,0 +1,11 @@
{
"culture": "hr",
"texts": {
"Hello <b>{0}</b>.": "Hej <b>{0}</b>.",
"Car": "Auto",
"CarPlural": "Auta",
"MaxLenghtErrorMessage": "Dužina ovog polja može biti maksimalno '{0}' znakova",
"Universe": "Univerzum",
"FortyTwo": "Četrdeset dva"
}
}

@ -0,0 +1,71 @@
{
"culture": "hr",
"texts": {
"Menu:Account": "Korisnički račun",
"UserName": "Korisničko ime",
"EmailAddress": "Email adresa",
"UserNameOrEmailAddress": "Korisničko ime ili email adresa",
"Password": "Lozinka",
"RememberMe": "Zapamti me",
"UseAnotherServiceToLogin": "Koristite drugu uslugu za prijavu",
"UserLockedOutMessage": "Korisnički račun je zaključan zbog nevažećih pokušaja prijave. Pričekajte malo i pokušajte ponovo.",
"InvalidUserNameOrPassword": "Neispravno korisničko ime ili lozinka!",
"LoginIsNotAllowed": "Nemate dopuštenje za prijavu! Vaš račun nije aktivan ili treba potvrditi vašu e-poštu/broj telefona.",
"SelfRegistrationDisabledMessage": "Samoregistracija je onemogućena za ovu aplikaciju. Molimo kontaktirajte administratora aplikacije za registraciju novog korisnika.",
"LocalLoginDisabledMessage": "Lokalna prijava je onemogućena za ovu aplikaciju.",
"Login": "Prijavi se",
"Cancel": "Odustani",
"Register": "Registracija",
"AreYouANewUser": "Jeste li novi korisnik?",
"AlreadyRegistered": "Već registrirani?",
"InvalidLoginRequest": "Nevažeći zahtjev za prijavu",
"ThereAreNoLoginSchemesConfiguredForThisClient": "Za ovog klijenta nema konfiguriranih shema prijave.",
"LogInUsingYourProviderAccount": "Prijavite se koristeći svoj {0} račun",
"DisplayName:CurrentPassword": "Trenutna lozinka",
"DisplayName:NewPassword": "Nova lozinka",
"DisplayName:NewPasswordConfirm": "Potvrdite novu lozinku",
"PasswordChangedMessage": "Vaša lozinka je uspješno promijenjena.",
"DisplayName:UserName": "Korisničko ime",
"DisplayName:Email": "E-mail",
"DisplayName:Name": "Ime",
"DisplayName:Surname": "Prezime",
"DisplayName:Password": "Zaporka",
"DisplayName:EmailAddress": "Email adresa",
"DisplayName:PhoneNumber": "Broj telefona",
"PersonalSettings": "Osobne postavke",
"PersonalSettingsSaved": "Osobne postavke spremljene",
"PersonalSettingsChangedConfirmationModalTitle": "Osobni podaci promijenjeni",
"PersonalSettingsChangedConfirmationModalDescription": "Ako želite primijeniti ove promjene, morate se ponovno prijaviti. Želite li se odjaviti?",
"PasswordChanged": "Lozinka promijenjena",
"NewPasswordConfirmFailed": "Molimo potvrdite novu lozinku.",
"NewPasswordSameAsOld": "Nova lozinka mora se razlikovati od stare.",
"Manage": "Upravljati",
"MyAccount": "Moj račun",
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "Je li omogućena samoregistracija",
"Description:Abp.Account.IsSelfRegistrationEnabled": "Može li korisnik sam registrirati račun.",
"DisplayName:Abp.Account.EnableLocalLogin": "Autentificirajte se s lokalnim računom",
"Description:Abp.Account.EnableLocalLogin": "Označava hoće li poslužitelj dopustiti korisnicima autentifikaciju s lokalnim računom.",
"LoggedOutTitle": "Odjavljen/a",
"LoggedOutText": "Odjavljeni ste i uskoro ćete biti preusmjereni.",
"ReturnToText": "Kliknite ovdje za povratak na aplikaciju",
"OrLoginWith": "Ili se prijavite sa:",
"ForgotPassword": "Zaboravili ste lozinku?",
"SendPasswordResetLink_Information": "Link za ponovno postavljanje lozinke bit će poslan na vašu e-poštu kako bi ste ponovno postavili lozinku. Ako ne dobijete e-poruku u roku od nekoliko minuta, pokušajte ponovo.",
"PasswordResetMailSentMessage": "Poruka e-pošte za oporavak računa poslana je na vašu adresu e-pošte. Ako ne vidite ovu e-poruku u pristigloj pošti u roku od 15 minuta, potražite je u mapi bezvrijedne pošte. Ako poruku pronađete tamo, označite je kao -Nije smeće-. ",
"ResetPassword": "Resetiranje lozinke",
"ConfirmPassword": "Potvrdite (ponovite) lozinku",
"ResetPassword_Information": "Unesite svoju novu lozinku.",
"YourPasswordIsSuccessfullyReset": "Vaša lozinka je uspješno poništena.",
"GoToTheApplication": "Idite na aplikaciju",
"BackToLogin": "Natrag na prijavu",
"ProfileTab:Password": "Promjena lozinke",
"ProfileTab:PersonalInfo": "Osobne informacije",
"ReturnToApplication": "Povratak na aplikaciju",
"Volo.Account:InvalidEmailAddress": "Email adresa nije pronađena: {0}",
"PasswordReset": "Ponovno postavljanje lozinke",
"PasswordResetInfoInEmail": "Primili smo zahtjev za oporavak računa! Ako ste vi pokrenuli ovaj zahtjev, kliknite na sljedeću poveznicu za ponovno postavljanje lozinke.",
"ResetMyPassword": "Resetirati moju lozinku",
"AccessDenied": "Pristup odbijen!",
"AccessDeniedMessage": "Nemate pristup ovom resursu."
}
}

@ -2,10 +2,26 @@
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.Account.Localization
@using Volo.Abp.Account.Settings
@using Volo.Abp.Account.Web.Pages.Account;
@using Volo.Abp.AspNetCore.Mvc.UI.Theming;
@using Volo.Abp.Identity;
@using Volo.Abp.Settings
@model Volo.Abp.Account.Web.Pages.Account.LoginModel
@inject IHtmlLocalizer<AccountResource> L
@inject IThemeManager ThemeManager
@inject Volo.Abp.Settings.ISettingProvider SettingProvider
@{
Layout = ThemeManager.CurrentTheme.GetAccountLayout();
}
@section scripts
{
<abp-script-bundle name="@typeof(LoginModel).FullName">
<abp-script src="/Pages/Account/Login.js" />
</abp-script-bundle>
}
<div class="card mt-3 shadow-sm rounded">
<div class="card-body p-5">
<h4>@L["Login"]</h4>
@ -21,17 +37,21 @@
<form method="post" class="mt-4">
<div class="mb-3">
<label asp-for="LoginInput.UserNameOrEmailAddress" class="form-label"></label>
<input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control"/>
<input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control" />
<span asp-validation-for="LoginInput.UserNameOrEmailAddress" class="text-danger"></span>
</div>
<div class="mb-3">
<label asp-for="LoginInput.Password" class="form-label"></label>
<input asp-for="LoginInput.Password" class="form-control"/>
<span asp-validation-for="LoginInput.Password" class="text-danger"></span>
<div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="LoginInput.Password" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div>
<span asp-validation-for="LoginInput.Password"></span>
</div>
<abp-row>
<abp-column>
<abp-input asp-for="LoginInput.RememberMe" class="mb-4"/>
<abp-input asp-for="LoginInput.RememberMe" class="mb-4" />
</abp-column>
<abp-column class="text-end">
<a href="@Url.Page("./ForgotPassword", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})">@L["ForgotPassword"]</a>

@ -0,0 +1,22 @@
$(function () {
$("#PasswordVisibilityButton").click(function (e) {
let button = $(this);
let passwordInput = button.parent().find("input");
if (!passwordInput) {
return;
}
if (passwordInput.attr("type") === "password") {
passwordInput.attr("type", "text");
}
else {
passwordInput.attr("type", "password");
}
let icon = button.find("i");
if (icon) {
icon.toggleClass("fa-eye-slash").toggleClass("fa-eye");
}
});
});

@ -0,0 +1,64 @@
{
"culture": "hr",
"texts": {
"Menu:Blogs": "Blogovi",
"Menu:BlogManagement": "Bloganje",
"Permission:Management": "Upravljanje",
"Permission:Edit": "Uredi",
"Permission:Create": "Dodaj",
"Permission:Delete": "Izbrisati",
"Permission:Blogging": "Blog",
"Permission:Blogs": "Blogovi",
"Permission:Posts": "Postovi",
"Permission:Tags": "Tagovi",
"Permission:Comments": "Komentari",
"Permission:ClearCache": "Očisti predmemoriju",
"Title": "Titula",
"Delete": "Izbrisati",
"Reply": "Odgovor",
"ReplyTo": "Odgovor na {0}",
"ContinueReading": "Nastavi čitati",
"DaysAgo": "Prije {0} dana",
"YearsAgo": "Prije {0} godina",
"MonthsAgo": "Prije {0} mjeseci",
"WeeksAgo": "Prije {0} tjedana",
"MinutesAgo": "Prije {0} minuta",
"SecondsAgo": "Prije {0} sekundi",
"HoursAgo": "Prije {0} sati",
"Now": "sada",
"Content": "Sadržaj",
"SeeAll": "Vidi sve",
"PopularTags": "Popularne oznake",
"WiewsWithCount": "{0} pregleda",
"LastPosts": "Zadnji postovi",
"LeaveComment": "Ostavite komentar",
"TagsInThisArticle": "Oznake u ovom članku",
"Posts": "Postovi",
"Edit": "Uredi",
"BLOG": "BLOG",
"CommentDeletionWarningMessage": "Komentar će biti izbrisan.",
"PostDeletionWarningMessage": "Post će biti izbrisan.",
"BlogDeletionWarningMessage": "Blog će biti izbrisan.",
"AreYouSure": "Jesi li siguran?",
"CommentWithCount": "{0} komentara",
"Comment": "Komentar",
"ShareOnTwitter": "Podijelite na Twitteru",
"CoverImage": "Naslovna slika",
"CreateANewPost": "Napravi novi post",
"CreateANewBlog": "Napravi novi blog",
"WhatIsNew": "Što je novo?",
"Name": "Ime",
"ShortName": "Nadimak",
"CreationTime": "Vrijeme stvaranja",
"Description": "Opis",
"Blogs": "Blogovi",
"Tags": "Oznake",
"ShareOn": "Podijeli na",
"TitleLengthWarning": "Neka vaš naslov bude ispod 60 znakova kako bi bio SEO optimiziran!",
"ClearCache": "Očisti predmemoriju",
"ClearCacheConfirmationMessage": "Jeste li sigurni da želite isprazniti predmemoriju?",
"MarkdownSupported": "Markdown je podržan",
"FileUploadInfo": "Povucite, ispustite ili zalijepite kopiranu sliku.",
"PostDescriptionHint": "* Prikazat će se u pretpregledu veze članka, podržava HTML"
}
}

@ -0,0 +1,10 @@
{
"culture": "hr",
"texts": {
"DocsTitle": "VoloDocs",
"WelcomeVoloDocs": "Dobrodošli u VoloDocs!",
"NoProjectWarning": "Još nema definiranog projekta!",
"CreateYourFirstProject": "Kliknite ovdje kako biste započeli svoj prvi projekt",
"NoProject": "Nema projekta!"
}
}

@ -0,0 +1,61 @@
{
"culture": "hr",
"texts": {
"Permission:DocumentManagement": "Upravljanje dokumentima",
"Permission:Projects": "Projekti",
"Permission:Edit": "Uredi",
"Permission:Delete": "Izbrisati",
"Permission:Create": "Stvoriti",
"Permission:Documents": "Dokumenti",
"Menu:Documents": "Dokumenti",
"Menu:DocumentManagement": "Dokumenti",
"Menu:ProjectManagement": "Projekti",
"CreateANewProject": "Stvorite novi projekt",
"Edit": "Uredi",
"Create": "Stvoriti",
"Pull": "Vuci",
"Projects": "Projekti",
"Name": "Ime",
"ShortName": "Kratko ime",
"DocumentStoreType": "Vrsta pohrane dokumenata",
"Format": "Format",
"ShortNameInfoText": "Koristit će se za jedinstveni URL.",
"DisplayName:Name": "Ime",
"DisplayName:ShortName": "Kratko ime",
"DisplayName:Format": "Format",
"DisplayName:DefaultDocumentName": "Zadani naziv dokumenta",
"DisplayName:NavigationDocumentName": "Naziv navigacijskog dokumenta",
"DisplayName:MinimumVersion": "Minimalna verzija",
"DisplayName:MainWebsiteUrl": "Glavni URL web stranice",
"DisplayName:LatestVersionBranchName": "Naziv grane najnovije verzije",
"DisplayName:GitHubRootUrl": "GitHub korijenski URL",
"DisplayName:GitHubAccessToken": "GitHub pristupni token",
"DisplayName:GitHubUserAgent": "GitHub korisnički agent",
"DisplayName:GithubVersionProviderSource": "Izvor dobavljača GitHub verzije",
"DisplayName:VersionBranchPrefix": "Prefiks grane verzije",
"DisplayName:All": "Povuci sve",
"DisplayName:LanguageCode": "Jezični kod",
"DisplayName:Version": "Verzija",
"Documents": "Dokumenti",
"RemoveFromCache": "Ukloni iz predmemorije",
"Reindex": "Ponovno indeksiranje",
"ReindexCompleted": "Ponovno indeksiranje dovršeno",
"RemovedFromCache": "Uklonjeno iz predmemorije",
"RemoveFromCacheConfirmation": "Jeste li sigurni da želite ukloniti ovu stavku iz predmemorije?",
"ReIndexDocumentConfirmation": "Jeste li sigurni da želite ponovno indeksirati ovu stavku?",
"DeleteFromDatabase": "Izbriši iz baze podataka",
"Deleted": "Izbrisano",
"Search": "Pretraga",
"StartDate": "Početni datum",
"EndDate": "Krajnji datum",
"CreationTime": "Vrijeme stvaranja",
"LastUpdateTime": "Zadnje ažuriranje",
"LastSignificantUpdateTime": "Zadnje značajno ažuriranje",
"Version": "Verzija",
"LanguageCode": "Jezični kod",
"FileName": "Naziv datoteke",
"LastCachedTime": "Vrijeme predmemorije",
"Project": "Projekt",
"AdvancedFilters": "Napredni filtri"
}
}

@ -0,0 +1,41 @@
{
"culture": "hr",
"texts": {
"Documents": "Dokumenti",
"BackToWebsite": "Povratak na web stranicu",
"Contributors": "Suradnici",
"ShareOn": "Podijeli na",
"Version": "Verzija",
"Edit": "Uredi",
"LastEditTime": "Zadnje uređivanje",
"Delete": "Izbrisati",
"ClearCache": "Očisti predmemoriju",
"ClearCacheConfirmationMessage": "Jeste li sigurni da želite izbrisati sve iz predmemorije za projekt \"{0}\"",
"ReIndexAllProjects": "Ponovno indeksirajte sve projekte",
"ReIndexProject": "Ponovno indeksiranje projekta",
"ReIndexProjectConfirmationMessage": "Jeste li sigurni da ponovno indeksirate za projekt \"{0}\"",
"SuccessfullyReIndexProject": "Uspješno ponovno indeksirano:\"{0}\"",
"ReIndexAllProjectConfirmationMessage": "Jeste li sigurni da ćete ponovno indeksirati sve projekte?",
"SuccessfullyReIndexAllProject": "Uspješno reindeksirani svi projekti",
"InThisDocument": "U ovom dokumentu",
"GoToTop": "Idi na vrh",
"Projects": "Projekti",
"NoProjectWarning": "Još nema projekata!",
"DocumentNotFound": "Ups, traženi dokument nije pronađen!",
"ProjectNotFound": "Ups, traženi projekt nije pronađen!",
"NavigationDocumentNotFound": "Ova verzija nema navigacijski dokument!",
"DocumentNotFoundInSelectedLanguage": "Dokument na željenom jeziku nije pronađen. Prikazuje se dokument na zadanom jeziku.",
"FilterTopics": "Filtrirajte teme",
"FullSearch": "Traži u dokumentima",
"Volo.Docs.Domain:010001": "Elastic search nije omogućen.",
"MultipleVersionDocumentInfo": "Postoji više verzija ovog dokumenta. Odaberite opcije koje vam najbolje odgovaraju.",
"New": "Novi",
"Upd": "Upd",
"NewExplanation": "Stvoreno u posljednja dva tjedna.",
"UpdatedExplanation": "Ažurirano u posljednja dva tjedna.",
"Volo.Docs.Domain:010002": "Nadimak {ShortName} već postoji.",
"Preview": "Pretpregled",
"Search": "Pretraga",
"SearchResults": "Rezultati pretrage"
}
}

@ -0,0 +1,15 @@
{
"culture": "hr",
"texts": {
"Features": "Značajke",
"NoFeatureFoundMessage": "Ne postoji nijedna dostupna značajka.",
"ManageHostFeatures": "Upravljanje značajkama domaćina",
"Permission:FeatureManagement": "Upravljanje značajkama",
"Permission:FeatureManagement.ManageHostFeatures": "Upravljanje značajkama domaćina",
"Volo.Abp.FeatureManagement:InvalidFeatureValue": "Vrijednost značajke {0} nije važeća!",
"Menu:FeatureManagement": "Upravljanje značajkama",
"ResetToDefault": "Vrati na zadano",
"ResetedToDefault": "Vraćeno na zadano",
"AreYouSureToResetToDefault": "Jeste li sigurni da želite vratiti na zadane postavke?"
}
}

@ -101,7 +101,9 @@
</TextEdit>
</Addon>
<Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"><Icon Name="IconName.EyeSlash"/></Button>
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" />
</Button>
</Addon>
</Addons>
<ValidationError Style="display: block"/>
@ -220,7 +222,9 @@
</TextEdit>
</Addon>
<Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"><Icon Name="IconName.EyeSlash"/></Button>
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" />
</Button>
</Addon>
</Addons>
<ValidationError Style="display: block"/>

@ -35,12 +35,13 @@ public partial class UserManagement
protected string CreateModalSelectedTab = DefaultSelectedTab;
protected string EditModalSelectedTab = DefaultSelectedTab;
protected bool ShowPassword { get; set; }
protected PageToolbar Toolbar { get; } = new();
private List<TableColumn> UserManagementTableColumns => TableColumns.Get<UserManagement>();
private TextRole _passwordTextRole = TextRole.Password;
public UserManagement()
{
ObjectMapperContext = typeof(AbpIdentityBlazorModule);
@ -232,12 +233,14 @@ public partial class UserManagement
{
if (textRole == null)
{
ChangePasswordTextRole(_passwordTextRole == TextRole.Password ? TextRole.Text: TextRole.Password);
ChangePasswordTextRole(_passwordTextRole == TextRole.Password ? TextRole.Text : TextRole.Password);
ShowPassword = !ShowPassword;
}
else
{
_passwordTextRole = textRole.Value;
}
}
}

@ -0,0 +1,113 @@
{
"culture": "hr",
"texts": {
"Menu:IdentityManagement": "Upravljanje identitetom",
"Users": "Users",
"NewUser": "Novi korisnik",
"UserName": "Korisničko ime",
"Surname": "Prezime",
"EmailAddress": "Email adresa",
"PhoneNumber": "Broj telefona",
"UserInformations": "Informacije o korisniku",
"DisplayName:IsDefault": "Zadano",
"DisplayName:IsStatic": "Je statično",
"DisplayName:IsPublic": "Je javno",
"Roles": "Uloge",
"Password": "Lozinka",
"PersonalInfo": "Moj profil",
"PersonalSettings": "Osobne postavke",
"UserDeletionConfirmationMessage": "Korisnik '{0}' bit će izbrisan. Potvrđujete li to?",
"RoleDeletionConfirmationMessage": "Uloga '{0}' bit će izbrisana. Potvrđujete li to?",
"DisplayName:RoleName": "Naziv uloge",
"DisplayName:UserName": "Korisničko ime",
"DisplayName:Name": "Ime",
"DisplayName:Surname": "Prezime",
"DisplayName:Password": "Lozinka",
"DisplayName:Email": "Email adresa",
"DisplayName:PhoneNumber": "Broj telefona",
"DisplayName:TwoFactorEnabled": "Two factor verifikacija",
"DisplayName:IsActive": "Aktivan",
"DisplayName:LockoutEnabled": "Zaključaj račun nakon neuspjelih pokušaja prijave",
"NewRole": "Nova uloga",
"RoleName": "Naziv uloge",
"CreationTime": "Vrijeme stvaranja",
"Permissions": "Dozvole",
"DisplayName:CurrentPassword": "Trenutna lozinka",
"DisplayName:NewPassword": "Nova lozinka",
"DisplayName:NewPasswordConfirm": "Potvrdi novu lozinku",
"PasswordChangedMessage": "Vaša lozinka je uspješno promijenjena.",
"PersonalSettingsSavedMessage": "Vaše osobne postavke su uspješno spremljene.",
"Volo.Abp.Identity:DefaultError": "Došlo je do neočekivane greške.",
"Volo.Abp.Identity:ConcurrencyFailure": "Provjera optimisti<74>ne paralelnosti nije uspjela. Entitet na kojem radite izmijenio je drugi korisnik. Molimo odbacite promjene i pokušajte ponovno.",
"Volo.Abp.Identity:DuplicateEmail": "Email '{0}' je već zauzet.",
"Volo.Abp.Identity:DuplicateRoleName": "Naziv uloge '{0}' već je zauzet.",
"Volo.Abp.Identity:DuplicateUserName": "Korisničko ime '{0}' je već zauzeto.",
"Volo.Abp.Identity:InvalidEmail": "E-pošta '{0}' nije važeća.",
"Volo.Abp.Identity:InvalidPasswordHasherCompatibilityMode": "Navedeni PasswordHasherCompatibilityMode je nevažeći.",
"Volo.Abp.Identity:InvalidPasswordHasherIterationCount": "Broj ponavljanja mora biti pozitivan cijeli broj.",
"Volo.Abp.Identity:InvalidRoleName": "Naziv uloge '{0}' nije valjan.",
"Volo.Abp.Identity:InvalidToken": "Pogrešan token.",
"Volo.Abp.Identity:InvalidUserName": "Korisničko ime '{0}' nije važeće, može sadržavati samo slova ili znamenke.",
"Volo.Abp.Identity:LoginAlreadyAssociated": "Korisnik s ovom prijavom već postoji.",
"Volo.Abp.Identity:PasswordMismatch": "Netočna lozinka.",
"Volo.Abp.Identity:PasswordRequiresDigit": "Lozinke moraju imati najmanje jednu znamenku ('0'-'9').",
"Volo.Abp.Identity:PasswordRequiresLower": "Zaporke moraju imati barem jedno malo slovo ('a'-'z').",
"Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Lozinke moraju imati barem jedan znak koji nije alfanumerički.",
"Volo.Abp.Identity:PasswordRequiresUpper": "Lozinke moraju imati barem jedno veliko slovo ('A'-'Z').",
"Volo.Abp.Identity:PasswordTooShort": "Zaporke moraju imati najmanje {0} znakova.",
"Volo.Abp.Identity:RoleNotFound": "Uloga {0} ne postoji.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "Korisnik već ima postavljenu lozinku.",
"Volo.Abp.Identity:UserAlreadyInRole": "Korisnik je već u ulozi '{0}'.",
"Volo.Abp.Identity:UserLockedOut": "Korisnik je zaključan.",
"Volo.Abp.Identity:UserLockoutNotEnabled": "Zaključavanje nije omogućeno za ovog korisnika.",
"Volo.Abp.Identity:UserNameNotFound": "Korisnik {0} ne postoji.",
"Volo.Abp.Identity:UserNotInRole": "Korisnik nije u ulozi '{0}'.",
"Volo.Abp.Identity:PasswordConfirmationFailed": "Lozinka ne odgovara lozinci za potvrdu.",
"Volo.Abp.Identity:010001": "Ne možete izbrisati vlastiti račun!",
"Volo.Abp.Identity:010002": "Ne možete postaviti više od {MaxUserMembershipCount} organizacijske jedinice za korisnika!",
"Volo.Abp.Identity:010003": "Nije moguće promijeniti lozinku eksterno prijavljenog korisnika!",
"Volo.Abp.Identity:010004": "Već postoji organizacijska jedinica s imenom {0}. Dvije jedinice s istim imenom ne mogu se stvoriti na istoj razini.",
"Volo.Abp.Identity:010005": "Statičke uloge nije moguće preimenovati.",
"Volo.Abp.Identity:010006": "Statičke uloge nije moguće izbrisati.",
"Volo.Abp.Identity:010007": "Ne možete promijeniti postavku dva faktora.",
"Volo.Abp.Identity:010008": "Nije dopušteno mijenjati postavke dvofaktorske autentifikacije.",
"Identity.OrganizationUnit.MaxUserMembershipCount": "Maksimalni dopušteni broj članstva u organizacijskoj jedinici za korisnika",
"ThisUserIsNotActiveMessage": "Ovaj korisnik nije aktivan.",
"Permission:IdentityManagement": "Upravljanje identitetom",
"Permission:RoleManagement": "Upravljanje ulogama",
"Permission:Create": "Stvoriti",
"Permission:Edit": "Uredi",
"Permission:Delete": "Izbrisati",
"Permission:ChangePermissions": "Promjena dopuštenja",
"Permission:UserManagement": "Upravljanje korisnicima",
"Permission:UserLookup": "Traženje korisnika",
"DisplayName:Abp.Identity.Password.RequiredLength": "Potrebna dužina",
"DisplayName:Abp.Identity.Password.RequiredUniqueChars": "Potreban broj jedinstvenih znakova",
"DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "Potreban znak koji nije alfanumerički",
"DisplayName:Abp.Identity.Password.RequireLowercase": "Obavezno malo slovo",
"DisplayName:Abp.Identity.Password.RequireUppercase": "Obavezno veliko slovo",
"DisplayName:Abp.Identity.Password.RequireDigit": "Obavezna znamenka",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogućeno za nove korisnike",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaključavanja (sekunde)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Maksimalan broj neuspjelih pokušaja pristupa",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "Zahtijeva potvrđenu e-poštu",
"DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Dopusti korisnicima da potvrde svoj telefonski broj",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Zahtijeva potvrđen telefonski broj",
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "Dopusti korisnicima promjenu korisničkih imena",
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "Dopustite korisnicima da mijenjaju svoje adrese e-pošte",
"Description:Abp.Identity.Password.RequiredLength": "Minimalna duljina lozinke.",
"Description:Abp.Identity.Password.RequiredUniqueChars": "Najmanji broj jedinstvenih znakova koje lozinka mora sadržavati.",
"Description:Abp.Identity.Password.RequireNonAlphanumeric": "Ako lozinke moraju sadržavati nealfanumerički znak.",
"Description:Abp.Identity.Password.RequireLowercase": "Ako lozinke moraju sadržavati mali ASCII znak.",
"Description:Abp.Identity.Password.RequireUppercase": "Ako lozinke moraju sadržavati veliki ASCII znak.",
"Description:Abp.Identity.Password.RequireDigit": "Ako lozinke moraju sadržavati znamenku.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Može li se novi korisnik zaključati.",
"Description:Abp.Identity.Lockout.LockoutDuration": "Trajanje koliko je korisnik zaključan kada dođe do zaključavanja.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Broj dopuštenih neuspjelih pokušaja pristupa prije nego što se korisnik zaključa, pod pretpostavkom da je zaključavanje omogućeno.",
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "Je li za prijavu potrebna potvrđena adresa e-pošte.",
"Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Može li korisnik potvrditi telefonski broj.",
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Je li za prijavu potreban potvrđeni telefonski broj.",
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Može li korisnik ažurirati korisničko ime.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Može li korisnik ažurirati e-poštu."
}
}

@ -20,8 +20,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="OpenIddict.Server.AspNetCore" Version="4.0.0-preview5.22557.92" />
<PackageReference Include="OpenIddict.Validation.AspNetCore" Version="4.0.0-preview5.22557.92" />
<PackageReference Include="OpenIddict.Validation.ServerIntegration" Version="4.0.0-preview5.22557.92" />
<PackageReference Include="OpenIddict.Server.AspNetCore" Version="4.0.0-preview6.22566.67" />
<PackageReference Include="OpenIddict.Validation.AspNetCore" Version="4.0.0-preview6.22566.67" />
<PackageReference Include="OpenIddict.Validation.ServerIntegration" Version="4.0.0-preview6.22566.67" />
</ItemGroup>
</Project>

@ -14,7 +14,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="OpenIddict.Abstractions" Version="4.0.0-preview5.22557.92" />
<PackageReference Include="OpenIddict.Abstractions" Version="4.0.0-preview6.22566.67" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftPackageVersion)" />
</ItemGroup>

@ -17,7 +17,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="OpenIddict.Core" Version="4.0.0-preview5.22557.92" />
<PackageReference Include="OpenIddict.Core" Version="4.0.0-preview6.22566.67" />
</ItemGroup>
</Project>

@ -0,0 +1,11 @@
{
"culture": "hr",
"texts": {
"Permissions": "Dozvole",
"OnlyProviderPermissons": "Samo ovaj pružatelj usluga",
"All": "Svi",
"SelectAllInAllTabs": "Dodijelite sva dopuštenja",
"SelectAllInThisTab": "Odaberi sve",
"SaveWithoutAnyPermissionsWarningMessage": "Jeste li sigurni da želite spremiti bez ikakvih dopuštenja?"
}
}

@ -0,0 +1,34 @@
{
"culture": "hr",
"texts": {
"Settings": "Postavke",
"SuccessfullySaved": "Uspješno spremljeno",
"Permission:SettingManagement": "Upravljanje postavkama",
"Permission:Emailing": "Slanje e-poštom",
"Permission:EmailingTest": "Test slanja e-pošte",
"SendTestEmail": "Po<50>alji probnu e-poštu",
"SenderEmailAddress": "Adresa e-pošte pošiljatelja",
"TargetEmailAddress": "Ciljana adresa e-pošte",
"Subject": "Predmet",
"Body": "Tijelo",
"TestEmailSubject": "Probna e-pošta {0}",
"TestEmailBody": "Testirajte tijelo poruke e-pošte ovdje",
"SuccessfullySent": "Uspješno poslano",
"Send": "Poslati",
"Menu:Emailing": "Slanje e-poštom",
"SmtpHost": "Domaćin",
"SmtpPort": "Port",
"SmtpUserName": "Korisničko ime",
"SmtpPassword": "Zaporka",
"SmtpDomain": "Domena",
"SmtpEnableSsl": "Omogući ssl",
"SmtpUseDefaultCredentials": "Koristite zadane vjerodajnice",
"DefaultFromAddress": "Zadana adresa",
"DefaultFromDisplayName": "Zadano iz imena za prikaz",
"Feature:SettingManagementGroup": "Upravljanje postavkama",
"Feature:SettingManagementEnable": "Omogući upravljanje postavkama",
"Feature:SettingManagementEnableDescription": "Omogućite sustav upravljanja postavkama u aplikaciji.",
"Feature:AllowChangingEmailSettings": "Dopusti promjenu postavki e-pošte.",
"Feature:AllowChangingEmailSettingsDescription": "Dopusti promjenu postavki e-pošte."
}
}

@ -65,14 +65,21 @@
</Field>
</Validation>
<Validation MessageLocalizer="@LH.Localize">
<Field>
<FieldLabel>@L["DisplayName:AdminPassword"] *</FieldLabel>
<TextEdit Role="@TextRole.Password" @bind-Text="@NewEntity.AdminPassword">
<Feedback>
<ValidationError/>
</Feedback>
</TextEdit>
</Field>
<Field>
<FieldLabel>@L["DisplayName:AdminPassword"] *</FieldLabel>
<Addons>
<Addon AddonType="AddonType.Body">
<TextEdit Role="ShowPassword ? TextRole.Text : TextRole.Password" @bind-Text="@NewEntity.AdminPassword">
</TextEdit>
</Addon>
<Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => TogglePasswordVisibility())">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" />
</Button>
</Addon>
</Addons>
<ValidationError Style="display: block" />
</Field>
</Validation>
<ExtensionProperties TEntityType="TenantCreateDto" TResourceType="AbpTenantManagementResource" Entity="@NewEntity" LH="@LH"/>
</Validations>

@ -1,14 +1,11 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Blazorise;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions;
using Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns;
using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars;
using Volo.Abp.BlazoriseUI;
using Volo.Abp.FeatureManagement;
using Volo.Abp.FeatureManagement.Blazor.Components;
using Volo.Abp.ObjectExtending;
using Volo.Abp.TenantManagement.Localization;
@ -24,6 +21,8 @@ public partial class TenantManagement
protected FeatureManagementModal FeatureManagementModal;
protected bool ShowPassword { get; set; }
protected PageToolbar Toolbar { get; } = new();
protected List<TableColumn> TenantManagementTableColumns => TableColumns.Get<TenantManagement>();
@ -127,4 +126,9 @@ public partial class TenantManagement
return base.SetTableColumnsAsync();
}
protected virtual void TogglePasswordVisibility()
{
ShowPassword = !ShowPassword;
}
}

@ -0,0 +1,23 @@
{
"culture": "hr",
"texts": {
"Volo.Abp.TenantManagement:DuplicateTenantName": "Ime stanara već postoji: {Name}",
"Menu:TenantManagement": "Upravljanje stanarima",
"Tenants": "Stanari",
"NewTenant": "Novi stanar",
"TenantName": "Ime Tenant-a",
"DisplayName:TenantName": "Ime Tenant-a",
"TenantDeletionConfirmationMessage": "Tenant '{0}' bit će izbrisan. Potvrđujete li to?",
"ConnectionStrings": "Veze na bazu podataka",
"DisplayName:DefaultConnectionString": "Zadana veza na bazu podataka",
"DisplayName:UseSharedDatabase": "Koristite dijeljenu bazu podataka",
"Permission:TenantManagement": "Upravljanje tenant-ima",
"Permission:Create": "Stvoriti",
"Permission:Edit": "Uredi",
"Permission:Delete": "Izbrisati",
"Permission:ManageConnectionStrings": "Upravljanje vezom na bazu podataka",
"Permission:ManageFeatures": "Upravljanje značajkama",
"DisplayName:AdminEmailAddress": "Adresa e-pošte administratora",
"DisplayName:AdminPassword": "Administratorska lozinka"
}
}

@ -6,4 +6,14 @@ public static class TenantConsts
/// Default value: 64
/// </summary>
public static int MaxNameLength { get; set; } = 64;
/// <summary>
/// Default value: 128
/// </summary>
public static int MaxPasswordLength { get; set; } = 128;
/// <summary>
/// Default value: 256
/// </summary>
public static int MaxAdminEmailAddressLength { get; set; } = 256;
}

@ -0,0 +1,22 @@
$(document).ready(function () {
$(document).on('click', '#PasswordVisibilityButton', function () {
let button = $(this);
let passwordInput = button.parent().find("input");
if (!passwordInput) {
return;
}
if (passwordInput.attr("type") === "password") {
passwordInput.attr("type", "text");
}
else {
passwordInput.attr("type", "password");
}
let icon = button.find("i");
if (icon) {
icon.toggleClass("fa-eye-slash").toggleClass("fa-eye");
}
})
});

@ -7,6 +7,7 @@
@using Volo.Abp.TenantManagement.Localization
@using Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
@using Volo.Abp.Data
@using Volo.Abp.TenantManagement;
@model CreateModalModel
@inject IHtmlLocalizer<AbpTenantManagementResource> L
@inject IStringLocalizerFactory StringLocalizerFactory
@ -21,7 +22,15 @@
<abp-input asp-for="Tenant.AdminEmailAddress" />
<abp-input asp-for="Tenant.AdminPassword" />
<div class="mb-3">
<div class="input-group">
<input type="password" class="form-control" maxlength="@TenantConsts.MaxPasswordLength" asp-for="Tenant.AdminPassword" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton">
<i class="fa fa-eye-slash" aria-hidden="true"></i>
</button>
</div>
<span asp-validation-for="Tenant.AdminPassword"></span>
</div>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModalModel.TenantInfoModel>())
{

@ -43,12 +43,13 @@ public class CreateModalModel : TenantManagementPageModel
[Required]
[EmailAddress]
[MaxLength(256)]
[DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.MaxAdminEmailAddressLength))]
public string AdminEmailAddress { get; set; }
[Required]
[DataType(DataType.Password)]
[MaxLength(128)]
[DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.MaxPasswordLength))]
public string AdminPassword { get; set; }
}
}

@ -21,7 +21,8 @@
<abp-script-bundle name="@typeof(IndexModel).FullName">
<abp-script src="/client-proxies/multi-tenancy-proxy.js" />
<abp-script src="/Pages/FeatureManagement/feature-management-modal.js"/>
<abp-script src="/Pages/TenantManagement/Tenants/Index.js"/>
<abp-script src="/Pages/TenantManagement/Tenants/Index.js" />
<abp-script src="/Pages/TenantManagement/Tenants/Create.js" />
</abp-script-bundle>
}
@section content_toolbar {

@ -19,7 +19,7 @@
"@abp/ng.setting-management": "~7.0.0-rc.1",
"@abp/ng.tenant-management": "~7.0.0-rc.1",
"@abp/ng.theme.shared": "~7.0.0-rc.1",
"@abp/ng.theme.lepton-x": "~2.0.0-preview20221014",
"@abp/ng.theme.lepton-x": "~2.0.0-rc.1",
"@angular/animations": "^14.2.1",
"@angular/common": "^14.2.1",
"@angular/compiler": "^14.2.1",

@ -55,7 +55,7 @@ public class Program
}
catch (Exception ex)
{
if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
if (ex is HostAbortedException)
{
throw;
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-preview20221014"
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-rc.1"
}
}

@ -60,7 +60,7 @@ public class Program
}
catch (Exception ex)
{
if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
if (ex is HostAbortedException)
{
throw;
}

@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014",
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1",
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-rc.1"
}
}

@ -55,7 +55,7 @@ public class Program
}
catch (Exception ex)
{
if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
if (ex is HostAbortedException)
{
throw;
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -60,7 +60,7 @@ public class Program
}
catch (Exception ex)
{
if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
if (ex is HostAbortedException)
{
throw;
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -55,7 +55,7 @@ public class Program
}
catch (Exception ex)
{
if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
if (ex is HostAbortedException)
{
throw;
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -60,7 +60,7 @@ public class Program
}
catch (Exception ex)
{
if (ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
if (ex is HostAbortedException)
{
throw;
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -19,7 +19,7 @@
"@abp/ng.setting-management": "~7.0.0-rc.1",
"@abp/ng.tenant-management": "~7.0.0-rc.1",
"@abp/ng.theme.shared": "~7.0.0-rc.1",
"@abp/ng.theme.lepton-x": "~2.0.0-preview20221014",
"@abp/ng.theme.lepton-x": "~2.0.0-rc.1",
"@angular/animations": "^14.2.1",
"@angular/common": "^14.2.1",
"@angular/compiler": "^14.2.1",

@ -3,6 +3,6 @@
"name": "my-app-authserver",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014",
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1",
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-rc.1"
}
}

@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014",
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1",
"@abp/aspnetcore.components.server.leptonxlitetheme": "~2.0.0-rc.1"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -8,7 +8,7 @@
<base href="/" />
<!--ABP:Styles-->
<link href="global.css?_v=638036140263987806" rel="stylesheet"/>
<link href="global.css?_v=638042184565255290" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<!--/ABP:Styles-->
<link href="MyCompanyName.MyProjectName.Blazor.styles.css" rel="stylesheet"/>
@ -29,7 +29,7 @@
</div>
<!--ABP:Scripts-->
<script src="global.js?_v=638036140265768416"></script>
<script src="global.js?_v=638042184568471262"></script>
<!--/ABP:Scripts-->
<!-- <TEMPLATE-REMOVE IF-NOT='PWA'> -->

@ -0,0 +1,8 @@
{
"culture": "hr",
"texts": {
"Menu:Home": "Početna",
"Welcome": "Dobrodošli",
"LongWelcomeMessage": "Dobrodošli u aplikaciju. Ovo je startup projekt temeljen na ABP framework-u. Za više informacija posjetite abp.io."
}
}

@ -41,6 +41,7 @@ public class MyProjectNameDomainModule : AbpModule
options.Languages.Add(new LanguageInfo("en", "en", "English", "gb"));
options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)"));
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar"));
options.Languages.Add(new LanguageInfo("hr", "hr", "Croatian"));
options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish", "fi"));
options.Languages.Add(new LanguageInfo("fr", "fr", "Français", "fr"));
options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in"));

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-preview20221014"
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0-rc.1"
}
}

@ -8,7 +8,7 @@
<base href="/" />
<!--ABP:Styles-->
<link href="global.css?_v=638036140548899053" rel="stylesheet"/>
<link href="global.css?_v=638042184864919740" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<!--/ABP:Styles-->
</head>
@ -22,7 +22,7 @@
</div>
<!--ABP:Scripts-->
<script src="global.js?_v=638036140549851619"></script>
<script src="global.js?_v=638042184865781315"></script>
<!--/ABP:Scripts-->
</body>
</html>

Loading…
Cancel
Save