diff --git a/apps/i18n/core/zh/LC_MESSAGES/django.po b/apps/i18n/core/zh/LC_MESSAGES/django.po index aa2cc1d7b..0a686fdda 100644 --- a/apps/i18n/core/zh/LC_MESSAGES/django.po +++ b/apps/i18n/core/zh/LC_MESSAGES/django.po @@ -3,11 +3,12 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +#: audits/models.py:44 audits/models.py:46 msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-07-06 15:45+0800\n" +"POT-Creation-Date: 2026-07-14 10:38+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -28,7 +29,7 @@ msgid "No valid assets found for account creation." msgstr "未找到可用于创建账户的有效资产。" #: accounts/api/account/application.py:87 -#: authentication/api/connection_token.py:631 +#: authentication/api/connection_token.py:632 msgid "Account not found" msgstr "账号未找到" @@ -143,11 +144,11 @@ msgstr ">>> 开始执行测试网关账号可连接性任务" #: accounts/const/account.py:6 #: accounts/serializers/automations/change_secret.py:37 #: audits/signal_handlers/login_log.py:34 authentication/confirm/password.py:25 -#: authentication/confirm/password.py:27 authentication/const.py:13 +#: authentication/confirm/password.py:27 authentication/const.py:14 #: authentication/forms.py:28 #: authentication/templates/authentication/login.html:369 #: authentication/templates/authentication/login.html:415 reports/mixins.py:194 -#: settings/models.py:216 settings/serializers/auth/ldap.py:31 +#: settings/models.py:217 settings/serializers/auth/ldap.py:31 #: settings/serializers/auth/ldap.py:57 settings/serializers/auth/ldap_ha.py:39 #: settings/serializers/msg.py:37 settings/serializers/terminal.py:32 #: terminal/serializers/storage.py:123 terminal/serializers/storage.py:142 @@ -172,7 +173,7 @@ msgstr "Access key" #: accounts/const/account.py:9 authentication/backends/passkey/models.py:16 #: authentication/models/sso_token.py:14 -#: authentication/serializers/token.py:121 settings/serializers/feature.py:86 +#: authentication/serializers/token.py:121 settings/serializers/feature.py:95 msgid "Token" msgstr "令牌" @@ -328,7 +329,7 @@ msgstr "创建并推送" msgid "Only create" msgstr "仅创建" -#: accounts/const/automation.py:109 authentication/const.py:37 +#: accounts/const/automation.py:109 authentication/const.py:38 #: authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 #: notifications/backends/__init__.py:10 settings/serializers/msg.py:21 @@ -346,7 +347,7 @@ msgstr "SFTP" #: accounts/const/automation.py:116 #: accounts/serializers/automations/change_secret.py:172 audits/const.py:65 -#: audits/models.py:65 audits/signal_handlers/activity_log.py:34 +#: audits/models.py:73 audits/signal_handlers/activity_log.py:34 #: common/const/choices.py:66 ops/const.py:75 ops/serializers/celery.py:42 #: terminal/const.py:80 terminal/models/session/sharing.py:128 #: tickets/views/approve.py:128 @@ -430,15 +431,15 @@ msgstr "数据库" msgid "Database" msgstr "数据库" -#: accounts/const/vault.py:9 settings/serializers/feature.py:81 +#: accounts/const/vault.py:9 settings/serializers/feature.py:90 msgid "HCP Vault" msgstr "HashiCorp Vault" -#: accounts/const/vault.py:10 settings/serializers/feature.py:94 +#: accounts/const/vault.py:10 settings/serializers/feature.py:103 msgid "Azure Key Vault" msgstr "Azure Key Vault" -#: accounts/const/vault.py:11 settings/serializers/feature.py:110 +#: accounts/const/vault.py:11 settings/serializers/feature.py:119 msgid "Amazon Secrets Manager" msgstr "Amazon Secrets Manager" @@ -467,8 +468,8 @@ msgstr "Vault 操作失败,请重试,或者检查 Vault 上的账号信息 #: accounts/templates/accounts/push_account_report.html:118 #: acls/notifications.py:70 acls/serializers/base.py:110 #: assets/models/asset/common.py:102 assets/models/asset/common.py:427 -#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:358 -#: audits/reporting.py:109 audits/serializers.py:256 +#: assets/models/cmd_filter.py:36 audits/models.py:67 audits/models.py:388 +#: audits/reporting.py:109 audits/serializers.py:258 #: authentication/models/connection_token.py:42 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: terminal/models/session/session.py:29 terminal/notifications.py:167 @@ -476,7 +477,7 @@ msgstr "Vault 操作失败,请重试,或者检查 Vault 上的账号信息 #: terminal/serializers/command.py:17 terminal/serializers/session.py:38 #: terminal/templates/terminal/_msg_command_warning.html:10 #: terminal/templates/terminal/_msg_session_sharing.html:4 -#: tickets/models/ticket/apply_asset.py:17 xpack/plugins/cloud/models.py:298 +#: tickets/models/ticket/apply_asset.py:17 xpack/plugins/cloud/models.py:296 msgid "Asset" msgstr "资产" @@ -535,16 +536,16 @@ msgstr "改密状态" #: accounts/serializers/automations/change_secret.py:150 #: acls/serializers/base.py:111 #: acls/templates/acls/asset_login_reminder.html:11 -#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:359 -#: audits/reporting.py:114 audits/serializers.py:257 -#: authentication/api/connection_token.py:643 ops/models/base.py:18 +#: assets/serializers/gateway.py:33 audits/models.py:68 audits/models.py:389 +#: audits/reporting.py:114 audits/serializers.py:259 +#: authentication/api/connection_token.py:644 ops/models/base.py:18 #: perms/models/asset_permission.py:75 settings/serializers/msg.py:33 #: terminal/backends/command/models.py:18 terminal/models/session/session.py:31 #: terminal/notifications.py:306 terminal/serializers/command.py:72 #: terminal/templates/terminal/_msg_command_warning.html:11 #: terminal/templates/terminal/_msg_session_sharing.html:8 #: tickets/models/ticket/command_confirm.py:14 -#: xpack/plugins/cloud/models.py:108 xpack/plugins/cloud/ws.py:36 +#: xpack/plugins/cloud/models.py:106 xpack/plugins/cloud/ws.py:36 msgid "Account" msgstr "账号" @@ -603,7 +604,7 @@ msgstr "账号活动" #: ops/serializers/variable.py:20 orgs/models.py:82 #: perms/models/asset_permission.py:61 rbac/models/role.py:29 #: rbac/serializers/role.py:28 reports/models.py:15 settings/models.py:38 -#: settings/models.py:187 settings/serializers/msg.py:90 +#: settings/models.py:188 settings/serializers/msg.py:90 #: settings/serializers/terminal.py:9 terminal/models/applet/applet.py:34 #: terminal/models/component/endpoint.py:13 #: terminal/models/component/endpoint.py:107 @@ -617,7 +618,7 @@ msgstr "账号活动" #: users/notifications.py:145 users/notifications.py:184 #: users/notifications.py:224 users/notifications.py:252 #: users/notifications.py:279 xpack/plugins/cloud/models.py:35 -#: xpack/plugins/cloud/models.py:318 xpack/plugins/cloud/serializers/task.py:77 +#: xpack/plugins/cloud/models.py:316 xpack/plugins/cloud/serializers/task.py:77 msgid "Name" msgstr "名称" @@ -783,7 +784,7 @@ msgstr "结束日期" #: accounts/models/automations/gather_account.py:26 #: accounts/serializers/automations/check_account.py:39 #: assets/models/automations/base.py:137 -#: assets/serializers/automations/base.py:47 audits/models.py:230 +#: assets/serializers/automations/base.py:47 audits/models.py:252 #: audits/reporting.py:607 audits/serializers.py:77 ops/models/base.py:49 #: ops/models/job.py:233 terminal/models/applet/applet.py:391 #: terminal/models/applet/host.py:140 terminal/models/component/status.py:30 @@ -791,8 +792,8 @@ msgstr "结束日期" #: terminal/serializers/applet.py:19 terminal/serializers/applet_host.py:163 #: terminal/serializers/virtualapp.py:36 tickets/models/ticket/general.py:284 #: tickets/reporting.py:80 tickets/serializers/super_ticket.py:13 -#: tickets/serializers/ticket/ticket.py:20 xpack/plugins/cloud/models.py:235 -#: xpack/plugins/cloud/models.py:302 +#: tickets/serializers/ticket/ticket.py:20 xpack/plugins/cloud/models.py:233 +#: xpack/plugins/cloud/models.py:300 msgid "Status" msgstr "状态" @@ -895,7 +896,7 @@ msgstr "重复密码" #: accounts/templates/accounts/gather_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:79 #: accounts/templates/accounts/push_account_report.html:119 -#: acls/serializers/base.py:19 acls/serializers/base.py:50 audits/models.py:204 +#: acls/serializers/base.py:19 acls/serializers/base.py:50 audits/models.py:226 #: audits/reporting.py:241 authentication/backends/ukey/forms.py:8 #: authentication/forms.py:21 authentication/forms.py:23 #: authentication/models/temp_token.py:10 @@ -920,7 +921,7 @@ msgid "Risk" msgstr "风险" #: accounts/models/automations/check_account.py:75 -#: accounts/models/automations/gather_account.py:27 audits/models.py:157 +#: accounts/models/automations/gather_account.py:27 audits/models.py:165 msgid "Detail" msgstr "详情" @@ -1068,7 +1069,7 @@ msgstr "平台" msgid "Push params" msgstr "账号推送参数" -#: accounts/models/template.py:26 xpack/plugins/cloud/models.py:406 +#: accounts/models/template.py:26 xpack/plugins/cloud/models.py:404 msgid "Account template" msgstr "账号模板" @@ -1220,7 +1221,7 @@ msgstr "账号存在策略" #: assets/serializers/platform.py:285 perms/serializers/user_permission.py:27 #: settings/models.py:40 tickets/models/ticket/apply_application.py:13 #: users/models/preference.py:12 xpack/plugins/cloud/models.py:41 -#: xpack/plugins/cloud/models.py:329 +#: xpack/plugins/cloud/models.py:327 #: xpack/plugins/cloud/serializers/account.py:87 msgid "Category" msgstr "类别" @@ -1231,7 +1232,7 @@ msgstr "类别" #: assets/models/platform.py:96 assets/serializers/asset/common.py:147 #: assets/serializers/platform.py:161 assets/serializers/platform.py:173 #: audits/reporting.py:221 audits/reporting.py:492 audits/serializers.py:76 -#: audits/serializers.py:222 authentication/models/connection_token.py:68 +#: audits/serializers.py:223 authentication/models/connection_token.py:68 #: authentication/serializers/connect_token_secret.py:138 ops/models/job.py:155 #: perms/serializers/user_permission.py:28 reports/models.py:16 #: terminal/models/applet/applet.py:40 terminal/models/component/storage.py:58 @@ -1300,7 +1301,7 @@ msgstr "特殊信息" #: accounts/serializers/account/account.py:501 #: authentication/serializers/connect_token_secret.py:173 #: authentication/templates/authentication/_access_key_modal.html:30 -#: perms/models/perm_node.py:21 settings/models.py:215 +#: perms/models/perm_node.py:21 settings/models.py:216 #: users/serializers/group.py:33 msgid "ID" msgstr "ID" @@ -1309,10 +1310,10 @@ msgstr "ID" #: acls/notifications.py:68 acls/serializers/base.py:103 #: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8 -#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:55 -#: audits/models.py:97 audits/models.py:179 audits/models.py:318 +#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:63 +#: audits/models.py:105 audits/models.py:197 audits/models.py:344 #: audits/reporting.py:104 audits/reporting.py:317 audits/reporting.py:414 -#: audits/serializers.py:223 authentication/models/connection_token.py:38 +#: audits/serializers.py:224 authentication/models/connection_token.py:38 #: authentication/models/ssh_key.py:22 authentication/models/sso_token.py:16 #: authentication/notifications.py:16 authentication/notifications.py:55 #: notifications/models/notification.py:12 @@ -1367,7 +1368,7 @@ msgstr "IP 白名单" #: terminal/models/session/session.py:44 #: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32 #: tickets/models/ticket/general.py:298 users/models/user/__init__.py:104 -#: xpack/plugins/cloud/models.py:45 xpack/plugins/cloud/models.py:131 +#: xpack/plugins/cloud/models.py:45 xpack/plugins/cloud/models.py:129 msgid "Comment" msgstr "备注" @@ -1701,10 +1702,10 @@ msgstr "任务名称" #: accounts/templates/accounts/check_account_report.html:23 #: accounts/templates/accounts/gather_account_report.html:21 #: accounts/templates/accounts/push_account_report.html:22 -#: assets/models/automations/base.py:143 audits/models.py:66 +#: assets/models/automations/base.py:143 audits/models.py:74 #: ops/models/base.py:55 ops/models/celery.py:89 ops/models/job.py:241 #: ops/templates/ops/celery_task_log.html:154 -#: perms/models/asset_permission.py:78 settings/serializers/feature.py:29 +#: perms/models/asset_permission.py:78 settings/serializers/feature.py:38 #: settings/templates/ldap/_msg_import_ldap_user.html:5 #: terminal/models/applet/host.py:141 terminal/models/session/session.py:42 #: tickets/models/ticket/apply_application.py:30 @@ -1717,7 +1718,7 @@ msgstr "开始日期" #: accounts/templates/accounts/check_account_report.html:28 #: accounts/templates/accounts/gather_account_report.html:26 #: accounts/templates/accounts/push_account_report.html:27 -#: settings/serializers/feature.py:30 +#: settings/serializers/feature.py:39 #: settings/templates/ldap/_msg_import_ldap_user.html:6 #: terminal/models/session/session.py:43 msgid "Date end" @@ -1866,18 +1867,18 @@ msgid "Secret rotation" msgstr "密码轮换" #: acls/models/base.py:37 assets/models/cmd_filter.py:76 -#: terminal/models/component/endpoint.py:110 xpack/plugins/cloud/models.py:324 +#: terminal/models/component/endpoint.py:110 xpack/plugins/cloud/models.py:322 msgid "Priority" msgstr "优先级" #: acls/models/base.py:38 assets/models/cmd_filter.py:76 -#: terminal/models/component/endpoint.py:111 xpack/plugins/cloud/models.py:325 +#: terminal/models/component/endpoint.py:111 xpack/plugins/cloud/models.py:323 msgid "1-100, the lower the value will be match first" msgstr "优先级可选范围为 1-100 (数值越小越优先)" #: acls/models/base.py:41 acls/serializers/base.py:57 -#: assets/models/cmd_filter.py:81 audits/models.py:99 audits/reporting.py:404 -#: audits/serializers.py:107 +#: assets/models/cmd_filter.py:81 audits/models.py:107 audits/reporting.py:404 +#: audits/serializers.py:108 #: authentication/serializers/connect_token_secret.py:131 #: authentication/templates/authentication/_access_key_modal.html:34 #: perms/serializers/permission.py:64 perms/serializers/permission.py:86 @@ -1900,7 +1901,7 @@ msgstr "用户" #: assets/models/automations/base.py:25 #: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33 #: assets/serializers/platform.py:182 assets/serializers/platform.py:214 -#: authentication/api/connection_token.py:642 ops/models/base.py:17 +#: authentication/api/connection_token.py:643 ops/models/base.py:17 #: ops/models/job.py:157 ops/serializers/job.py:21 #: perms/serializers/permission.py:58 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 @@ -1918,12 +1919,12 @@ msgid "Command" msgstr "命令" #: acls/models/command_acl.py:17 assets/models/cmd_filter.py:59 -#: xpack/plugins/cloud/models.py:372 +#: xpack/plugins/cloud/models.py:370 msgid "Regex" msgstr "正则表达式" #: acls/models/command_acl.py:26 assets/models/cmd_filter.py:79 -#: settings/models.py:188 settings/serializers/feature.py:24 +#: settings/models.py:189 settings/serializers/feature.py:33 #: settings/serializers/msg.py:79 users/notifications.py:19 #: xpack/plugins/license/models.py:34 msgid "Content" @@ -2025,8 +2026,9 @@ msgid "User login reminder" msgstr "用户登录提醒" #: acls/notifications.py:17 acls/notifications.py:67 -#: acls/templates/acls/user_login_reminder.html:10 audits/models.py:210 -#: audits/models.py:312 authentication/notifications.py:15 +#: acls/templates/acls/user_login_reminder.html:10 audits/models.py:232 +#: audits/models.py:338 audits/serializers.py:78 audits/serializers.py:227 +#: authentication/notifications.py:15 #: authentication/templates/authentication/_msg_different_city.html:11 #: tickets/models/ticket/login_confirm.py:13 msgid "Login city" @@ -2041,7 +2043,7 @@ msgid "Recipient username" msgstr "收件人用户名" #: acls/notifications.py:22 acls/templates/acls/user_login_reminder.html:12 -#: audits/models.py:213 audits/models.py:313 audits/serializers.py:91 +#: audits/models.py:235 audits/models.py:339 audits/serializers.py:92 msgid "User agent" msgstr "用户代理" @@ -2129,7 +2131,7 @@ msgstr "" #: authentication/templates/authentication/_msg_oauth_bind.html:12 #: authentication/templates/authentication/_msg_rest_password_success.html:8 #: authentication/templates/authentication/_msg_rest_public_key_success.html:8 -#: common/drf/renders/base.py:165 xpack/plugins/cloud/models.py:408 +#: common/drf/renders/base.py:165 xpack/plugins/cloud/models.py:406 msgid "IP" msgstr "IP" @@ -2232,34 +2234,34 @@ msgstr "需要为数字" msgid "App Assets" msgstr "资产管理" -#: assets/automations/base/manager.py:141 +#: assets/automations/base/manager.py:153 #, python-brace-format msgid "Task: {} finished" msgstr "任务:{} 完成" -#: assets/automations/base/manager.py:343 +#: assets/automations/base/manager.py:355 #, python-brace-format msgid " - Platform {} ansible disabled" msgstr " - 平台 {} Ansible 已禁用, 无法执行任务" -#: assets/automations/base/manager.py:557 +#: assets/automations/base/manager.py:569 msgid ">>> Task preparation phase" msgstr ">>> 任务准备阶段" -#: assets/automations/base/manager.py:561 +#: assets/automations/base/manager.py:573 #, python-brace-format msgid ">>> Executing tasks in batches, total {runner_count}" msgstr ">>> 分次执行任务,总共 {runner_count}" -#: assets/automations/base/manager.py:566 +#: assets/automations/base/manager.py:578 msgid ">>> Start executing tasks" msgstr ">>> 开始执行任务" -#: assets/automations/base/manager.py:568 +#: assets/automations/base/manager.py:580 msgid ">>> No tasks need to be executed" msgstr ">>> 没有需要执行的任务" -#: assets/automations/base/manager.py:572 +#: assets/automations/base/manager.py:584 #, python-brace-format msgid ">>> Begin executing batch {index} of tasks" msgstr ">>> 开始执行第 {index} 批任务" @@ -2366,7 +2368,7 @@ msgstr "脚本" #: assets/const/category.py:10 assets/models/asset/host.py:8 #: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:76 -#: settings/serializers/feature.py:83 settings/serializers/feature.py:96 +#: settings/serializers/feature.py:92 settings/serializers/feature.py:105 #: settings/serializers/msg.py:30 terminal/models/component/endpoint.py:14 #: terminal/serializers/applet.py:18 xpack/plugins/cloud/const.py:40 #: xpack/plugins/cloud/serializers/account_attrs.py:87 @@ -2667,12 +2669,12 @@ msgstr "地址" #: assets/serializers/asset/common.py:273 #: authentication/backends/passkey/models.py:12 #: authentication/serializers/connect_token_secret.py:130 -#: perms/serializers/user_permission.py:26 xpack/plugins/cloud/models.py:402 +#: perms/serializers/user_permission.py:26 xpack/plugins/cloud/models.py:400 msgid "Platform" msgstr "平台" #: assets/models/asset/common.py:173 assets/models/zone.py:22 -#: perms/serializers/user_permission.py:29 xpack/plugins/cloud/models.py:404 +#: perms/serializers/user_permission.py:29 xpack/plugins/cloud/models.py:402 msgid "Zone" msgstr "网域" @@ -2735,15 +2737,15 @@ msgstr "PostgreSQL SSL 模式" msgid "Domain name" msgstr "域名称" -#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:149 -#: settings/serializers/feature.py:164 +#: assets/models/asset/gpt.py:8 settings/serializers/feature.py:158 +#: settings/serializers/feature.py:173 msgid "Proxy" msgstr "代理" #: assets/models/automations/base.py:23 assets/models/cmd_filter.py:32 #: assets/models/node.py:560 ops/models/job.py:158 #: perms/models/asset_permission.py:72 tickets/models/ticket/apply_asset.py:15 -#: xpack/plugins/cloud/models.py:403 +#: xpack/plugins/cloud/models.py:401 msgid "Node" msgstr "节点" @@ -2774,7 +2776,7 @@ msgid "Date created" msgstr "创建日期" #: assets/models/automations/base.py:155 -#: assets/serializers/automations/base.py:46 xpack/plugins/cloud/models.py:250 +#: assets/serializers/automations/base.py:46 xpack/plugins/cloud/models.py:248 #: xpack/plugins/cloud/serializers/task.py:260 msgid "Trigger mode" msgstr "触发模式" @@ -2786,7 +2788,7 @@ msgid "Summary" msgstr "汇总" #: assets/models/automations/base.py:158 ops/models/base.py:51 -#: ops/models/job.py:237 xpack/plugins/cloud/models.py:233 +#: ops/models/job.py:237 xpack/plugins/cloud/models.py:231 msgid "Result" msgstr "结果" @@ -2877,7 +2879,7 @@ msgstr "值" #: assets/serializers/platform.py:160 #: authentication/serializers/connect_token_secret.py:136 #: common/serializers/common.py:85 labels/serializers.py:56 -#: settings/serializers/msg.py:91 xpack/plugins/cloud/models.py:407 +#: settings/serializers/msg.py:91 xpack/plugins/cloud/models.py:405 msgid "Label" msgstr "标签" @@ -3089,7 +3091,7 @@ msgstr "节点路径,格式为 [\"/组织/节点名\"], 如果节点不存在 #: authentication/serializers/connect_token_secret.py:30 #: authentication/serializers/connect_token_secret.py:77 #: perms/models/asset_permission.py:76 perms/serializers/permission.py:68 -#: perms/serializers/user_permission.py:86 xpack/plugins/cloud/models.py:405 +#: perms/serializers/user_permission.py:86 xpack/plugins/cloud/models.py:403 #: xpack/plugins/cloud/serializers/task.py:36 msgid "Protocols" msgstr "协议组" @@ -3238,7 +3240,7 @@ msgstr "执行次数" msgid "Constraints" msgstr "约束" -#: assets/serializers/cagegory.py:19 settings/serializers/feature.py:139 +#: assets/serializers/cagegory.py:19 settings/serializers/feature.py:148 msgid "Types" msgstr "类型" @@ -3580,7 +3582,7 @@ msgstr "结束" msgid "Terminal" msgstr "终端" -#: audits/const.py:52 audits/models.py:139 +#: audits/const.py:52 audits/models.py:147 msgid "Operate log" msgstr "操作日志" @@ -3606,12 +3608,12 @@ msgstr "-" msgid "Yes" msgstr "是" -#: audits/models.py:48 +#: audits/models.py:56 msgid "Job audit log" msgstr "作业审计日志" -#: audits/models.py:57 audits/models.py:107 audits/models.py:182 -#: audits/models.py:355 audits/reporting.py:119 audits/reporting.py:327 +#: audits/models.py:65 audits/models.py:115 audits/models.py:200 +#: audits/models.py:385 audits/reporting.py:119 audits/reporting.py:327 #: audits/reporting.py:424 authentication/models/connection_token.py:63 #: terminal/models/session/session.py:36 terminal/models/session/sharing.py:120 #: terminal/notifications.py:171 terminal/notifications.py:238 @@ -3619,19 +3621,19 @@ msgstr "作业审计日志" msgid "Remote addr" msgstr "远端地址" -#: audits/models.py:62 audits/reporting.py:99 audits/serializers.py:61 +#: audits/models.py:70 audits/reporting.py:99 audits/serializers.py:61 msgid "Operate" msgstr "操作" -#: audits/models.py:64 audits/reporting.py:124 +#: audits/models.py:72 audits/reporting.py:124 msgid "Filename" msgstr "文件名" -#: audits/models.py:67 +#: audits/models.py:75 msgid "Can Download" msgstr "可下载" -#: audits/models.py:68 terminal/backends/command/models.py:21 +#: audits/models.py:76 terminal/backends/command/models.py:21 #: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20 #: terminal/models/session/sharing.py:102 terminal/serializers/command.py:19 #: terminal/templates/terminal/_msg_command_alert.html:10 @@ -3640,110 +3642,110 @@ msgstr "可下载" msgid "Session" msgstr "会话" -#: audits/models.py:71 +#: audits/models.py:79 msgid "File transfer log" msgstr "文件传输" -#: audits/models.py:101 audits/reporting.py:409 audits/serializers.py:109 +#: audits/models.py:109 audits/reporting.py:409 audits/serializers.py:110 msgid "Resource Type" msgstr "资源类型" -#: audits/models.py:102 audits/models.py:105 audits/models.py:151 -#: audits/reporting.py:419 audits/serializers.py:108 labels/serializers.py:57 +#: audits/models.py:110 audits/models.py:113 audits/models.py:159 +#: audits/reporting.py:419 audits/serializers.py:109 labels/serializers.py:57 msgid "Resource" msgstr "资源" -#: audits/models.py:108 audits/models.py:154 audits/models.py:184 -#: audits/models.py:360 audits/serializers.py:258 +#: audits/models.py:116 audits/models.py:162 audits/models.py:202 +#: audits/models.py:390 audits/serializers.py:260 #: terminal/serializers/command.py:75 msgid "Datetime" msgstr "日期" -#: audits/models.py:147 +#: audits/models.py:155 msgid "Activity type" msgstr "活动类型" -#: audits/models.py:160 +#: audits/models.py:168 msgid "Detail ID" msgstr "详情 ID" -#: audits/models.py:164 +#: audits/models.py:172 msgid "Activity log" msgstr "活动日志" -#: audits/models.py:180 audits/reporting.py:322 +#: audits/models.py:198 audits/reporting.py:322 msgid "Change by" msgstr "修改者" -#: audits/models.py:190 +#: audits/models.py:208 msgid "Password change log" msgstr "改密日志" -#: audits/models.py:206 audits/models.py:314 +#: audits/models.py:228 audits/models.py:340 msgid "Login type" msgstr "登录方式" -#: audits/models.py:208 audits/models.py:310 +#: audits/models.py:230 audits/models.py:336 #: tickets/models/ticket/login_confirm.py:12 msgid "Login IP" msgstr "登录 IP" -#: audits/models.py:216 audits/reporting.py:231 audits/serializers.py:75 +#: audits/models.py:238 audits/reporting.py:231 audits/serializers.py:75 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: users/forms/profile.py:64 users/models/user/__init__.py:92 #: users/serializers/profile.py:63 msgid "MFA" msgstr "MFA" -#: audits/models.py:219 audits/reporting.py:251 +#: audits/models.py:241 audits/reporting.py:251 #: terminal/models/session/sharing.py:132 xpack/plugins/cloud/manager.py:196 -#: xpack/plugins/cloud/models.py:239 +#: xpack/plugins/cloud/models.py:237 msgid "Reason" msgstr "原因" -#: audits/models.py:222 +#: audits/models.py:244 msgid "Reason code" msgstr "原因" -#: audits/models.py:225 +#: audits/models.py:247 msgid "Reason params" msgstr "原因参数" -#: audits/models.py:232 authentication/notifications.py:19 +#: audits/models.py:254 authentication/notifications.py:19 #: authentication/templates/authentication/_msg_different_city.html:10 #: tickets/models/ticket/login_confirm.py:14 msgid "Login Date" msgstr "登录日期" -#: audits/models.py:234 audits/models.py:315 audits/reporting.py:226 +#: audits/models.py:256 audits/models.py:341 audits/reporting.py:226 msgid "Auth backend" msgstr "认证令牌" -#: audits/models.py:303 +#: audits/models.py:329 msgid "User login log" msgstr "用户登录日志" -#: audits/models.py:311 +#: audits/models.py:337 msgid "Session key" msgstr "会话标识" -#: audits/models.py:316 +#: audits/models.py:342 msgid "Login date" msgstr "登录日期" -#: audits/models.py:347 +#: audits/models.py:377 msgid "User session" msgstr "用户会话" -#: audits/models.py:349 +#: audits/models.py:379 msgid "Offline user session" msgstr "下线用户会话" -#: audits/models.py:356 +#: audits/models.py:386 msgid "Application" msgstr "应用" -#: audits/models.py:357 +#: audits/models.py:387 msgid "Application ID" msgstr "应用 ID" @@ -4064,24 +4066,24 @@ msgstr "耗时范围" msgid "Execution cycle" msgstr "周期执行" -#: audits/serializers.py:92 +#: audits/serializers.py:93 msgid "Reason display" msgstr "原因描述" -#: audits/serializers.py:93 audits/serializers.py:236 +#: audits/serializers.py:94 audits/serializers.py:238 msgid "Auth backend display" msgstr "认证方式" -#: audits/serializers.py:139 audits/serializers.py:146 +#: audits/serializers.py:140 audits/serializers.py:147 msgid "Diff" msgstr "差异" -#: audits/serializers.py:183 +#: audits/serializers.py:184 #, python-format msgid "%s %s this resource" msgstr "用户 %s %s 了当前资源" -#: audits/serializers.py:224 authentication/models/connection_token.py:54 +#: audits/serializers.py:225 authentication/models/connection_token.py:54 #: authentication/models/temp_token.py:14 #: authentication/serializers/token.py:132 perms/models/asset_permission.py:80 #: tickets/models/ticket/apply_application.py:31 @@ -4089,7 +4091,7 @@ msgstr "用户 %s %s 了当前资源" msgid "Date expired" msgstr "失效日期" -#: audits/serializers.py:255 terminal/models/component/terminal.py:91 +#: audits/serializers.py:257 terminal/models/component/terminal.py:91 #: terminal/serializers/command.py:76 msgid "Remote Address" msgstr "远端地址" @@ -4159,7 +4161,7 @@ msgstr "钉钉" msgid "Temporary token" msgstr "临时密码" -#: audits/signal_handlers/login_log.py:44 authentication/const.py:40 +#: audits/signal_handlers/login_log.py:44 authentication/const.py:41 #: authentication/utils.py:144 rbac/tree.py:206 #: settings/serializers/auth/passkey.py:8 #: settings/serializers/auth/passkey.py:11 @@ -4209,40 +4211,40 @@ msgstr "参数中的值必须包含 %s" msgid "This action require verify your MFA" msgstr "该操作需要验证您的 MFA, 请先开启并配置" -#: authentication/api/connection_token.py:476 +#: authentication/api/connection_token.py:477 msgid "Reusable connection token is not allowed, global setting not enabled" msgstr "不允许使用可重复使用的连接令牌,未启用全局设置" -#: authentication/api/connection_token.py:602 +#: authentication/api/connection_token.py:603 msgid "Anonymous account is not supported for this asset" msgstr "匿名账号不支持当前资产" -#: authentication/api/connection_token.py:634 +#: authentication/api/connection_token.py:635 msgid "Permission expired" msgstr "授权已过期" -#: authentication/api/connection_token.py:667 +#: authentication/api/connection_token.py:668 #, python-brace-format msgid "ACL action is reject: {}({})" msgstr "ACL 动作是拒绝: {}({})" -#: authentication/api/connection_token.py:671 +#: authentication/api/connection_token.py:672 msgid "ACL action is review" msgstr "ACL 动作是复核" -#: authentication/api/connection_token.py:681 +#: authentication/api/connection_token.py:682 msgid "ACL action is face verify" msgstr "ACL 动作是人脸验证" -#: authentication/api/connection_token.py:686 +#: authentication/api/connection_token.py:687 msgid "ACL action not supported for this asset" msgstr "资产登录规则不支持当前资产" -#: authentication/api/connection_token.py:693 +#: authentication/api/connection_token.py:694 msgid "ACL action is face online" msgstr "ACL 动作是人脸在线" -#: authentication/api/connection_token.py:718 +#: authentication/api/connection_token.py:719 msgid "No available face feature" msgstr "没有可用的人脸特征" @@ -4292,7 +4294,7 @@ msgstr "验证码有效期为 {} 分钟" msgid "App Authentication" msgstr "认证管理" -#: authentication/backends/cas/views.py:19 +#: authentication/backends/cas/views.py:24 msgid "CAS Error" msgstr "CAS 错误" @@ -4309,7 +4311,8 @@ msgid "" "Invalid token header. Sign string should not contain invalid characters." msgstr "无效的令牌头。符号字符串不应包含无效字符。" -#: authentication/backends/oauth2/views.py:74 +#: authentication/backends/oauth2/views.py:75 +#: authentication/backends/oauth2/views.py:90 msgid "OAuth2 Error" msgstr "OAuth2 错误" @@ -4412,11 +4415,11 @@ msgstr "认证失败 (用户名或密码不正确)" msgid "Login time has exceeded {} minutes, please login again" msgstr "登录时长已超过 {} 分钟,请重新登录" -#: authentication/const.py:35 +#: authentication/const.py:36 msgid "OTP" msgstr "虚拟 MFA" -#: authentication/const.py:36 authentication/serializers/password_mfa.py:16 +#: authentication/const.py:37 authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 #: settings/serializers/auth/sms.py:18 settings/serializers/auth/sms.py:36 #: users/forms/profile.py:104 users/forms/profile.py:111 @@ -4425,16 +4428,16 @@ msgstr "虚拟 MFA" msgid "SMS" msgstr "短信" -#: authentication/const.py:38 +#: authentication/const.py:39 msgid "Face recognition" msgstr "人脸识别" -#: authentication/const.py:39 settings/serializers/auth/radius.py:14 +#: authentication/const.py:40 settings/serializers/auth/radius.py:14 #: settings/serializers/auth/radius.py:16 msgid "Radius" msgstr "Radius" -#: authentication/const.py:41 +#: authentication/const.py:42 msgid "Custom" msgstr "自定义" @@ -4497,12 +4500,14 @@ msgstr "" "被临时 锁定 {block_time} 分钟)" #: authentication/errors/const.py:52 authentication/errors/const.py:60 +#, python-brace-format msgid "" "The account has been locked (please contact admin to unlock it or try again " "after {block_time} minutes)" msgstr "账号已被锁定 (请联系管理员解锁或{block_time}分钟后重试)" #: authentication/errors/const.py:56 +#, python-brace-format msgid "" "The address has been locked (please contact admin to unlock it or try again " "after {block_time} minutes)" @@ -4533,6 +4538,7 @@ msgid "Wait login confirm ticket for accept" msgstr "等待登录复核处理" #: authentication/errors/const.py:79 +#, python-brace-format msgid "Login confirm ticket was {status}" msgstr "登录复核: {status}" @@ -4591,16 +4597,16 @@ msgstr "您的密码无效" msgid "Please wait for %s seconds before retry" msgstr "请在 %s 秒后重试" -#: authentication/errors/redirect.py:85 authentication/mixins.py:445 +#: authentication/errors/redirect.py:85 authentication/mixins.py:446 #: users/views/profile/reset.py:224 msgid "Your password is too simple, please change it for security" msgstr "你的密码过于简单,为了安全,请修改" -#: authentication/errors/redirect.py:93 authentication/mixins.py:454 +#: authentication/errors/redirect.py:93 authentication/mixins.py:455 msgid "You should to change your password before login" msgstr "登录完成前,请先修改密码" -#: authentication/errors/redirect.py:101 authentication/mixins.py:463 +#: authentication/errors/redirect.py:101 authentication/mixins.py:464 msgid "Your password has expired, please reset before logging in" msgstr "您的密码已过期,先修改再登录" @@ -4718,7 +4724,7 @@ msgstr "清空手机号码禁用" msgid "Authentication failed (before login check failed): {}" msgstr "认证失败 (登录前检查失败): {}" -#: authentication/mixins.py:169 +#: authentication/mixins.py:170 msgid "" "The administrator has enabled \"Only allow existing users to log in\", \n" " and the current user is not in the user list. Please " @@ -4726,11 +4732,11 @@ msgid "" msgstr "" "管理员已开启'仅允许已存在用户登录',当前用户不在用户列表中,请联系管理员。" -#: authentication/mixins.py:187 +#: authentication/mixins.py:188 msgid "User is invalid" msgstr "无效的用户" -#: authentication/mixins.py:204 +#: authentication/mixins.py:205 #, python-brace-format msgid "" " The administrator has enabled 'Only allow login from user source'. \n" @@ -4738,12 +4744,12 @@ msgid "" "administrator. " msgstr "管理员已开启'仅允许从用户来源登录',当前用户来源为 {},请联系管理员。" -#: authentication/mixins.py:391 +#: authentication/mixins.py:392 #, python-brace-format msgid "The MFA type ({}) is not enabled" msgstr "该 MFA ({}) 方式没有启用" -#: authentication/mixins.py:433 +#: authentication/mixins.py:434 msgid "Please change your password" msgstr "请修改密码" @@ -5080,7 +5086,7 @@ msgstr "代码错误" #: authentication/templates/authentication/_msg_oauth_bind.html:3 #: authentication/templates/authentication/_msg_reset_password.html:3 #: authentication/templates/authentication/_msg_reset_password_code.html:9 -#: jumpserver/conf.py:573 +#: jumpserver/conf.py:574 #: perms/templates/perms/_msg_item_permissions_expire.html:3 #: tickets/templates/tickets/approve_check_password.html:32 #: users/templates/users/_msg_account_expire_reminder.html:4 @@ -5319,17 +5325,17 @@ msgstr "" msgid "If you have any question, please contact the administrator" msgstr "如果有疑问或需求,请联系系统管理员" -#: authentication/views/base.py:145 +#: authentication/views/base.py:143 #, python-format msgid "%s query user failed" msgstr "%s 查询用户失败" -#: authentication/views/base.py:153 +#: authentication/views/base.py:151 #, python-format msgid "The %s is already bound to another user" msgstr "%s 已绑定到另一个用户" -#: authentication/views/base.py:160 +#: authentication/views/base.py:158 #, python-format msgid "Binding %s successfully" msgstr "绑定 %s 成功" @@ -5433,6 +5439,10 @@ msgstr "退出登录成功" msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" +#: authentication/views/mfa.py:66 +msgid "Please verify an active MFA before binding OTP." +msgstr "" + #: authentication/views/mixins.py:30 msgid "" "For your safety, automatic redirection login is not supported on the client. " @@ -6003,16 +6013,16 @@ msgstr "未找到 Code" msgid "The message code provided is invalid or has expired" msgstr "提供的消息代码无效或已过期" -#: jumpserver/conf.py:567 +#: jumpserver/conf.py:568 #, python-brace-format msgid "The verification code is: {code}" msgstr "验证码为: {code}" -#: jumpserver/conf.py:572 +#: jumpserver/conf.py:573 msgid "Create account successfully" msgstr "创建账号成功" -#: jumpserver/conf.py:574 +#: jumpserver/conf.py:575 msgid "Your account has been created successfully" msgstr "你的账号已创建成功" @@ -6028,7 +6038,7 @@ msgstr "" msgid "

