diff --git a/README.md b/README.md index 676608b12734992588288174ab3fc46b4d4707ab..8b8de5d256132b5dff61decebe36fd3eaf14871e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,3 @@ -自荐下我们新的全职开源项目 **[HertzBeat赫兹节拍](https://github.com/dromara/hertzbeat)** - 易用友好的高性能监控告警系统。 -网站监测,PING连通性,端口可用性,数据库监控,API监控,自定义监控,阈值告警,告警通知。 - -**代码仓库: [GITHUB](https://github.com/dromara/hertzbeat) | [GITEE](https://gitee.com/dromara/hertzbeat)** -**官网: [hertzbeat.com](https://hertzbeat.com) | [tancloud.cn](https://tancloud.cn)** -**[在线使用](https://console.tancloud.cn)** https://console.tancloud.cn - -欢迎使用,点赞,推荐,灰常感谢🙏。 - -

sureness @@ -244,6 +234,7 @@ See [CONTRIBUTING](CONTRIBUTING.md) ## 🌞 Friend's Links +* **```HertzBeat```** An open-source, real-time monitoring system with custom-monitor and agentLess: [Github](https://github.com/dromara/hertzbeat) * **```JustAuth```** A Java library of third-party authorized login: [Github](https://github.com/justauth/JustAuth) * **```MaxKey```** Leading-Edge Enterprise-Class open source IAM Identity and Access management product: [Github](https://github.com/dromara/MaxKey) * **```PhalApi```** PHP Api Framework: [Website](https://www.phalapi.net/) diff --git a/README_CN.md b/README_CN.md index 17caea5915610587ff20e9e9524e1fd17874860f..04065348a1958f5558ab79e4ff58954fb6bd4d9d 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,12 +1,3 @@ -自荐下我们新的全职开源项目 **[HertzBeat赫兹节拍](https://gitee.com/dromara/hertzbeat)** - 易用友好的高性能监控告警系统。 -网站监测,PING连通性,端口可用性,数据库监控,API监控,自定义监控,阈值告警,告警通知。 - -**代码仓库: [GITHUB](https://github.com/dromara/hertzbeat) | [GITEE](https://gitee.com/dromara/hertzbeat)** -**官网: [hertzbeat.com](https://hertzbeat.com) | [tancloud.cn](https://tancloud.cn)** -**[在线使用](https://console.tancloud.cn)** https://console.tancloud.cn - -欢迎使用,点赞,推荐,灰常感谢🙏。 -

sureness @@ -262,6 +253,7 @@ Sureness提供了下面这些常用接口作为扩展点: ## 🌞 开源推荐 +* **```HertzBeat```** 易用友好的实时监控系统,无需Agent,强大自定义监控能力: [Github](https://github.com/dromara/hertzbeat) * **```JustAuth```** 小而全而美的第三方登录开源组件: [Gitee](https://gitee.com/yadong.zhang/JustAuth) * **```MaxKey```** 业界领先的企业级开源IAM身份管理和身份认证产品: [Gitee](https://gitee.com/dromara/MaxKey) * **```PhalApi```** 一个轻量级PHP开源接口框架: [官网](https://www.phalapi.net/) diff --git a/home/i18n/en/code.json b/home/i18n/en/code.json new file mode 100644 index 0000000000000000000000000000000000000000..618b1e7680ebd77da03fcecdebb842b26c7b66e5 --- /dev/null +++ b/home/i18n/en/code.json @@ -0,0 +1,484 @@ +{ + "Extendable": { + "message": "Extendable" + }, + "Focus on the protection of {restApi}. Based on {rbac}.{br}Provides {authentication} and {authorization}, etc.{br}Extension custom interface is {simple} and really {useful}.": { + "message": "Focus on the protection of {restApi}. Based on {rbac}.{br}Provides {authentication} and {authorization}, etc.{br}Extension custom interface is {simple} and really {useful}." + }, + "Compatible": { + "message": "Compatible" + }, + "Support {WebSockets}, HTTP containers ({Servlet} and {JaxRs}).{br}No framework dependency.{native} supports {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus},{Ktor}, {Solon}, {Jfinal}, {Micronaut} etc.": { + "message": "Support {WebSockets}, HTTP containers ({Servlet} and {JaxRs}).{br}No framework dependency.{native} supports {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus},{Ktor}, {Solon}, {Jfinal}, {Micronaut} etc." + }, + "Multi And Fast": { + "message": "Multi And Fast" + }, + "Supports {jwt}, {basic}, {digest} etc.{br}{dynamic} modification of {perm}.{br}{high} with {tree}.": { + "message": "Supports {jwt}, {basic}, {digest} etc.{br}{dynamic} modification of {perm}.{br}{high} with {tree}." + }, + "Focus on Protection of API": { + "message": "Focus on Protection of API" + }, + "Get Started": { + "message": "Get Started" + }, + "Support for Jvm Modern Frameworks": { + "message": "Support for Jvm Modern Frameworks" + }, + "Sureness allows you to security any server written with jvm modern frameworks such as {Spring}, {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Micronaut}, {Solon}, {Jfinal} or {Ktor} as well as frameworks for Kotlin.": { + "message": "Sureness allows you to security any server written with jvm modern frameworks such as {Spring}, {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Micronaut}, {Solon}, {Jfinal} or {Ktor} as well as frameworks for Kotlin." + }, + "The essence of Sureness is to use {interceptor}(like servlet filter or Spring interceptor) to intercept all rest requests for authenticating and authorizing.{br}So no matter any framework, as long as it has a interceptor, it can integrate with sureness. Sureness uses {handling}, {checkIn} will return {SubjectSum}(user information) when auth success, or throw different types of auth exceptions when auth error.": { + "message": "The essence of Sureness is to use {interceptor}(like servlet filter or Spring interceptor) to intercept all rest requests for authenticating and authorizing.{br}So no matter any framework, as long as it has a interceptor, it can integrate with sureness. Sureness uses {handling}, {checkIn} will return {SubjectSum}(user information) when auth success, or throw different types of auth exceptions when auth error." + }, + "Multi Support Samples": { + "message": "Multi Support Samples" + }, + "Benchmark Compare": { + "message": "Benchmark Compare" + }, + "{Benchmark} test shows Sureness to lose 0.026ms performance compared to frameless application, Shiro lose 0.088ms, Spring Security lose 0.116ms.{br}In contrast, Sureness basically does not consume performance, and the performance (TPS loss) is {times3} that of Shiro and {times4} that of Spring Security.{br}{increases}.": { + "message": "{Benchmark} test shows Sureness to lose 0.026ms performance compared to frameless application, Shiro lose 0.088ms, Spring Security lose 0.116ms.{br}In contrast, Sureness basically does not consume performance, and the performance (TPS loss) is {times3} that of Shiro and {times4} that of Spring Security.{br}{increases}." + }, + "Why Is High Performance": { + "message": "Why Is High Performance" + }, + "In a large number of requests, we found that the {linear} of the {filter} is a performance bottleneck. {br}So we used a {tree} instead of {ant}.{br}Practice has proved that it is very {effective}.": { + "message": "In a large number of requests, we found that the {linear} of the {filter} is a performance bottleneck. {br}So we used a {tree} instead of {ant}.{br}Practice has proved that it is very {effective}." + }, + "Get Started With Sureness within Minutes": { + "message": "Get Started With Sureness within Minutes" + }, + "We provide many tutorials and samples, you can refer to them to builda complete permission project within 10 minutes.{br}Have Fun!": { + "message": "We provide many tutorials and samples, you can refer to them to builda complete permission project within 10 minutes.{br}Have Fun!" + }, + "sponsor": { + "message": "sponsor" + }, + "Friend Links": { + "message": "Friend Links" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again when the page crashed" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer Entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older Entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer Post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older Post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.tags.tagsPageLink": { + "message": "View All Tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages navigation", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Edit this page", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to heading", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "Toggle the collapsible sidebar category '{label}'", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMore": { + "message": "Read More", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.SearchBar.label": { + "message": "Search", + "description": "The ARIA label and placeholder for search button" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "Clear the query", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "Cancel", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "Recent", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "No recent searches", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "Save this search", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "Remove this search from history", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "Favorite", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "Remove this search from favorites", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "Unable to fetch results", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "You might want to check your network connection.", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "to select", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter key", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "to navigate", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "Arrow up", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "Arrow down", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "to close", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Escape key", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "Search by", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "No results for", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "Try searching for", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "Believe this query should return results?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "Let us know.", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "Search docs", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.SearchBar.seeAll": { + "message": "See all {count} results" + }, + "theme.SearchPage.documentsFound.plurals": { + "message": "One document found|{count} documents found", + "description": "Pluralized label for \"{count} documents found\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.SearchPage.existingResultsTitle": { + "message": "Search results for \"{query}\"", + "description": "The search page title for non-empty query" + }, + "theme.SearchPage.emptyResultsTitle": { + "message": "Search the documentation", + "description": "The search page title for empty query" + }, + "theme.SearchPage.inputPlaceholder": { + "message": "Type your search here", + "description": "The placeholder for search page input" + }, + "theme.SearchPage.inputLabel": { + "message": "Search", + "description": "The ARIA label for search page input" + }, + "theme.SearchPage.algoliaLabel": { + "message": "Search by Algolia", + "description": "The ARIA label for Algolia mention" + }, + "theme.SearchPage.noResultsText": { + "message": "No results were found", + "description": "The paragraph for empty search result" + }, + "theme.SearchPage.fetchingNewResults": { + "message": "Fetching new results...", + "description": "The paragraph for fetching new search results" + }, + "theme.IdealImageMessage.loading": { + "message": "Loading...", + "description": "When the full-scale image is loading" + }, + "theme.IdealImageMessage.load": { + "message": "Click to load{sizeMessage}", + "description": "To prompt users to load the full image. sizeMessage is a parenthesized size figure." + }, + "theme.IdealImageMessage.offline": { + "message": "Your browser is offline. Image not loaded", + "description": "When the user is viewing an offline document" + }, + "theme.IdealImageMessage.404error": { + "message": "404. Image not found", + "description": "When the image is not found" + }, + "theme.IdealImageMessage.error": { + "message": "Error. Click to reload", + "description": "When the image fails to load for unknown error" + }, + "theme.PwaReloadPopup.info": { + "message": "New version available", + "description": "The text for PWA reload popup" + }, + "theme.PwaReloadPopup.refreshButtonText": { + "message": "Refresh", + "description": "The text for PWA reload button" + }, + "theme.PwaReloadPopup.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of PWA reload popup" + }, + "theme.Playground.result": { + "message": "Result", + "description": "The result label of the live codeblocks" + }, + "theme.Playground.liveEditor": { + "message": "Live Editor", + "description": "The live editor label of the live codeblocks" + } +} diff --git a/home/i18n/en/docusaurus-plugin-content-blog/options.json b/home/i18n/en/docusaurus-plugin-content-blog/options.json new file mode 100644 index 0000000000000000000000000000000000000000..9239ff706c28811b3931968257fffe5465d4cb0e --- /dev/null +++ b/home/i18n/en/docusaurus-plugin-content-blog/options.json @@ -0,0 +1,14 @@ +{ + "title": { + "message": "Blog", + "description": "The title for the blog used in SEO" + }, + "description": { + "message": "Blog", + "description": "The description for the blog used in SEO" + }, + "sidebar.title": { + "message": "Recent posts", + "description": "The label for the left sidebar" + } +} diff --git a/home/i18n/en/docusaurus-plugin-content-docs/current.json b/home/i18n/en/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000000000000000000000000000000000000..ae155ff993d7afad9d5f7b4dd3e47970d9e3c960 --- /dev/null +++ b/home/i18n/en/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,22 @@ +{ + "version.label": { + "message": "Next", + "description": "The label for version current" + }, + "sidebar.docs.category.Guides": { + "message": "Guides", + "description": "The label for category Guides in sidebar docs" + }, + "sidebar.docs.category.Advanced": { + "message": "Advanced", + "description": "The label for category Advanced in sidebar docs" + }, + "sidebar.docs.category.Integrate": { + "message": "Integrate", + "description": "The label for category Integrate in sidebar docs" + }, + "sidebar.docs.category.Others": { + "message": "Others", + "description": "The label for category Others in sidebar docs" + } +} diff --git a/home/i18n/en/docusaurus-theme-classic/footer.json b/home/i18n/en/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000000000000000000000000000000000000..f41d701c31a5e424eab79c2896a12baf53a249d1 --- /dev/null +++ b/home/i18n/en/docusaurus-theme-classic/footer.json @@ -0,0 +1,62 @@ +{ + "link.title.About Sureness": { + "message": "About Sureness", + "description": "The title of the footer links column with title=About Sureness in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.More": { + "message": "More", + "description": "The title of the footer links column with title=More in the footer" + }, + "link.item.label.Github": { + "message": "Github", + "description": "The label of footer link with label=Github linking to https://github.com/dromara/sureness" + }, + "link.item.label.Gitee": { + "message": "Gitee", + "description": "The label of footer link with label=Gitee linking to https://gitee.com/dromara/sureness" + }, + "link.item.label.High Performance": { + "message": "High Performance", + "description": "The label of footer link with label=High Performance linking to https://github.com/tomsun28/sureness-shiro-spring-security-benchmark" + }, + "link.item.label.Dashboard": { + "message": "Dashboard", + "description": "The label of footer link with label=Dashboard linking to https://github.com/dromara/sureness/projects/1" + }, + "link.item.label.Dromara": { + "message": "Dromara", + "description": "The label of footer link with label=Dromara linking to https://dromara.org" + }, + "link.item.label.Github Discussion": { + "message": "Github Discussion", + "description": "The label of footer link with label=Github Discussion linking to https://github.com/dromara/sureness/discussions" + }, + "link.item.label.Gitter Channel": { + "message": "Gitter Channel", + "description": "The label of footer link with label=Gitter Channel linking to https://gitter.im/usthe/sureness" + }, + "link.item.label.QQ Group - 390083213": { + "message": "QQ Group - 390083213", + "description": "The label of footer link with label=QQ Group - 390083213 linking to https://qm.qq.com/cgi-bin/qm/qr?k=3IpzQjFOztJe464_eMBmDHfT0YTWK5Qa&jump_from=webapi" + }, + "link.item.label.Tom Blog": { + "message": "Tom Blog", + "description": "The label of footer link with label=Tom Blog linking to https://blog.usthe.com" + }, + "link.item.label.USTHE": { + "message": "USTHE", + "description": "The label of footer link with label=USTHE linking to https://github.com/usthe" + }, + "link.item.label.Tom": { + "message": "Tom", + "description": "The label of footer link with label=Tom linking to https://github.com/tomsun28" + }, + "copyright": { + "message": "Apache License 2.0 | Copyright © 2022", + "description": "The footer copyright" + } +} diff --git a/home/i18n/en/docusaurus-theme-classic/navbar.json b/home/i18n/en/docusaurus-theme-classic/navbar.json new file mode 100644 index 0000000000000000000000000000000000000000..b6bef2a377a04fff0b053825d95f1a1463d5fe15 --- /dev/null +++ b/home/i18n/en/docusaurus-theme-classic/navbar.json @@ -0,0 +1,54 @@ +{ + "title": { + "message": " ", + "description": "The title in the navbar" + }, + "item.label.Document": { + "message": "Document", + "description": "Navbar item with label Document" + }, + "item.label.Blog": { + "message": "Blog", + "description": "Navbar item with label Blog" + }, + "item.label.Dashboard": { + "message": "Dashboard", + "description": "Navbar item with label Dashboard" + }, + "item.label.High Performance": { + "message": "High Performance", + "description": "Navbar item with label High Performance" + }, + "item.label.Discuss": { + "message": "Discuss", + "description": "Navbar item with label Discuss" + }, + "item.label.Other": { + "message": "Other", + "description": "Navbar item with label Other" + }, + "item.label.Github Discussion": { + "message": "Github Discussion", + "description": "Navbar item with label Github Discussion" + }, + "item.label.Gitter Channel": { + "message": "Gitter Channel", + "description": "Navbar item with label Gitter Channel" + }, + "item.label.QQ Group - 390083213": { + "message": "QQ Group - 390083213", + "description": "Navbar item with label QQ Group - 390083213" + }, + "item.label.Design": { + "message": "Design", + "description": "Navbar item with label Design" + }, + "item.label.Contributing": { + "message": "Contributing", + "description": "Navbar item with label Contributing" + }, + "item.label.Sponsor": { + "message": "Sponsor", + "description": "Navbar item with label Sponsor" + } +} diff --git a/home/i18n/zh-cn/code.json b/home/i18n/zh-cn/code.json index e8df934a7ea71a5058fe54233c5047a2492d33f2..d8f109e2960806e8a677acdb372693fa7a5ae1f8 100644 --- a/home/i18n/zh-cn/code.json +++ b/home/i18n/zh-cn/code.json @@ -125,7 +125,7 @@ }, "theme.docs.versions.latestVersionSuggestionLabel": { "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", - "description": "The label userd to tell the user that he's browsing an unmaintained doc version" + "description": "The label used to tell the user to check the latest version" }, "theme.docs.versions.latestVersionLinkLabel": { "message": "latest version", @@ -270,5 +270,230 @@ }, "Media Partners": { "message": "合作媒体" + }, + "sponsor": { + "message": "特别赞助" + }, + "theme.ErrorPageContent.title": { + "message": "页面已崩溃。", + "description": "The title of the fallback page when the page crashed" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "重试", + "description": "The label of the button to try again when the page crashed" + }, + "theme.admonition.note": { + "message": "备注", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "提示", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.danger": { + "message": "危险", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "信息", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.caution": { + "message": "警告", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "回到顶部", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.archive.title": { + "message": "历史博文", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "历史博文", + "description": "The page & hero description of the blog archive page" + }, + "theme.colorToggle.ariaLabel": { + "message": "切换浅色/暗黑模式(当前为{mode})", + "description": "The ARIA label for the navbar color mode toggle" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "暗黑模式", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "浅色模式", + "description": "The name for the light color mode" + }, + "theme.docs.breadcrumbs.home": { + "message": "主页面", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "页面路径", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription": { + "message": "{count} 个项目", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "{count} 篇文档带有标签", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged}「{tagName}」", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "版本:{versionLabel}" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "选择版本", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "最近博文导航", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "切换自动换行", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": { + "message": "打开/收起侧边栏菜单「{label}」", + "description": "The ARIA label to toggle the collapsible sidebar category" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "选择语言", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "本页总览", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.blog.post.readMoreLabel": { + "message": "阅读 {title} 的全文", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← 回到主菜单", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.SearchBar.seeAll": { + "message": "查看全部 {count} 个结果" + }, + "theme.SearchModal.searchBox.resetButtonTitle": { + "message": "清除查询", + "description": "The label and ARIA label for search box reset button" + }, + "theme.SearchModal.searchBox.cancelButtonText": { + "message": "取消", + "description": "The label and ARIA label for search box cancel button" + }, + "theme.SearchModal.startScreen.recentSearchesTitle": { + "message": "最近搜索", + "description": "The title for recent searches" + }, + "theme.SearchModal.startScreen.noRecentSearchesText": { + "message": "没有最近搜索", + "description": "The text when no recent searches" + }, + "theme.SearchModal.startScreen.saveRecentSearchButtonTitle": { + "message": "保存这个搜索", + "description": "The label for save recent search button" + }, + "theme.SearchModal.startScreen.removeRecentSearchButtonTitle": { + "message": "从历史记录中删除这个搜索", + "description": "The label for remove recent search button" + }, + "theme.SearchModal.startScreen.favoriteSearchesTitle": { + "message": "收藏", + "description": "The title for favorite searches" + }, + "theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle": { + "message": "从收藏列表中删除这个搜索", + "description": "The label for remove favorite search button" + }, + "theme.SearchModal.errorScreen.titleText": { + "message": "无法获取结果", + "description": "The title for error screen of search modal" + }, + "theme.SearchModal.errorScreen.helpText": { + "message": "你可能需要检查网络连接。", + "description": "The help text for error screen of search modal" + }, + "theme.SearchModal.footer.selectText": { + "message": "选中", + "description": "The explanatory text of the action for the enter key" + }, + "theme.SearchModal.footer.selectKeyAriaLabel": { + "message": "Enter 键", + "description": "The ARIA label for the Enter key button that makes the selection" + }, + "theme.SearchModal.footer.navigateText": { + "message": "导航", + "description": "The explanatory text of the action for the Arrow up and Arrow down key" + }, + "theme.SearchModal.footer.navigateUpKeyAriaLabel": { + "message": "向上键", + "description": "The ARIA label for the Arrow up key button that makes the navigation" + }, + "theme.SearchModal.footer.navigateDownKeyAriaLabel": { + "message": "向下键", + "description": "The ARIA label for the Arrow down key button that makes the navigation" + }, + "theme.SearchModal.footer.closeText": { + "message": "关闭", + "description": "The explanatory text of the action for Escape key" + }, + "theme.SearchModal.footer.closeKeyAriaLabel": { + "message": "Esc 键", + "description": "The ARIA label for the Escape key button that close the modal" + }, + "theme.SearchModal.footer.searchByText": { + "message": "搜索提供", + "description": "The text explain that the search is making by Algolia" + }, + "theme.SearchModal.noResultsScreen.noResultsText": { + "message": "没有结果:", + "description": "The text explains that there are no results for the following search" + }, + "theme.SearchModal.noResultsScreen.suggestedQueryText": { + "message": "试试搜索", + "description": "The text for the suggested query when no results are found for the following search" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsText": { + "message": "认为这个查询应该有结果?", + "description": "The text for the question where the user thinks there are missing results" + }, + "theme.SearchModal.noResultsScreen.reportMissingResultsLinkText": { + "message": "请告知我们。", + "description": "The text for the link to report missing results" + }, + "theme.SearchModal.placeholder": { + "message": "搜索文档", + "description": "The placeholder of the input of the DocSearch pop-up modal" + }, + "theme.IdealImageMessage.loading": { + "message": "加载中……", + "description": "When the full-scale image is loading" + }, + "theme.IdealImageMessage.load": { + "message": "点击加载图片{sizeMessage}", + "description": "To prompt users to load the full image. sizeMessage is a parenthesized size figure." + }, + "theme.IdealImageMessage.offline": { + "message": "你的浏览器处于离线状态。图片未加载", + "description": "When the user is viewing an offline document" + }, + "theme.IdealImageMessage.404error": { + "message": "未找到图片", + "description": "When the image is not found" + }, + "theme.IdealImageMessage.error": { + "message": "出现错误,点击重试", + "description": "When the image fails to load for unknown error" } -} \ No newline at end of file +} diff --git a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current.json b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current.json index 1219707ea2a252ed9eaa1f6910e995cc160e22e3..946b18023982071e039b8c7663dbe02fcef1edcd 100644 --- a/home/i18n/zh-cn/docusaurus-plugin-content-docs/current.json +++ b/home/i18n/zh-cn/docusaurus-plugin-content-docs/current.json @@ -19,4 +19,4 @@ "message": "其它", "description": "The label for category Others in sidebar docs" } -} \ No newline at end of file +} diff --git a/home/i18n/zh-cn/docusaurus-theme-classic/footer.json b/home/i18n/zh-cn/docusaurus-theme-classic/footer.json index 20f91fac2df706f8ef45cbd2bbb19452e5cd50c6..bb22193c1b910122e11b338122727e7fd1bae870 100644 --- a/home/i18n/zh-cn/docusaurus-theme-classic/footer.json +++ b/home/i18n/zh-cn/docusaurus-theme-classic/footer.json @@ -59,4 +59,4 @@ "message": "Tom", "description": "The label of footer link with label=Tom linking to https://github.com/tomsun28" } -} \ No newline at end of file +} diff --git a/home/i18n/zh-cn/docusaurus-theme-classic/navbar.json b/home/i18n/zh-cn/docusaurus-theme-classic/navbar.json index a69ddd98a035db5011baaffbe86ab1255cd02a42..f83d92639963550012396e9f0210ec1b42f76198 100644 --- a/home/i18n/zh-cn/docusaurus-theme-classic/navbar.json +++ b/home/i18n/zh-cn/docusaurus-theme-classic/navbar.json @@ -51,4 +51,4 @@ "message": "赞助", "description": "Navbar item with label Sponsor" } -} \ No newline at end of file +} diff --git a/home/src/pages/components/Sponsor.js b/home/src/pages/components/Sponsor.js new file mode 100644 index 0000000000000000000000000000000000000000..f51f1d662a614c96412e0538fa3b97db33b60fa0 --- /dev/null +++ b/home/src/pages/components/Sponsor.js @@ -0,0 +1,31 @@ +import React from 'react' +import styles from './Sponsor.module.css' +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; + +const iconCommonUrl = '/img/icons/' + +export default class Sponsor extends React.Component { + constructor (props) { + super(props) + } + + render () { + return ( + <> +

+

{this.props.headerTitle}

+
+ + {''}/ +
+

Postcat

+

开源API管理工具、接口文档、接口测试、Mock

+
+
+
+
+ + ) + } +} diff --git a/home/src/pages/components/Sponsor.module.css b/home/src/pages/components/Sponsor.module.css new file mode 100644 index 0000000000000000000000000000000000000000..892b66ed411b022ac4c4b4ed3d9eb37eb925400e --- /dev/null +++ b/home/src/pages/components/Sponsor.module.css @@ -0,0 +1,68 @@ +.cardList { + margin: -0.35rem; + display: flex; + flex-wrap: wrap; + align-items: flex-start; + width: 100%; +} + +.cardItem { + width: calc(33.33333% - .7rem); + margin: 0.35rem; + background: var(--bodyBg); + border-radius: 3px; + color: var(--textColor); + display: flex; + box-shadow: 1px 1px 2px 0 rgb(0 0 0 / 6%); + transition: all .4s; + background-color: var(--wdio-dark-section-background-color); +} + +.cardItemTextBody { + flex: 1; + display: inline-block; + float: right; + padding: 1rem 0; +} + +.cardItem:hover img { + box-shadow: 3px 2px 7px rgb(0 0 0 / 15%); +} + +.name { + margin: 0.2rem 0 0.3rem; + padding: 0 1rem; + transition: text-shadow .4s; + text-align: center; + font-weight: bolder; +} + +.desc { + font-size: .8rem; + line-height: 1.1rem; + opacity: .8; + margin-bottom: 0.2rem; + padding: 0 1rem; + transition: text-shadow .4s; + text-align: center; +} + +.zoom { + width: 70px; + height: 70px; + border-radius: 50%; + border: 2px solid #fff; + margin: 1rem 0 1rem 1rem; + box-shadow: 3px 2px 5px rgb(0 0 0 / 8%); + transition: all .4s; +} + +.companyUsage { + width: 100%; +} + +.title { + font-size: large; + font-weight: bolder; + text-align: center; +} diff --git a/home/src/pages/index.js b/home/src/pages/index.js index 3f1cfce569b4d34d80d4d37009ba87c3adccc671..300da0c27fc00548294b0efef2eea35253205ce3 100644 --- a/home/src/pages/index.js +++ b/home/src/pages/index.js @@ -15,6 +15,7 @@ import cdnTransfer from '../CdnTransfer' import styles from './styles.module.css' import { features, SetupExample, SurenessIntegration, friendLinks, mediaPartners } from '../constants' +import Sponsor from "./components/Sponsor"; function Home() { const context = useDocusaurusContext() @@ -66,6 +67,9 @@ function Home() {
+
+ +
{features && features.length > 0 && (
{features.map((props, idx) => ( diff --git a/home/static/img/icons/eoapi_logo.jpg b/home/static/img/icons/eoapi_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75231f0e954aaa2492717769141b44acf0a0b296 Binary files /dev/null and b/home/static/img/icons/eoapi_logo.jpg differ diff --git a/home/static/img/icons/postcat_logo.svg b/home/static/img/icons/postcat_logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..ba33c1679851ac7e5225429b04aa4a0dc16cffe5 --- /dev/null +++ b/home/static/img/icons/postcat_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file