perf: Update user orgs roles

pull/12969/head
Bai 2024-04-09 15:40:31 +08:00 committed by Bryan
parent dfa68d1ca8
commit be90bf6b28
5 changed files with 325 additions and 264 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-07 14:23+0800\n" "POT-Creation-Date: 2024-04-09 15:39+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,7 @@ msgstr "成功: %s、失敗: %s、合計: %s"
#: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47 #: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47
#: settings/serializers/msg.py:35 terminal/serializers/storage.py:123 #: settings/serializers/msg.py:35 terminal/serializers/storage.py:123
#: terminal/serializers/storage.py:142 users/forms/profile.py:22 #: terminal/serializers/storage.py:142 users/forms/profile.py:22
#: users/serializers/user.py:106 #: users/serializers/user.py:109
#: users/templates/users/_msg_user_created.html:13 #: users/templates/users/_msg_user_created.html:13
#: users/templates/users/user_password_verify.html:18 #: users/templates/users/user_password_verify.html:18
#: xpack/plugins/cloud/serializers/account_attrs.py:28 #: xpack/plugins/cloud/serializers/account_attrs.py:28
@ -80,7 +80,7 @@ msgstr "動的コード"
msgid "Anonymous account" msgid "Anonymous account"
msgstr "匿名ユーザー" msgstr "匿名ユーザー"
#: accounts/const/account.py:25 users/models/user.py:742 #: accounts/const/account.py:25 users/models/user.py:752
msgid "Local" msgid "Local"
msgstr "ローカル" msgstr "ローカル"
@ -105,7 +105,7 @@ msgstr "更新"
#: accounts/const/account.py:33 accounts/const/automation.py:109 #: accounts/const/account.py:33 accounts/const/automation.py:109
#: accounts/serializers/automations/change_secret.py:164 audits/const.py:62 #: accounts/serializers/automations/change_secret.py:164 audits/const.py:62
#: audits/signal_handlers/activity_log.py:33 common/const/choices.py:19 #: audits/signal_handlers/activity_log.py:33 common/const/choices.py:19
#: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:46 #: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:47
msgid "Failed" msgid "Failed"
msgstr "失敗しました" msgstr "失敗しました"
@ -207,7 +207,7 @@ msgstr "作成のみ"
#: authentication/serializers/password_mfa.py:24 #: authentication/serializers/password_mfa.py:24
#: notifications/backends/__init__.py:10 settings/serializers/msg.py:22 #: notifications/backends/__init__.py:10 settings/serializers/msg.py:22
#: settings/serializers/msg.py:64 users/forms/profile.py:102 #: settings/serializers/msg.py:64 users/forms/profile.py:102
#: users/forms/profile.py:109 users/models/user.py:806 #: users/forms/profile.py:109 users/models/user.py:816
#: users/templates/users/forgot_password.html:160 #: users/templates/users/forgot_password.html:160
#: users/views/profile/reset.py:94 #: users/views/profile/reset.py:94
msgid "Email" msgid "Email"
@ -295,7 +295,7 @@ msgid "Version"
msgstr "バージョン" msgstr "バージョン"
#: accounts/models/account.py:57 accounts/serializers/account/account.py:215 #: accounts/models/account.py:57 accounts/serializers/account/account.py:215
#: users/models/user.py:849 #: users/models/user.py:859
msgid "Source" msgid "Source"
msgstr "ソース" msgstr "ソース"
@ -309,7 +309,7 @@ msgstr "ソース ID"
#: accounts/templates/accounts/change_secret_failed_info.html:12 #: accounts/templates/accounts/change_secret_failed_info.html:12
#: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7
#: assets/serializers/asset/common.py:128 assets/serializers/gateway.py:28 #: assets/serializers/asset/common.py:128 assets/serializers/gateway.py:28
#: audits/models.py:59 authentication/api/connection_token.py:406 #: audits/models.py:59 authentication/api/connection_token.py:411
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: perms/serializers/permission.py:41 settings/serializers/msg.py:33 #: perms/serializers/permission.py:41 settings/serializers/msg.py:33
#: terminal/backends/command/models.py:18 terminal/models/session/session.py:34 #: terminal/backends/command/models.py:18 terminal/models/session/session.py:34
@ -542,7 +542,7 @@ msgstr "最終ログイン日"
#: authentication/templates/authentication/_msg_different_city.html:9 #: authentication/templates/authentication/_msg_different_city.html:9
#: authentication/templates/authentication/_msg_oauth_bind.html:9 #: authentication/templates/authentication/_msg_oauth_bind.html:9
#: terminal/serializers/storage.py:136 users/forms/profile.py:32 #: terminal/serializers/storage.py:136 users/forms/profile.py:32
#: users/forms/profile.py:115 users/models/user.py:802 #: users/forms/profile.py:115 users/models/user.py:812
#: users/templates/users/_msg_user_created.html:12 #: users/templates/users/_msg_user_created.html:12
#: xpack/plugins/cloud/serializers/account_attrs.py:26 #: xpack/plugins/cloud/serializers/account_attrs.py:26
msgid "Username" msgid "Username"
@ -638,7 +638,7 @@ msgstr "パスワードルール"
#: terminal/models/virtualapp/provider.py:10 #: terminal/models/virtualapp/provider.py:10
#: terminal/models/virtualapp/virtualapp.py:19 tickets/api/ticket.py:87 #: terminal/models/virtualapp/virtualapp.py:19 tickets/api/ticket.py:87
#: users/forms/profile.py:33 users/models/group.py:13 #: users/forms/profile.py:33 users/models/group.py:13
#: users/models/preference.py:11 users/models/user.py:804 #: users/models/preference.py:11 users/models/user.py:814
#: xpack/plugins/cloud/models.py:32 xpack/plugins/cloud/models.py:272 #: xpack/plugins/cloud/models.py:32 xpack/plugins/cloud/models.py:272
#: xpack/plugins/cloud/serializers/task.py:70 #: xpack/plugins/cloud/serializers/task.py:70
msgid "Name" msgid "Name"
@ -654,7 +654,7 @@ msgstr "特権アカウント"
#: authentication/serializers/connect_token_secret.py:117 #: authentication/serializers/connect_token_secret.py:117
#: terminal/models/applet/applet.py:40 #: terminal/models/applet/applet.py:40
#: terminal/models/component/endpoint.py:120 #: terminal/models/component/endpoint.py:120
#: terminal/models/virtualapp/virtualapp.py:23 users/serializers/user.py:169 #: terminal/models/virtualapp/virtualapp.py:23 users/serializers/user.py:173
msgid "Is active" msgid "Is active"
msgstr "アクティブです。" msgstr "アクティブです。"
@ -821,7 +821,7 @@ msgstr "編集済み"
#: acls/templates/acls/asset_login_reminder.html:6 #: acls/templates/acls/asset_login_reminder.html:6
#: assets/models/automations/base.py:19 #: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 #: assets/serializers/automations/base.py:20
#: authentication/api/connection_token.py:405 ops/models/base.py:17 #: authentication/api/connection_token.py:410 ops/models/base.py:17
#: ops/models/job.py:147 ops/serializers/job.py:19 #: ops/models/job.py:147 ops/serializers/job.py:19
#: terminal/templates/terminal/_msg_command_execute_alert.html:16 #: terminal/templates/terminal/_msg_command_execute_alert.html:16
msgid "Assets" msgid "Assets"
@ -863,8 +863,8 @@ msgstr "ID"
#: terminal/notifications.py:205 terminal/serializers/command.py:16 #: terminal/notifications.py:205 terminal/serializers/command.py:16
#: terminal/templates/terminal/_msg_command_warning.html:6 #: terminal/templates/terminal/_msg_command_warning.html:6
#: terminal/templates/terminal/_msg_session_sharing.html:6 #: terminal/templates/terminal/_msg_session_sharing.html:6
#: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1009 #: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1019
#: users/models/user.py:1047 users/serializers/group.py:21 #: users/models/user.py:1057 users/serializers/group.py:21
msgid "User" msgid "User"
msgstr "ユーザー" msgstr "ユーザー"
@ -960,7 +960,7 @@ msgstr "关联平台,可以配置推送参数,如果不关联,则使用默
#: terminal/models/component/endpoint.py:119 #: terminal/models/component/endpoint.py:119
#: terminal/models/session/session.py:47 #: terminal/models/session/session.py:47
#: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32 #: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32
#: tickets/models/ticket/general.py:294 users/models/user.py:840 #: tickets/models/ticket/general.py:294 users/models/user.py:850
#: xpack/plugins/cloud/models.py:39 xpack/plugins/cloud/models.py:106 #: xpack/plugins/cloud/models.py:39 xpack/plugins/cloud/models.py:106
msgid "Comment" msgid "Comment"
msgstr "コメント" msgstr "コメント"
@ -1350,7 +1350,7 @@ msgid "Applications"
msgstr "アプリケーション" msgstr "アプリケーション"
#: applications/models.py:16 xpack/plugins/cloud/models.py:37 #: applications/models.py:16 xpack/plugins/cloud/models.py:37
#: xpack/plugins/cloud/serializers/account.py:67 #: xpack/plugins/cloud/serializers/account.py:68
msgid "Attrs" msgid "Attrs"
msgstr "ツールバーの" msgstr "ツールバーの"
@ -1401,7 +1401,7 @@ msgid " - Platform {} ansible disabled"
msgstr " - プラットフォーム {} ansible 無効" msgstr " - プラットフォーム {} ansible 無効"
#: assets/automations/ping_gateway/manager.py:33 #: assets/automations/ping_gateway/manager.py:33
#: authentication/models/connection_token.py:128 #: authentication/models/connection_token.py:131
msgid "No account" msgid "No account"
msgstr "アカウントなし" msgstr "アカウントなし"
@ -1684,18 +1684,18 @@ msgstr "SSHパブリックキー"
#: assets/models/_user.py:28 assets/models/automations/base.py:114 #: assets/models/_user.py:28 assets/models/automations/base.py:114
#: assets/models/cmd_filter.py:41 assets/models/group.py:19 #: assets/models/cmd_filter.py:41 assets/models/group.py:19
#: audits/models.py:267 common/db/models.py:34 ops/models/base.py:54 #: audits/models.py:267 common/db/models.py:34 ops/models/base.py:54
#: ops/models/job.py:235 users/models/user.py:1048 #: ops/models/job.py:235 users/models/user.py:1058
msgid "Date created" msgid "Date created"
msgstr "作成された日付" msgstr "作成された日付"
#: assets/models/_user.py:29 assets/models/cmd_filter.py:42 #: assets/models/_user.py:29 assets/models/cmd_filter.py:42
#: common/db/models.py:35 users/models/user.py:858 #: common/db/models.py:35 users/models/user.py:868
msgid "Date updated" msgid "Date updated"
msgstr "更新日" msgstr "更新日"
#: assets/models/_user.py:30 assets/models/cmd_filter.py:44 #: assets/models/_user.py:30 assets/models/cmd_filter.py:44
#: assets/models/cmd_filter.py:91 assets/models/group.py:18 #: assets/models/cmd_filter.py:91 assets/models/group.py:18
#: common/db/models.py:32 users/models/user.py:847 #: common/db/models.py:32 users/models/user.py:857
#: users/serializers/group.py:32 #: users/serializers/group.py:32
msgid "Created by" msgid "Created by"
msgstr "によって作成された" msgstr "によって作成された"
@ -1884,7 +1884,7 @@ msgstr "確認済みの日付"
#: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:66 #: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:66
#: perms/serializers/permission.py:34 users/models/group.py:25 #: perms/serializers/permission.py:34 users/models/group.py:25
#: users/models/user.py:810 #: users/models/user.py:820
msgid "User group" msgid "User group"
msgstr "ユーザーグループ" msgstr "ユーザーグループ"
@ -1934,7 +1934,7 @@ msgstr "デフォルト"
msgid "Default asset group" msgid "Default asset group"
msgstr "デフォルトアセットグループ" msgstr "デフォルトアセットグループ"
#: assets/models/label.py:15 rbac/const.py:6 users/models/user.py:1033 #: assets/models/label.py:15 rbac/const.py:6 users/models/user.py:1043
msgid "System" msgid "System"
msgstr "システム" msgstr "システム"
@ -2584,7 +2584,7 @@ msgstr "ログインIP"
#: audits/models.py:200 audits/serializers.py:52 #: audits/models.py:200 audits/serializers.py:52
#: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/_mfa_confirm_modal.html:14
#: users/forms/profile.py:65 users/models/user.py:827 #: users/forms/profile.py:65 users/models/user.py:837
#: users/serializers/profile.py:102 #: users/serializers/profile.py:102
msgid "MFA" msgid "MFA"
msgstr "MFA" msgstr "MFA"
@ -2633,7 +2633,7 @@ msgstr "ユーザー %s %s が現在のリソースをサブスクライブし
#: audits/serializers.py:172 authentication/models/connection_token.py:47 #: audits/serializers.py:172 authentication/models/connection_token.py:47
#: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80 #: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80
#: tickets/models/ticket/apply_application.py:31 #: tickets/models/ticket/apply_application.py:31
#: tickets/models/ticket/apply_asset.py:20 users/models/user.py:845 #: tickets/models/ticket/apply_asset.py:20 users/models/user.py:855
msgid "Date expired" msgid "Date expired"
msgstr "期限切れの日付" msgstr "期限切れの日付"
@ -2666,29 +2666,29 @@ msgstr "認証トークン"
#: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73 #: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73
#: authentication/views/login.py:77 notifications/backends/__init__.py:11 #: authentication/views/login.py:77 notifications/backends/__init__.py:11
#: settings/serializers/auth/wecom.py:10 users/models/user.py:749 #: settings/serializers/auth/wecom.py:10 users/models/user.py:759
#: users/models/user.py:859 #: users/models/user.py:869
msgid "WeCom" msgid "WeCom"
msgstr "企業微信" msgstr "企業微信"
#: audits/signal_handlers/login_log.py:38 authentication/views/feishu.py:105 #: audits/signal_handlers/login_log.py:38 authentication/views/feishu.py:105
#: authentication/views/login.py:89 notifications/backends/__init__.py:14 #: authentication/views/login.py:89 notifications/backends/__init__.py:14
#: settings/serializers/auth/feishu.py:10 users/models/user.py:751 #: settings/serializers/auth/feishu.py:10 users/models/user.py:761
#: users/models/user.py:861 #: users/models/user.py:871
msgid "FeiShu" msgid "FeiShu"
msgstr "本を飛ばす" msgstr "本を飛ばす"
#: audits/signal_handlers/login_log.py:40 authentication/views/login.py:101 #: audits/signal_handlers/login_log.py:40 authentication/views/login.py:101
#: authentication/views/slack.py:87 notifications/backends/__init__.py:16 #: authentication/views/slack.py:87 notifications/backends/__init__.py:16
#: settings/serializers/auth/slack.py:10 users/models/user.py:753 #: settings/serializers/auth/slack.py:10 users/models/user.py:763
#: users/models/user.py:863 #: users/models/user.py:873
msgid "Slack" msgid "Slack"
msgstr "" msgstr ""
#: audits/signal_handlers/login_log.py:41 authentication/views/dingtalk.py:161 #: audits/signal_handlers/login_log.py:41 authentication/views/dingtalk.py:161
#: authentication/views/login.py:83 notifications/backends/__init__.py:12 #: authentication/views/login.py:83 notifications/backends/__init__.py:12
#: settings/serializers/auth/dingtalk.py:10 users/models/user.py:750 #: settings/serializers/auth/dingtalk.py:10 users/models/user.py:760
#: users/models/user.py:860 #: users/models/user.py:870
msgid "DingTalk" msgid "DingTalk"
msgstr "DingTalk" msgstr "DingTalk"
@ -2723,29 +2723,29 @@ msgstr "パラメータの値には必ず %s が含まれます"
msgid "This action require verify your MFA" msgid "This action require verify your MFA"
msgstr "この操作には、MFAを検証する必要があります" msgstr "この操作には、MFAを検証する必要があります"
#: authentication/api/connection_token.py:260 #: authentication/api/connection_token.py:265
msgid "Reusable connection token is not allowed, global setting not enabled" msgid "Reusable connection token is not allowed, global setting not enabled"
msgstr "" msgstr ""
"再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効に" "再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効に"
"なっていません" "なっていません"
#: authentication/api/connection_token.py:374 #: authentication/api/connection_token.py:379
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "匿名アカウントはこのプロパティではサポートされていません" msgstr "匿名アカウントはこのプロパティではサポートされていません"
#: authentication/api/connection_token.py:394 #: authentication/api/connection_token.py:399
msgid "Account not found" msgid "Account not found"
msgstr "アカウントが見つかりません" msgstr "アカウントが見つかりません"
#: authentication/api/connection_token.py:397 #: authentication/api/connection_token.py:402
msgid "Permission expired" msgid "Permission expired"
msgstr "承認の有効期限が切れています" msgstr "承認の有効期限が切れています"
#: authentication/api/connection_token.py:430 #: authentication/api/connection_token.py:435
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL アクションは拒否です: {}({})" msgstr "ACL アクションは拒否です: {}({})"
#: authentication/api/connection_token.py:434 #: authentication/api/connection_token.py:439
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL アクションはレビューです" msgstr "ACL アクションはレビューです"
@ -2948,19 +2948,19 @@ msgstr "受け入れのためのログイン確認チケットを待つ"
msgid "Login confirm ticket was {}" msgid "Login confirm ticket was {}"
msgstr "ログイン確認チケットは {} でした" msgstr "ログイン確認チケットは {} でした"
#: authentication/errors/failed.py:145 #: authentication/errors/failed.py:149
msgid "Current IP and Time period is not allowed" msgid "Current IP and Time period is not allowed"
msgstr "現在の IP と期間はログインを許可されていません" msgstr "現在の IP と期間はログインを許可されていません"
#: authentication/errors/failed.py:150 #: authentication/errors/failed.py:154
msgid "Please enter MFA code" msgid "Please enter MFA code"
msgstr "MFAコードを入力してください" msgstr "MFAコードを入力してください"
#: authentication/errors/failed.py:155 #: authentication/errors/failed.py:159
msgid "Please enter SMS code" msgid "Please enter SMS code"
msgstr "SMSコードを入力してください" msgstr "SMSコードを入力してください"
#: authentication/errors/failed.py:160 users/exceptions.py:15 #: authentication/errors/failed.py:164 users/exceptions.py:15
msgid "Phone not set" msgid "Phone not set"
msgstr "電話が設定されていない" msgstr "電話が設定されていない"
@ -3190,27 +3190,27 @@ msgstr "接続トークンを再利用できます"
msgid "Connection token" msgid "Connection token"
msgstr "接続トークン" msgstr "接続トークン"
#: authentication/models/connection_token.py:115 #: authentication/models/connection_token.py:118
msgid "Connection token inactive" msgid "Connection token inactive"
msgstr "接続トークンがアクティブ化されていません" msgstr "接続トークンがアクティブ化されていません"
#: authentication/models/connection_token.py:119 #: authentication/models/connection_token.py:122
msgid "Connection token expired at: {}" msgid "Connection token expired at: {}"
msgstr "接続トークンの有効期限: {}" msgstr "接続トークンの有効期限: {}"
#: authentication/models/connection_token.py:122 #: authentication/models/connection_token.py:125
msgid "No user or invalid user" msgid "No user or invalid user"
msgstr "ユーザーなしまたは期限切れのユーザー" msgstr "ユーザーなしまたは期限切れのユーザー"
#: authentication/models/connection_token.py:125 #: authentication/models/connection_token.py:128
msgid "No asset or inactive asset" msgid "No asset or inactive asset"
msgstr "アセットがないか、有効化されていないアセット" msgstr "アセットがないか、有効化されていないアセット"
#: authentication/models/connection_token.py:269 #: authentication/models/connection_token.py:272
msgid "Can view super connection token secret" msgid "Can view super connection token secret"
msgstr "スーパー接続トークンのシークレットを表示できます" msgstr "スーパー接続トークンのシークレットを表示できます"
#: authentication/models/connection_token.py:271 #: authentication/models/connection_token.py:274
msgid "Super connection token" msgid "Super connection token"
msgstr "スーパー接続トークン" msgstr "スーパー接続トークン"
@ -3287,7 +3287,7 @@ msgstr "アクション"
#: authentication/serializers/connection_token.py:42 #: authentication/serializers/connection_token.py:42
#: perms/serializers/permission.py:40 perms/serializers/permission.py:60 #: perms/serializers/permission.py:40 perms/serializers/permission.py:60
#: users/serializers/user.py:97 users/serializers/user.py:173 #: users/serializers/user.py:100 users/serializers/user.py:177
msgid "Is expired" msgid "Is expired"
msgstr "期限切れです" msgstr "期限切れです"
@ -3301,8 +3301,8 @@ msgid "Access IP"
msgstr "Access IP" msgstr "Access IP"
#: authentication/serializers/token.py:92 perms/serializers/permission.py:39 #: authentication/serializers/token.py:92 perms/serializers/permission.py:39
#: perms/serializers/permission.py:61 users/serializers/user.py:98 #: perms/serializers/permission.py:61 users/serializers/user.py:101
#: users/serializers/user.py:170 #: users/serializers/user.py:174
msgid "Is valid" msgid "Is valid"
msgstr "有効です" msgstr "有効です"
@ -3327,13 +3327,13 @@ msgid "Show"
msgstr "表示" msgstr "表示"
#: authentication/templates/authentication/_access_key_modal.html:66 #: authentication/templates/authentication/_access_key_modal.html:66
#: users/const.py:42 users/models/user.py:644 users/serializers/profile.py:92 #: users/const.py:42 users/models/user.py:654 users/serializers/profile.py:92
#: users/templates/users/user_verify_mfa.html:36 #: users/templates/users/user_verify_mfa.html:36
msgid "Disable" msgid "Disable"
msgstr "無効化" msgstr "無効化"
#: authentication/templates/authentication/_access_key_modal.html:67 #: authentication/templates/authentication/_access_key_modal.html:67
#: users/const.py:43 users/models/user.py:645 users/serializers/profile.py:93 #: users/const.py:43 users/models/user.py:655 users/serializers/profile.py:93
#: users/templates/users/mfa_setting.html:26 #: users/templates/users/mfa_setting.html:26
#: users/templates/users/mfa_setting.html:68 #: users/templates/users/mfa_setting.html:68
msgid "Enable" msgid "Enable"
@ -3545,7 +3545,7 @@ msgid "Do you want to retry ?"
msgstr "再試行しますか?" msgstr "再試行しますか?"
#: authentication/utils.py:24 common/utils/ip/geoip/utils.py:24 #: authentication/utils.py:24 common/utils/ip/geoip/utils.py:24
#: xpack/plugins/cloud/const.py:32 #: xpack/plugins/cloud/const.py:33
msgid "LAN" msgid "LAN"
msgstr "ローカルエリアネットワーク" msgstr "ローカルエリアネットワーク"
@ -3811,7 +3811,7 @@ msgstr "は破棄されます"
msgid "discard time" msgid "discard time"
msgstr "時間を捨てる" msgstr "時間を捨てる"
#: common/db/models.py:33 users/models/user.py:848 #: common/db/models.py:33 users/models/user.py:858
msgid "Updated by" msgid "Updated by"
msgstr "によって更新" msgstr "によって更新"
@ -4137,16 +4137,23 @@ msgstr "タスクは存在しません"
msgid "Task {} args or kwargs error" msgid "Task {} args or kwargs error"
msgstr "タスク実行パラメータエラー" msgstr "タスク実行パラメータエラー"
#: ops/api/job.py:81
#, python-brace-format
msgid "" msgid ""
"Asset ({asset}) must have at least one of the following protocols added: " "Asset ({asset}) must have at least one of the following protocols added: "
"SSH, SFTP, or WinRM" "SSH, SFTP, or WinRM"
msgstr "" msgstr ""
"資産({asset})には、少なくともSSH、SFTP、WinRMのいずれか一つのプロトコルを追加" "資産({asset})には、少なくともSSH、SFTP、WinRMのいずれか一つのプロトコルを追加"
"る必要があります" "る必要があります"
#: ops/api/job.py:82
#, python-brace-format
msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol" msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol"
msgstr "資産({asset})の認証にはSSH、SFTP、またはWinRMプロトコルが不足しています" msgstr ""
"資産({asset})の認証にはSSH、SFTP、またはWinRMプロトコルが不足しています"
#: ops/api/job.py:83
#, python-brace-format
msgid "Asset ({asset}) authorization lacks upload permissions" msgid "Asset ({asset}) authorization lacks upload permissions"
msgstr "資産({asset})の認証にはアップロード権限が不足しています" msgstr "資産({asset})の認証にはアップロード権限が不足しています"
@ -4827,7 +4834,7 @@ msgid "Scope"
msgstr "スコープ" msgstr "スコープ"
#: rbac/models/role.py:46 rbac/models/rolebinding.py:52 #: rbac/models/role.py:46 rbac/models/rolebinding.py:52
#: users/models/user.py:814 #: users/models/user.py:824
msgid "Role" msgid "Role"
msgstr "ロール" msgstr "ロール"
@ -4839,26 +4846,26 @@ msgstr "システムの役割"
msgid "Organization role" msgid "Organization role"
msgstr "組織の役割" msgstr "組織の役割"
#: rbac/models/rolebinding.py:61 #: rbac/models/rolebinding.py:62
msgid "Role binding" msgid "Role binding"
msgstr "ロールバインディング" msgstr "ロールバインディング"
#: rbac/models/rolebinding.py:160 #: rbac/models/rolebinding.py:161
msgid "All organizations" msgid "All organizations"
msgstr "全ての組織" msgstr "全ての組織"
#: rbac/models/rolebinding.py:192 #: rbac/models/rolebinding.py:193
msgid "" msgid ""
"User last role in org, can not be delete, you can remove user from org " "User last role in org, can not be delete, you can remove user from org "
"instead" "instead"
msgstr "" msgstr ""
"ユーザーの最後のロールは削除できません。ユーザーを組織から削除できます。" "ユーザーの最後のロールは削除できません。ユーザーを組織から削除できます。"
#: rbac/models/rolebinding.py:199 #: rbac/models/rolebinding.py:200
msgid "Organization role binding" msgid "Organization role binding"
msgstr "組織の役割バインディング" msgstr "組織の役割バインディング"
#: rbac/models/rolebinding.py:214 #: rbac/models/rolebinding.py:215
msgid "System role binding" msgid "System role binding"
msgstr "システムロールバインディング" msgstr "システムロールバインディング"
@ -6638,6 +6645,12 @@ msgstr "データベース クライアント"
msgid "Remote Desktop" msgid "Remote Desktop"
msgstr "リモートデスクトップ" msgstr "リモートデスクトップ"
#: terminal/connect_methods.py:37
#, fuzzy
#| msgid "DB Guide"
msgid "RDP Guide"
msgstr "DB 接続ウィザード"
#: terminal/const.py:12 #: terminal/const.py:12
msgid "Review & Reject" msgid "Review & Reject"
msgstr "レビューと拒否" msgstr "レビューと拒否"
@ -7343,7 +7356,7 @@ msgstr "エンドポイントサフィックス"
msgid "HOST" msgid "HOST"
msgstr "ホスト" msgstr "ホスト"
#: terminal/serializers/storage.py:146 users/models/user.py:834 #: terminal/serializers/storage.py:146 users/models/user.py:844
#: xpack/plugins/cloud/serializers/account_attrs.py:213 #: xpack/plugins/cloud/serializers/account_attrs.py:213
msgid "Private key" msgid "Private key"
msgstr "ssh秘密鍵" msgstr "ssh秘密鍵"
@ -7903,11 +7916,11 @@ msgstr "無効な承認アクション"
msgid "This user is not authorized to approve this ticket" msgid "This user is not authorized to approve this ticket"
msgstr "このユーザーはこの作業指示を承認する権限がありません" msgstr "このユーザーはこの作業指示を承認する権限がありません"
#: users/api/user.py:136 #: users/api/user.py:155
msgid "Can not invite self" msgid "Can not invite self"
msgstr "自分自身を招待することはできません" msgstr "自分自身を招待することはできません"
#: users/api/user.py:189 #: users/api/user.py:208
msgid "Could not reset self otp, use profile reset instead" msgid "Could not reset self otp, use profile reset instead"
msgstr "自己otpをリセットできませんでした、代わりにプロファイルリセットを使用" msgstr "自己otpをリセットできませんでした、代わりにプロファイルリセットを使用"
@ -8058,7 +8071,7 @@ msgstr "公開鍵は古いものと同じであってはなりません。"
msgid "Not a valid ssh public key" msgid "Not a valid ssh public key"
msgstr "有効なssh公開鍵ではありません" msgstr "有効なssh公開鍵ではありません"
#: users/forms/profile.py:173 users/models/user.py:837 #: users/forms/profile.py:173 users/models/user.py:847
#: xpack/plugins/cloud/serializers/account_attrs.py:210 #: xpack/plugins/cloud/serializers/account_attrs.py:210
msgid "Public key" msgid "Public key"
msgstr "公開キー" msgstr "公開キー"
@ -8067,78 +8080,78 @@ msgstr "公開キー"
msgid "Preference" msgid "Preference"
msgstr "ユーザー設定" msgstr "ユーザー設定"
#: users/models/user.py:646 users/serializers/profile.py:94 #: users/models/user.py:656 users/serializers/profile.py:94
msgid "Force enable" msgid "Force enable"
msgstr "強制有効" msgstr "強制有効"
#: users/models/user.py:752 #: users/models/user.py:762
msgid "Lark" msgid "Lark"
msgstr "" msgstr ""
#: users/models/user.py:816 users/serializers/user.py:171 #: users/models/user.py:826 users/serializers/user.py:175
msgid "Is service account" msgid "Is service account"
msgstr "サービスアカウントです" msgstr "サービスアカウントです"
#: users/models/user.py:818 #: users/models/user.py:828
msgid "Avatar" msgid "Avatar"
msgstr "アバター" msgstr "アバター"
#: users/models/user.py:821 #: users/models/user.py:831
msgid "Wechat" msgid "Wechat"
msgstr "微信" msgstr "微信"
#: users/models/user.py:824 users/serializers/user.py:108 #: users/models/user.py:834 users/serializers/user.py:111
msgid "Phone" msgid "Phone"
msgstr "電話" msgstr "電話"
#: users/models/user.py:830 #: users/models/user.py:840
msgid "OTP secret key" msgid "OTP secret key"
msgstr "OTP 秘密" msgstr "OTP 秘密"
# msgid "Private key" # msgid "Private key"
# msgstr "ssh秘密鍵" # msgstr "ssh秘密鍵"
#: users/models/user.py:842 users/serializers/profile.py:128 #: users/models/user.py:852 users/serializers/profile.py:128
#: users/serializers/user.py:168 #: users/serializers/user.py:172
msgid "Is first login" msgid "Is first login"
msgstr "最初のログインです" msgstr "最初のログインです"
#: users/models/user.py:852 #: users/models/user.py:862
msgid "Date password last updated" msgid "Date password last updated"
msgstr "最終更新日パスワード" msgstr "最終更新日パスワード"
#: users/models/user.py:855 #: users/models/user.py:865
msgid "Need update password" msgid "Need update password"
msgstr "更新パスワードが必要" msgstr "更新パスワードが必要"
#: users/models/user.py:857 #: users/models/user.py:867
msgid "Date api key used" msgid "Date api key used"
msgstr "Api key 最後に使用した日付" msgstr "Api key 最後に使用した日付"
#: users/models/user.py:990 #: users/models/user.py:1000
msgid "Can not delete admin user" msgid "Can not delete admin user"
msgstr "管理者ユーザーを削除できませんでした" msgstr "管理者ユーザーを削除できませんでした"
#: users/models/user.py:1018 #: users/models/user.py:1028
msgid "Can invite user" msgid "Can invite user"
msgstr "ユーザーを招待できます" msgstr "ユーザーを招待できます"
#: users/models/user.py:1019 #: users/models/user.py:1029
msgid "Can remove user" msgid "Can remove user"
msgstr "ユーザーを削除できます" msgstr "ユーザーを削除できます"
#: users/models/user.py:1020 #: users/models/user.py:1030
msgid "Can match user" msgid "Can match user"
msgstr "ユーザーに一致できます" msgstr "ユーザーに一致できます"
#: users/models/user.py:1029 #: users/models/user.py:1039
msgid "Administrator" msgid "Administrator"
msgstr "管理者" msgstr "管理者"
#: users/models/user.py:1032 #: users/models/user.py:1042
msgid "Administrator is the super user of system" msgid "Administrator is the super user of system"
msgstr "管理者はシステムのスーパーユーザーです" msgstr "管理者はシステムのスーパーユーザーです"
#: users/models/user.py:1057 #: users/models/user.py:1067
msgid "User password history" msgid "User password history"
msgstr "ユーザーパスワード履歴" msgstr "ユーザーパスワード履歴"
@ -8272,67 +8285,71 @@ msgstr "パスワードがセキュリティルールと一致しない"
msgid "The new password cannot be the last {} passwords" msgid "The new password cannot be the last {} passwords"
msgstr "新しいパスワードを最後の {} 個のパスワードにすることはできません" msgstr "新しいパスワードを最後の {} 個のパスワードにすることはできません"
#: users/serializers/user.py:42 #: users/serializers/user.py:44
msgid "System roles" msgid "System roles"
msgstr "システムの役割" msgstr "システムの役割"
#: users/serializers/user.py:46 #: users/serializers/user.py:48
msgid "Org roles" msgid "Org roles"
msgstr "組織ロール" msgstr "組織ロール"
#: users/serializers/user.py:90 #: users/serializers/user.py:51
msgid "Organizations and roles"
msgstr "そしきとやくわり"
#: users/serializers/user.py:93
msgid "Password strategy" msgid "Password strategy"
msgstr "パスワード戦略" msgstr "パスワード戦略"
#: users/serializers/user.py:92 #: users/serializers/user.py:95
msgid "MFA enabled" msgid "MFA enabled"
msgstr "MFA有効化" msgstr "MFA有効化"
#: users/serializers/user.py:94 #: users/serializers/user.py:97
msgid "MFA force enabled" msgid "MFA force enabled"
msgstr "MFAフォース有効化" msgstr "MFAフォース有効化"
#: users/serializers/user.py:96 #: users/serializers/user.py:99
msgid "Login blocked" msgid "Login blocked"
msgstr "ログインがロックされました" msgstr "ログインがロックされました"
#: users/serializers/user.py:99 users/serializers/user.py:177 #: users/serializers/user.py:102 users/serializers/user.py:181
msgid "Is OTP bound" msgid "Is OTP bound"
msgstr "仮想MFAがバインドされているか" msgstr "仮想MFAがバインドされているか"
#: users/serializers/user.py:100 #: users/serializers/user.py:103
msgid "Super Administrator" msgid "Super Administrator"
msgstr "スーパーアドミニストレーター" msgstr "スーパーアドミニストレーター"
#: users/serializers/user.py:101 #: users/serializers/user.py:104
msgid "Organization Administrator" msgid "Organization Administrator"
msgstr "組織管理者" msgstr "組織管理者"
#: users/serializers/user.py:103 #: users/serializers/user.py:106
msgid "Can public key authentication" msgid "Can public key authentication"
msgstr "公開鍵認証が可能" msgstr "公開鍵認証が可能"
#: users/serializers/user.py:172 #: users/serializers/user.py:176
msgid "Is org admin" msgid "Is org admin"
msgstr "組織管理者です" msgstr "組織管理者です"
#: users/serializers/user.py:174 #: users/serializers/user.py:178
msgid "Avatar url" msgid "Avatar url"
msgstr "アバターURL" msgstr "アバターURL"
#: users/serializers/user.py:178 #: users/serializers/user.py:182
msgid "MFA level" msgid "MFA level"
msgstr "MFA レベル" msgstr "MFA レベル"
#: users/serializers/user.py:289 #: users/serializers/user.py:304
msgid "Select users" msgid "Select users"
msgstr "ユーザーの選択" msgstr "ユーザーの選択"
#: users/serializers/user.py:290 #: users/serializers/user.py:305
msgid "For security, only list several users" msgid "For security, only list several users"
msgstr "セキュリティのために、複数のユーザーのみをリストします" msgstr "セキュリティのために、複数のユーザーのみをリストします"
#: users/serializers/user.py:323 #: users/serializers/user.py:338
msgid "name not unique" msgid "name not unique"
msgstr "名前が一意ではない" msgstr "名前が一意ではない"
@ -8640,11 +8657,11 @@ msgid ""
"The current task is not synchronized with unmatched policy assets, skipping" "The current task is not synchronized with unmatched policy assets, skipping"
msgstr "" msgstr ""
#: xpack/plugins/cloud/api.py:58 #: xpack/plugins/cloud/api.py:60
msgid "Test connection successful" msgid "Test connection successful"
msgstr "テスト接続成功" msgstr "テスト接続成功"
#: xpack/plugins/cloud/api.py:60 #: xpack/plugins/cloud/api.py:62
msgid "Test connection failed: {}" msgid "Test connection failed: {}"
msgstr "テスト接続に失敗しました: {}" msgstr "テスト接続に失敗しました: {}"
@ -8696,87 +8713,91 @@ msgstr "谷歌雲"
msgid "UCloud" msgid "UCloud"
msgstr "ucloud" msgstr "ucloud"
#: xpack/plugins/cloud/const.py:22 #: xpack/plugins/cloud/const.py:21
msgid "Volcengine"
msgstr ""
#: xpack/plugins/cloud/const.py:23
msgid "VMware" msgid "VMware"
msgstr "VMware" msgstr "VMware"
#: xpack/plugins/cloud/const.py:23 xpack/plugins/cloud/providers/nutanix.py:15 #: xpack/plugins/cloud/const.py:24 xpack/plugins/cloud/providers/nutanix.py:15
msgid "Nutanix" msgid "Nutanix"
msgstr "Nutanix" msgstr "Nutanix"
#: xpack/plugins/cloud/const.py:24 #: xpack/plugins/cloud/const.py:25
msgid "Huawei Private Cloud" msgid "Huawei Private Cloud"
msgstr "華為私有雲" msgstr "華為私有雲"
#: xpack/plugins/cloud/const.py:25 #: xpack/plugins/cloud/const.py:26
msgid "Qingyun Private Cloud" msgid "Qingyun Private Cloud"
msgstr "青雲私有雲" msgstr "青雲私有雲"
#: xpack/plugins/cloud/const.py:26 #: xpack/plugins/cloud/const.py:27
msgid "CTYun Private Cloud" msgid "CTYun Private Cloud"
msgstr "スカイウィング私有雲" msgstr "スカイウィング私有雲"
#: xpack/plugins/cloud/const.py:27 #: xpack/plugins/cloud/const.py:28
msgid "OpenStack" msgid "OpenStack"
msgstr "OpenStack" msgstr "OpenStack"
#: xpack/plugins/cloud/const.py:28 xpack/plugins/cloud/providers/zstack.py:21 #: xpack/plugins/cloud/const.py:29 xpack/plugins/cloud/providers/zstack.py:21
msgid "ZStack" msgid "ZStack"
msgstr "ZStack" msgstr "ZStack"
#: xpack/plugins/cloud/const.py:29 #: xpack/plugins/cloud/const.py:30
msgid "Fusion Compute" msgid "Fusion Compute"
msgstr "融合計算" msgstr "融合計算"
#: xpack/plugins/cloud/const.py:30 #: xpack/plugins/cloud/const.py:31
msgid "SCP" msgid "SCP"
msgstr "SCP" msgstr "SCP"
#: xpack/plugins/cloud/const.py:31 #: xpack/plugins/cloud/const.py:32
msgid "Apsara Stack" msgid "Apsara Stack"
msgstr "Apsara Stack" msgstr "Apsara Stack"
#: xpack/plugins/cloud/const.py:36 #: xpack/plugins/cloud/const.py:37
msgid "Private IP" msgid "Private IP"
msgstr "プライベートIP" msgstr "プライベートIP"
#: xpack/plugins/cloud/const.py:37 #: xpack/plugins/cloud/const.py:38
msgid "Public IP" msgid "Public IP"
msgstr "パブリックIP" msgstr "パブリックIP"
#: xpack/plugins/cloud/const.py:41 xpack/plugins/cloud/models.py:299 #: xpack/plugins/cloud/const.py:42 xpack/plugins/cloud/models.py:299
msgid "Instance name" msgid "Instance name"
msgstr "インスタンス名" msgstr "インスタンス名"
#: xpack/plugins/cloud/const.py:42 #: xpack/plugins/cloud/const.py:43
msgid "Instance name and Partial IP" msgid "Instance name and Partial IP"
msgstr "インスタンス名と部分IP" msgstr "インスタンス名と部分IP"
#: xpack/plugins/cloud/const.py:47 #: xpack/plugins/cloud/const.py:48
msgid "Succeed" msgid "Succeed"
msgstr "成功" msgstr "成功"
#: xpack/plugins/cloud/const.py:51 #: xpack/plugins/cloud/const.py:52
msgid "Unsync" msgid "Unsync"
msgstr "同期していません" msgstr "同期していません"
#: xpack/plugins/cloud/const.py:52 #: xpack/plugins/cloud/const.py:53
msgid "New Sync" msgid "New Sync"
msgstr "新しい同期" msgstr "新しい同期"
#: xpack/plugins/cloud/const.py:53 #: xpack/plugins/cloud/const.py:54
msgid "Synced" msgid "Synced"
msgstr "同期済み" msgstr "同期済み"
#: xpack/plugins/cloud/const.py:54 #: xpack/plugins/cloud/const.py:55
msgid "Released" msgid "Released"
msgstr "リリース済み" msgstr "リリース済み"
#: xpack/plugins/cloud/const.py:58 #: xpack/plugins/cloud/const.py:59
msgid "And" msgid "And"
msgstr "そして" msgstr "そして"
#: xpack/plugins/cloud/const.py:59 #: xpack/plugins/cloud/const.py:60
msgid "Or" msgid "Or"
msgstr "または" msgstr "または"
@ -9133,11 +9154,11 @@ msgstr "TR-Istanbul"
msgid "CN East-Suqian" msgid "CN East-Suqian"
msgstr "華東-宿遷" msgstr "華東-宿遷"
#: xpack/plugins/cloud/serializers/account.py:68 #: xpack/plugins/cloud/serializers/account.py:69
msgid "Validity display" msgid "Validity display"
msgstr "有効表示" msgstr "有効表示"
#: xpack/plugins/cloud/serializers/account.py:69 #: xpack/plugins/cloud/serializers/account.py:70
msgid "Provider display" msgid "Provider display"
msgstr "プロバイダ表示" msgstr "プロバイダ表示"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n" "Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-07 14:23+0800\n" "POT-Creation-Date: 2024-04-09 15:39+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n" "PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n" "Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n" "Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -35,7 +35,7 @@ msgstr "成功: %s, 失败: %s, 总数: %s"
#: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47 #: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47
#: settings/serializers/msg.py:35 terminal/serializers/storage.py:123 #: settings/serializers/msg.py:35 terminal/serializers/storage.py:123
#: terminal/serializers/storage.py:142 users/forms/profile.py:22 #: terminal/serializers/storage.py:142 users/forms/profile.py:22
#: users/serializers/user.py:106 #: users/serializers/user.py:109
#: users/templates/users/_msg_user_created.html:13 #: users/templates/users/_msg_user_created.html:13
#: users/templates/users/user_password_verify.html:18 #: users/templates/users/user_password_verify.html:18
#: xpack/plugins/cloud/serializers/account_attrs.py:28 #: xpack/plugins/cloud/serializers/account_attrs.py:28
@ -79,7 +79,7 @@ msgstr "同名账号"
msgid "Anonymous account" msgid "Anonymous account"
msgstr "匿名账号" msgstr "匿名账号"
#: accounts/const/account.py:25 users/models/user.py:742 #: accounts/const/account.py:25 users/models/user.py:752
msgid "Local" msgid "Local"
msgstr "数据库" msgstr "数据库"
@ -104,7 +104,7 @@ msgstr "更新"
#: accounts/const/account.py:33 accounts/const/automation.py:109 #: accounts/const/account.py:33 accounts/const/automation.py:109
#: accounts/serializers/automations/change_secret.py:164 audits/const.py:62 #: accounts/serializers/automations/change_secret.py:164 audits/const.py:62
#: audits/signal_handlers/activity_log.py:33 common/const/choices.py:19 #: audits/signal_handlers/activity_log.py:33 common/const/choices.py:19
#: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:46 #: ops/const.py:76 terminal/const.py:79 xpack/plugins/cloud/const.py:47
msgid "Failed" msgid "Failed"
msgstr "失败" msgstr "失败"
@ -206,7 +206,7 @@ msgstr "仅创建"
#: authentication/serializers/password_mfa.py:24 #: authentication/serializers/password_mfa.py:24
#: notifications/backends/__init__.py:10 settings/serializers/msg.py:22 #: notifications/backends/__init__.py:10 settings/serializers/msg.py:22
#: settings/serializers/msg.py:64 users/forms/profile.py:102 #: settings/serializers/msg.py:64 users/forms/profile.py:102
#: users/forms/profile.py:109 users/models/user.py:806 #: users/forms/profile.py:109 users/models/user.py:816
#: users/templates/users/forgot_password.html:160 #: users/templates/users/forgot_password.html:160
#: users/views/profile/reset.py:94 #: users/views/profile/reset.py:94
msgid "Email" msgid "Email"
@ -294,7 +294,7 @@ msgid "Version"
msgstr "版本" msgstr "版本"
#: accounts/models/account.py:57 accounts/serializers/account/account.py:215 #: accounts/models/account.py:57 accounts/serializers/account/account.py:215
#: users/models/user.py:849 #: users/models/user.py:859
msgid "Source" msgid "Source"
msgstr "来源" msgstr "来源"
@ -308,7 +308,7 @@ msgstr "来源 ID"
#: accounts/templates/accounts/change_secret_failed_info.html:12 #: accounts/templates/accounts/change_secret_failed_info.html:12
#: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7
#: assets/serializers/asset/common.py:128 assets/serializers/gateway.py:28 #: assets/serializers/asset/common.py:128 assets/serializers/gateway.py:28
#: audits/models.py:59 authentication/api/connection_token.py:406 #: audits/models.py:59 authentication/api/connection_token.py:411
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: perms/serializers/permission.py:41 settings/serializers/msg.py:33 #: perms/serializers/permission.py:41 settings/serializers/msg.py:33
#: terminal/backends/command/models.py:18 terminal/models/session/session.py:34 #: terminal/backends/command/models.py:18 terminal/models/session/session.py:34
@ -541,7 +541,7 @@ msgstr "最后登录日期"
#: authentication/templates/authentication/_msg_different_city.html:9 #: authentication/templates/authentication/_msg_different_city.html:9
#: authentication/templates/authentication/_msg_oauth_bind.html:9 #: authentication/templates/authentication/_msg_oauth_bind.html:9
#: terminal/serializers/storage.py:136 users/forms/profile.py:32 #: terminal/serializers/storage.py:136 users/forms/profile.py:32
#: users/forms/profile.py:115 users/models/user.py:802 #: users/forms/profile.py:115 users/models/user.py:812
#: users/templates/users/_msg_user_created.html:12 #: users/templates/users/_msg_user_created.html:12
#: xpack/plugins/cloud/serializers/account_attrs.py:26 #: xpack/plugins/cloud/serializers/account_attrs.py:26
msgid "Username" msgid "Username"
@ -637,7 +637,7 @@ msgstr "密码规则"
#: terminal/models/virtualapp/provider.py:10 #: terminal/models/virtualapp/provider.py:10
#: terminal/models/virtualapp/virtualapp.py:19 tickets/api/ticket.py:87 #: terminal/models/virtualapp/virtualapp.py:19 tickets/api/ticket.py:87
#: users/forms/profile.py:33 users/models/group.py:13 #: users/forms/profile.py:33 users/models/group.py:13
#: users/models/preference.py:11 users/models/user.py:804 #: users/models/preference.py:11 users/models/user.py:814
#: xpack/plugins/cloud/models.py:32 xpack/plugins/cloud/models.py:272 #: xpack/plugins/cloud/models.py:32 xpack/plugins/cloud/models.py:272
#: xpack/plugins/cloud/serializers/task.py:70 #: xpack/plugins/cloud/serializers/task.py:70
msgid "Name" msgid "Name"
@ -653,7 +653,7 @@ msgstr "特权账号"
#: authentication/serializers/connect_token_secret.py:117 #: authentication/serializers/connect_token_secret.py:117
#: terminal/models/applet/applet.py:40 #: terminal/models/applet/applet.py:40
#: terminal/models/component/endpoint.py:120 #: terminal/models/component/endpoint.py:120
#: terminal/models/virtualapp/virtualapp.py:23 users/serializers/user.py:169 #: terminal/models/virtualapp/virtualapp.py:23 users/serializers/user.py:173
msgid "Is active" msgid "Is active"
msgstr "激活" msgstr "激活"
@ -819,7 +819,7 @@ msgstr "已修改"
#: acls/templates/acls/asset_login_reminder.html:6 #: acls/templates/acls/asset_login_reminder.html:6
#: assets/models/automations/base.py:19 #: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 #: assets/serializers/automations/base.py:20
#: authentication/api/connection_token.py:405 ops/models/base.py:17 #: authentication/api/connection_token.py:410 ops/models/base.py:17
#: ops/models/job.py:147 ops/serializers/job.py:19 #: ops/models/job.py:147 ops/serializers/job.py:19
#: terminal/templates/terminal/_msg_command_execute_alert.html:16 #: terminal/templates/terminal/_msg_command_execute_alert.html:16
msgid "Assets" msgid "Assets"
@ -861,8 +861,8 @@ msgstr "ID"
#: terminal/notifications.py:205 terminal/serializers/command.py:16 #: terminal/notifications.py:205 terminal/serializers/command.py:16
#: terminal/templates/terminal/_msg_command_warning.html:6 #: terminal/templates/terminal/_msg_command_warning.html:6
#: terminal/templates/terminal/_msg_session_sharing.html:6 #: terminal/templates/terminal/_msg_session_sharing.html:6
#: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1009 #: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1019
#: users/models/user.py:1047 users/serializers/group.py:21 #: users/models/user.py:1057 users/serializers/group.py:21
msgid "User" msgid "User"
msgstr "用户" msgstr "用户"
@ -958,7 +958,7 @@ msgstr "关联平台,可配置推送参数,如果不关联,将使用默认
#: terminal/models/component/endpoint.py:119 #: terminal/models/component/endpoint.py:119
#: terminal/models/session/session.py:47 #: terminal/models/session/session.py:47
#: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32 #: terminal/models/virtualapp/virtualapp.py:28 tickets/models/comment.py:32
#: tickets/models/ticket/general.py:294 users/models/user.py:840 #: tickets/models/ticket/general.py:294 users/models/user.py:850
#: xpack/plugins/cloud/models.py:39 xpack/plugins/cloud/models.py:106 #: xpack/plugins/cloud/models.py:39 xpack/plugins/cloud/models.py:106
msgid "Comment" msgid "Comment"
msgstr "备注" msgstr "备注"
@ -1342,7 +1342,7 @@ msgid "Applications"
msgstr "应用管理" msgstr "应用管理"
#: applications/models.py:16 xpack/plugins/cloud/models.py:37 #: applications/models.py:16 xpack/plugins/cloud/models.py:37
#: xpack/plugins/cloud/serializers/account.py:67 #: xpack/plugins/cloud/serializers/account.py:68
msgid "Attrs" msgid "Attrs"
msgstr "属性" msgstr "属性"
@ -1391,7 +1391,7 @@ msgid " - Platform {} ansible disabled"
msgstr " - 平台 {} Ansible 已禁用, 无法执行任务" msgstr " - 平台 {} Ansible 已禁用, 无法执行任务"
#: assets/automations/ping_gateway/manager.py:33 #: assets/automations/ping_gateway/manager.py:33
#: authentication/models/connection_token.py:128 #: authentication/models/connection_token.py:131
msgid "No account" msgid "No account"
msgstr "没有账号" msgstr "没有账号"
@ -1674,18 +1674,18 @@ msgstr "SSH公钥"
#: assets/models/_user.py:28 assets/models/automations/base.py:114 #: assets/models/_user.py:28 assets/models/automations/base.py:114
#: assets/models/cmd_filter.py:41 assets/models/group.py:19 #: assets/models/cmd_filter.py:41 assets/models/group.py:19
#: audits/models.py:267 common/db/models.py:34 ops/models/base.py:54 #: audits/models.py:267 common/db/models.py:34 ops/models/base.py:54
#: ops/models/job.py:235 users/models/user.py:1048 #: ops/models/job.py:235 users/models/user.py:1058
msgid "Date created" msgid "Date created"
msgstr "创建日期" msgstr "创建日期"
#: assets/models/_user.py:29 assets/models/cmd_filter.py:42 #: assets/models/_user.py:29 assets/models/cmd_filter.py:42
#: common/db/models.py:35 users/models/user.py:858 #: common/db/models.py:35 users/models/user.py:868
msgid "Date updated" msgid "Date updated"
msgstr "更新日期" msgstr "更新日期"
#: assets/models/_user.py:30 assets/models/cmd_filter.py:44 #: assets/models/_user.py:30 assets/models/cmd_filter.py:44
#: assets/models/cmd_filter.py:91 assets/models/group.py:18 #: assets/models/cmd_filter.py:91 assets/models/group.py:18
#: common/db/models.py:32 users/models/user.py:847 #: common/db/models.py:32 users/models/user.py:857
#: users/serializers/group.py:32 #: users/serializers/group.py:32
msgid "Created by" msgid "Created by"
msgstr "创建者" msgstr "创建者"
@ -1874,7 +1874,7 @@ msgstr "校验日期"
#: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:66 #: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:66
#: perms/serializers/permission.py:34 users/models/group.py:25 #: perms/serializers/permission.py:34 users/models/group.py:25
#: users/models/user.py:810 #: users/models/user.py:820
msgid "User group" msgid "User group"
msgstr "用户组" msgstr "用户组"
@ -1924,7 +1924,7 @@ msgstr "默认"
msgid "Default asset group" msgid "Default asset group"
msgstr "默认资产组" msgstr "默认资产组"
#: assets/models/label.py:15 rbac/const.py:6 users/models/user.py:1033 #: assets/models/label.py:15 rbac/const.py:6 users/models/user.py:1043
msgid "System" msgid "System"
msgstr "系统" msgstr "系统"
@ -2565,7 +2565,7 @@ msgstr "登录 IP"
#: audits/models.py:200 audits/serializers.py:52 #: audits/models.py:200 audits/serializers.py:52
#: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/_mfa_confirm_modal.html:14
#: users/forms/profile.py:65 users/models/user.py:827 #: users/forms/profile.py:65 users/models/user.py:837
#: users/serializers/profile.py:102 #: users/serializers/profile.py:102
msgid "MFA" msgid "MFA"
msgstr "MFA" msgstr "MFA"
@ -2614,7 +2614,7 @@ msgstr "用户 %s %s 了当前资源"
#: audits/serializers.py:172 authentication/models/connection_token.py:47 #: audits/serializers.py:172 authentication/models/connection_token.py:47
#: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80 #: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80
#: tickets/models/ticket/apply_application.py:31 #: tickets/models/ticket/apply_application.py:31
#: tickets/models/ticket/apply_asset.py:20 users/models/user.py:845 #: tickets/models/ticket/apply_asset.py:20 users/models/user.py:855
msgid "Date expired" msgid "Date expired"
msgstr "失效日期" msgstr "失效日期"
@ -2647,29 +2647,29 @@ msgstr "认证令牌"
#: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73 #: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73
#: authentication/views/login.py:77 notifications/backends/__init__.py:11 #: authentication/views/login.py:77 notifications/backends/__init__.py:11
#: settings/serializers/auth/wecom.py:10 users/models/user.py:749 #: settings/serializers/auth/wecom.py:10 users/models/user.py:759
#: users/models/user.py:859 #: users/models/user.py:869
msgid "WeCom" msgid "WeCom"
msgstr "企业微信" msgstr "企业微信"
#: audits/signal_handlers/login_log.py:38 authentication/views/feishu.py:105 #: audits/signal_handlers/login_log.py:38 authentication/views/feishu.py:105
#: authentication/views/login.py:89 notifications/backends/__init__.py:14 #: authentication/views/login.py:89 notifications/backends/__init__.py:14
#: settings/serializers/auth/feishu.py:10 users/models/user.py:751 #: settings/serializers/auth/feishu.py:10 users/models/user.py:761
#: users/models/user.py:861 #: users/models/user.py:871
msgid "FeiShu" msgid "FeiShu"
msgstr "飞书" msgstr "飞书"
#: audits/signal_handlers/login_log.py:40 authentication/views/login.py:101 #: audits/signal_handlers/login_log.py:40 authentication/views/login.py:101
#: authentication/views/slack.py:87 notifications/backends/__init__.py:16 #: authentication/views/slack.py:87 notifications/backends/__init__.py:16
#: settings/serializers/auth/slack.py:10 users/models/user.py:753 #: settings/serializers/auth/slack.py:10 users/models/user.py:763
#: users/models/user.py:863 #: users/models/user.py:873
msgid "Slack" msgid "Slack"
msgstr "" msgstr ""
#: audits/signal_handlers/login_log.py:41 authentication/views/dingtalk.py:161 #: audits/signal_handlers/login_log.py:41 authentication/views/dingtalk.py:161
#: authentication/views/login.py:83 notifications/backends/__init__.py:12 #: authentication/views/login.py:83 notifications/backends/__init__.py:12
#: settings/serializers/auth/dingtalk.py:10 users/models/user.py:750 #: settings/serializers/auth/dingtalk.py:10 users/models/user.py:760
#: users/models/user.py:860 #: users/models/user.py:870
msgid "DingTalk" msgid "DingTalk"
msgstr "钉钉" msgstr "钉钉"
@ -2704,27 +2704,27 @@ msgstr "参数中的值必须包含 %s"
msgid "This action require verify your MFA" msgid "This action require verify your MFA"
msgstr "该操作需要验证您的 MFA, 请先开启并配置" msgstr "该操作需要验证您的 MFA, 请先开启并配置"
#: authentication/api/connection_token.py:260 #: authentication/api/connection_token.py:265
msgid "Reusable connection token is not allowed, global setting not enabled" msgid "Reusable connection token is not allowed, global setting not enabled"
msgstr "不允许使用可重复使用的连接令牌,未启用全局设置" msgstr "不允许使用可重复使用的连接令牌,未启用全局设置"
#: authentication/api/connection_token.py:374 #: authentication/api/connection_token.py:379
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "匿名账号不支持当前资产" msgstr "匿名账号不支持当前资产"
#: authentication/api/connection_token.py:394 #: authentication/api/connection_token.py:399
msgid "Account not found" msgid "Account not found"
msgstr "账号未找到" msgstr "账号未找到"
#: authentication/api/connection_token.py:397 #: authentication/api/connection_token.py:402
msgid "Permission expired" msgid "Permission expired"
msgstr "授权已过期" msgstr "授权已过期"
#: authentication/api/connection_token.py:430 #: authentication/api/connection_token.py:435
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL 动作是拒绝: {}({})" msgstr "ACL 动作是拒绝: {}({})"
#: authentication/api/connection_token.py:434 #: authentication/api/connection_token.py:439
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL 动作是复核" msgstr "ACL 动作是复核"
@ -2918,19 +2918,19 @@ msgstr "等待登录复核处理"
msgid "Login confirm ticket was {}" msgid "Login confirm ticket was {}"
msgstr "登录复核: {}" msgstr "登录复核: {}"
#: authentication/errors/failed.py:145 #: authentication/errors/failed.py:149
msgid "Current IP and Time period is not allowed" msgid "Current IP and Time period is not allowed"
msgstr "当前 IP 和时间段不被允许登录" msgstr "当前 IP 和时间段不被允许登录"
#: authentication/errors/failed.py:150 #: authentication/errors/failed.py:154
msgid "Please enter MFA code" msgid "Please enter MFA code"
msgstr "请输入 MFA 验证码" msgstr "请输入 MFA 验证码"
#: authentication/errors/failed.py:155 #: authentication/errors/failed.py:159
msgid "Please enter SMS code" msgid "Please enter SMS code"
msgstr "请输入短信验证码" msgstr "请输入短信验证码"
#: authentication/errors/failed.py:160 users/exceptions.py:15 #: authentication/errors/failed.py:164 users/exceptions.py:15
msgid "Phone not set" msgid "Phone not set"
msgstr "手机号没有设置" msgstr "手机号没有设置"
@ -3156,27 +3156,27 @@ msgstr "可以复用连接令牌"
msgid "Connection token" msgid "Connection token"
msgstr "连接令牌" msgstr "连接令牌"
#: authentication/models/connection_token.py:115 #: authentication/models/connection_token.py:118
msgid "Connection token inactive" msgid "Connection token inactive"
msgstr "连接令牌未激活" msgstr "连接令牌未激活"
#: authentication/models/connection_token.py:119 #: authentication/models/connection_token.py:122
msgid "Connection token expired at: {}" msgid "Connection token expired at: {}"
msgstr "连接令牌过期: {}" msgstr "连接令牌过期: {}"
#: authentication/models/connection_token.py:122 #: authentication/models/connection_token.py:125
msgid "No user or invalid user" msgid "No user or invalid user"
msgstr "没有用户或用户失效" msgstr "没有用户或用户失效"
#: authentication/models/connection_token.py:125 #: authentication/models/connection_token.py:128
msgid "No asset or inactive asset" msgid "No asset or inactive asset"
msgstr "没有资产或资产未激活" msgstr "没有资产或资产未激活"
#: authentication/models/connection_token.py:269 #: authentication/models/connection_token.py:272
msgid "Can view super connection token secret" msgid "Can view super connection token secret"
msgstr "可以查看超级连接令牌密文" msgstr "可以查看超级连接令牌密文"
#: authentication/models/connection_token.py:271 #: authentication/models/connection_token.py:274
msgid "Super connection token" msgid "Super connection token"
msgstr "超级连接令牌" msgstr "超级连接令牌"
@ -3253,7 +3253,7 @@ msgstr "动作"
#: authentication/serializers/connection_token.py:42 #: authentication/serializers/connection_token.py:42
#: perms/serializers/permission.py:40 perms/serializers/permission.py:60 #: perms/serializers/permission.py:40 perms/serializers/permission.py:60
#: users/serializers/user.py:97 users/serializers/user.py:173 #: users/serializers/user.py:100 users/serializers/user.py:177
msgid "Is expired" msgid "Is expired"
msgstr "已过期" msgstr "已过期"
@ -3267,8 +3267,8 @@ msgid "Access IP"
msgstr "IP 白名单" msgstr "IP 白名单"
#: authentication/serializers/token.py:92 perms/serializers/permission.py:39 #: authentication/serializers/token.py:92 perms/serializers/permission.py:39
#: perms/serializers/permission.py:61 users/serializers/user.py:98 #: perms/serializers/permission.py:61 users/serializers/user.py:101
#: users/serializers/user.py:170 #: users/serializers/user.py:174
msgid "Is valid" msgid "Is valid"
msgstr "是否有效" msgstr "是否有效"
@ -3293,13 +3293,13 @@ msgid "Show"
msgstr "显示" msgstr "显示"
#: authentication/templates/authentication/_access_key_modal.html:66 #: authentication/templates/authentication/_access_key_modal.html:66
#: users/const.py:42 users/models/user.py:644 users/serializers/profile.py:92 #: users/const.py:42 users/models/user.py:654 users/serializers/profile.py:92
#: users/templates/users/user_verify_mfa.html:36 #: users/templates/users/user_verify_mfa.html:36
msgid "Disable" msgid "Disable"
msgstr "禁用" msgstr "禁用"
#: authentication/templates/authentication/_access_key_modal.html:67 #: authentication/templates/authentication/_access_key_modal.html:67
#: users/const.py:43 users/models/user.py:645 users/serializers/profile.py:93 #: users/const.py:43 users/models/user.py:655 users/serializers/profile.py:93
#: users/templates/users/mfa_setting.html:26 #: users/templates/users/mfa_setting.html:26
#: users/templates/users/mfa_setting.html:68 #: users/templates/users/mfa_setting.html:68
msgid "Enable" msgid "Enable"
@ -3499,7 +3499,7 @@ msgid "Do you want to retry ?"
msgstr "是否重试 " msgstr "是否重试 "
#: authentication/utils.py:24 common/utils/ip/geoip/utils.py:24 #: authentication/utils.py:24 common/utils/ip/geoip/utils.py:24
#: xpack/plugins/cloud/const.py:32 #: xpack/plugins/cloud/const.py:33
msgid "LAN" msgid "LAN"
msgstr "局域网" msgstr "局域网"
@ -3765,7 +3765,7 @@ msgstr "忽略的"
msgid "discard time" msgid "discard time"
msgstr "忽略时间" msgstr "忽略时间"
#: common/db/models.py:33 users/models/user.py:848 #: common/db/models.py:33 users/models/user.py:858
msgid "Updated by" msgid "Updated by"
msgstr "最后更新者" msgstr "最后更新者"
@ -4086,14 +4086,20 @@ msgstr "任务 {} 不存在"
msgid "Task {} args or kwargs error" msgid "Task {} args or kwargs error"
msgstr "任务 {} 执行参数错误" msgstr "任务 {} 执行参数错误"
#: ops/api/job.py:81
#, python-brace-format
msgid "" msgid ""
"Asset ({asset}) must have at least one of the following protocols added: " "Asset ({asset}) must have at least one of the following protocols added: "
"SSH, SFTP, or WinRM" "SSH, SFTP, or WinRM"
msgstr "资产({asset})至少要添加ssh,sftp,winrm其中一种协议" msgstr "资产({asset})至少要添加ssh,sftp,winrm其中一种协议"
#: ops/api/job.py:82
#, python-brace-format
msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol" msgid "Asset ({asset}) authorization is missing SSH, SFTP, or WinRM protocol"
msgstr "资产({asset})授权缺少ssh,sftp或winrm协议" msgstr "资产({asset})授权缺少ssh,sftp或winrm协议"
#: ops/api/job.py:83
#, python-brace-format
msgid "Asset ({asset}) authorization lacks upload permissions" msgid "Asset ({asset}) authorization lacks upload permissions"
msgstr "资产({asset})授权缺少上传权限" msgstr "资产({asset})授权缺少上传权限"
@ -4771,7 +4777,7 @@ msgid "Scope"
msgstr "范围" msgstr "范围"
#: rbac/models/role.py:46 rbac/models/rolebinding.py:52 #: rbac/models/role.py:46 rbac/models/rolebinding.py:52
#: users/models/user.py:814 #: users/models/user.py:824
msgid "Role" msgid "Role"
msgstr "角色" msgstr "角色"
@ -4783,25 +4789,25 @@ msgstr "系统角色"
msgid "Organization role" msgid "Organization role"
msgstr "组织角色" msgstr "组织角色"
#: rbac/models/rolebinding.py:61 #: rbac/models/rolebinding.py:62
msgid "Role binding" msgid "Role binding"
msgstr "角色绑定" msgstr "角色绑定"
#: rbac/models/rolebinding.py:160 #: rbac/models/rolebinding.py:161
msgid "All organizations" msgid "All organizations"
msgstr "所有组织" msgstr "所有组织"
#: rbac/models/rolebinding.py:192 #: rbac/models/rolebinding.py:193
msgid "" msgid ""
"User last role in org, can not be delete, you can remove user from org " "User last role in org, can not be delete, you can remove user from org "
"instead" "instead"
msgstr "用户最后一个角色,不能删除,你可以将用户从组织移除" msgstr "用户最后一个角色,不能删除,你可以将用户从组织移除"
#: rbac/models/rolebinding.py:199 #: rbac/models/rolebinding.py:200
msgid "Organization role binding" msgid "Organization role binding"
msgstr "组织角色绑定" msgstr "组织角色绑定"
#: rbac/models/rolebinding.py:214 #: rbac/models/rolebinding.py:215
msgid "System role binding" msgid "System role binding"
msgstr "系统角色绑定" msgstr "系统角色绑定"
@ -6540,6 +6546,12 @@ msgstr "数据库客户端"
msgid "Remote Desktop" msgid "Remote Desktop"
msgstr "远程桌面客户端" msgstr "远程桌面客户端"
#: terminal/connect_methods.py:37
#, fuzzy
#| msgid "DB Guide"
msgid "RDP Guide"
msgstr "DB 连接向导"
#: terminal/const.py:12 #: terminal/const.py:12
msgid "Review & Reject" msgid "Review & Reject"
msgstr "审批 & 拒绝" msgstr "审批 & 拒绝"
@ -7238,7 +7250,7 @@ msgstr "端点后缀"
msgid "HOST" msgid "HOST"
msgstr "主机" msgstr "主机"
#: terminal/serializers/storage.py:146 users/models/user.py:834 #: terminal/serializers/storage.py:146 users/models/user.py:844
#: xpack/plugins/cloud/serializers/account_attrs.py:213 #: xpack/plugins/cloud/serializers/account_attrs.py:213
msgid "Private key" msgid "Private key"
msgstr "ssh私钥" msgstr "ssh私钥"
@ -7792,11 +7804,11 @@ msgstr "无效的审批动作"
msgid "This user is not authorized to approve this ticket" msgid "This user is not authorized to approve this ticket"
msgstr "此用户无权审批此工单" msgstr "此用户无权审批此工单"
#: users/api/user.py:136 #: users/api/user.py:155
msgid "Can not invite self" msgid "Can not invite self"
msgstr "不能邀请自己" msgstr "不能邀请自己"
#: users/api/user.py:189 #: users/api/user.py:208
msgid "Could not reset self otp, use profile reset instead" msgid "Could not reset self otp, use profile reset instead"
msgstr "不能在该页面重置 MFA 多因子认证, 请去个人信息页面重置" msgstr "不能在该页面重置 MFA 多因子认证, 请去个人信息页面重置"
@ -7947,7 +7959,7 @@ msgstr "不能和原来的密钥相同"
msgid "Not a valid ssh public key" msgid "Not a valid ssh public key"
msgstr "SSH密钥不合法" msgstr "SSH密钥不合法"
#: users/forms/profile.py:173 users/models/user.py:837 #: users/forms/profile.py:173 users/models/user.py:847
#: xpack/plugins/cloud/serializers/account_attrs.py:210 #: xpack/plugins/cloud/serializers/account_attrs.py:210
msgid "Public key" msgid "Public key"
msgstr "SSH公钥" msgstr "SSH公钥"
@ -7956,78 +7968,78 @@ msgstr "SSH公钥"
msgid "Preference" msgid "Preference"
msgstr "用户设置" msgstr "用户设置"
#: users/models/user.py:646 users/serializers/profile.py:94 #: users/models/user.py:656 users/serializers/profile.py:94
msgid "Force enable" msgid "Force enable"
msgstr "强制启用" msgstr "强制启用"
#: users/models/user.py:752 #: users/models/user.py:762
msgid "Lark" msgid "Lark"
msgstr "" msgstr ""
#: users/models/user.py:816 users/serializers/user.py:171 #: users/models/user.py:826 users/serializers/user.py:175
msgid "Is service account" msgid "Is service account"
msgstr "服务账号" msgstr "服务账号"
#: users/models/user.py:818 #: users/models/user.py:828
msgid "Avatar" msgid "Avatar"
msgstr "头像" msgstr "头像"
#: users/models/user.py:821 #: users/models/user.py:831
msgid "Wechat" msgid "Wechat"
msgstr "微信" msgstr "微信"
#: users/models/user.py:824 users/serializers/user.py:108 #: users/models/user.py:834 users/serializers/user.py:111
msgid "Phone" msgid "Phone"
msgstr "手机" msgstr "手机"
#: users/models/user.py:830 #: users/models/user.py:840
msgid "OTP secret key" msgid "OTP secret key"
msgstr "OTP 密钥" msgstr "OTP 密钥"
# msgid "Private key" # msgid "Private key"
# msgstr "ssh私钥" # msgstr "ssh私钥"
#: users/models/user.py:842 users/serializers/profile.py:128 #: users/models/user.py:852 users/serializers/profile.py:128
#: users/serializers/user.py:168 #: users/serializers/user.py:172
msgid "Is first login" msgid "Is first login"
msgstr "首次登录" msgstr "首次登录"
#: users/models/user.py:852 #: users/models/user.py:862
msgid "Date password last updated" msgid "Date password last updated"
msgstr "最后更新密码日期" msgstr "最后更新密码日期"
#: users/models/user.py:855 #: users/models/user.py:865
msgid "Need update password" msgid "Need update password"
msgstr "需要更新密码" msgstr "需要更新密码"
#: users/models/user.py:857 #: users/models/user.py:867
msgid "Date api key used" msgid "Date api key used"
msgstr "Api key 最后使用日期" msgstr "Api key 最后使用日期"
#: users/models/user.py:990 #: users/models/user.py:1000
msgid "Can not delete admin user" msgid "Can not delete admin user"
msgstr "无法删除管理员用户" msgstr "无法删除管理员用户"
#: users/models/user.py:1018 #: users/models/user.py:1028
msgid "Can invite user" msgid "Can invite user"
msgstr "可以邀请用户" msgstr "可以邀请用户"
#: users/models/user.py:1019 #: users/models/user.py:1029
msgid "Can remove user" msgid "Can remove user"
msgstr "可以移除用户" msgstr "可以移除用户"
#: users/models/user.py:1020 #: users/models/user.py:1030
msgid "Can match user" msgid "Can match user"
msgstr "可以匹配用户" msgstr "可以匹配用户"
#: users/models/user.py:1029 #: users/models/user.py:1039
msgid "Administrator" msgid "Administrator"
msgstr "管理员" msgstr "管理员"
#: users/models/user.py:1032 #: users/models/user.py:1042
msgid "Administrator is the super user of system" msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员" msgstr "Administrator是初始的超级管理员"
#: users/models/user.py:1057 #: users/models/user.py:1067
msgid "User password history" msgid "User password history"
msgstr "用户密码历史" msgstr "用户密码历史"
@ -8157,67 +8169,72 @@ msgstr "密码不满足安全规则"
msgid "The new password cannot be the last {} passwords" msgid "The new password cannot be the last {} passwords"
msgstr "新密码不能是最近 {} 次的密码" msgstr "新密码不能是最近 {} 次的密码"
#: users/serializers/user.py:42 #: users/serializers/user.py:44
msgid "System roles" msgid "System roles"
msgstr "系统角色" msgstr "系统角色"
#: users/serializers/user.py:46 #: users/serializers/user.py:48
msgid "Org roles" msgid "Org roles"
msgstr "组织角色" msgstr "组织角色"
#: users/serializers/user.py:90 #: users/serializers/user.py:51
#| msgid "Organization role"
msgid "Organizations and roles"
msgstr "组织和角色"
#: users/serializers/user.py:93
msgid "Password strategy" msgid "Password strategy"
msgstr "密码策略" msgstr "密码策略"
#: users/serializers/user.py:92 #: users/serializers/user.py:95
msgid "MFA enabled" msgid "MFA enabled"
msgstr "MFA 已启用" msgstr "MFA 已启用"
#: users/serializers/user.py:94 #: users/serializers/user.py:97
msgid "MFA force enabled" msgid "MFA force enabled"
msgstr "强制 MFA" msgstr "强制 MFA"
#: users/serializers/user.py:96 #: users/serializers/user.py:99
msgid "Login blocked" msgid "Login blocked"
msgstr "登录被锁定" msgstr "登录被锁定"
#: users/serializers/user.py:99 users/serializers/user.py:177 #: users/serializers/user.py:102 users/serializers/user.py:181
msgid "Is OTP bound" msgid "Is OTP bound"
msgstr "是否绑定了虚拟 MFA" msgstr "是否绑定了虚拟 MFA"
#: users/serializers/user.py:100 #: users/serializers/user.py:103
msgid "Super Administrator" msgid "Super Administrator"
msgstr "超级管理员" msgstr "超级管理员"
#: users/serializers/user.py:101 #: users/serializers/user.py:104
msgid "Organization Administrator" msgid "Organization Administrator"
msgstr "组织管理员" msgstr "组织管理员"
#: users/serializers/user.py:103 #: users/serializers/user.py:106
msgid "Can public key authentication" msgid "Can public key authentication"
msgstr "可以使用公钥认证" msgstr "可以使用公钥认证"
#: users/serializers/user.py:172 #: users/serializers/user.py:176
msgid "Is org admin" msgid "Is org admin"
msgstr "组织管理员" msgstr "组织管理员"
#: users/serializers/user.py:174 #: users/serializers/user.py:178
msgid "Avatar url" msgid "Avatar url"
msgstr "头像路径" msgstr "头像路径"
#: users/serializers/user.py:178 #: users/serializers/user.py:182
msgid "MFA level" msgid "MFA level"
msgstr "MFA 级别" msgstr "MFA 级别"
#: users/serializers/user.py:289 #: users/serializers/user.py:304
msgid "Select users" msgid "Select users"
msgstr "选择用户" msgstr "选择用户"
#: users/serializers/user.py:290 #: users/serializers/user.py:305
msgid "For security, only list several users" msgid "For security, only list several users"
msgstr "为了安全,仅列出几个用户" msgstr "为了安全,仅列出几个用户"
#: users/serializers/user.py:323 #: users/serializers/user.py:338
msgid "name not unique" msgid "name not unique"
msgstr "名称重复" msgstr "名称重复"
@ -8512,11 +8529,11 @@ msgid ""
"The current task is not synchronized with unmatched policy assets, skipping" "The current task is not synchronized with unmatched policy assets, skipping"
msgstr "" msgstr ""
#: xpack/plugins/cloud/api.py:58 #: xpack/plugins/cloud/api.py:60
msgid "Test connection successful" msgid "Test connection successful"
msgstr "测试成功" msgstr "测试成功"
#: xpack/plugins/cloud/api.py:60 #: xpack/plugins/cloud/api.py:62
msgid "Test connection failed: {}" msgid "Test connection failed: {}"
msgstr "测试连接失败:{}" msgstr "测试连接失败:{}"
@ -8568,87 +8585,91 @@ msgstr "谷歌云"
msgid "UCloud" msgid "UCloud"
msgstr "ucloud" msgstr "ucloud"
#: xpack/plugins/cloud/const.py:22 #: xpack/plugins/cloud/const.py:21
msgid "Volcengine"
msgstr ""
#: xpack/plugins/cloud/const.py:23
msgid "VMware" msgid "VMware"
msgstr "VMware" msgstr "VMware"
#: xpack/plugins/cloud/const.py:23 xpack/plugins/cloud/providers/nutanix.py:15 #: xpack/plugins/cloud/const.py:24 xpack/plugins/cloud/providers/nutanix.py:15
msgid "Nutanix" msgid "Nutanix"
msgstr "Nutanix" msgstr "Nutanix"
#: xpack/plugins/cloud/const.py:24 #: xpack/plugins/cloud/const.py:25
msgid "Huawei Private Cloud" msgid "Huawei Private Cloud"
msgstr "华为私有云" msgstr "华为私有云"
#: xpack/plugins/cloud/const.py:25 #: xpack/plugins/cloud/const.py:26
msgid "Qingyun Private Cloud" msgid "Qingyun Private Cloud"
msgstr "青云私有云" msgstr "青云私有云"
#: xpack/plugins/cloud/const.py:26 #: xpack/plugins/cloud/const.py:27
msgid "CTYun Private Cloud" msgid "CTYun Private Cloud"
msgstr "天翼私有云" msgstr "天翼私有云"
#: xpack/plugins/cloud/const.py:27 #: xpack/plugins/cloud/const.py:28
msgid "OpenStack" msgid "OpenStack"
msgstr "OpenStack" msgstr "OpenStack"
#: xpack/plugins/cloud/const.py:28 xpack/plugins/cloud/providers/zstack.py:21 #: xpack/plugins/cloud/const.py:29 xpack/plugins/cloud/providers/zstack.py:21
msgid "ZStack" msgid "ZStack"
msgstr "ZStack" msgstr "ZStack"
#: xpack/plugins/cloud/const.py:29 #: xpack/plugins/cloud/const.py:30
msgid "Fusion Compute" msgid "Fusion Compute"
msgstr "融合计算" msgstr "融合计算"
#: xpack/plugins/cloud/const.py:30 #: xpack/plugins/cloud/const.py:31
msgid "SCP" msgid "SCP"
msgstr "深信服SCP" msgstr "深信服SCP"
#: xpack/plugins/cloud/const.py:31 #: xpack/plugins/cloud/const.py:32
msgid "Apsara Stack" msgid "Apsara Stack"
msgstr "阿里云专有云" msgstr "阿里云专有云"
#: xpack/plugins/cloud/const.py:36 #: xpack/plugins/cloud/const.py:37
msgid "Private IP" msgid "Private IP"
msgstr "私有IP" msgstr "私有IP"
#: xpack/plugins/cloud/const.py:37 #: xpack/plugins/cloud/const.py:38
msgid "Public IP" msgid "Public IP"
msgstr "公网IP" msgstr "公网IP"
#: xpack/plugins/cloud/const.py:41 xpack/plugins/cloud/models.py:299 #: xpack/plugins/cloud/const.py:42 xpack/plugins/cloud/models.py:299
msgid "Instance name" msgid "Instance name"
msgstr "实例名称" msgstr "实例名称"
#: xpack/plugins/cloud/const.py:42 #: xpack/plugins/cloud/const.py:43
msgid "Instance name and Partial IP" msgid "Instance name and Partial IP"
msgstr "实例名称和部分IP" msgstr "实例名称和部分IP"
#: xpack/plugins/cloud/const.py:47 #: xpack/plugins/cloud/const.py:48
msgid "Succeed" msgid "Succeed"
msgstr "成功" msgstr "成功"
#: xpack/plugins/cloud/const.py:51 #: xpack/plugins/cloud/const.py:52
msgid "Unsync" msgid "Unsync"
msgstr "未同步" msgstr "未同步"
#: xpack/plugins/cloud/const.py:52 #: xpack/plugins/cloud/const.py:53
msgid "New Sync" msgid "New Sync"
msgstr "新同步" msgstr "新同步"
#: xpack/plugins/cloud/const.py:53 #: xpack/plugins/cloud/const.py:54
msgid "Synced" msgid "Synced"
msgstr "已同步" msgstr "已同步"
#: xpack/plugins/cloud/const.py:54 #: xpack/plugins/cloud/const.py:55
msgid "Released" msgid "Released"
msgstr "已释放" msgstr "已释放"
#: xpack/plugins/cloud/const.py:58 #: xpack/plugins/cloud/const.py:59
msgid "And" msgid "And"
msgstr "与" msgstr "与"
#: xpack/plugins/cloud/const.py:59 #: xpack/plugins/cloud/const.py:60
msgid "Or" msgid "Or"
msgstr "或" msgstr "或"
@ -9005,11 +9026,11 @@ msgstr "TR-Istanbul"
msgid "CN East-Suqian" msgid "CN East-Suqian"
msgstr "华东-宿迁" msgstr "华东-宿迁"
#: xpack/plugins/cloud/serializers/account.py:68 #: xpack/plugins/cloud/serializers/account.py:69
msgid "Validity display" msgid "Validity display"
msgstr "有效性显示" msgstr "有效性显示"
#: xpack/plugins/cloud/serializers/account.py:69 #: xpack/plugins/cloud/serializers/account.py:70
msgid "Provider display" msgid "Provider display"
msgstr "服务商显示" msgstr "服务商显示"