Flower service unavailable, check it

" msgstr "Flower 服务不可用,请检查" -#: jumpserver/views/other.py:31 +#: jumpserver/views/other.py:28 msgid "" "
Luna is a separately deployed program, you need to deploy Luna, koko, " "configure nginx for url distribution,
If you see this page, " @@ -6037,12 +6047,12 @@ msgstr "" "
Luna是单独部署的一个程序,你需要部署luna,koko,
如果你看到了" "这个页面,证明你访问的不是nginx监听的端口,祝你好运
" -#: jumpserver/views/other.py:79 +#: jumpserver/views/other.py:52 #, python-brace-format msgid "Websocket server run on port: {}, you should proxy it on nginx" msgstr "Websocket 服务运行在端口: {}, 请检查nginx是否代理是否设置" -#: jumpserver/views/other.py:93 +#: jumpserver/views/other.py:66 msgid "" "
Koko is a separately deployed program, you need to deploy Koko, " "configure nginx for url distribution,
If you see this page, " @@ -6120,6 +6130,18 @@ msgid "" " work orders, and other notifications" msgstr "系统一些告警,工单等需要发送站内信时执行该任务" +#: ops/ansible/docker.py:72 +#, python-format +msgid "" +"The Ansible Docker image \"%(image)s\" was not found. To run jobs locally " +"instead, disable \"Docker isolation for Ansible\" under System Settings > " +"Feature Settings > Job Center. To continue using the Docker execution " +"environment, run this command on the Ansible worker: docker pull %(image)s" +msgstr "" +"未找到 Ansible Docker 镜像“%(image)s”。如需改为本地运行,请前往“系统设置 > 功能" +"设置 > 作业中心”,关闭“Ansible Docker 隔离”;如需继续使用 Docker 执行环境,请在 " +"Ansible Worker 节点执行:docker pull %(image)s" + #: ops/ansible/inventory.py:150 ops/ansible/inventory.py:220 #: ops/models/job.py:69 msgid "No account available" @@ -6561,37 +6583,37 @@ msgid "" "is the value." msgstr "每项单独一行,每行可以用英文冒号分割前边是显示的内容后边是值" -#: ops/tasks.py:54 +#: ops/tasks.py:55 msgid "Run ansible task" msgstr "运行 Ansible 任务" -#: ops/tasks.py:57 +#: ops/tasks.py:58 msgid "" "Execute scheduled adhoc and playbooks, periodically invoking the task for " "execution" msgstr "当执行定时的快捷命令,playbook,定时调用该任务执行" -#: ops/tasks.py:88 +#: ops/tasks.py:89 msgid "Run ansible task execution" msgstr "开始执行 Ansible 任务" -#: ops/tasks.py:91 +#: ops/tasks.py:92 msgid "Execute the task when manually adhoc or playbooks" msgstr "手动执行快捷命令,playbook时执行该任务" -#: ops/tasks.py:106 +#: ops/tasks.py:107 msgid "Clear celery periodic tasks" msgstr "清理周期任务" -#: ops/tasks.py:108 +#: ops/tasks.py:109 msgid "At system startup, clean up celery tasks that no longer exist" msgstr "系统启动时,清理已经不存在的celery任务" -#: ops/tasks.py:132 +#: ops/tasks.py:133 msgid "Create or update periodic tasks" msgstr "创建或更新周期任务" -#: ops/tasks.py:134 +#: ops/tasks.py:135 msgid "" "With version iterations, new tasks may be added, or task names and execution " "times may \n" @@ -6602,11 +6624,11 @@ msgstr "" "随着版本迭代,可能会新增任务或者修改任务的名称,执行时间,所以在系统启动时," "将会注册任务或者更新定时任务参数" -#: ops/tasks.py:147 +#: ops/tasks.py:148 msgid "Periodic check service performance" msgstr "周期检测服务性能" -#: ops/tasks.py:149 +#: ops/tasks.py:150 msgid "" "Check every hour whether each component is offline and whether the CPU, " "memory, \n" @@ -6616,11 +6638,11 @@ msgstr "" "每小时检测各组件是否离线,cpu,内存,硬盘使用率是否超过阈值,向管理员发送消息" "预警" -#: ops/tasks.py:159 +#: ops/tasks.py:162 msgid "Clean up unexpected jobs" msgstr "清理异常作业" -#: ops/tasks.py:161 +#: ops/tasks.py:164 msgid "" "Due to exceptions caused by executing adhoc and playbooks in the Job " "Center, \n" @@ -6633,11 +6655,11 @@ msgstr "" "由于作业中心执行快捷命令,playbook会产生异常,任务状态未更新完成,系统将每小" "时执行清理超3小时未完成的异常作业,并将任务标记失败" -#: ops/tasks.py:174 +#: ops/tasks.py:177 msgid "Clean job_execution db record" msgstr "清理作业中心执行历史" -#: ops/tasks.py:176 +#: ops/tasks.py:179 msgid "" "Due to the execution of adhoc and playbooks in the Job Center, execution " "records will \n" @@ -6737,7 +6759,7 @@ msgstr "默认组织" msgid "SYSTEM" msgstr "系统组织" -#: orgs/models.py:83 rbac/models/role.py:36 settings/models.py:189 +#: orgs/models.py:83 rbac/models/role.py:36 settings/models.py:190 #: terminal/models/applet/applet.py:42 msgid "Builtin" msgstr "内置的" @@ -6860,7 +6882,7 @@ msgid "today" msgstr "今天" #: perms/notifications.py:12 perms/notifications.py:44 -#: settings/serializers/feature.py:195 +#: settings/serializers/feature.py:204 msgid "day" msgstr "天" @@ -7163,7 +7185,7 @@ msgstr "工作台" msgid "Audit view" msgstr "审计台" -#: rbac/tree.py:28 settings/models.py:165 +#: rbac/tree.py:28 settings/models.py:166 msgid "System setting" msgstr "系统设置" @@ -7187,7 +7209,7 @@ msgstr "账号改密" msgid "App ops" msgstr "作业中心" -#: rbac/tree.py:60 settings/serializers/feature.py:201 +#: rbac/tree.py:60 settings/serializers/feature.py:210 msgid "Feature" msgstr "功能" @@ -7230,8 +7252,8 @@ msgstr "组织管理" msgid "Ticket comment" msgstr "工单评论" -#: rbac/tree.py:203 settings/serializers/feature.py:182 -#: settings/serializers/feature.py:184 tickets/models/ticket/general.py:310 +#: rbac/tree.py:203 settings/serializers/feature.py:191 +#: settings/serializers/feature.py:193 tickets/models/ticket/general.py:310 msgid "Ticket" msgstr "工单" @@ -7259,51 +7281,51 @@ msgstr "撤销访问令牌" msgid "Range days" msgstr "范围天数" -#: reports/views.py:19 +#: reports/views.py:22 msgid "User login report" msgstr "用户登录报告" -#: reports/views.py:23 +#: reports/views.py:26 msgid "User change password report" msgstr "用户改密报告" -#: reports/views.py:27 +#: reports/views.py:30 msgid "Asset statistics report" msgstr "资产统计报告" -#: reports/views.py:31 +#: reports/views.py:34 msgid "Asset activity report" msgstr "资产活动报告" -#: reports/views.py:35 +#: reports/views.py:38 msgid "Account statistics report" msgstr "账号统计报告" -#: reports/views.py:39 +#: reports/views.py:42 msgid "Account automation report" msgstr "账号自动化报告" -#: reports/views.py:43 +#: reports/views.py:46 msgid "ConsoleDashboard" msgstr "控制台仪表板" -#: reports/views.py:47 +#: reports/views.py:50 msgid "AuditsDashboard" msgstr "审计台仪表板" -#: reports/views.py:51 +#: reports/views.py:54 msgid "PamDashboard" msgstr "PAM 仪表板" -#: reports/views.py:55 +#: reports/views.py:58 msgid "ChangeSecretDashboard" msgstr "账号改密仪表盘" -#: reports/views.py:190 +#: reports/views.py:228 msgid "Failed to send email: " msgstr "发送邮件失败" -#: reports/views.py:191 +#: reports/views.py:229 msgid "Email sent successfully to " msgstr "发送邮件成功" @@ -7347,11 +7369,11 @@ msgstr "系统设置" msgid "Embed" msgstr "嵌入" -#: settings/const.py:22 settings/serializers/feature.py:173 +#: settings/const.py:22 settings/serializers/feature.py:182 msgid "Custom gpt model" msgstr "自定义 GPT 模型" -#: settings/const.py:43 settings/serializers/feature.py:177 +#: settings/const.py:43 settings/serializers/feature.py:186 msgid "Custom DeepSeek model" msgstr "自定义 DeepSeek 模型" @@ -7359,71 +7381,71 @@ msgstr "自定义 DeepSeek 模型" msgid "Encrypted" msgstr "加密的" -#: settings/models.py:167 +#: settings/models.py:168 msgid "Can change email setting" msgstr "邮件设置" -#: settings/models.py:168 +#: settings/models.py:169 msgid "Can change auth setting" msgstr "认证设置" -#: settings/models.py:169 +#: settings/models.py:170 msgid "Can change auth ops" msgstr "任务中心设置" -#: settings/models.py:170 +#: settings/models.py:171 msgid "Can change auth ticket" msgstr "工单设置" -#: settings/models.py:171 +#: settings/models.py:172 msgid "Can change virtual app setting" msgstr "可以更改虚拟应用设置" -#: settings/models.py:172 +#: settings/models.py:173 msgid "Can change auth announcement" msgstr "公告设置" -#: settings/models.py:173 +#: settings/models.py:174 msgid "Can change vault setting" msgstr "可以更改 vault 设置" -#: settings/models.py:174 +#: settings/models.py:175 msgid "Can change chat ai setting" msgstr "可以修改聊天 AI 设置" -#: settings/models.py:175 +#: settings/models.py:176 msgid "Can change system msg sub setting" msgstr "消息订阅设置" -#: settings/models.py:176 +#: settings/models.py:177 msgid "Can change sms setting" msgstr "短信设置" -#: settings/models.py:177 +#: settings/models.py:178 msgid "Can change security setting" msgstr "安全设置" -#: settings/models.py:178 +#: settings/models.py:179 msgid "Can change clean setting" msgstr "定期清理" -#: settings/models.py:179 +#: settings/models.py:180 msgid "Can change interface setting" msgstr "界面设置" -#: settings/models.py:180 +#: settings/models.py:181 msgid "Can change license setting" msgstr "许可证设置" -#: settings/models.py:181 +#: settings/models.py:182 msgid "Can change terminal setting" msgstr "终端设置" -#: settings/models.py:182 +#: settings/models.py:183 msgid "Can change other setting" msgstr "其它设置" -#: settings/models.py:192 +#: settings/models.py:193 msgid "Chat prompt" msgstr "聊天提示" @@ -7765,13 +7787,13 @@ msgstr "OAuth2" msgid "Service provider" msgstr "服务提供商" -#: settings/serializers/auth/oauth2.py:31 settings/serializers/feature.py:99 +#: settings/serializers/auth/oauth2.py:31 settings/serializers/feature.py:108 #: xpack/plugins/cloud/serializers/account_attrs.py:50 msgid "Client ID" msgstr "客户端 ID" #: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:24 -#: settings/serializers/feature.py:102 +#: settings/serializers/feature.py:111 #: xpack/plugins/cloud/serializers/account_attrs.py:53 msgid "Client Secret" msgstr "客户端密钥" @@ -8263,32 +8285,44 @@ msgstr "账号改密推送记录保留天数" msgid "Audit report send record retention days" msgstr "审计报告发送记录保留天数" -#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 +#: settings/serializers/feature.py:22 +#, python-format +msgid "" +"Run Ansible jobs in the Docker execution environment (%(image)s). To run " +"jobs locally instead, disable \"Docker isolation for Ansible\" under System " +"Settings > Feature Settings > Job Center. If the image is missing, run this " +"command on the Ansible worker: docker pull %(image)s" +msgstr "" +"Ansible 作业将在 Docker 执行环境(%(image)s)中运行。如需改为本地运行,请前往" +"“系统设置 > 功能设置 > 作业中心”,关闭“Ansible Docker 隔离”。若镜像不存在,请" +"在 Ansible Worker 节点执行:docker pull %(image)s" + +#: settings/serializers/feature.py:32 settings/serializers/msg.py:69 msgid "Subject" msgstr "主题" -#: settings/serializers/feature.py:27 +#: settings/serializers/feature.py:36 msgid "More Link" msgstr "更多信息 URL" -#: settings/serializers/feature.py:43 settings/serializers/feature.py:45 -#: settings/serializers/feature.py:46 +#: settings/serializers/feature.py:52 settings/serializers/feature.py:54 +#: settings/serializers/feature.py:55 msgid "Announcement" msgstr "公告" -#: settings/serializers/feature.py:59 settings/serializers/feature.py:62 +#: settings/serializers/feature.py:68 settings/serializers/feature.py:71 msgid "Vault" msgstr "启用 Vault" -#: settings/serializers/feature.py:65 +#: settings/serializers/feature.py:74 msgid "Vault provider" msgstr "保管库服务商" -#: settings/serializers/feature.py:69 +#: settings/serializers/feature.py:78 msgid "Record limit" msgstr "记录限制" -#: settings/serializers/feature.py:71 +#: settings/serializers/feature.py:80 msgid "" "If the specific value is less than 999 (default), the system will " "automatically perform a task every night: check and delete historical " @@ -8298,113 +8332,117 @@ msgstr "" "若特定数值小于999,系统将在每日晚间自动执行任务:检查并删除超出预定数量的历史" "账号。如果该数值达到或超过999,则不进行任何历史账号的删除操作。" -#: settings/serializers/feature.py:89 +#: settings/serializers/feature.py:98 msgid "Mount Point" msgstr "挂载点" -#: settings/serializers/feature.py:105 +#: settings/serializers/feature.py:114 #: xpack/plugins/cloud/serializers/account_attrs.py:56 msgid "Tenant ID" msgstr "租户 ID" -#: settings/serializers/feature.py:112 terminal/serializers/storage.py:68 +#: settings/serializers/feature.py:121 terminal/serializers/storage.py:68 #: xpack/plugins/cloud/manager.py:128 xpack/plugins/cloud/manager.py:132 -#: xpack/plugins/cloud/manager.py:169 xpack/plugins/cloud/models.py:295 +#: xpack/plugins/cloud/manager.py:169 xpack/plugins/cloud/models.py:293 msgid "Region" msgstr "地域" -#: settings/serializers/feature.py:115 terminal/serializers/storage.py:33 +#: settings/serializers/feature.py:124 terminal/serializers/storage.py:33 msgid "Access key ID" msgstr "Access key ID(AK)" -#: settings/serializers/feature.py:119 terminal/serializers/storage.py:37 +#: settings/serializers/feature.py:128 terminal/serializers/storage.py:37 #: xpack/plugins/cloud/serializers/account_attrs.py:35 msgid "Access key secret" msgstr "Access key secret(SK)" -#: settings/serializers/feature.py:124 settings/serializers/feature.py:127 +#: settings/serializers/feature.py:133 settings/serializers/feature.py:136 msgid "Chat AI" msgstr "聊天 AI" -#: settings/serializers/feature.py:131 +#: settings/serializers/feature.py:140 msgid "Method" msgstr "创建方式" -#: settings/serializers/feature.py:134 settings/serializers/feature.py:142 -#: settings/serializers/feature.py:157 +#: settings/serializers/feature.py:143 settings/serializers/feature.py:151 +#: settings/serializers/feature.py:166 msgid "Base URL" msgstr "地址" -#: settings/serializers/feature.py:135 settings/serializers/feature.py:143 -#: settings/serializers/feature.py:158 +#: settings/serializers/feature.py:144 settings/serializers/feature.py:152 +#: settings/serializers/feature.py:167 msgid "The base URL of the Chat service." msgstr "聊天服务的基本地址。" -#: settings/serializers/feature.py:146 settings/serializers/feature.py:161 +#: settings/serializers/feature.py:155 settings/serializers/feature.py:170 #: templates/_header_bar.html:96 msgid "API Key" msgstr "API Key" -#: settings/serializers/feature.py:150 settings/serializers/feature.py:165 +#: settings/serializers/feature.py:159 settings/serializers/feature.py:174 msgid "" "The proxy server address of the GPT service. For example: http://ip:port" msgstr "GPT 服务的代理服务器地址。例如:http://ip:port" -#: settings/serializers/feature.py:154 +#: settings/serializers/feature.py:163 msgid "GPT Model" msgstr "GPT 模型" -#: settings/serializers/feature.py:169 +#: settings/serializers/feature.py:178 msgid "DeepSeek Model" msgstr "DeepSeek 模型" -#: settings/serializers/feature.py:186 +#: settings/serializers/feature.py:195 msgid "Approval without login" msgstr "免登录审批" -#: settings/serializers/feature.py:187 +#: settings/serializers/feature.py:196 msgid "Allow direct approval ticket without login" msgstr "允许无需登录直接批准工单" -#: settings/serializers/feature.py:191 +#: settings/serializers/feature.py:200 msgid "Period" msgstr "时段" -#: settings/serializers/feature.py:192 +#: settings/serializers/feature.py:201 msgid "" "The default authorization time period when applying for assets via a ticket" msgstr "工单申请资产的默认授权时间段" -#: settings/serializers/feature.py:195 +#: settings/serializers/feature.py:204 msgid "hour" msgstr "时" -#: settings/serializers/feature.py:196 +#: settings/serializers/feature.py:205 msgid "Unit" msgstr "单位" -#: settings/serializers/feature.py:196 +#: settings/serializers/feature.py:205 msgid "The unit of period" msgstr "执行周期" -#: settings/serializers/feature.py:204 +#: settings/serializers/feature.py:213 msgid "Adhoc command" msgstr "批量命令执行" -#: settings/serializers/feature.py:205 +#: settings/serializers/feature.py:214 msgid "" "Allow users to execute batch commands in the Workbench - Job Center - Adhoc" msgstr "允许用户在工作台 - 作业中心 - Adhoc 中执行批量命令" -#: settings/serializers/feature.py:209 +#: settings/serializers/feature.py:218 +msgid "Docker isolation for Ansible" +msgstr "Ansible Docker 隔离" + +#: settings/serializers/feature.py:223 msgid "Command blacklist" msgstr "作业中心命令黑名单" -#: settings/serializers/feature.py:210 +#: settings/serializers/feature.py:224 msgid "Command blacklist in Adhoc" msgstr "作业中心命令黑名单" -#: settings/serializers/feature.py:216 +#: settings/serializers/feature.py:230 #: terminal/models/virtualapp/provider.py:17 #: terminal/models/virtualapp/virtualapp.py:36 #: terminal/models/virtualapp/virtualapp.py:97 @@ -8412,11 +8450,11 @@ msgstr "作业中心命令黑名单" msgid "Virtual app" msgstr "虚拟应用" -#: settings/serializers/feature.py:219 +#: settings/serializers/feature.py:233 msgid "Virtual App" msgstr "虚拟应用" -#: settings/serializers/feature.py:221 +#: settings/serializers/feature.py:235 msgid "" "Virtual applications, you can use the Linux operating system as an " "application server in remote applications." @@ -9235,17 +9273,22 @@ msgstr "" "您的SSH密钥没有设置或已失效,请点击 链接 " " 更新" -#: templates/_mfa_login_field.html:30 +#: templates/_mfa_login_field.html:23 +#: users/templates/users/user_otp_check_password.html:6 +msgid "Enable OTP" +msgstr "启用 MFA(OTP)" + +#: templates/_mfa_login_field.html:33 #: users/templates/users/forgot_password.html:101 msgid "Send" msgstr "发送" -#: templates/_mfa_login_field.html:109 +#: templates/_mfa_login_field.html:147 #: users/templates/users/forgot_password.html:176 msgid "Wait: " msgstr "等待:" -#: templates/_mfa_login_field.html:119 +#: templates/_mfa_login_field.html:157 #: users/templates/users/forgot_password.html:192 msgid "The verification code has been sent" msgstr "验证码已发送" @@ -11451,11 +11494,11 @@ msgid "" msgstr "" "管理员已开启'仅允许已存在用户登录',当前用户不在用户列表中,请联系管理员。" -#: users/signal_handlers.py:204 +#: users/signal_handlers.py:210 msgid "Clean up expired user sessions" msgstr "清除过期的用户会话" -#: users/signal_handlers.py:206 +#: users/signal_handlers.py:212 msgid "" "After logging in via the web, a user session record is created. At 2 a.m. " "every day, \n" @@ -11653,10 +11696,6 @@ msgstr "强" msgid "Very strong" msgstr "很强" -#: users/templates/users/user_otp_check_password.html:6 -msgid "Enable OTP" -msgstr "启用 MFA(OTP)" - #: users/templates/users/user_otp_enable_bind.html:6 msgid "Bind one-time password authenticator" msgstr "绑定MFA验证器" @@ -11723,31 +11762,31 @@ msgstr "绑定人脸特征成功" msgid "Face unbinding successful" msgstr "解绑人脸特征成功" -#: users/views/profile/otp.py:106 +#: users/views/profile/otp.py:162 msgid "Already bound" msgstr "已经绑定" -#: users/views/profile/otp.py:107 +#: users/views/profile/otp.py:163 msgid "MFA already bound, disable first, then bound" msgstr "MFA(OTP) 已经绑定,请先禁用,再绑定" -#: users/views/profile/otp.py:134 +#: users/views/profile/otp.py:190 msgid "OTP enable success" msgstr "MFA(OTP) 启用成功" -#: users/views/profile/otp.py:135 +#: users/views/profile/otp.py:191 msgid "OTP enable success, return login page" msgstr "MFA(OTP) 启用成功,返回到登录页面" -#: users/views/profile/otp.py:177 +#: users/views/profile/otp.py:233 msgid "Disable OTP" msgstr "禁用虚拟 MFA(OTP)" -#: users/views/profile/otp.py:183 +#: users/views/profile/otp.py:239 msgid "OTP disable success" msgstr "MFA(OTP) 禁用成功" -#: users/views/profile/otp.py:184 +#: users/views/profile/otp.py:240 msgid "OTP disable success, return login page" msgstr "MFA(OTP) 禁用成功,返回登录页面" @@ -11920,7 +11959,7 @@ msgstr "私有IP" msgid "Public IP" msgstr "公网IP" -#: xpack/plugins/cloud/const.py:50 xpack/plugins/cloud/models.py:376 +#: xpack/plugins/cloud/const.py:50 xpack/plugins/cloud/models.py:374 msgid "Instance name" msgstr "实例名称" @@ -12002,7 +12041,7 @@ msgstr "同步地区" msgid "Get instances of region \"%s\" error, error: %s" msgstr "获取区域 \"%s\" 的实例错误,错误:%s" -#: xpack/plugins/cloud/manager.py:169 xpack/plugins/cloud/models.py:292 +#: xpack/plugins/cloud/manager.py:169 xpack/plugins/cloud/models.py:290 msgid "Instance" msgstr "实例" @@ -12083,148 +12122,148 @@ msgstr "云账号" msgid "Test cloud account" msgstr "测试云账号" -#: xpack/plugins/cloud/models.py:111 +#: xpack/plugins/cloud/models.py:109 #: xpack/plugins/cloud/serializers/account.py:83 #: xpack/plugins/cloud/serializers/task.py:170 #: xpack/plugins/cloud/serializers/task.py:171 msgid "Regions" msgstr "地域" -#: xpack/plugins/cloud/models.py:114 +#: xpack/plugins/cloud/models.py:112 msgid "Hostname strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:119 +#: xpack/plugins/cloud/models.py:117 msgid "IP network segment group" msgstr "IP网段组" -#: xpack/plugins/cloud/models.py:123 +#: xpack/plugins/cloud/models.py:121 #: xpack/plugins/cloud/serializers/task.py:174 msgid "Preferred IP type" msgstr "首选 IP 类型" -#: xpack/plugins/cloud/models.py:126 +#: xpack/plugins/cloud/models.py:124 msgid "Always update" msgstr "总是更新" -#: xpack/plugins/cloud/models.py:128 +#: xpack/plugins/cloud/models.py:126 msgid "Fully synchronous" msgstr "完全同步" -#: xpack/plugins/cloud/models.py:129 +#: xpack/plugins/cloud/models.py:127 msgid "Release assets" msgstr "发布资产" -#: xpack/plugins/cloud/models.py:134 +#: xpack/plugins/cloud/models.py:132 msgid "Date last sync" msgstr "最后同步日期" -#: xpack/plugins/cloud/models.py:137 xpack/plugins/cloud/models.py:394 -#: xpack/plugins/cloud/models.py:421 +#: xpack/plugins/cloud/models.py:135 xpack/plugins/cloud/models.py:392 +#: xpack/plugins/cloud/models.py:419 msgid "Strategy" msgstr "策略" -#: xpack/plugins/cloud/models.py:142 xpack/plugins/cloud/models.py:231 +#: xpack/plugins/cloud/models.py:140 xpack/plugins/cloud/models.py:229 msgid "Sync instance task" msgstr "同步实例任务" -#: xpack/plugins/cloud/models.py:242 xpack/plugins/cloud/models.py:305 +#: xpack/plugins/cloud/models.py:240 xpack/plugins/cloud/models.py:303 msgid "Date sync" msgstr "同步日期" -#: xpack/plugins/cloud/models.py:246 +#: xpack/plugins/cloud/models.py:244 msgid "Sync instance snapshot" msgstr "同步实例快照" -#: xpack/plugins/cloud/models.py:254 +#: xpack/plugins/cloud/models.py:252 msgid "Sync instance task execution" msgstr "同步实例任务执行" -#: xpack/plugins/cloud/models.py:285 +#: xpack/plugins/cloud/models.py:283 msgid "Sync task" msgstr "同步任务" -#: xpack/plugins/cloud/models.py:289 +#: xpack/plugins/cloud/models.py:287 msgid "Sync instance task history" msgstr "同步实例任务历史" -#: xpack/plugins/cloud/models.py:309 +#: xpack/plugins/cloud/models.py:307 msgid "Sync instance detail" msgstr "同步实例详情" -#: xpack/plugins/cloud/models.py:321 xpack/plugins/cloud/serializers/task.py:79 +#: xpack/plugins/cloud/models.py:319 xpack/plugins/cloud/serializers/task.py:79 msgid "Rule relation" msgstr "条件关系" -#: xpack/plugins/cloud/models.py:334 +#: xpack/plugins/cloud/models.py:332 msgid "Task strategy" msgstr "任务策略" -#: xpack/plugins/cloud/models.py:365 +#: xpack/plugins/cloud/models.py:363 msgid "Equal" msgstr "等于" -#: xpack/plugins/cloud/models.py:366 +#: xpack/plugins/cloud/models.py:364 msgid "Not Equal" msgstr "不等于" -#: xpack/plugins/cloud/models.py:367 +#: xpack/plugins/cloud/models.py:365 msgid "In" msgstr "在...中" -#: xpack/plugins/cloud/models.py:368 +#: xpack/plugins/cloud/models.py:366 msgid "Contains" msgstr "包含" -#: xpack/plugins/cloud/models.py:369 +#: xpack/plugins/cloud/models.py:367 msgid "Exclude" msgstr "排除" -#: xpack/plugins/cloud/models.py:370 +#: xpack/plugins/cloud/models.py:368 msgid "Startswith" msgstr "以...开头" -#: xpack/plugins/cloud/models.py:371 +#: xpack/plugins/cloud/models.py:369 msgid "Endswith" msgstr "以...结尾" -#: xpack/plugins/cloud/models.py:377 +#: xpack/plugins/cloud/models.py:375 msgid "Instance platform" msgstr "实例平台" -#: xpack/plugins/cloud/models.py:378 +#: xpack/plugins/cloud/models.py:376 msgid "Instance address" msgstr "实例地址" -#: xpack/plugins/cloud/models.py:385 +#: xpack/plugins/cloud/models.py:383 msgid "Rule attr" msgstr "规则属性" -#: xpack/plugins/cloud/models.py:389 +#: xpack/plugins/cloud/models.py:387 msgid "Rule match" msgstr "规则匹配" -#: xpack/plugins/cloud/models.py:391 +#: xpack/plugins/cloud/models.py:389 msgid "Rule value" msgstr "规则值" -#: xpack/plugins/cloud/models.py:398 xpack/plugins/cloud/serializers/task.py:82 +#: xpack/plugins/cloud/models.py:396 xpack/plugins/cloud/serializers/task.py:82 msgid "Strategy rule" msgstr "条件" -#: xpack/plugins/cloud/models.py:409 +#: xpack/plugins/cloud/models.py:407 msgid "Name strategy" msgstr "主机名策略" -#: xpack/plugins/cloud/models.py:416 +#: xpack/plugins/cloud/models.py:414 msgid "Action attr" msgstr "动作属性" -#: xpack/plugins/cloud/models.py:418 +#: xpack/plugins/cloud/models.py:416 msgid "Action value" msgstr "动作值" -#: xpack/plugins/cloud/models.py:425 xpack/plugins/cloud/serializers/task.py:85 +#: xpack/plugins/cloud/models.py:423 xpack/plugins/cloud/serializers/task.py:85 msgid "Strategy action" msgstr "动作" diff --git a/apps/ops/ansible/docker.py b/apps/ops/ansible/docker.py index d81ce065c..b5d9c7a6d 100644 --- a/apps/ops/ansible/docker.py +++ b/apps/ops/ansible/docker.py @@ -69,9 +69,10 @@ def ensure_ansible_docker_image(): result = safe_run_cmd(['docker', 'image', 'inspect', ANSIBLE_EE_IMAGE]) if not result or result.returncode != 0: raise AnsibleDockerImageNotFound( - _('Ansible Docker image "%(image)s" not found. ' - 'You can disable this option in System Settings - Feature Settings - Job Center - ' - 'Ansible Docker isolation to run locally. ' - 'Please run: docker pull %(image)s') + _('The Ansible Docker image "%(image)s" was not found. ' + 'To run jobs locally instead, disable "Docker isolation for Ansible" under ' + 'System Settings > Feature Settings > Job Center. ' + 'To continue using the Docker execution environment, run this command on the ' + 'Ansible worker: docker pull %(image)s') % {'image': ANSIBLE_EE_IMAGE} ) diff --git a/apps/settings/serializers/feature.py b/apps/settings/serializers/feature.py index 4a4080cf9..f06441453 100644 --- a/apps/settings/serializers/feature.py +++ b/apps/settings/serializers/feature.py @@ -19,10 +19,10 @@ from settings.const import ( ) ANSIBLE_DOCKER_HELP_TEXT = _( - 'Run Ansible jobs in Docker execution environment (%(image)s). ' - 'You can disable this option in System Settings - Feature Settings - Job Center - ' - 'Ansible Docker isolation to run locally. ' - 'If the image is missing, pull it on the ansible worker: ' + 'Run Ansible jobs in the Docker execution environment (%(image)s). ' + 'To run jobs locally instead, disable "Docker isolation for Ansible" under ' + 'System Settings > Feature Settings > Job Center. ' + 'If the image is missing, run this command on the Ansible worker: ' 'docker pull %(image)s' ) % {'image': ANSIBLE_EE_IMAGE} @@ -215,7 +215,7 @@ class OpsSettingSerializer(serializers.Serializer): ) ANSIBLE_DOCKER_ENABLED = serializers.BooleanField( required=False, - label=_('Ansible Docker isolation'), + label=_('Docker isolation for Ansible'), help_text=ANSIBLE_DOCKER_HELP_TEXT, ) SECURITY_COMMAND_BLACKLIST = serializers.ListField(