diff --git a/locale/zh_CN/LC_MESSAGES/django.po b/locale/zh_CN/LC_MESSAGES/django.po index 4e5910f43..cd35d74ae 100644 --- a/locale/zh_CN/LC_MESSAGES/django.po +++ b/locale/zh_CN/LC_MESSAGES/django.po @@ -6,16 +6,17 @@ # Translators: # Chen Zhikai, 2022 # 刘松, 2022 -# deluxghost, 2022 +# Jens L. , 2023 +# deluxghost, 2023 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-03 12:29+0000\n" -"PO-Revision-Date: 2021-10-09 18:10+0000\n" -"Last-Translator: deluxghost, 2022\n" +"POT-Creation-Date: 2023-03-20 11:13+0000\n" +"PO-Revision-Date: 2022-09-26 16:47+0000\n" +"Last-Translator: deluxghost, 2023\n" "Language-Team: Chinese (China) (https://www.transifex.com/authentik/teams/119923/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,10 +24,10 @@ msgstr "" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: authentik/admin/api/tasks.py:95 +#: authentik/admin/api/tasks.py:125 #, python-format msgid "Successfully re-scheduled Task %(name)s!" -msgstr "已成功重新安排任务%(name)s!" +msgstr "已成功重新安排任务 %(name)s!" #: authentik/api/schema.py:21 msgid "Generic API Error" @@ -36,137 +37,205 @@ msgstr "通用 API 错误" msgid "Validation Error" msgstr "校验错误" -#: authentik/core/api/providers.py:89 +#: authentik/blueprints/api.py:52 +msgid "Failed to validate blueprint" +msgstr "验证蓝图失败" + +#: authentik/blueprints/api.py:57 +msgid "Either path or content must be set." +msgstr "必须设置路径或内容。" + +#: authentik/blueprints/models.py:30 +msgid "Managed by authentik" +msgstr "由 authentik 管理" + +#: authentik/blueprints/models.py:32 +msgid "" +"Objects which are managed by authentik. These objects are created and " +"updated automatically. This is flag only indicates that an object can be " +"overwritten by migrations. You can still modify the objects via the API, but" +" expect changes to be overwritten in a later update." +msgstr "" +"由 authentik 管理的对象。这些对象会自动创建和更新。此标记仅仅表明对象可以被 Migration 覆盖。您仍然可以通过 API " +"修改对象,但这些修改可能会在之后的更新中被覆盖。" + +#: authentik/blueprints/models.py:109 +msgid "Blueprint Instance" +msgstr "蓝图实例" + +#: authentik/blueprints/models.py:110 +msgid "Blueprint Instances" +msgstr "蓝图实例" + +#: authentik/blueprints/v1/exporter.py:62 +#, python-format +msgid "authentik Export - %(date)s" +msgstr "authentik 导出 - %(date)s" + +#: authentik/blueprints/v1/tasks.py:146 authentik/crypto/tasks.py:93 +#, python-format +msgid "Successfully imported %(count)d files." +msgstr "已成功导入 %(count)d 个文件。" + +#: authentik/core/api/providers.py:91 msgid "SAML Provider from Metadata" msgstr "来自元数据的 SAML 提供程序" -#: authentik/core/api/providers.py:90 +#: authentik/core/api/providers.py:92 msgid "Create a SAML Provider by importing its Metadata." msgstr "通过导入元数据来创建 SAML 提供程序。" -#: authentik/core/models.py:69 +#: authentik/core/api/users.py:118 +msgid "No leading or trailing slashes allowed." +msgstr "不允许前缀或后缀斜线。" + +#: authentik/core/api/users.py:121 +msgid "No empty segments in user path allowed." +msgstr "不允许用户路径包含空段。" + +#: authentik/core/models.py:74 msgid "name" msgstr "名称" -#: authentik/core/models.py:71 +#: authentik/core/models.py:76 msgid "Users added to this group will be superusers." msgstr "添加到该组的用户均为超级用户。" -#: authentik/core/models.py:129 +#: authentik/core/models.py:150 msgid "User's display name." msgstr "用户的显示名称。" -#: authentik/core/models.py:212 authentik/providers/oauth2/models.py:299 +#: authentik/core/models.py:243 authentik/providers/oauth2/models.py:282 msgid "User" msgstr "用户" -#: authentik/core/models.py:213 +#: authentik/core/models.py:244 msgid "Users" msgstr "用户" -#: authentik/core/models.py:224 +#: authentik/core/models.py:256 msgid "Flow used when authorizing this provider." msgstr "授权此提供程序时使用的流程。" -#: authentik/core/models.py:257 +#: authentik/core/models.py:289 msgid "Application's display Name." msgstr "应用的显示名称。" -#: authentik/core/models.py:258 +#: authentik/core/models.py:290 msgid "Internal application name, used in URLs." msgstr "应用的内部名称,在 URL 中使用。" -#: authentik/core/models.py:311 +#: authentik/core/models.py:302 +msgid "Open launch URL in a new browser tab or window." +msgstr "在新浏览器标签页或窗口中打开启动 URL。" + +#: authentik/core/models.py:366 msgid "Application" msgstr "应用程序" -#: authentik/core/models.py:312 +#: authentik/core/models.py:367 msgid "Applications" msgstr "应用程序" -#: authentik/core/models.py:318 +#: authentik/core/models.py:373 msgid "Use the source-specific identifier" msgstr "使用源特定的标识符" -#: authentik/core/models.py:326 +#: authentik/core/models.py:375 +msgid "" +"Link to a user with identical email address. Can have security implications " +"when a source doesn't validate email addresses." +msgstr "链接到电子邮件地址相同的用户。当源不验证电子邮件地址时,可能会有安全隐患。" + +#: authentik/core/models.py:379 msgid "" "Use the user's email address, but deny enrollment when the email address " "already exists." -msgstr "使用用户的电子邮箱地址,但在电子邮箱地址已存在时拒绝注册。" +msgstr "使用用户的电子邮件地址,但在电子邮件地址已存在时拒绝注册。" -#: authentik/core/models.py:335 +#: authentik/core/models.py:382 +msgid "" +"Link to a user with identical username. Can have security implications when " +"a username is used with another source." +msgstr "链接到用户名相同的用户。当其他源使用相同用户名时,可能会有安全隐患。" + +#: authentik/core/models.py:386 msgid "" "Use the user's username, but deny enrollment when the username already " "exists." msgstr "使用用户的用户名,但在用户名已存在时拒绝注册。" -#: authentik/core/models.py:342 +#: authentik/core/models.py:393 msgid "Source's display Name." msgstr "源的显示名称。" -#: authentik/core/models.py:343 +#: authentik/core/models.py:394 msgid "Internal source name, used in URLs." msgstr "源的内部名称,在 URL 中使用。" -#: authentik/core/models.py:354 +#: authentik/core/models.py:413 msgid "Flow to use when authenticating existing users." -msgstr "认证已存在用户时使用的流程。" +msgstr "认证已存在用户时所使用的流程。" -#: authentik/core/models.py:363 +#: authentik/core/models.py:422 msgid "Flow to use when enrolling new users." -msgstr "新用户注册时使用的流程。" +msgstr "新用户注册的流程。" -#: authentik/core/models.py:501 +#: authentik/core/models.py:430 +msgid "" +"How the source determines if an existing user should be authenticated or a " +"new user enrolled." +msgstr "源怎样确定应该验证已有用户的身份还是注册新用户。" + +#: authentik/core/models.py:602 msgid "Token" msgstr "令牌" -#: authentik/core/models.py:502 +#: authentik/core/models.py:603 msgid "Tokens" msgstr "令牌" -#: authentik/core/models.py:545 +#: authentik/core/models.py:644 msgid "Property Mapping" msgstr "属性映射" -#: authentik/core/models.py:546 +#: authentik/core/models.py:645 msgid "Property Mappings" msgstr "属性映射" -#: authentik/core/models.py:582 +#: authentik/core/models.py:680 msgid "Authenticated Session" msgstr "已认证会话" -#: authentik/core/models.py:583 +#: authentik/core/models.py:681 msgid "Authenticated Sessions" msgstr "已认证会话" -#: authentik/core/sources/flow_manager.py:166 -msgid "source" -msgstr "来源" +#: authentik/core/sources/flow_manager.py:193 +#, python-format +msgid "" +"Request to authenticate with %(source)s has been denied. Please authenticate" +" with the source you've previously signed up with." +msgstr "来自 %(source)s 的身份验证请求被拒绝。请用您注册时使用的方式验证身份。" -#: authentik/core/sources/flow_manager.py:220 -#: authentik/core/sources/flow_manager.py:258 +#: authentik/core/sources/flow_manager.py:245 +msgid "Configured flow does not exist." +msgstr "配置的流程不存在。" + +#: authentik/core/sources/flow_manager.py:275 +#: authentik/core/sources/flow_manager.py:327 #, python-format msgid "Successfully authenticated with %(source)s!" msgstr "成功通过 %(source)s 认证!" -#: authentik/core/sources/flow_manager.py:239 +#: authentik/core/sources/flow_manager.py:299 #, python-format msgid "Successfully linked %(source)s!" msgstr "成功链接 %(source)s!" -#: authentik/core/templates/error/generic.html:27 -msgid "Go to home" -msgstr "返回主页" - -#: authentik/core/templates/if/admin.html:18 -#: authentik/core/templates/if/admin.html:24 -#: authentik/core/templates/if/flow.html:28 -#: authentik/core/templates/if/flow.html:34 -#: authentik/core/templates/if/user.html:18 -#: authentik/core/templates/if/user.html:24 -msgid "Loading..." -msgstr "正在加载……" +#: authentik/core/sources/flow_manager.py:318 +msgid "Source is not configured for enrollment." +msgstr "源未被配置用于注册。" #: authentik/core/templates/if/end_session.html:7 msgid "End session" @@ -191,15 +260,22 @@ msgstr "" "\n" " 您已成功登出 %(application)s 。现在您可以返回总览页来启动其他应用,或者登出您的 authentik 账户。" -#: authentik/core/templates/if/end_session.html:24 +#: authentik/core/templates/if/end_session.html:25 msgid "Go back to overview" msgstr "返回总览" -#: authentik/core/templates/if/end_session.html:26 -msgid "Log out of authentik" -msgstr "登出 authentik" +#: authentik/core/templates/if/end_session.html:29 +#, python-format +msgid "" +"\n" +" Log out of %(branding_title)s\n" +" " +msgstr "" +"\n" +" 登出 %(branding_title)s\n" +" " -#: authentik/core/templates/if/end_session.html:30 +#: authentik/core/templates/if/end_session.html:36 #, python-format msgid "" "\n" @@ -210,159 +286,257 @@ msgstr "" " 重新登录 %(application)s\n" " " -#: authentik/core/templates/login/base_full.html:65 +#: authentik/core/templates/if/error.html:18 +msgid "Go home" +msgstr "前往首页" + +#: authentik/core/templates/login/base_full.html:90 msgid "Powered by authentik" msgstr "由 authentik 强力驱动" -#: authentik/crypto/api.py:132 +#: authentik/core/views/apps.py:50 +#: authentik/providers/oauth2/views/authorize.py:386 +#: authentik/providers/oauth2/views/device_init.py:70 +#: authentik/providers/saml/views/sso.py:70 +#, python-format +msgid "You're about to sign into %(application)s." +msgstr "您即将登录 %(application)s。" + +#: authentik/crypto/api.py:178 msgid "Subject-alt name" msgstr "替代名称" -#: authentik/crypto/models.py:34 +#: authentik/crypto/models.py:30 msgid "PEM-encoded Certificate data" msgstr "PEM 编码的证书数据" -#: authentik/crypto/models.py:37 +#: authentik/crypto/models.py:33 msgid "" "Optional Private Key. If this is set, you can use this keypair for " "encryption." msgstr "可选私钥。如果设置,则可以使用此密钥对来加密。" -#: authentik/crypto/models.py:100 +#: authentik/crypto/models.py:101 msgid "Certificate-Key Pair" msgstr "证书密钥对" -#: authentik/crypto/models.py:101 +#: authentik/crypto/models.py:102 msgid "Certificate-Key Pairs" msgstr "证书密钥对" -#: authentik/crypto/tasks.py:93 -#, python-format -msgid "Successfully imported %(count)d files." -msgstr "已成功导入 %(count)d 个文件。" - -#: authentik/events/models.py:285 +#: authentik/events/models.py:286 msgid "Event" msgstr "事件" -#: authentik/events/models.py:286 +#: authentik/events/models.py:287 msgid "Events" msgstr "事件" -#: authentik/events/models.py:292 +#: authentik/events/models.py:293 +msgid "authentik inbuilt notifications" +msgstr "authentik 内置通知" + +#: authentik/events/models.py:294 msgid "Generic Webhook" msgstr "通用 Webhook" -#: authentik/events/models.py:293 +#: authentik/events/models.py:295 msgid "Slack Webhook (Slack/Discord)" msgstr "Slack Webhook(Slack/Discord)" -#: authentik/events/models.py:294 +#: authentik/events/models.py:296 msgid "Email" msgstr "电子邮箱" -#: authentik/events/models.py:312 +#: authentik/events/models.py:314 msgid "" "Only send notification once, for example when sending a webhook into a chat " "channel." msgstr "仅发送一次通知,例如在向聊天频道发送 Webhook 时。" -#: authentik/events/models.py:357 +#: authentik/events/models.py:376 msgid "Severity" msgstr "严重程度" -#: authentik/events/models.py:362 +#: authentik/events/models.py:381 msgid "Dispatched for user" msgstr "为用户分派" -#: authentik/events/models.py:439 +#: authentik/events/models.py:464 msgid "Notification Transport" msgstr "通知传输" -#: authentik/events/models.py:440 +#: authentik/events/models.py:465 msgid "Notification Transports" msgstr "通知传输" -#: authentik/events/models.py:446 +#: authentik/events/models.py:471 msgid "Notice" msgstr "通知" -#: authentik/events/models.py:447 +#: authentik/events/models.py:472 msgid "Warning" msgstr "警告" -#: authentik/events/models.py:448 +#: authentik/events/models.py:473 msgid "Alert" msgstr "注意" -#: authentik/events/models.py:468 +#: authentik/events/models.py:498 msgid "Notification" msgstr "通知" -#: authentik/events/models.py:469 +#: authentik/events/models.py:499 msgid "Notifications" msgstr "通知" -#: authentik/events/models.py:488 +#: authentik/events/models.py:509 +msgid "" +"Select which transports should be used to notify the user. If none are " +"selected, the notification will only be shown in the authentik UI." +msgstr "选择应使用哪些传输方式来通知用户。如果未选择任何内容,则通知将仅显示在 authentik UI 中。" + +#: authentik/events/models.py:517 msgid "Controls which severity level the created notifications will have." msgstr "控制被创建的通知的严重性级别。" -#: authentik/events/models.py:508 +#: authentik/events/models.py:522 +msgid "" +"Define which group of users this notification should be sent and shown to. " +"If left empty, Notification won't ben sent." +msgstr "定义此通知应该发送到哪些用户组。如果留空,则不会发送通知。" + +#: authentik/events/models.py:540 msgid "Notification Rule" msgstr "通知规则" -#: authentik/events/models.py:509 +#: authentik/events/models.py:541 msgid "Notification Rules" msgstr "通知规则" -#: authentik/events/models.py:530 -msgid "Notification Webhook Mapping" -msgstr "通知 Webhook 映射" +#: authentik/events/models.py:561 +msgid "Webhook Mapping" +msgstr "Webhook 映射" -#: authentik/events/models.py:531 -msgid "Notification Webhook Mappings" -msgstr "通知 Webhook 映射" +#: authentik/events/models.py:562 +msgid "Webhook Mappings" +msgstr "Webhook 映射" -#: authentik/events/monitored_tasks.py:197 +#: authentik/events/monitored_tasks.py:195 msgid "Task has not been run yet." msgstr "任务尚未运行。" -#: authentik/flows/api/flows.py:350 +#: authentik/flows/api/flows.py:290 #, python-format msgid "Flow not applicable to current user/request: %(messages)s" msgstr "流程不适用于当前用户/请求:%(messages)s" -#: authentik/flows/models.py:107 +#: authentik/flows/api/flows_diagram.py:67 +#: authentik/flows/api/flows_diagram.py:93 +#, python-format +msgid "Policy (%(type)s)" +msgstr "策略(%(type)s)" + +#: authentik/flows/api/flows_diagram.py:70 +#, python-format +msgid "Binding %(order)d" +msgstr "绑定 %(order)d" + +#: authentik/flows/api/flows_diagram.py:117 +msgid "Policy passed" +msgstr "策略通过" + +#: authentik/flows/api/flows_diagram.py:121 +#, python-format +msgid "Stage (%(type)s)" +msgstr "阶段(%(type)s)" + +#: authentik/flows/api/flows_diagram.py:145 +#: authentik/flows/api/flows_diagram.py:205 +msgid "Policy denied" +msgstr "策略拒绝" + +#: authentik/flows/api/flows_diagram.py:155 +#: authentik/flows/api/flows_diagram.py:167 +#: authentik/flows/api/flows_diagram.py:204 +#: authentik/flows/api/flows_diagram.py:226 +msgid "End of the flow" +msgstr "流程结束" + +#: authentik/flows/api/flows_diagram.py:168 +msgid "Requirement not fulfilled" +msgstr "需求条件未达成" + +#: authentik/flows/api/flows_diagram.py:176 +msgid "Flow authentication requirement" +msgstr "流程身份验证需求" + +#: authentik/flows/api/flows_diagram.py:182 +msgid "Requirement fulfilled" +msgstr "需求条件已达成" + +#: authentik/flows/api/flows_diagram.py:195 +msgid "Pre-flow policies" +msgstr "流程前置策略" + +#: authentik/flows/api/flows_diagram.py:213 authentik/flows/models.py:193 +msgid "Flow" +msgstr "流程" + +#: authentik/flows/exceptions.py:19 +msgid "Flow does not apply to current user." +msgstr "流程不应用于当前用户。" + +#: authentik/flows/models.py:114 +#, python-format +msgid "Dynamic In-memory stage: %(doc)s" +msgstr "动态内存中阶段:%(doc)s" + +#: authentik/flows/models.py:129 msgid "Visible in the URL." msgstr "在 URL 中可见。" -#: authentik/flows/models.py:109 +#: authentik/flows/models.py:131 msgid "Shown as the Title in Flow pages." -msgstr "在流程页面下显示为标题。" +msgstr "显示为流程页面中的标题。" -#: authentik/flows/models.py:126 +#: authentik/flows/models.py:138 +msgid "" +"Decides what this Flow is used for. For example, the Authentication flow is " +"redirect to when an un-authenticated user visits authentik." +msgstr "决定此流程的用途。例如,当未经身份验证的用户访问 authentik 时,会重定向到身份验证流程。" + +#: authentik/flows/models.py:147 msgid "Background shown during execution" msgstr "执行时的背景" -#: authentik/flows/models.py:133 +#: authentik/flows/models.py:154 msgid "" "Enable compatibility mode, increases compatibility with password managers on" " mobile devices." msgstr "启用兼容模式,增强与移动设备上密码管理器的兼容性。" -#: authentik/flows/models.py:178 -msgid "Flow" -msgstr "流程" +#: authentik/flows/models.py:162 +msgid "Configure what should happen when a flow denies access to a user." +msgstr "配置当流程拒绝访问一名用户时应该发生什么。" -#: authentik/flows/models.py:179 +#: authentik/flows/models.py:168 +msgid "Required level of authentication and authorization to access a flow." +msgstr "需要身份验证和授权等级以访问流程。" + +#: authentik/flows/models.py:194 msgid "Flows" msgstr "流程" -#: authentik/flows/models.py:209 +#: authentik/flows/models.py:215 +msgid "Evaluate policies during the Flow planning process." +msgstr "在流程规划过程中评估策略。" + +#: authentik/flows/models.py:219 msgid "Evaluate policies when the Stage is present to the user." msgstr "在阶段呈现给用户时评估策略。" -#: authentik/flows/models.py:216 +#: authentik/flows/models.py:226 msgid "" "Configure how the flow executor should handle an invalid response to a " "challenge. RETRY returns the error message and a similar challenge to the " @@ -372,145 +546,176 @@ msgstr "" "配置流程执行器应如何处理对质询的无效响应。RETRY 向执行器返回错误消息和类似的质询。RESTART " "从头开始重新启动流程,RESTART_WITH_CONTEXT 在保留当前上下文的同时重新启动流程。" -#: authentik/flows/models.py:240 +#: authentik/flows/models.py:249 msgid "Flow Stage Binding" msgstr "流程阶段绑定" -#: authentik/flows/models.py:241 +#: authentik/flows/models.py:250 msgid "Flow Stage Bindings" msgstr "流程阶段绑定" -#: authentik/flows/models.py:291 +#: authentik/flows/models.py:265 +msgid "" +"Flow used by an authenticated user to configure this Stage. If empty, user " +"will not be able to configure this stage." +msgstr "经过身份验证的用户用来配置此阶段的流程。如果为空,用户将无法配置此阶段。" + +#: authentik/flows/models.py:296 msgid "Flow Token" msgstr "流程令牌" -#: authentik/flows/models.py:292 +#: authentik/flows/models.py:297 msgid "Flow Tokens" msgstr "流程令牌" -#: authentik/flows/templates/flows/error.html:12 -msgid "Whoops!" -msgstr "哎呦!" - -#: authentik/flows/templates/flows/error.html:17 -msgid "Something went wrong! Please try again later." -msgstr "发生了某些错误!请稍后重试。" - -#: authentik/lib/utils/time.py:24 +#: authentik/lib/utils/time.py:27 #, python-format msgid "%(value)s is not in the correct format of 'hours=3;minutes=1'." msgstr "%(value)s 的格式不正确,应为 'hours=3;minutes=1'。" -#: authentik/managed/models.py:12 -msgid "Managed by authentik" -msgstr "由 authentik 管理" - -#: authentik/outposts/api/service_connections.py:131 +#: authentik/outposts/api/service_connections.py:129 msgid "" "You can only use an empty kubeconfig when connecting to a local cluster." msgstr "您只能在连接到本地集群时使用空的 kubeconfig。" -#: authentik/outposts/api/service_connections.py:139 +#: authentik/outposts/api/service_connections.py:137 msgid "Invalid kubeconfig" msgstr "无效 kubeconfig " -#: authentik/outposts/models.py:151 +#: authentik/outposts/models.py:122 +msgid "" +"If enabled, use the local connection. Required Docker socket/Kubernetes " +"Integration" +msgstr "如果启用,则使用本地连接。需要 Docker Socket / Kubernetes 集成" + +#: authentik/outposts/models.py:152 msgid "Outpost Service-Connection" msgstr "前哨服务连接" -#: authentik/outposts/models.py:152 +#: authentik/outposts/models.py:153 msgid "Outpost Service-Connections" msgstr "前哨服务连接" -#: authentik/outposts/models.py:188 +#: authentik/outposts/models.py:161 +msgid "" +"Can be in the format of 'unix://' when connecting to a local docker " +"daemon, or 'https://:2376' when connecting to a remote system." +msgstr "" +"当连接到本地 Docker " +"守护进程时,可以使用“unix://”格式,或者在连接远程系统时,使用“https://:2376”格式。" + +#: authentik/outposts/models.py:173 +msgid "" +"CA which the endpoint's Certificate is verified against. Can be left empty " +"for no validation." +msgstr "验证端点证书所依据的 CA。可以留空,表示不进行验证。" + +#: authentik/outposts/models.py:185 msgid "" "Certificate/Key used for authentication. Can be left empty for no " "authentication." msgstr "用于身份验证的证书/密钥。可以留空表示不验证。" -#: authentik/outposts/models.py:201 +#: authentik/outposts/models.py:203 msgid "Docker Service-Connection" msgstr "Docker 服务连接" -#: authentik/outposts/models.py:202 +#: authentik/outposts/models.py:204 msgid "Docker Service-Connections" msgstr "Docker 服务连接" -#: authentik/outposts/models.py:227 +#: authentik/outposts/models.py:212 +msgid "" +"Paste your kubeconfig here. authentik will automatically use the currently " +"selected context." +msgstr "在这里粘贴您的 kubeconfig。authentik 会自动使用当前选择的上下文。" + +#: authentik/outposts/models.py:218 +msgid "Verify SSL Certificates of the Kubernetes API endpoint" +msgstr "验证 Kubernetes API 端点的 SSL 证书" + +#: authentik/outposts/models.py:235 msgid "Kubernetes Service-Connection" msgstr "Kubernetes 服务连接" -#: authentik/outposts/models.py:228 +#: authentik/outposts/models.py:236 msgid "Kubernetes Service-Connections" msgstr "Kubernetes 服务连接" -#: authentik/policies/denied.py:24 +#: authentik/outposts/models.py:252 +msgid "" +"Select Service-Connection authentik should use to manage this outpost. Leave" +" empty if authentik should not handle the deployment." +msgstr "选择 authentik 在管理此前哨时需要使用的服务连接。如果 authentik 不应该处理此部署,则应该留空。" + +#: authentik/policies/denied.py:25 msgid "Access denied" msgstr "访问被拒绝" -#: authentik/policies/dummy/models.py:45 +#: authentik/policies/dummy/models.py:44 msgid "Dummy Policy" msgstr "虚拟策略" -#: authentik/policies/dummy/models.py:46 +#: authentik/policies/dummy/models.py:45 msgid "Dummy Policies" msgstr "虚拟策略" -#: authentik/policies/event_matcher/models.py:80 +#: authentik/policies/event_matcher/api.py:20 +#: authentik/policies/event_matcher/models.py:37 +msgid "" +"Match events created by selected application. When left empty, all " +"applications are matched." +msgstr "匹配选定应用程序创建的事件。如果留空,则匹配所有应用程序。" + +#: authentik/policies/event_matcher/api.py:27 +msgid "At least one criteria must be set." +msgstr "必须至少设置一项标准。" + +#: authentik/policies/event_matcher/models.py:29 +msgid "" +"Match created events with this action type. When left empty, all action " +"types will be matched." +msgstr "将创建的事件与此操作类型匹配。留空时,所有操作类型都将匹配。" + +#: authentik/policies/event_matcher/models.py:44 +msgid "" +"Matches Event's Client IP (strict matching, for network matching use an " +"Expression Policy)" +msgstr "匹配事件的客户端 IP(严格匹配,要匹配网段请使用表达式策略)" + +#: authentik/policies/event_matcher/models.py:72 msgid "Event Matcher Policy" msgstr "事件匹配策略" -#: authentik/policies/event_matcher/models.py:81 +#: authentik/policies/event_matcher/models.py:73 msgid "Event Matcher Policies" msgstr "事件匹配策略" -#: authentik/policies/expiry/models.py:46 -msgid "days" -msgstr "天" +#: authentik/policies/expiry/models.py:45 +#, python-format +msgid "Password expired %(days)d days ago. Please update your password." +msgstr "密码在 %(days)d 天前过期。请更新您的密码。" #: authentik/policies/expiry/models.py:49 msgid "Password has expired." msgstr "密码已过期。" -#: authentik/policies/expiry/models.py:54 +#: authentik/policies/expiry/models.py:53 msgid "Password Expiry Policy" msgstr "密码过期策略" -#: authentik/policies/expiry/models.py:55 +#: authentik/policies/expiry/models.py:54 msgid "Password Expiry Policies" msgstr "密码过期策略" -#: authentik/policies/expression/models.py:41 +#: authentik/policies/expression/models.py:40 msgid "Expression Policy" msgstr "表达式策略" -#: authentik/policies/expression/models.py:42 +#: authentik/policies/expression/models.py:41 msgid "Expression Policies" msgstr "表达式策略" -#: authentik/policies/hibp/models.py:22 -#: authentik/policies/password/models.py:24 -msgid "Field key to check, field keys defined in Prompt stages are available." -msgstr "要检查的字段键,可以使用输入阶段中定义的字段键。" - -#: authentik/policies/hibp/models.py:47 -#: authentik/policies/password/models.py:57 -msgid "Password not set in context" -msgstr "未在上下文中设置密码" - -#: authentik/policies/hibp/models.py:60 -#, python-format -msgid "Password exists on %(count)d online lists." -msgstr "%(count)d 个在线列表中存在密码。" - -#: authentik/policies/hibp/models.py:66 -msgid "Have I Been Pwned Policy" -msgstr "Have I Been Pwned 策略" - -#: authentik/policies/hibp/models.py:67 -msgid "Have I Been Pwned Policies" -msgstr "Have I Been Pwned 策略" - #: authentik/policies/models.py:23 msgid "ALL, all policies must pass" msgstr "ALL,必须通过所有策略" @@ -519,51 +724,83 @@ msgstr "ALL,必须通过所有策略" msgid "ANY, any policy must pass" msgstr "ANY,必须通过任意策略" -#: authentik/policies/models.py:45 +#: authentik/policies/models.py:48 msgid "Policy Binding Model" msgstr "策略绑定模型" -#: authentik/policies/models.py:46 +#: authentik/policies/models.py:49 msgid "Policy Binding Models" msgstr "策略绑定模型" -#: authentik/policies/models.py:85 +#: authentik/policies/models.py:88 msgid "Negates the outcome of the policy. Messages are unaffected." msgstr "反转策略的结果。消息不受影响。" -#: authentik/policies/models.py:88 +#: authentik/policies/models.py:91 msgid "Timeout after which Policy execution is terminated." msgstr "策略执行终止的超时时间。" -#: authentik/policies/models.py:141 +#: authentik/policies/models.py:144 msgid "Policy Binding" msgstr "策略绑定" -#: authentik/policies/models.py:142 +#: authentik/policies/models.py:145 msgid "Policy Bindings" msgstr "策略绑定" -#: authentik/policies/models.py:181 +#: authentik/policies/models.py:166 +msgid "" +"When this option is enabled, all executions of this policy will be logged. " +"By default, only execution errors are logged." +msgstr "启用此选项后,将记录此策略的所有执行日志。默认情况下,只记录执行错误。" + +#: authentik/policies/models.py:188 msgid "Policy" msgstr "策略" -#: authentik/policies/models.py:182 +#: authentik/policies/models.py:189 msgid "Policies" msgstr "策略" -#: authentik/policies/password/models.py:89 +#: authentik/policies/password/models.py:27 +msgid "Field key to check, field keys defined in Prompt stages are available." +msgstr "要检查的字段键,可以使用输入阶段中定义的字段键。" + +#: authentik/policies/password/models.py:44 +msgid "How many times the password hash is allowed to be on haveibeenpwned" +msgstr "密码哈希允许出现在 HaveIBeenPwned 中多少次" + +#: authentik/policies/password/models.py:49 +msgid "" +"If the zxcvbn score is equal or less than this value, the policy will fail." +msgstr "如果 zxcvbn 分数小于等于此值,则策略失败。" + +#: authentik/policies/password/models.py:72 +msgid "Password not set in context" +msgstr "未在上下文中设置密码" + +#: authentik/policies/password/models.py:134 +#, python-format +msgid "Password exists on %(count)d online lists." +msgstr "%(count)d 个在线列表中存在密码。" + +#: authentik/policies/password/models.py:154 +msgid "Password is too weak." +msgstr "密码太弱。" + +#: authentik/policies/password/models.py:162 msgid "Password Policy" msgstr "密码策略" -#: authentik/policies/password/models.py:90 +#: authentik/policies/password/models.py:163 msgid "Password Policies" msgstr "密码策略" -#: authentik/policies/reputation/models.py:54 +#: authentik/policies/reputation/models.py:58 msgid "Reputation Policy" msgstr "信誉策略" -#: authentik/policies/reputation/models.py:55 +#: authentik/policies/reputation/models.py:59 msgid "Reputation Policies" msgstr "信誉策略" @@ -572,19 +809,27 @@ msgstr "信誉策略" msgid "Permission denied" msgstr "权限被拒绝" -#: authentik/policies/templates/policies/denied.html:20 +#: authentik/policies/templates/policies/denied.html:21 +msgid "User's avatar" +msgstr "用户的头像" + +#: authentik/policies/templates/policies/denied.html:25 +msgid "Not you?" +msgstr "不是您?" + +#: authentik/policies/templates/policies/denied.html:33 msgid "Request has been denied." msgstr "请求被拒绝。" -#: authentik/policies/templates/policies/denied.html:31 +#: authentik/policies/templates/policies/denied.html:44 msgid "Messages:" msgstr "消息:" -#: authentik/policies/templates/policies/denied.html:41 +#: authentik/policies/templates/policies/denied.html:54 msgid "Explanation:" msgstr "解释:" -#: authentik/policies/templates/policies/denied.html:45 +#: authentik/policies/templates/policies/denied.html:58 #, python-format msgid "" "\n" @@ -636,227 +881,360 @@ msgstr "LDAP 提供程序" msgid "LDAP Providers" msgstr "LDAP 提供程序" -#: authentik/providers/oauth2/models.py:36 -msgid "Confidential" -msgstr "机密" - -#: authentik/providers/oauth2/models.py:37 -msgid "Public" -msgstr "公开" - -#: authentik/providers/oauth2/models.py:51 +#: authentik/providers/oauth2/id_token.py:27 msgid "Based on the Hashed User ID" msgstr "基于经过哈希处理的用户 ID" -#: authentik/providers/oauth2/models.py:52 +#: authentik/providers/oauth2/id_token.py:28 +msgid "Based on user ID" +msgstr "基于用户 ID" + +#: authentik/providers/oauth2/id_token.py:29 msgid "Based on the username" msgstr "基于用户名" -#: authentik/providers/oauth2/models.py:55 +#: authentik/providers/oauth2/id_token.py:32 msgid "Based on the User's Email. This is recommended over the UPN method." msgstr "基于用户的电子邮箱。建议在 UPN 方法上使用。" -#: authentik/providers/oauth2/models.py:71 +#: authentik/providers/oauth2/id_token.py:37 +msgid "" +"Based on the User's UPN, only works if user has a 'upn' attribute set. Use " +"this method only if you have different UPN and Mail domains." +msgstr "基于用户的 UPN,仅当用户设置了 'upn' 属性时才有效。仅当您有不同的 UPN 和 Mail 域时才使用此方法。" + +#: authentik/providers/oauth2/models.py:34 +msgid "Confidential" +msgstr "机密" + +#: authentik/providers/oauth2/models.py:35 +msgid "Public" +msgstr "公开" + +#: authentik/providers/oauth2/models.py:57 msgid "Same identifier is used for all providers" msgstr "所有提供程序都使用相同的标识符" -#: authentik/providers/oauth2/models.py:73 +#: authentik/providers/oauth2/models.py:59 msgid "Each provider has a different issuer, based on the application slug." msgstr "根据应用程序 Slug,每个提供程序都有不同的颁发者。" -#: authentik/providers/oauth2/models.py:80 +#: authentik/providers/oauth2/models.py:66 msgid "code (Authorization Code Flow)" msgstr "code(授权码流程)" -#: authentik/providers/oauth2/models.py:81 +#: authentik/providers/oauth2/models.py:67 msgid "id_token (Implicit Flow)" msgstr "id_token(隐式流程)" -#: authentik/providers/oauth2/models.py:82 +#: authentik/providers/oauth2/models.py:68 msgid "id_token token (Implicit Flow)" msgstr "id_token token(隐式流程)" -#: authentik/providers/oauth2/models.py:83 +#: authentik/providers/oauth2/models.py:69 msgid "code token (Hybrid Flow)" msgstr "code token(混合流程)" -#: authentik/providers/oauth2/models.py:84 +#: authentik/providers/oauth2/models.py:70 msgid "code id_token (Hybrid Flow)" msgstr "code id_token(混合流程)" -#: authentik/providers/oauth2/models.py:85 +#: authentik/providers/oauth2/models.py:71 msgid "code id_token token (Hybrid Flow)" msgstr "code id_token token(混合流程)" -#: authentik/providers/oauth2/models.py:91 +#: authentik/providers/oauth2/models.py:77 msgid "HS256 (Symmetric Encryption)" msgstr "HS256(对称加密)" -#: authentik/providers/oauth2/models.py:92 +#: authentik/providers/oauth2/models.py:78 msgid "RS256 (Asymmetric Encryption)" msgstr "RS256(非对称加密)" -#: authentik/providers/oauth2/models.py:93 +#: authentik/providers/oauth2/models.py:79 msgid "ES256 (Asymmetric Encryption)" msgstr "ES256(非对称加密)" -#: authentik/providers/oauth2/models.py:99 +#: authentik/providers/oauth2/models.py:85 msgid "Scope used by the client" msgstr "客户端使用的作用域" -#: authentik/providers/oauth2/models.py:125 +#: authentik/providers/oauth2/models.py:89 +msgid "" +"Description shown to the user when consenting. If left empty, the user won't" +" be informed." +msgstr "同意授权时向用户显示的描述。如果留空,则不会告知用户。" + +#: authentik/providers/oauth2/models.py:108 msgid "Scope Mapping" msgstr "作用域映射" -#: authentik/providers/oauth2/models.py:126 +#: authentik/providers/oauth2/models.py:109 msgid "Scope Mappings" msgstr "作用域映射" -#: authentik/providers/oauth2/models.py:136 +#: authentik/providers/oauth2/models.py:119 msgid "Client Type" msgstr "客户端类型" -#: authentik/providers/oauth2/models.py:142 +#: authentik/providers/oauth2/models.py:121 +msgid "" +"Confidential clients are capable of maintaining the confidentiality of their" +" credentials. Public clients are incapable" +msgstr "机密客户端有能力维护其凭据的机密性。公开客户端无此能力。" + +#: authentik/providers/oauth2/models.py:128 msgid "Client ID" msgstr "客户端 ID" -#: authentik/providers/oauth2/models.py:148 +#: authentik/providers/oauth2/models.py:134 msgid "Client Secret" msgstr "客户端密钥" -#: authentik/providers/oauth2/models.py:154 +#: authentik/providers/oauth2/models.py:140 msgid "Redirect URIs" msgstr "重定向 URI" -#: authentik/providers/oauth2/models.py:155 +#: authentik/providers/oauth2/models.py:141 msgid "Enter each URI on a new line." msgstr "每行输入一个 URI。" -#: authentik/providers/oauth2/models.py:160 +#: authentik/providers/oauth2/models.py:146 msgid "Include claims in id_token" msgstr "在 id_token 中包含声明" -#: authentik/providers/oauth2/models.py:208 -msgid "RSA Key" -msgstr "RSA 密钥" +#: authentik/providers/oauth2/models.py:148 +msgid "" +"Include User claims from scopes in the id_token, for applications that don't" +" access the userinfo endpoint." +msgstr "对于不访问 userinfo 端点的应用程序,将来自作用域的用户声明包含在 id_token 中。" -#: authentik/providers/oauth2/models.py:212 +#: authentik/providers/oauth2/models.py:157 +msgid "" +"Access codes not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "从当前时间经过多久时或之后,访问代码无效(格式:hours=1;minutes=2;seconds=3)。" + +#: authentik/providers/oauth2/models.py:165 +#: authentik/providers/oauth2/models.py:173 +msgid "" +"Tokens not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "从当前时间经过多久时或之后,令牌无效(格式:hours=1;minutes=2;seconds=3)。" + +#: authentik/providers/oauth2/models.py:182 +msgid "" +"Configure what data should be used as unique User Identifier. For most " +"cases, the default should be fine." +msgstr "配置应将哪些数据用作唯一用户标识符。在大多数情况下保持默认值即可。" + +#: authentik/providers/oauth2/models.py:189 +msgid "Configure how the issuer field of the ID Token should be filled." +msgstr "配置如何填写 ID 令牌的颁发者字段。" + +#: authentik/providers/oauth2/models.py:194 +msgid "Signing Key" +msgstr "签名密钥" + +#: authentik/providers/oauth2/models.py:198 msgid "" "Key used to sign the tokens. Only required when JWT Algorithm is set to " "RS256." msgstr "用于签名令牌的密钥。仅当 JWT 算法设置为 RS256 时才需要。" -#: authentik/providers/oauth2/models.py:291 +#: authentik/providers/oauth2/models.py:205 +msgid "" +"Any JWT signed by the JWK of the selected source can be used to " +"authenticate." +msgstr "任何由选定来源的 JWK 签发的 JWT 都可以用于身份验证。" + +#: authentik/providers/oauth2/models.py:274 msgid "OAuth2/OpenID Provider" msgstr "OAuth2/OpenID 提供程序" -#: authentik/providers/oauth2/models.py:292 +#: authentik/providers/oauth2/models.py:275 msgid "OAuth2/OpenID Providers" msgstr "OAuth2/OpenID 提供程序" -#: authentik/providers/oauth2/models.py:300 +#: authentik/providers/oauth2/models.py:284 +#: authentik/providers/oauth2/models.py:416 msgid "Scopes" msgstr "作用域" -#: authentik/providers/oauth2/models.py:319 +#: authentik/providers/oauth2/models.py:303 msgid "Code" msgstr "代码" -#: authentik/providers/oauth2/models.py:320 +#: authentik/providers/oauth2/models.py:304 msgid "Nonce" msgstr "Nonce" -#: authentik/providers/oauth2/models.py:321 -msgid "Is Authentication?" -msgstr "是身份验证吗?" - -#: authentik/providers/oauth2/models.py:322 +#: authentik/providers/oauth2/models.py:305 msgid "Code Challenge" msgstr "代码质询" -#: authentik/providers/oauth2/models.py:324 +#: authentik/providers/oauth2/models.py:307 msgid "Code Challenge Method" msgstr "代码质询方法" -#: authentik/providers/oauth2/models.py:338 +#: authentik/providers/oauth2/models.py:327 msgid "Authorization Code" msgstr "授权代码" -#: authentik/providers/oauth2/models.py:339 +#: authentik/providers/oauth2/models.py:328 msgid "Authorization Codes" msgstr "授权代码" -#: authentik/providers/oauth2/models.py:382 -msgid "Access Token" -msgstr "访问令牌" +#: authentik/providers/oauth2/models.py:370 +msgid "OAuth2 Access Token" +msgstr "OAuth2 访问令牌" -#: authentik/providers/oauth2/models.py:383 -msgid "Refresh Token" -msgstr "刷新令牌" +#: authentik/providers/oauth2/models.py:371 +msgid "OAuth2 Access Tokens" +msgstr "OAuth2 访问令牌" -#: authentik/providers/oauth2/models.py:384 +#: authentik/providers/oauth2/models.py:381 msgid "ID Token" msgstr "ID 令牌" -#: authentik/providers/oauth2/models.py:387 -msgid "OAuth2 Token" -msgstr "OAuth2 令牌" +#: authentik/providers/oauth2/models.py:400 +msgid "OAuth2 Refresh Token" +msgstr "OAuth2 刷新令牌" -#: authentik/providers/oauth2/models.py:388 -msgid "OAuth2 Tokens" -msgstr "OAuth2 令牌" +#: authentik/providers/oauth2/models.py:401 +msgid "OAuth2 Refresh Tokens" +msgstr "OAuth2 刷新令牌" -#: authentik/providers/oauth2/views/authorize.py:458 -#: authentik/providers/saml/views/sso.py:69 +#: authentik/providers/oauth2/models.py:428 +msgid "Device Token" +msgstr "设备令牌" + +#: authentik/providers/oauth2/models.py:429 +msgid "Device Tokens" +msgstr "设备令牌" + +#: authentik/providers/oauth2/views/authorize.py:441 +#: authentik/providers/saml/views/flows.py:87 #, python-format -msgid "You're about to sign into %(application)s." -msgstr "您即将登录 %(application)s。" +msgid "Redirecting to %(app)s..." +msgstr "正在跳转到 %(app)s…" -#: authentik/providers/proxy/models.py:52 +#: authentik/providers/oauth2/views/device_init.py:151 +msgid "Invalid code" +msgstr "无效代码" + +#: authentik/providers/oauth2/views/userinfo.py:51 +#: authentik/providers/oauth2/views/userinfo.py:52 +msgid "GitHub Compatibility: Access your User Information" +msgstr "GitHub 兼容性:访问您的用户信息" + +#: authentik/providers/oauth2/views/userinfo.py:53 +msgid "GitHub Compatibility: Access you Email addresses" +msgstr "GitHub 兼容性:访问您的电子邮件地址" + +#: authentik/providers/oauth2/views/userinfo.py:54 +msgid "GitHub Compatibility: Access your Groups" +msgstr "GitHub 兼容性:访问您的组" + +#: authentik/providers/oauth2/views/userinfo.py:55 +msgid "authentik API Access on behalf of your user" +msgstr "代表您的用户访问 authentik API" + +#: authentik/providers/proxy/api.py:52 +msgid "User and password attributes must be set when basic auth is enabled." +msgstr "启用 Basic Auth 时,必须设置用户和密码属性。" + +#: authentik/providers/proxy/api.py:62 +msgid "Internal host cannot be empty when forward auth is disabled." +msgstr "禁用 Forward Auth 时,内部主机不能为空。" + +#: authentik/providers/proxy/models.py:54 msgid "Validate SSL Certificates of upstream servers" msgstr "验证上游服务器的 SSL 证书" -#: authentik/providers/proxy/models.py:53 +#: authentik/providers/proxy/models.py:55 msgid "Internal host SSL Validation" msgstr "内部主机 SSL 验证" -#: authentik/providers/proxy/models.py:59 +#: authentik/providers/proxy/models.py:61 msgid "" "Enable support for forwardAuth in traefik and nginx auth_request. Exclusive " "with internal_host." msgstr "在 traefik 和 nginx auth_request 中启用对 ForwardAuth 的支持。排除 internal_host。" -#: authentik/providers/proxy/models.py:77 +#: authentik/providers/proxy/models.py:70 +msgid "" +"Regular expressions for which authentication is not required. Each new line " +"is interpreted as a new Regular Expression." +msgstr "用于描述何处不需要身份验证的正则表达式。每个新行都被解释为一个新的正则表达式。" + +#: authentik/providers/proxy/models.py:78 +msgid "" +"When enabled, this provider will intercept the authorization header and " +"authenticate requests based on its value." +msgstr "启用时,此提供程序将会拦截 Authorization 标头,并基于其值认证请求。" + +#: authentik/providers/proxy/models.py:84 msgid "Set HTTP-Basic Authentication" msgstr "设置 HTTP-Basic 身份验证" -#: authentik/providers/proxy/models.py:79 +#: authentik/providers/proxy/models.py:86 msgid "" "Set a custom HTTP-Basic Authentication header based on values from " "authentik." msgstr "根据来自 authentik 的值设置自定义 HTTP-Basic 身份验证标头。" -#: authentik/providers/proxy/models.py:84 +#: authentik/providers/proxy/models.py:91 msgid "HTTP-Basic Username Key" msgstr "HTTP-Basic 用户名密钥" -#: authentik/providers/proxy/models.py:94 +#: authentik/providers/proxy/models.py:93 +msgid "" +"User/Group Attribute used for the user part of the HTTP-Basic Header. If not" +" set, the user's Email address is used." +msgstr "用于 HTTP-Basic 标头用户名部分的用户/组属性。如果未设置,则使用用户的电子邮件地址。" + +#: authentik/providers/proxy/models.py:99 msgid "HTTP-Basic Password Key" msgstr "HTTP-Basic 密码密钥" -#: authentik/providers/proxy/models.py:149 +#: authentik/providers/proxy/models.py:100 +msgid "" +"User/Group Attribute used for the password part of the HTTP-Basic Header." +msgstr "用于 HTTP-Basic 标头的密码部分的用户/组属性。" + +#: authentik/providers/proxy/models.py:154 msgid "Proxy Provider" msgstr "代理提供程序" -#: authentik/providers/proxy/models.py:150 +#: authentik/providers/proxy/models.py:155 msgid "Proxy Providers" msgstr "代理提供程序" -#: authentik/providers/saml/api.py:176 +#: authentik/providers/radius/models.py:18 +msgid "Shared secret between clients and server to hash packets." +msgstr "在客户端和服务端之间共享密钥以哈希数据包。" + +#: authentik/providers/radius/models.py:24 +msgid "" +"List of CIDRs (comma-seperated) that clients can connect from. A more " +"specific CIDR will match before a looser one. Clients connecting from a non-" +"specified CIDR will be dropped." +msgstr "允许客户端连接的 CIDR 列表(逗号分隔)。严格的 CIDR 会在宽松的之前匹配。来自 CIDR 范围外的客户端连接将会被丢弃。" + +#: authentik/providers/radius/models.py:49 +msgid "Radius Provider" +msgstr "Radius 提供程序" + +#: authentik/providers/radius/models.py:50 +msgid "Radius Providers" +msgstr "Radius 提供程序" + +#: authentik/providers/saml/api/providers.py:260 msgid "Invalid XML Syntax" msgstr "无效 XML 语法" -#: authentik/providers/saml/api.py:186 +#: authentik/providers/saml/api/providers.py:270 #, python-format msgid "Failed to import Metadata: %(message)s" msgstr "导入元数据失败:%(message)s" @@ -865,82 +1243,176 @@ msgstr "导入元数据失败:%(message)s" msgid "ACS URL" msgstr "ACS URL" -#: authentik/providers/saml/models.py:49 +#: authentik/providers/saml/models.py:43 +msgid "" +"Value of the audience restriction field of the assertion. When left empty, " +"no audience restriction will be added." +msgstr "断言的 Audience 受限字段的值。留空时,不会添加 Audience 限制。" + +#: authentik/providers/saml/models.py:47 msgid "Also known as EntityID" msgstr "也称为 EntityID" -#: authentik/providers/saml/models.py:53 +#: authentik/providers/saml/models.py:51 msgid "Service Provider Binding" msgstr "服务提供程序绑定" -#: authentik/providers/saml/models.py:65 +#: authentik/providers/saml/models.py:53 +msgid "" +"This determines how authentik sends the response back to the Service " +"Provider." +msgstr "确定 authentik 如何将响应发送回服务提供程序。" + +#: authentik/providers/saml/models.py:63 msgid "NameID Property Mapping" msgstr "NameID 属性映射" -#: authentik/providers/saml/models.py:109 authentik/sources/saml/models.py:128 +#: authentik/providers/saml/models.py:65 +msgid "" +"Configure how the NameID value will be created. When left empty, the " +"NameIDPolicy of the incoming request will be considered" +msgstr "配置如何创建 NameID 值。如果留空,将考虑传入请求的 NameIDPolicy" + +#: authentik/providers/saml/models.py:74 +msgid "" +"Assertion valid not before current time + this value (Format: " +"hours=-1;minutes=-2;seconds=-3)." +msgstr "从当前时间经过多久时或之后,断言有效(格式:hours=-1;minutes=-2;seconds=-3)。" + +#: authentik/providers/saml/models.py:82 +msgid "" +"Assertion not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "从当前时间经过多久时或之后,断言无效(格式:hours=1;minutes=2;seconds=3)。" + +#: authentik/providers/saml/models.py:91 +msgid "" +"Session not valid on or after current time + this value (Format: " +"hours=1;minutes=2;seconds=3)." +msgstr "从当前时间经过多久时或之后,会话无效(格式:hours=1;minutes=2;seconds=3)。" + +#: authentik/providers/saml/models.py:99 authentik/sources/saml/models.py:139 msgid "SHA1" msgstr "SHA1" -#: authentik/providers/saml/models.py:110 authentik/sources/saml/models.py:129 +#: authentik/providers/saml/models.py:100 authentik/sources/saml/models.py:140 msgid "SHA256" msgstr "SHA256" -#: authentik/providers/saml/models.py:111 authentik/sources/saml/models.py:130 +#: authentik/providers/saml/models.py:101 authentik/sources/saml/models.py:141 msgid "SHA384" msgstr "SHA384" -#: authentik/providers/saml/models.py:112 authentik/sources/saml/models.py:131 +#: authentik/providers/saml/models.py:102 authentik/sources/saml/models.py:142 msgid "SHA512" msgstr "SHA512" -#: authentik/providers/saml/models.py:119 authentik/sources/saml/models.py:138 +#: authentik/providers/saml/models.py:109 authentik/sources/saml/models.py:149 msgid "RSA-SHA1" msgstr "RSA-SHA1" -#: authentik/providers/saml/models.py:120 authentik/sources/saml/models.py:139 +#: authentik/providers/saml/models.py:110 authentik/sources/saml/models.py:150 msgid "RSA-SHA256" msgstr "RSA-SHA256" -#: authentik/providers/saml/models.py:121 authentik/sources/saml/models.py:140 +#: authentik/providers/saml/models.py:111 authentik/sources/saml/models.py:151 msgid "RSA-SHA384" msgstr "RSA-SHA384" -#: authentik/providers/saml/models.py:122 authentik/sources/saml/models.py:141 +#: authentik/providers/saml/models.py:112 authentik/sources/saml/models.py:152 msgid "RSA-SHA512" msgstr "RSA-SHA512" -#: authentik/providers/saml/models.py:123 authentik/sources/saml/models.py:142 +#: authentik/providers/saml/models.py:113 authentik/sources/saml/models.py:153 msgid "DSA-SHA1" msgstr "DSA-SHA1" -#: authentik/providers/saml/models.py:140 +#: authentik/providers/saml/models.py:124 +msgid "" +"When selected, incoming assertion's Signatures will be validated against " +"this certificate. To allow unsigned Requests, leave on default." +msgstr "选中后,传入断言的签名将根据此证书进行验证。要允许未签名的请求,请保留默认值。" + +#: authentik/providers/saml/models.py:128 msgid "Verification Certificate" msgstr "验证证书" -#: authentik/providers/saml/models.py:148 +#: authentik/providers/saml/models.py:136 msgid "Keypair used to sign outgoing Responses going to the Service Provider." msgstr "密钥对,用于签署发送给服务提供程序的传出响应。" -#: authentik/providers/saml/models.py:150 authentik/sources/saml/models.py:118 +#: authentik/providers/saml/models.py:138 authentik/sources/saml/models.py:129 msgid "Signing Keypair" msgstr "签名密钥对" -#: authentik/providers/saml/models.py:180 +#: authentik/providers/saml/models.py:167 msgid "SAML Provider" msgstr "SAML 提供程序" -#: authentik/providers/saml/models.py:181 +#: authentik/providers/saml/models.py:168 msgid "SAML Providers" msgstr "SAML 提供程序" -#: authentik/providers/saml/models.py:206 +#: authentik/providers/saml/models.py:192 msgid "SAML Property Mapping" msgstr "SAML 属性映射" -#: authentik/providers/saml/models.py:207 +#: authentik/providers/saml/models.py:193 msgid "SAML Property Mappings" msgstr "SAML 属性映射" +#: authentik/providers/scim/models.py:20 +msgid "Base URL to SCIM requests, usually ends in /v2" +msgstr "SCIM 请求的基础 URL,通常以 /v2 结尾" + +#: authentik/providers/scim/models.py:21 +msgid "Authentication token" +msgstr "身份验证令牌" + +#: authentik/providers/scim/models.py:27 authentik/sources/ldap/models.py:80 +msgid "Property mappings used for group creation/updating." +msgstr "用于创建/更新组的属性映射。" + +#: authentik/providers/scim/models.py:69 +msgid "SCIM Provider" +msgstr "SCIM 提供程序" + +#: authentik/providers/scim/models.py:70 +msgid "SCIM Providers" +msgstr "SCIM 提供程序" + +#: authentik/providers/scim/models.py:90 +msgid "SCIM Mapping" +msgstr "SCIM 映射" + +#: authentik/providers/scim/models.py:91 +msgid "SCIM Mappings" +msgstr "SCIM 映射" + +#: authentik/providers/scim/tasks.py:50 +msgid "Starting full SCIM sync" +msgstr "开始全量 SCIM 同步" + +#: authentik/providers/scim/tasks.py:57 +#, python-format +msgid "Syncing page %(page)d of users" +msgstr "正在同步用户页面 %(page)d" + +#: authentik/providers/scim/tasks.py:61 +#, python-format +msgid "Syncing page %(page)d of groups" +msgstr "正在同步群组页面 %(page)d" + +#: authentik/providers/scim/tasks.py:90 +#, python-format +msgid "Failed to sync user due to remote error %(name)s: %(error)s" +msgstr "由于远端错误 %(name)s,同步用户失败:%(error)s" + +#: authentik/providers/scim/tasks.py:122 +#, python-format +msgid "Failed to sync group due to remote error %(name)s: %(error)s" +msgstr "由于远端错误 %(name)s,同步群组失败:%(error)s" + #: authentik/recovery/management/commands/create_admin_group.py:11 msgid "Create admin group if the default group gets deleted." msgstr "如果默认组被删除,则创建管理员组。" @@ -953,11 +1425,11 @@ msgstr "创建一个密钥,可用于恢复对 authentik 的访问权限。" msgid "Used recovery-link to authenticate." msgstr "已使用恢复链接进行身份验证。" -#: authentik/sources/ldap/models.py:32 +#: authentik/sources/ldap/models.py:33 msgid "Server URI" msgstr "服务器 URI" -#: authentik/sources/ldap/models.py:40 +#: authentik/sources/ldap/models.py:41 msgid "" "Optionally verify the LDAP Server's Certificate against the CA Chain in this" " keypair." @@ -1007,9 +1479,11 @@ msgstr "将与此过滤器匹配的对象视为组。" msgid "Field which contains a unique Identifier." msgstr "包含唯一标识符的字段。" -#: authentik/sources/ldap/models.py:80 -msgid "Property mappings used for group creation/updating." -msgstr "用于创建/更新组的属性映射。" +#: authentik/sources/ldap/models.py:87 +msgid "" +"When a user changes their password, sync it back to LDAP. This can only be " +"enabled on a single LDAP source." +msgstr "当用户修改密码时,将其同步回 LDAP。仅可在单点 LDAP 源时启用。" #: authentik/sources/ldap/models.py:145 msgid "LDAP Source" @@ -1019,18 +1493,22 @@ msgstr "LDAP 源" msgid "LDAP Sources" msgstr "LDAP 源" -#: authentik/sources/ldap/models.py:169 +#: authentik/sources/ldap/models.py:168 msgid "LDAP Property Mapping" msgstr "LDAP 属性映射" -#: authentik/sources/ldap/models.py:170 +#: authentik/sources/ldap/models.py:169 msgid "LDAP Property Mappings" msgstr "LDAP 属性映射" -#: authentik/sources/ldap/signals.py:58 +#: authentik/sources/ldap/signals.py:56 msgid "Password does not match Active Directory Complexity." msgstr "密码与 Active Directory 复杂度不匹配。" +#: authentik/sources/oauth/clients/oauth2.py:68 +msgid "No token received." +msgstr "未收到令牌。" + #: authentik/sources/oauth/models.py:24 msgid "Request Token URL" msgstr "请求令牌 URL" @@ -1065,238 +1543,303 @@ msgstr "个人资料 URL" msgid "URL used by authentik to get user information." msgstr "authentik 用来获取用户信息的 URL。" -#: authentik/sources/oauth/models.py:97 +#: authentik/sources/oauth/models.py:48 +msgid "Additional Scopes" +msgstr "额外的作用域" + +#: authentik/sources/oauth/models.py:108 msgid "OAuth Source" msgstr "OAuth 源" -#: authentik/sources/oauth/models.py:98 +#: authentik/sources/oauth/models.py:109 msgid "OAuth Sources" msgstr "OAuth 源" -#: authentik/sources/oauth/models.py:107 +#: authentik/sources/oauth/models.py:117 msgid "GitHub OAuth Source" msgstr "GitHub OAuth 源" -#: authentik/sources/oauth/models.py:108 +#: authentik/sources/oauth/models.py:118 msgid "GitHub OAuth Sources" msgstr "GitHub OAuth 源" -#: authentik/sources/oauth/models.py:117 +#: authentik/sources/oauth/models.py:126 +msgid "Twitch OAuth Source" +msgstr "Twitch OAuth 源" + +#: authentik/sources/oauth/models.py:127 +msgid "Twitch OAuth Sources" +msgstr "Twitch OAuth 源" + +#: authentik/sources/oauth/models.py:135 +msgid "Mailcow OAuth Source" +msgstr "Mailcow OAuth 源" + +#: authentik/sources/oauth/models.py:136 +msgid "Mailcow OAuth Sources" +msgstr "Mailcow OAuth 源" + +#: authentik/sources/oauth/models.py:144 msgid "Twitter OAuth Source" msgstr "Twitter OAuth 源" -#: authentik/sources/oauth/models.py:118 +#: authentik/sources/oauth/models.py:145 msgid "Twitter OAuth Sources" msgstr "Twitter OAuth 源" -#: authentik/sources/oauth/models.py:127 +#: authentik/sources/oauth/models.py:153 msgid "Facebook OAuth Source" msgstr "Facebook OAuth 源" -#: authentik/sources/oauth/models.py:128 +#: authentik/sources/oauth/models.py:154 msgid "Facebook OAuth Sources" msgstr "Facebook OAuth 源" -#: authentik/sources/oauth/models.py:137 +#: authentik/sources/oauth/models.py:162 msgid "Discord OAuth Source" msgstr "Discord OAuth 源" -#: authentik/sources/oauth/models.py:138 +#: authentik/sources/oauth/models.py:163 msgid "Discord OAuth Sources" msgstr "Discord OAuth 源" -#: authentik/sources/oauth/models.py:147 +#: authentik/sources/oauth/models.py:171 msgid "Google OAuth Source" msgstr "Google OAuth 源" -#: authentik/sources/oauth/models.py:148 +#: authentik/sources/oauth/models.py:172 msgid "Google OAuth Sources" msgstr "Google OAuth 源" -#: authentik/sources/oauth/models.py:157 +#: authentik/sources/oauth/models.py:180 msgid "Azure AD OAuth Source" msgstr "Azure AD OAuth 源" -#: authentik/sources/oauth/models.py:158 +#: authentik/sources/oauth/models.py:181 msgid "Azure AD OAuth Sources" msgstr "Azure AD OAuth 源" -#: authentik/sources/oauth/models.py:167 +#: authentik/sources/oauth/models.py:189 msgid "OpenID OAuth Source" msgstr "OpenID OAuth 源" -#: authentik/sources/oauth/models.py:168 +#: authentik/sources/oauth/models.py:190 msgid "OpenID OAuth Sources" msgstr "OpenID OAuth 源" -#: authentik/sources/oauth/models.py:177 +#: authentik/sources/oauth/models.py:198 msgid "Apple OAuth Source" msgstr "Apple OAuth 源" -#: authentik/sources/oauth/models.py:178 +#: authentik/sources/oauth/models.py:199 msgid "Apple OAuth Sources" msgstr "Apple OAuth 源" -#: authentik/sources/oauth/models.py:187 +#: authentik/sources/oauth/models.py:207 msgid "Okta OAuth Source" msgstr "Okta OAuth 源" -#: authentik/sources/oauth/models.py:188 +#: authentik/sources/oauth/models.py:208 msgid "Okta OAuth Sources" msgstr "Okta OAuth 源" -#: authentik/sources/oauth/models.py:203 +#: authentik/sources/oauth/models.py:230 msgid "User OAuth Source Connection" msgstr "用户 OAuth 源连接" -#: authentik/sources/oauth/models.py:204 +#: authentik/sources/oauth/models.py:231 msgid "User OAuth Source Connections" msgstr "用户 OAuth 源连接" -#: authentik/sources/oauth/views/callback.py:98 -msgid "Authentication Failed." -msgstr "身份验证失败。" +#: authentik/sources/oauth/views/callback.py:100 +#, python-format +msgid "Authentication failed: %(reason)s" +msgstr "身份验证失败:%(reason)s" #: authentik/sources/plex/models.py:37 msgid "Client identifier used to talk to Plex." msgstr "用来与 Plex 通信的客户端标识符。" -#: authentik/sources/plex/models.py:52 +#: authentik/sources/plex/models.py:44 +msgid "" +"Which servers a user has to be a member of to be granted access. Empty list " +"allows every server." +msgstr "用户必须是哪个服务器的成员才能获取权限。空列表允许任何服务器。" + +#: authentik/sources/plex/models.py:50 msgid "Allow friends to authenticate, even if you don't share a server." msgstr "允许好友进行身份验证,即使您不共享服务器。" -#: authentik/sources/plex/models.py:54 +#: authentik/sources/plex/models.py:52 msgid "Plex token used to check friends" msgstr "用于检查好友的 Plex 令牌" -#: authentik/sources/plex/models.py:92 +#: authentik/sources/plex/models.py:95 msgid "Plex Source" msgstr "Plex 源" -#: authentik/sources/plex/models.py:93 +#: authentik/sources/plex/models.py:96 msgid "Plex Sources" msgstr "Plex 源" -#: authentik/sources/plex/models.py:104 +#: authentik/sources/plex/models.py:112 msgid "User Plex Source Connection" msgstr "用户 Plex 源连接" -#: authentik/sources/plex/models.py:105 +#: authentik/sources/plex/models.py:113 msgid "User Plex Source Connections" msgstr "用户 Plex 源连接" -#: authentik/sources/saml/models.py:36 +#: authentik/sources/saml/models.py:40 msgid "Redirect Binding" msgstr "重定向绑定" -#: authentik/sources/saml/models.py:37 +#: authentik/sources/saml/models.py:41 msgid "POST Binding" msgstr "POST 绑定" -#: authentik/sources/saml/models.py:38 +#: authentik/sources/saml/models.py:42 msgid "POST Binding with auto-confirmation" msgstr "带有自动确认功能的 POST 绑定" -#: authentik/sources/saml/models.py:57 +#: authentik/sources/saml/models.py:70 msgid "Flow used before authentication." msgstr "身份验证之前使用的流程。" -#: authentik/sources/saml/models.py:64 +#: authentik/sources/saml/models.py:77 msgid "Issuer" msgstr "颁发者" -#: authentik/sources/saml/models.py:65 +#: authentik/sources/saml/models.py:78 msgid "Also known as Entity ID. Defaults the Metadata URL." msgstr "也称为 Entity ID。 默认为元数据 URL。" -#: authentik/sources/saml/models.py:69 +#: authentik/sources/saml/models.py:82 msgid "SSO URL" msgstr "SSO URL" -#: authentik/sources/saml/models.py:70 +#: authentik/sources/saml/models.py:83 msgid "URL that the initial Login request is sent to." msgstr "初始登录请求发送到的 URL。" -#: authentik/sources/saml/models.py:76 +#: authentik/sources/saml/models.py:89 msgid "SLO URL" msgstr "SLO URL" -#: authentik/sources/saml/models.py:77 +#: authentik/sources/saml/models.py:90 msgid "Optional URL if your IDP supports Single-Logout." msgstr "如果您的 IDP 支持单点登出,则为可选 URL。" -#: authentik/sources/saml/models.py:83 +#: authentik/sources/saml/models.py:96 msgid "" "Allows authentication flows initiated by the IdP. This can be a security " "risk, as no validation of the request ID is done." msgstr "允许由 IdP 启动的身份验证流程。这可能存在安全风险,因为未对请求 ID 进行验证。" -#: authentik/sources/saml/models.py:91 +#: authentik/sources/saml/models.py:104 msgid "" "NameID Policy sent to the IdP. Can be unset, in which case no Policy is " "sent." msgstr "发送给 IdP 的 NameID 策略。可以取消设置,此时不会发送任何策略。" -#: authentik/sources/saml/models.py:102 +#: authentik/sources/saml/models.py:115 msgid "Delete temporary users after" msgstr "多久后删除临时用户" -#: authentik/sources/saml/models.py:120 +#: authentik/sources/saml/models.py:118 +msgid "" +"Time offset when temporary users should be deleted. This only applies if " +"your IDP uses the NameID Format 'transient', and the user doesn't log out " +"manually. (Format: hours=1;minutes=2;seconds=3)." +msgstr "" +"删除临时用户的时间偏移。这仅适用于您的 IDP 使用 NameID 格式 'transient' " +"且用户未手动登出的情况。(格式:hours=1;minutes=2;seconds=3)。" + +#: authentik/sources/saml/models.py:131 msgid "" "Keypair which is used to sign outgoing requests. Leave empty to disable " "signing." msgstr "用于签署传出请求的密钥对。留空则禁用签名。" -#: authentik/sources/saml/models.py:188 +#: authentik/sources/saml/models.py:215 msgid "SAML Source" msgstr "SAML 源" -#: authentik/sources/saml/models.py:189 +#: authentik/sources/saml/models.py:216 msgid "SAML Sources" msgstr "SAML 源" -#: authentik/stages/authenticator_duo/models.py:64 +#: authentik/sources/saml/models.py:231 +msgid "User SAML Source Connection" +msgstr "用户 SAML 源连接" + +#: authentik/sources/saml/models.py:232 +msgid "User SAML Source Connections" +msgstr "用户 SAML 源连接" + +#: authentik/stages/authenticator_duo/models.py:80 msgid "Duo Authenticator Setup Stage" msgstr "Duo 身份验证器设置阶段" -#: authentik/stages/authenticator_duo/models.py:65 +#: authentik/stages/authenticator_duo/models.py:81 msgid "Duo Authenticator Setup Stages" msgstr "Duo 身份验证器设置阶段" -#: authentik/stages/authenticator_duo/models.py:82 +#: authentik/stages/authenticator_duo/models.py:104 msgid "Duo Device" msgstr "Duo 设备" -#: authentik/stages/authenticator_duo/models.py:83 +#: authentik/stages/authenticator_duo/models.py:105 msgid "Duo Devices" msgstr "Duo 设备" -#: authentik/stages/authenticator_sms/models.py:157 +#: authentik/stages/authenticator_sms/models.py:57 +msgid "" +"When enabled, the Phone number is only used during enrollment to verify the " +"users authenticity. Only a hash of the phone number is saved to ensure it is" +" not re-used in the future." +msgstr "启用时,电话号码仅在注册期间用于验证用户的真实性。仅保存电话号码的哈希,以确保将来不会重复使用。" + +#: authentik/stages/authenticator_sms/models.py:68 +msgid "Optionally modify the payload being sent to custom providers." +msgstr "可选地,修改发送到自定义提供程序的载荷。" + +#: authentik/stages/authenticator_sms/models.py:81 +#, python-format +msgid "Use this code to authenticate in authentik: %(token)s" +msgstr "使用此代码在 authentik 中验证身份:%(token)s" + +#: authentik/stages/authenticator_sms/models.py:180 msgid "SMS Authenticator Setup Stage" msgstr "短信身份验证器设置阶段" -#: authentik/stages/authenticator_sms/models.py:158 +#: authentik/stages/authenticator_sms/models.py:181 msgid "SMS Authenticator Setup Stages" msgstr "短信身份验证器设置阶段" -#: authentik/stages/authenticator_sms/models.py:175 +#: authentik/stages/authenticator_sms/models.py:226 msgid "SMS Device" msgstr "短信设备" -#: authentik/stages/authenticator_sms/models.py:176 +#: authentik/stages/authenticator_sms/models.py:227 msgid "SMS Devices" msgstr "短信设备" -#: authentik/stages/authenticator_sms/stage.py:54 +#: authentik/stages/authenticator_sms/stage.py:55 +#: authentik/stages/authenticator_totp/stage.py:42 #: authentik/stages/authenticator_totp/stage.py:45 msgid "Code does not match" msgstr "代码不匹配" -#: authentik/stages/authenticator_static/models.py:47 +#: authentik/stages/authenticator_sms/stage.py:71 +msgid "Invalid phone number" +msgstr "无效电话号码" + +#: authentik/stages/authenticator_static/models.py:46 msgid "Static Authenticator Stage" msgstr "静态身份验证器阶段" -#: authentik/stages/authenticator_static/models.py:48 +#: authentik/stages/authenticator_static/models.py:47 msgid "Static Authenticator Stages" msgstr "静态身份验证器阶段" @@ -1308,109 +1851,133 @@ msgstr "6 位数字,广泛兼容" msgid "8 digits, not compatible with apps like Google Authenticator" msgstr "8 位数字,与 Google 身份验证器等应用不兼容" -#: authentik/stages/authenticator_totp/models.py:54 +#: authentik/stages/authenticator_totp/models.py:53 msgid "TOTP Authenticator Setup Stage" msgstr "TOTP 身份验证器设置阶段" -#: authentik/stages/authenticator_totp/models.py:55 +#: authentik/stages/authenticator_totp/models.py:54 msgid "TOTP Authenticator Setup Stages" msgstr "TOTP 身份验证器设置阶段" -#: authentik/stages/authenticator_validate/challenge.py:99 +#: authentik/stages/authenticator_validate/challenge.py:124 msgid "Invalid Token" msgstr "无效令牌" -#: authentik/stages/authenticator_validate/models.py:17 +#: authentik/stages/authenticator_validate/models.py:18 +msgid "Static" +msgstr "静态" + +#: authentik/stages/authenticator_validate/models.py:19 msgid "TOTP" msgstr "TOTP" -#: authentik/stages/authenticator_validate/models.py:18 +#: authentik/stages/authenticator_validate/models.py:20 msgid "WebAuthn" msgstr "WebAuthn" -#: authentik/stages/authenticator_validate/models.py:19 +#: authentik/stages/authenticator_validate/models.py:21 msgid "Duo" msgstr "Duo" -#: authentik/stages/authenticator_validate/models.py:20 +#: authentik/stages/authenticator_validate/models.py:22 msgid "SMS" msgstr "短信" -#: authentik/stages/authenticator_validate/models.py:58 +#: authentik/stages/authenticator_validate/models.py:49 +msgid "" +"Stages used to configure Authenticator when user doesn't have any compatible" +" devices. After this configuration Stage passes, the user is not prompted " +"again." +msgstr "当用户没有任何兼容的设备时,用来配置身份验证器的阶段。此阶段通过后,将不再请求此用户。" + +#: authentik/stages/authenticator_validate/models.py:56 msgid "Device classes which can be used to authenticate" msgstr "可用于进行身份验证的设备类型" -#: authentik/stages/authenticator_validate/models.py:80 +#: authentik/stages/authenticator_validate/models.py:64 +msgid "" +"If any of the user's device has been used within this threshold, this stage " +"will be skipped" +msgstr "如果用户的任意设备在此期限内被使用过,此阶段会被跳过。" + +#: authentik/stages/authenticator_validate/models.py:70 +msgid "Enforce user verification for WebAuthn devices." +msgstr "对 WebAuthn 设备强制用户验证。" + +#: authentik/stages/authenticator_validate/models.py:92 msgid "Authenticator Validation Stage" msgstr "身份验证器验证阶段" -#: authentik/stages/authenticator_validate/models.py:81 +#: authentik/stages/authenticator_validate/models.py:93 msgid "Authenticator Validation Stages" msgstr "身份验证器验证阶段" -#: authentik/stages/authenticator_webauthn/models.py:71 +#: authentik/stages/authenticator_webauthn/models.py:112 msgid "WebAuthn Authenticator Setup Stage" msgstr "WebAuthn 身份验证器设置阶段" -#: authentik/stages/authenticator_webauthn/models.py:72 +#: authentik/stages/authenticator_webauthn/models.py:113 msgid "WebAuthn Authenticator Setup Stages" msgstr "WebAuthn 身份验证器设置阶段" -#: authentik/stages/authenticator_webauthn/models.py:105 +#: authentik/stages/authenticator_webauthn/models.py:151 msgid "WebAuthn Device" msgstr "WebAuthn 设备" -#: authentik/stages/authenticator_webauthn/models.py:106 +#: authentik/stages/authenticator_webauthn/models.py:152 msgid "WebAuthn Devices" msgstr "WebAuthn 设备" +#: authentik/stages/captcha/models.py:14 +msgid "Public key, acquired your captcha Provider." +msgstr "公钥,从您的验证码提供商处取得。" + #: authentik/stages/captcha/models.py:15 -msgid "" -"Public key, acquired from https://www.google.com/recaptcha/intro/v3.html" -msgstr "公钥,从 https://www.google.com/recaptcha/intro/v3.html 获取" +msgid "Private key, acquired your captcha Provider." +msgstr "私钥,从您的验证码提供商处取得。" -#: authentik/stages/captcha/models.py:18 -msgid "" -"Private key, acquired from https://www.google.com/recaptcha/intro/v3.html" -msgstr "私钥,从 https://www.google.com/recaptcha/intro/v3.html 获取" - -#: authentik/stages/captcha/models.py:39 +#: authentik/stages/captcha/models.py:37 msgid "Captcha Stage" msgstr "验证码阶段" -#: authentik/stages/captcha/models.py:40 +#: authentik/stages/captcha/models.py:38 msgid "Captcha Stages" msgstr "验证码阶段" -#: authentik/stages/consent/models.py:52 +#: authentik/stages/consent/models.py:30 +msgid "" +"Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3)." +msgstr "经过多少偏移量后同意授权过期。(格式:hours=1;minutes=2;seconds=3)。" + +#: authentik/stages/consent/models.py:50 msgid "Consent Stage" msgstr "同意授权阶段" -#: authentik/stages/consent/models.py:53 +#: authentik/stages/consent/models.py:51 msgid "Consent Stages" msgstr "同意授权阶段" -#: authentik/stages/consent/models.py:68 +#: authentik/stages/consent/models.py:72 msgid "User Consent" msgstr "用户同意授权" -#: authentik/stages/consent/models.py:69 +#: authentik/stages/consent/models.py:73 msgid "User Consents" msgstr "用户同意授权" -#: authentik/stages/deny/models.py:31 +#: authentik/stages/deny/models.py:30 msgid "Deny Stage" msgstr "拒绝阶段" -#: authentik/stages/deny/models.py:32 +#: authentik/stages/deny/models.py:31 msgid "Deny Stages" msgstr "拒绝阶段" -#: authentik/stages/dummy/models.py:33 +#: authentik/stages/dummy/models.py:34 msgid "Dummy Stage" msgstr "虚拟阶段" -#: authentik/stages/dummy/models.py:34 +#: authentik/stages/dummy/models.py:35 msgid "Dummy Stages" msgstr "虚拟阶段" @@ -1422,31 +1989,37 @@ msgstr "密码重置" msgid "Account Confirmation" msgstr "账户确认" -#: authentik/stages/email/models.py:75 +#: authentik/stages/email/models.py:58 +msgid "" +"When enabled, global Email connection settings will be used and connection " +"settings below will be ignored." +msgstr "启用后,将使用全局电子邮件连接设置,下面的连接设置将被忽略。" + +#: authentik/stages/email/models.py:73 msgid "Activate users upon completion of stage." msgstr "完成阶段后激活用户。" -#: authentik/stages/email/models.py:79 +#: authentik/stages/email/models.py:77 msgid "Time in minutes the token sent is valid." -msgstr "发出令牌的有效时间,以分钟为单位。" +msgstr "发出令牌的有效时间(单位为分钟)。" -#: authentik/stages/email/models.py:125 +#: authentik/stages/email/models.py:122 msgid "Email Stage" msgstr "电子邮件阶段" -#: authentik/stages/email/models.py:126 +#: authentik/stages/email/models.py:123 msgid "Email Stages" msgstr "电子邮件阶段" -#: authentik/stages/email/stage.py:106 +#: authentik/stages/email/stage.py:112 msgid "Successfully verified Email." msgstr "已成功验证电子邮件。" -#: authentik/stages/email/stage.py:113 authentik/stages/email/stage.py:135 +#: authentik/stages/email/stage.py:119 authentik/stages/email/stage.py:141 msgid "No pending user." msgstr "没有待处理的用户。" -#: authentik/stages/email/stage.py:125 +#: authentik/stages/email/stage.py:131 msgid "Email sent." msgstr "电子邮件已发出。" @@ -1499,7 +2072,7 @@ msgstr "" #: authentik/stages/email/templates/email/password_reset.html:19 msgid "" "\n" -" You recently requested to change your password for you authentik account. Use the button below to set a new password.\n" +" You recently requested to change your password for your authentik account. Use the button below to set a new password.\n" " " msgstr "" "\n" @@ -1535,68 +2108,94 @@ msgstr "" " 这是一封测试电子邮件,用于通知您已成功配置 authentik 电子邮件。\n" " " -#: authentik/stages/identification/models.py:42 +#: authentik/stages/identification/models.py:29 msgid "" -"When set, shows a password field, instead of showing the password field as " -"seaprate step." -msgstr "设置后,将显示密码字段,而不是将密码字段作为单独的步骤显示。" +"Fields of the user object to match against. (Hold shift to select multiple " +"options)" +msgstr "用来匹配的用户对象字段。(按住 Shift 多选)" -#: authentik/stages/identification/models.py:48 +#: authentik/stages/identification/models.py:47 msgid "When enabled, user fields are matched regardless of their casing." msgstr "启用后,无论大小写如何,都将匹配用户字段。" -#: authentik/stages/identification/models.py:68 +#: authentik/stages/identification/models.py:52 +msgid "" +"When a valid username/email has been entered, and this option is enabled, " +"the user's username and avatar will be shown. Otherwise, the text that the " +"user entered will be shown" +msgstr "如果输入了有效的用户名/电子邮箱,并且启用了此选项,则会显示用户的用户名和头像。否则,将显示用户输入的文本" + +#: authentik/stages/identification/models.py:65 msgid "Optional enrollment flow, which is linked at the bottom of the page." msgstr "可选注册流程,链接在页面底部。" -#: authentik/stages/identification/models.py:77 +#: authentik/stages/identification/models.py:74 msgid "Optional recovery flow, which is linked at the bottom of the page." msgstr "可选的恢复流程,链接在页面底部。" -#: authentik/stages/identification/models.py:86 +#: authentik/stages/identification/models.py:83 msgid "Optional passwordless flow, which is linked at the bottom of the page." msgstr "可选的无密码流程,链接在页面底部。" -#: authentik/stages/identification/models.py:90 +#: authentik/stages/identification/models.py:87 msgid "Specify which sources should be shown." msgstr "指定应显示哪些源。" -#: authentik/stages/identification/models.py:112 +#: authentik/stages/identification/models.py:108 msgid "Identification Stage" msgstr "识别阶段" -#: authentik/stages/identification/models.py:113 +#: authentik/stages/identification/models.py:109 msgid "Identification Stages" msgstr "识别阶段" -#: authentik/stages/identification/stage.py:175 +#: authentik/stages/identification/stage.py:184 msgid "Log in" msgstr "登录" -#: authentik/stages/invitation/models.py:46 +#: authentik/stages/identification/stage.py:185 +msgid "Continue" +msgstr "继续" + +#: authentik/stages/invitation/models.py:21 +msgid "" +"If this flag is set, this Stage will jump to the next Stage when no " +"Invitation is given. By default this Stage will cancel the Flow when no " +"invitation is given." +msgstr "如果设置了此标志,则当没有发出邀请时,此阶段将跳转到下一个阶段。默认情况下,当没有发出邀请时,此阶段将取消流程。" + +#: authentik/stages/invitation/models.py:44 msgid "Invitation Stage" msgstr "邀请阶段" -#: authentik/stages/invitation/models.py:47 +#: authentik/stages/invitation/models.py:45 msgid "Invitation Stages" msgstr "邀请阶段" -#: authentik/stages/invitation/models.py:57 +#: authentik/stages/invitation/models.py:60 +msgid "When set, only the configured flow can use this invitation." +msgstr "设置时,只有配置的流程可以使用此邀请。" + +#: authentik/stages/invitation/models.py:64 msgid "When enabled, the invitation will be deleted after usage." msgstr "启用后,邀请将在使用后被删除。" -#: authentik/stages/invitation/models.py:64 +#: authentik/stages/invitation/models.py:71 msgid "Optional fixed data to enforce on user enrollment." msgstr "在用户注册时强制设置的可选固定数据。" -#: authentik/stages/invitation/models.py:72 +#: authentik/stages/invitation/models.py:84 msgid "Invitation" msgstr "邀请" -#: authentik/stages/invitation/models.py:73 +#: authentik/stages/invitation/models.py:85 msgid "Invitations" msgstr "邀请" +#: authentik/stages/invitation/stage.py:66 +msgid "Invalid invite/invite not found" +msgstr "邀请无效/未找到" + #: authentik/stages/password/models.py:20 msgid "User database + standard password" msgstr "用户数据库 + 标准密码" @@ -1607,81 +2206,132 @@ msgstr "用户数据库 + 应用程序密码" #: authentik/stages/password/models.py:28 msgid "User database + LDAP password" -msgstr "用户数据库 + LDAP 密码" +msgstr "用户数据库 + LDAP 密码" #: authentik/stages/password/models.py:38 msgid "Selection of backends to test the password against." msgstr "选择用于测试密码的后端。" -#: authentik/stages/password/models.py:78 +#: authentik/stages/password/models.py:43 +msgid "" +"How many attempts a user has before the flow is canceled. To lock the user " +"out, use a reputation policy and a user_write stage." +msgstr "在取消流程之前,用户可以尝试多少次。要锁定用户,请使用信誉策略和 user_write 阶段。" + +#: authentik/stages/password/models.py:75 msgid "Password Stage" msgstr "密码阶段" -#: authentik/stages/password/models.py:79 +#: authentik/stages/password/models.py:76 msgid "Password Stages" msgstr "密码阶段" -#: authentik/stages/password/stage.py:152 +#: authentik/stages/password/stage.py:159 msgid "Invalid password" msgstr "无效密码" -#: authentik/stages/prompt/models.py:29 +#: authentik/stages/prompt/models.py:41 msgid "Text: Simple Text input" msgstr "文本:简单文本输入" -#: authentik/stages/prompt/models.py:32 +#: authentik/stages/prompt/models.py:43 +msgid "Text area: Multiline Text Input." +msgstr "文本框:多行文本输入。" + +#: authentik/stages/prompt/models.py:46 msgid "Text (read-only): Simple Text input, but cannot be edited." msgstr "文本(只读):简单文本输入,但无法编辑。" -#: authentik/stages/prompt/models.py:39 +#: authentik/stages/prompt/models.py:50 +msgid "Text area (read-only): Multiline Text input, but cannot be edited." +msgstr "文本框(只读):多行文本输入,但无法编辑。" + +#: authentik/stages/prompt/models.py:56 +msgid "" +"Username: Same as Text input, but checks for and prevents duplicate " +"usernames." +msgstr "用户名:与文本输入相同,但检查并防止用户名重复。" + +#: authentik/stages/prompt/models.py:58 msgid "Email: Text field with Email type." msgstr "电子邮箱:电子邮箱类型的文本字段。" -#: authentik/stages/prompt/models.py:55 +#: authentik/stages/prompt/models.py:62 +msgid "" +"Password: Masked input, password is validated against sources. Policies " +"still have to be applied to this Stage. If two of these are used in the same" +" stage, they are ensured to be identical." +msgstr "密码:屏蔽输入内容,密码根据来源进行验证。策略仍需应用于此阶段。如果在同一阶段使用其中的两个,则确保它们是相同的。" + +#: authentik/stages/prompt/models.py:70 +msgid "Fixed choice field rendered as a group of radio buttons." +msgstr "显示为一组单选按钮的固定选项字段。" + +#: authentik/stages/prompt/models.py:72 +msgid "Fixed choice field rendered as a dropdown." +msgstr "显示为下拉框的固定选项字段。" + +#: authentik/stages/prompt/models.py:79 +msgid "" +"File: File upload for arbitrary files. File content will be available in " +"flow context as data-URI" +msgstr "文件:任意文件上传。文件内容将在流程上下文中以 data-URI 形式提供" + +#: authentik/stages/prompt/models.py:84 msgid "Separator: Static Separator Line" msgstr "分隔符:静态分隔线" -#: authentik/stages/prompt/models.py:56 +#: authentik/stages/prompt/models.py:85 msgid "Hidden: Hidden field, can be used to insert data into form." msgstr "隐藏:隐藏字段,可用于将数据插入表单。" -#: authentik/stages/prompt/models.py:57 +#: authentik/stages/prompt/models.py:86 msgid "Static: Static value, displayed as-is." msgstr "静态:静态值,按原样显示。" -#: authentik/stages/prompt/models.py:66 +#: authentik/stages/prompt/models.py:88 +msgid "authentik: Selection of locales authentik supports" +msgstr "authentik:选择 authentik 支持的语言环境" + +#: authentik/stages/prompt/models.py:115 msgid "Name of the form field, also used to store the value" msgstr "表单域的名称,也用于存储值" -#: authentik/stages/prompt/models.py:131 +#: authentik/stages/prompt/models.py:123 +msgid "" +"When creating a Radio Button Group or Dropdown, enable interpreting as " +"expression and return a list to return multiple choices." +msgstr "在创建单选按钮组或下拉框时,启用以表达式解释,并以列表形式返回多个选项。" + +#: authentik/stages/prompt/models.py:256 msgid "Prompt" msgstr "输入" -#: authentik/stages/prompt/models.py:132 +#: authentik/stages/prompt/models.py:257 msgid "Prompts" msgstr "输入" -#: authentik/stages/prompt/models.py:160 +#: authentik/stages/prompt/models.py:284 msgid "Prompt Stage" msgstr "输入阶段" -#: authentik/stages/prompt/models.py:161 +#: authentik/stages/prompt/models.py:285 msgid "Prompt Stages" msgstr "输入阶段" -#: authentik/stages/prompt/stage.py:94 +#: authentik/stages/prompt/stage.py:107 msgid "Passwords don't match." msgstr "密码不匹配。" -#: authentik/stages/user_delete/models.py:32 +#: authentik/stages/user_delete/models.py:31 msgid "User Delete Stage" msgstr "用户删除阶段" -#: authentik/stages/user_delete/models.py:33 +#: authentik/stages/user_delete/models.py:32 msgid "User Delete Stages" msgstr "用户删除阶段" -#: authentik/stages/user_delete/stage.py:24 +#: authentik/stages/user_delete/stage.py:22 msgid "No Pending User." msgstr "没有待处理的用户。" @@ -1691,60 +2341,91 @@ msgid "" "lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)" msgstr "确定会话持续多长时间。默认值为 0 表示会话持续到浏览器关闭为止。(格式:hours=-1;minutes=-2;seconds=-3)" -#: authentik/stages/user_login/models.py:43 +#: authentik/stages/user_login/models.py:25 +msgid "Terminate all other sessions of the user logging in." +msgstr "终止用户登录的所有其他会话。" + +#: authentik/stages/user_login/models.py:31 +msgid "" +"Offset the session will be extended by when the user picks the remember me " +"option. Default of 0 means that the remember me option will not be shown. " +"(Format: hours=-1;minutes=-2;seconds=-3)" +msgstr "" +"当用户选择“记住我”选项时,会话将会延长的时间。默认值 0 " +"表示不显示“记住我”选项。(格式:hours=-1;minutes=-2;seconds=-3)" + +#: authentik/stages/user_login/models.py:54 msgid "User Login Stage" msgstr "用户登录阶段" -#: authentik/stages/user_login/models.py:44 +#: authentik/stages/user_login/models.py:55 msgid "User Login Stages" msgstr "用户登录阶段" -#: authentik/stages/user_login/stage.py:29 +#: authentik/stages/user_login/stage.py:63 msgid "No Pending user to login." msgstr "没有待定用户可以登录。" -#: authentik/stages/user_login/stage.py:57 +#: authentik/stages/user_login/stage.py:96 msgid "Successfully logged in!" msgstr "已成功登录!" -#: authentik/stages/user_logout/models.py:31 +#: authentik/stages/user_logout/models.py:30 msgid "User Logout Stage" msgstr "用户登出阶段" -#: authentik/stages/user_logout/models.py:32 +#: authentik/stages/user_logout/models.py:31 msgid "User Logout Stages" msgstr "用户登出阶段" -#: authentik/stages/user_write/models.py:18 +#: authentik/stages/user_write/models.py:31 msgid "When set, newly created users are inactive and cannot login." msgstr "设置后,新创建的用户将处于未激活状态,且无法登录。" -#: authentik/stages/user_write/models.py:26 +#: authentik/stages/user_write/models.py:39 msgid "Optionally add newly created users to this group." msgstr "可选,将新创建的用户添加到此组。" -#: authentik/stages/user_write/models.py:47 +#: authentik/stages/user_write/models.py:64 msgid "User Write Stage" msgstr "用户写入阶段" -#: authentik/stages/user_write/models.py:48 +#: authentik/stages/user_write/models.py:65 msgid "User Write Stages" msgstr "用户写入阶段" -#: authentik/stages/user_write/stage.py:53 +#: authentik/stages/user_write/stage.py:121 msgid "No Pending data." msgstr "没有待处理的数据。" -#: authentik/tenants/models.py:18 +#: authentik/stages/user_write/stage.py:127 +msgid "No user found and can't create new user." +msgstr "未找到用户并且无法创建新用户。" + +#: authentik/stages/user_write/stage.py:154 +msgid "Failed to save user" +msgstr "保存用户失败" + +#: authentik/tenants/models.py:23 msgid "" "Domain that activates this tenant. Can be a superset, i.e. `a.b` for `aa.b` " "and `ba.b`" msgstr "激活此租户的域。可以是超集,即 `a.b` 可以同时表示 `aa.b` 和 `ba.b`" -#: authentik/tenants/models.py:70 +#: authentik/tenants/models.py:58 +msgid "" +"Events will be deleted after this duration.(Format: " +"weeks=3;days=2;hours=3,seconds=2)." +msgstr "事件会在多久后被删除。(格式:weeks=3;days=2;hours=3,seconds=2)。" + +#: authentik/tenants/models.py:67 +msgid "Web Certificate used by the authentik Core webserver." +msgstr "authentik 核心 Web 服务器使用的 Web 证书。" + +#: authentik/tenants/models.py:93 msgid "Tenant" msgstr "租户" -#: authentik/tenants/models.py:71 +#: authentik/tenants/models.py:94 msgid "Tenants" msgstr "租户"