View File

@ -63,11 +63,12 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV
return super().match(request, *args, **kwargs) return super().match(request, *args, **kwargs)
def get_serializer(self, *args, **kwargs): def get_serializer(self, *args, **kwargs):
"""重写 get_serializer用于设置用户的角色缓存 """重写 get_serializer, 用于设置用户的角色缓存
放到 paginate_queryset 里面会导致 导出有问题 因为导出的时候没有 pager 放到 paginate_queryset 里面会导致 导出有问题, 因为导出的时候没有 pager
""" """
if len(args) == 1 and kwargs.get('many'): if len(args) == 1 and kwargs.get('many'):
queryset = self.set_users_roles_for_cache(args[0]) queryset = self.set_users_roles_for_cache(args[0])
queryset = self.set_users_orgs_roles(args[0])
args = (queryset,) args = (queryset,)
return super().get_serializer(*args, **kwargs) return super().get_serializer(*args, **kwargs)
@ -98,6 +99,24 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV
u.system_roles.cache_set(system_roles) u.system_roles.cache_set(system_roles)
return queryset_list return queryset_list
@staticmethod
def set_users_orgs_roles(queryset):
user_ids = [u.id for u in queryset]
rbs = RoleBinding.objects_raw.filter(
user__in=user_ids, scope='org'
).prefetch_related('user', 'role', 'org')
user_rbs_mapper = defaultdict(set)
for rb in rbs:
user_rbs_mapper[rb.user_id].add(rb)
for u in queryset:
user_rbs = user_rbs_mapper[u.id]
orgs_roles = defaultdict(set)
for rb in user_rbs:
orgs_roles[rb.org_name].add(rb.role.display_name)
setattr(u, 'orgs_roles', orgs_roles)
return queryset
def perform_create(self, serializer): def perform_create(self, serializer):
users = serializer.save() users = serializer.save()
if isinstance(users, User): if isinstance(users, User):

