274 lines
13 KiB
JSON
274 lines
13 KiB
JSON
{
|
||
"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": "合作媒体"
|
||
}
|
||
} |