{ "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.AnnouncementBar.closeButtonAriaLabel": { "message": "Close", "description": "The ARIA label for close button of announcement bar" }, "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.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.tags.tagsListLabel": { "message": "Tags:", "description": "The label alongside a tag list" }, "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.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.tags.tagsPageTitle": { "message": "Tags", "description": "The title of the tag list page" }, "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.CodeBlock.copyButtonAriaLabel": { "message": "Copy code to clipboard", "description": "The ARIA label for copy code blocks button" }, "theme.CodeBlock.copied": { "message": "Copied", "description": "The copied button label on code blocks" }, "theme.CodeBlock.copy": { "message": "Copy", "description": "The copy button label on code blocks" }, "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.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.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.docs.sidebar.responsiveCloseButtonLabel": { "message": "Close menu", "description": "The ARIA label for close button of mobile doc sidebar" }, "theme.docs.sidebar.responsiveOpenButtonLabel": { "message": "Open menu", "description": "The ARIA label for open button of mobile doc sidebar" }, "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 userd to tell the user that he's browsing an unmaintained doc version" }, "theme.docs.versions.latestVersionLinkLabel": { "message": "latest version", "description": "The label used for the latest version suggestion link label" }, "theme.common.editThisPage": { "message": "帮助我们修改文档", "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.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.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.SearchBar.label": { "message": "Search", "description": "The ARIA label and placeholder for search button" }, "Get Started": { "message": "快速开始" }, "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" }, "Support for Jvm Modern Frameworks": { "message": "适用大部分Jvm Web框架" }, "Focus on Protection of API": { "message": "面向API的高性能认证鉴权框架" }, "Extendable": { "message": "可扩展" }, "Compatible": { "message": "原生兼容" }, "Multi And Fast": { "message": "多支持与高性能" }, "Multi Support Samples": { "message": "大量集成样例" }, "Benchmark Compare": { "message": "基准性能测试" }, "Why Is High Performance": { "message": "为什么高性能" }, "Get Started With Sureness within Minutes": { "message": "几分钟入门Sureness" }, "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": "基于 {rbac} (用户-角色-资源)主要关注于对 {restApi} 的安全 (认证与鉴权) 保护。{br} 自定义Subject,Subject Creator,Processor和自定义数据源等良好的{interface}, {sample}和{doc}助急速理解扩展使用。" }, "Support {WebSockets}, HTTP containers ({Servlet} and {JaxRs}).{br}No framework dependency.{native} supports {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus},{Ktor}, {Solon}, {Jfinal}, {Micronaut} etc.": { "message": "支持 {WebSockets} ,主流 HTTP 容器 {Servlet} 和 {JaxRs}。{br} 无特定Web框架依赖, 原生支持 {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Ktor}, {Solon}, {Jfinal}, {Micronaut} 等。" }, "Supports {jwt}, {basic}, {digest} etc.{br}{dynamic} modification of {perm}.{br}{high} with {tree}.": { "message": "原生拥有 {jwt}, {basic}, {digest} 等认证方式。{br} 支持{dynamicCn}(动态配置每个 API 谁有权访问)。{br} 基于{treeCn}拥有的{highCn}。" }, "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来保护大部分JVM系语言的现代化框架搭建的后台服务,比如:Java 语言的 {Spring}, {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Micronaut}, {Solon}, {Jfinal} 和 Kotlin 语言的 {Ktor}." }, "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": "Sureness的本质是使用{interceptor}(如 servlet filter or Spring interceptor)拦截所有API请求对其认证鉴权判断。{br} 所以对于任何Web框架,只要其支持拦截器{interceptor}, 就能轻松和Sureness集成。Sureness使用异常处理流程即{handling}, {checkIn} 方法会在认证鉴权成功后返回带有用户信息的 {SubjectSum} 对象,但认证鉴权失败时抛出不同类型的异常,用户根据这些异常来继续后面的流程。" }, "{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": "基准测试显示 Sureness 对比无权限框架应用损耗 0.026ms 性能,Shiro 损耗 0.088ms,Spring Security 损耗 0.116ms,相比之下 Sureness 性能(参考TPS损耗)是 Shiro 的 {times3cn},Spring Security 的 {times4cn}。{br}{increaseCn}。" }, "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": "在大量的请求和过滤链匹配下,我们发现主要的性能瓶颈在{linearCn}这。{br} 所以我们使用了{treeCn}来代替其它安全框架常用的{antCn}。{br} 实践效果证明这有效,提升了{effCn}。" }, "We provide many tutorials and samples, you can refer to them to builda complete permission project within 10 minutes.{br}Have Fun!": { "message": "我们提供了很多教程和集成样例,您可以参考其中在10分钟之内使用 Sureness 做一个完整功能的认证鉴权项目。{br} Have Fun!" }, "Friend Links": { "message": "友情链接" }, "Media Partners": { "message": "合作媒体" } }