View File

@ -435,6 +435,14 @@ class RoleMixin:
cache.set(key, data, 60 * 60) cache.set(key, data, 60 * 60)
return data return data
@lazyproperty
def orgs_roles(self):
orgs_roles = defaultdict(set)
rbs = RoleBinding.objects_raw.filter(user=self, scope='org').prefetch_related('role', 'org')
for rb in rbs:
orgs_roles[rb.org_name].add(str(rb.role.display_name))
return orgs_roles
def expire_rbac_perms_cache(self): def expire_rbac_perms_cache(self):
key = self.PERM_CACHE_KEY.format(self.id, '*') key = self.PERM_CACHE_KEY.format(self.id, '*')
cache.delete_pattern(key) cache.delete_pattern(key)
@ -928,14 +936,6 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, LabeledMixin, JSONFilterM
def is_local(self): def is_local(self):
return self.source == self.Source.local.value return self.source == self.Source.local.value
@property
def orgs_roles(self):
orgs_roles = defaultdict(set)
rbs = RoleBinding.objects_raw.filter(user=self, scope='org').prefetch_related('role', 'org')
for rb in rbs:
orgs_roles[rb.org_name].add(str(rb.role.display_name))
return orgs_roles
def is_password_authenticate(self): def is_password_authenticate(self):
cas = self.Source.cas cas = self.Source.cas
saml2 = self.Source.saml2 saml2 = self.Source.saml2

View File

@ -48,7 +48,7 @@ class RolesSerializerMixin(serializers.Serializer):
label=_("Org roles"), many=True, required=False, label=_("Org roles"), many=True, required=False,
default=default_org_roles default=default_org_roles
) )
orgs_roles = serializers.JSONField(read_only=True, label=_("Organization and roles relations")) orgs_roles = serializers.JSONField(read_only=True, label=_("Organizations and roles"))
def pop_roles_if_need(self, fields): def pop_roles_if_need(self, fields):
request = self.context.get("request") request = self.context.get("request")
@ -148,7 +148,7 @@ class UserSerializer(RolesSerializerMixin, CommonBulkSerializerMixin, ResourceLa
# 外键的字段 # 外键的字段
fields_fk = [] fields_fk = []
# 多对多字段 # 多对多字段
fields_m2m = ["groups", "system_roles", "org_roles", "labels"] fields_m2m = ["groups", "system_roles", "org_roles", "labels", "orgs_roles"]
# 在serializer 上定义的字段 # 在serializer 上定义的字段
fields_custom = ["login_blocked", "password_strategy"] fields_custom = ["login_blocked", "password_strategy"]
fields = fields_verbose + fields_fk + fields_m2m + fields_custom fields = fields_verbose + fields_fk + fields_m2m + fields_custom
@ -288,7 +288,7 @@ class UserRetrieveSerializer(UserSerializer):
) )
class Meta(UserSerializer.Meta): class Meta(UserSerializer.Meta):
fields = UserSerializer.Meta.fields + ["login_confirm_settings", "orgs_roles"] fields = UserSerializer.Meta.fields + ["login_confirm_settings"]
class MiniUserSerializer(serializers.ModelSerializer): class MiniUserSerializer(serializers.ModelSerializer):