diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index 42318fc26..c02c19988 100644 --- a/apps/locale/ja/LC_MESSAGES/django.po +++ b/apps/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,7 +36,7 @@ msgstr "成功: %s、失敗: %s、合計: %s" #: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47 #: settings/serializers/msg.py:35 terminal/serializers/storage.py:123 #: 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/user_password_verify.html:18 #: xpack/plugins/cloud/serializers/account_attrs.py:28 @@ -80,7 +80,7 @@ msgstr "動的コード" msgid "Anonymous account" msgstr "匿名ユーザー" -#: accounts/const/account.py:25 users/models/user.py:742 +#: accounts/const/account.py:25 users/models/user.py:752 msgid "Local" msgstr "ローカル" @@ -105,7 +105,7 @@ msgstr "更新" #: accounts/const/account.py:33 accounts/const/automation.py:109 #: accounts/serializers/automations/change_secret.py:164 audits/const.py:62 #: 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" msgstr "失敗しました" @@ -207,7 +207,7 @@ msgstr "作成のみ" #: authentication/serializers/password_mfa.py:24 #: notifications/backends/__init__.py:10 settings/serializers/msg.py:22 #: 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/views/profile/reset.py:94 msgid "Email" @@ -295,7 +295,7 @@ msgid "Version" msgstr "バージョン" #: accounts/models/account.py:57 accounts/serializers/account/account.py:215 -#: users/models/user.py:849 +#: users/models/user.py:859 msgid "Source" msgstr "ソース" @@ -309,7 +309,7 @@ msgstr "ソース ID" #: accounts/templates/accounts/change_secret_failed_info.html:12 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: 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 #: perms/serializers/permission.py:41 settings/serializers/msg.py:33 #: 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_oauth_bind.html:9 #: 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 #: xpack/plugins/cloud/serializers/account_attrs.py:26 msgid "Username" @@ -638,7 +638,7 @@ msgstr "パスワードルール" #: terminal/models/virtualapp/provider.py:10 #: terminal/models/virtualapp/virtualapp.py:19 tickets/api/ticket.py:87 #: 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/serializers/task.py:70 msgid "Name" @@ -654,7 +654,7 @@ msgstr "特権アカウント" #: authentication/serializers/connect_token_secret.py:117 #: terminal/models/applet/applet.py:40 #: 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" msgstr "アクティブです。" @@ -821,7 +821,7 @@ msgstr "編集済み" #: acls/templates/acls/asset_login_reminder.html:6 #: assets/models/automations/base.py:19 #: 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 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 msgid "Assets" @@ -863,8 +863,8 @@ msgstr "ID" #: terminal/notifications.py:205 terminal/serializers/command.py:16 #: terminal/templates/terminal/_msg_command_warning.html:6 #: terminal/templates/terminal/_msg_session_sharing.html:6 -#: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1009 -#: users/models/user.py:1047 users/serializers/group.py:21 +#: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1019 +#: users/models/user.py:1057 users/serializers/group.py:21 msgid "User" msgstr "ユーザー" @@ -960,7 +960,7 @@ msgstr "关联平台,可以配置推送参数,如果不关联,则使用默 #: terminal/models/component/endpoint.py:119 #: terminal/models/session/session.py:47 #: 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 msgid "Comment" msgstr "コメント" @@ -1350,7 +1350,7 @@ msgid "Applications" msgstr "アプリケーション" #: 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" msgstr "ツールバーの" @@ -1401,7 +1401,7 @@ msgid " - Platform {} ansible disabled" msgstr " - プラットフォーム {} ansible 無効" #: assets/automations/ping_gateway/manager.py:33 -#: authentication/models/connection_token.py:128 +#: authentication/models/connection_token.py:131 msgid "No account" msgstr "アカウントなし" @@ -1684,18 +1684,18 @@ msgstr "SSHパブリックキー" #: assets/models/_user.py:28 assets/models/automations/base.py:114 #: 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 -#: ops/models/job.py:235 users/models/user.py:1048 +#: ops/models/job.py:235 users/models/user.py:1058 msgid "Date created" msgstr "作成された日付" #: 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" msgstr "更新日" #: assets/models/_user.py:30 assets/models/cmd_filter.py:44 #: 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 msgid "Created by" msgstr "によって作成された" @@ -1884,7 +1884,7 @@ msgstr "確認済みの日付" #: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:66 #: perms/serializers/permission.py:34 users/models/group.py:25 -#: users/models/user.py:810 +#: users/models/user.py:820 msgid "User group" msgstr "ユーザーグループ" @@ -1934,7 +1934,7 @@ msgstr "デフォルト" msgid "Default asset group" 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" msgstr "システム" @@ -2584,7 +2584,7 @@ msgstr "ログインIP" #: audits/models.py:200 audits/serializers.py:52 #: 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 msgid "MFA" msgstr "MFA" @@ -2633,7 +2633,7 @@ msgstr "ユーザー %s %s が現在のリソースをサブスクライブし #: audits/serializers.py:172 authentication/models/connection_token.py:47 #: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80 #: 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" msgstr "期限切れの日付" @@ -2666,29 +2666,29 @@ msgstr "認証トークン" #: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73 #: authentication/views/login.py:77 notifications/backends/__init__.py:11 -#: settings/serializers/auth/wecom.py:10 users/models/user.py:749 -#: users/models/user.py:859 +#: settings/serializers/auth/wecom.py:10 users/models/user.py:759 +#: users/models/user.py:869 msgid "WeCom" msgstr "企業微信" #: audits/signal_handlers/login_log.py:38 authentication/views/feishu.py:105 #: authentication/views/login.py:89 notifications/backends/__init__.py:14 -#: settings/serializers/auth/feishu.py:10 users/models/user.py:751 -#: users/models/user.py:861 +#: settings/serializers/auth/feishu.py:10 users/models/user.py:761 +#: users/models/user.py:871 msgid "FeiShu" msgstr "本を飛ばす" #: audits/signal_handlers/login_log.py:40 authentication/views/login.py:101 #: authentication/views/slack.py:87 notifications/backends/__init__.py:16 -#: settings/serializers/auth/slack.py:10 users/models/user.py:753 -#: users/models/user.py:863 +#: settings/serializers/auth/slack.py:10 users/models/user.py:763 +#: users/models/user.py:873 msgid "Slack" msgstr "" #: audits/signal_handlers/login_log.py:41 authentication/views/dingtalk.py:161 #: authentication/views/login.py:83 notifications/backends/__init__.py:12 -#: settings/serializers/auth/dingtalk.py:10 users/models/user.py:750 -#: users/models/user.py:860 +#: settings/serializers/auth/dingtalk.py:10 users/models/user.py:760 +#: users/models/user.py:870 msgid "DingTalk" msgstr "DingTalk" @@ -2723,29 +2723,29 @@ msgstr "パラメータの値には必ず %s が含まれます" msgid "This action require verify your 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" msgstr "" "再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効に" "なっていません" -#: authentication/api/connection_token.py:374 +#: authentication/api/connection_token.py:379 msgid "Anonymous account is not supported for this asset" msgstr "匿名アカウントはこのプロパティではサポートされていません" -#: authentication/api/connection_token.py:394 +#: authentication/api/connection_token.py:399 msgid "Account not found" msgstr "アカウントが見つかりません" -#: authentication/api/connection_token.py:397 +#: authentication/api/connection_token.py:402 msgid "Permission expired" msgstr "承認の有効期限が切れています" -#: authentication/api/connection_token.py:430 +#: authentication/api/connection_token.py:435 msgid "ACL action is reject: {}({})" msgstr "ACL アクションは拒否です: {}({})" -#: authentication/api/connection_token.py:434 +#: authentication/api/connection_token.py:439 msgid "ACL action is review" msgstr "ACL アクションはレビューです" @@ -2948,19 +2948,19 @@ msgstr "受け入れのためのログイン確認チケットを待つ" msgid "Login confirm ticket was {}" msgstr "ログイン確認チケットは {} でした" -#: authentication/errors/failed.py:145 +#: authentication/errors/failed.py:149 msgid "Current IP and Time period is not allowed" msgstr "現在の IP と期間はログインを許可されていません" -#: authentication/errors/failed.py:150 +#: authentication/errors/failed.py:154 msgid "Please enter MFA code" msgstr "MFAコードを入力してください" -#: authentication/errors/failed.py:155 +#: authentication/errors/failed.py:159 msgid "Please enter SMS code" msgstr "SMSコードを入力してください" -#: authentication/errors/failed.py:160 users/exceptions.py:15 +#: authentication/errors/failed.py:164 users/exceptions.py:15 msgid "Phone not set" msgstr "電話が設定されていない" @@ -3190,27 +3190,27 @@ msgstr "接続トークンを再利用できます" msgid "Connection token" msgstr "接続トークン" -#: authentication/models/connection_token.py:115 +#: authentication/models/connection_token.py:118 msgid "Connection token inactive" msgstr "接続トークンがアクティブ化されていません" -#: authentication/models/connection_token.py:119 +#: authentication/models/connection_token.py:122 msgid "Connection token expired at: {}" msgstr "接続トークンの有効期限: {}" -#: authentication/models/connection_token.py:122 +#: authentication/models/connection_token.py:125 msgid "No user or invalid user" msgstr "ユーザーなしまたは期限切れのユーザー" -#: authentication/models/connection_token.py:125 +#: authentication/models/connection_token.py:128 msgid "No asset or inactive asset" msgstr "アセットがないか、有効化されていないアセット" -#: authentication/models/connection_token.py:269 +#: authentication/models/connection_token.py:272 msgid "Can view super connection token secret" msgstr "スーパー接続トークンのシークレットを表示できます" -#: authentication/models/connection_token.py:271 +#: authentication/models/connection_token.py:274 msgid "Super connection token" msgstr "スーパー接続トークン" @@ -3287,7 +3287,7 @@ msgstr "アクション" #: authentication/serializers/connection_token.py:42 #: 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" msgstr "期限切れです" @@ -3301,8 +3301,8 @@ msgid "Access IP" msgstr "Access IP" #: authentication/serializers/token.py:92 perms/serializers/permission.py:39 -#: perms/serializers/permission.py:61 users/serializers/user.py:98 -#: users/serializers/user.py:170 +#: perms/serializers/permission.py:61 users/serializers/user.py:101 +#: users/serializers/user.py:174 msgid "Is valid" msgstr "有効です" @@ -3327,13 +3327,13 @@ msgid "Show" msgstr "表示" #: 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 msgid "Disable" msgstr "無効化" #: 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:68 msgid "Enable" @@ -3545,7 +3545,7 @@ msgid "Do you want to retry ?" msgstr "再試行しますか?" #: 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" msgstr "ローカルエリアネットワーク" @@ -3811,7 +3811,7 @@ msgstr "は破棄されます" msgid "discard time" msgstr "時間を捨てる" -#: common/db/models.py:33 users/models/user.py:848 +#: common/db/models.py:33 users/models/user.py:858 msgid "Updated by" msgstr "によって更新" @@ -4137,16 +4137,23 @@ msgstr "タスクは存在しません" msgid "Task {} args or kwargs error" msgstr "タスク実行パラメータエラー" +#: ops/api/job.py:81 +#, python-brace-format msgid "" "Asset ({asset}) must have at least one of the following protocols added: " "SSH, SFTP, or WinRM" 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" -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" msgstr "資産({asset})の認証にはアップロード権限が不足しています" @@ -4827,7 +4834,7 @@ msgid "Scope" msgstr "スコープ" #: rbac/models/role.py:46 rbac/models/rolebinding.py:52 -#: users/models/user.py:814 +#: users/models/user.py:824 msgid "Role" msgstr "ロール" @@ -4839,26 +4846,26 @@ msgstr "システムの役割" msgid "Organization role" msgstr "組織の役割" -#: rbac/models/rolebinding.py:61 +#: rbac/models/rolebinding.py:62 msgid "Role binding" msgstr "ロールバインディング" -#: rbac/models/rolebinding.py:160 +#: rbac/models/rolebinding.py:161 msgid "All organizations" msgstr "全ての組織" -#: rbac/models/rolebinding.py:192 +#: rbac/models/rolebinding.py:193 msgid "" "User last role in org, can not be delete, you can remove user from org " "instead" msgstr "" "ユーザーの最後のロールは削除できません。ユーザーを組織から削除できます。" -#: rbac/models/rolebinding.py:199 +#: rbac/models/rolebinding.py:200 msgid "Organization role binding" msgstr "組織の役割バインディング" -#: rbac/models/rolebinding.py:214 +#: rbac/models/rolebinding.py:215 msgid "System role binding" msgstr "システムロールバインディング" @@ -6638,6 +6645,12 @@ msgstr "データベース クライアント" msgid "Remote Desktop" msgstr "リモートデスクトップ" +#: terminal/connect_methods.py:37 +#, fuzzy +#| msgid "DB Guide" +msgid "RDP Guide" +msgstr "DB 接続ウィザード" + #: terminal/const.py:12 msgid "Review & Reject" msgstr "レビューと拒否" @@ -7343,7 +7356,7 @@ msgstr "エンドポイントサフィックス" msgid "HOST" 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 msgid "Private key" msgstr "ssh秘密鍵" @@ -7903,11 +7916,11 @@ msgstr "無効な承認アクション" msgid "This user is not authorized to approve this ticket" msgstr "このユーザーはこの作業指示を承認する権限がありません" -#: users/api/user.py:136 +#: users/api/user.py:155 msgid "Can not invite self" msgstr "自分自身を招待することはできません" -#: users/api/user.py:189 +#: users/api/user.py:208 msgid "Could not reset self otp, use profile reset instead" msgstr "自己otpをリセットできませんでした、代わりにプロファイルリセットを使用" @@ -8058,7 +8071,7 @@ msgstr "公開鍵は古いものと同じであってはなりません。" msgid "Not a valid ssh public key" 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 msgid "Public key" msgstr "公開キー" @@ -8067,78 +8080,78 @@ msgstr "公開キー" msgid "Preference" msgstr "ユーザー設定" -#: users/models/user.py:646 users/serializers/profile.py:94 +#: users/models/user.py:656 users/serializers/profile.py:94 msgid "Force enable" msgstr "強制有効" -#: users/models/user.py:752 +#: users/models/user.py:762 msgid "Lark" 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" msgstr "サービスアカウントです" -#: users/models/user.py:818 +#: users/models/user.py:828 msgid "Avatar" msgstr "アバター" -#: users/models/user.py:821 +#: users/models/user.py:831 msgid "Wechat" msgstr "微信" -#: users/models/user.py:824 users/serializers/user.py:108 +#: users/models/user.py:834 users/serializers/user.py:111 msgid "Phone" msgstr "電話" -#: users/models/user.py:830 +#: users/models/user.py:840 msgid "OTP secret key" msgstr "OTP 秘密" # msgid "Private key" # msgstr "ssh秘密鍵" -#: users/models/user.py:842 users/serializers/profile.py:128 -#: users/serializers/user.py:168 +#: users/models/user.py:852 users/serializers/profile.py:128 +#: users/serializers/user.py:172 msgid "Is first login" msgstr "最初のログインです" -#: users/models/user.py:852 +#: users/models/user.py:862 msgid "Date password last updated" msgstr "最終更新日パスワード" -#: users/models/user.py:855 +#: users/models/user.py:865 msgid "Need update password" msgstr "更新パスワードが必要" -#: users/models/user.py:857 +#: users/models/user.py:867 msgid "Date api key used" msgstr "Api key 最後に使用した日付" -#: users/models/user.py:990 +#: users/models/user.py:1000 msgid "Can not delete admin user" msgstr "管理者ユーザーを削除できませんでした" -#: users/models/user.py:1018 +#: users/models/user.py:1028 msgid "Can invite user" msgstr "ユーザーを招待できます" -#: users/models/user.py:1019 +#: users/models/user.py:1029 msgid "Can remove user" msgstr "ユーザーを削除できます" -#: users/models/user.py:1020 +#: users/models/user.py:1030 msgid "Can match user" msgstr "ユーザーに一致できます" -#: users/models/user.py:1029 +#: users/models/user.py:1039 msgid "Administrator" msgstr "管理者" -#: users/models/user.py:1032 +#: users/models/user.py:1042 msgid "Administrator is the super user of system" msgstr "管理者はシステムのスーパーユーザーです" -#: users/models/user.py:1057 +#: users/models/user.py:1067 msgid "User password history" msgstr "ユーザーパスワード履歴" @@ -8272,67 +8285,71 @@ msgstr "パスワードがセキュリティルールと一致しない" msgid "The new password cannot be the last {} passwords" msgstr "新しいパスワードを最後の {} 個のパスワードにすることはできません" -#: users/serializers/user.py:42 +#: users/serializers/user.py:44 msgid "System roles" msgstr "システムの役割" -#: users/serializers/user.py:46 +#: users/serializers/user.py:48 msgid "Org roles" msgstr "組織ロール" -#: users/serializers/user.py:90 +#: users/serializers/user.py:51 +msgid "Organizations and roles" +msgstr "そしきとやくわり" + +#: users/serializers/user.py:93 msgid "Password strategy" msgstr "パスワード戦略" -#: users/serializers/user.py:92 +#: users/serializers/user.py:95 msgid "MFA enabled" msgstr "MFA有効化" -#: users/serializers/user.py:94 +#: users/serializers/user.py:97 msgid "MFA force enabled" msgstr "MFAフォース有効化" -#: users/serializers/user.py:96 +#: users/serializers/user.py:99 msgid "Login blocked" 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" msgstr "仮想MFAがバインドされているか" -#: users/serializers/user.py:100 +#: users/serializers/user.py:103 msgid "Super Administrator" msgstr "スーパーアドミニストレーター" -#: users/serializers/user.py:101 +#: users/serializers/user.py:104 msgid "Organization Administrator" msgstr "組織管理者" -#: users/serializers/user.py:103 +#: users/serializers/user.py:106 msgid "Can public key authentication" msgstr "公開鍵認証が可能" -#: users/serializers/user.py:172 +#: users/serializers/user.py:176 msgid "Is org admin" msgstr "組織管理者です" -#: users/serializers/user.py:174 +#: users/serializers/user.py:178 msgid "Avatar url" msgstr "アバターURL" -#: users/serializers/user.py:178 +#: users/serializers/user.py:182 msgid "MFA level" msgstr "MFA レベル" -#: users/serializers/user.py:289 +#: users/serializers/user.py:304 msgid "Select users" msgstr "ユーザーの選択" -#: users/serializers/user.py:290 +#: users/serializers/user.py:305 msgid "For security, only list several users" msgstr "セキュリティのために、複数のユーザーのみをリストします" -#: users/serializers/user.py:323 +#: users/serializers/user.py:338 msgid "name not unique" msgstr "名前が一意ではない" @@ -8640,11 +8657,11 @@ msgid "" "The current task is not synchronized with unmatched policy assets, skipping" msgstr "" -#: xpack/plugins/cloud/api.py:58 +#: xpack/plugins/cloud/api.py:60 msgid "Test connection successful" msgstr "テスト接続成功" -#: xpack/plugins/cloud/api.py:60 +#: xpack/plugins/cloud/api.py:62 msgid "Test connection failed: {}" msgstr "テスト接続に失敗しました: {}" @@ -8696,87 +8713,91 @@ msgstr "谷歌雲" msgid "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" 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" msgstr "Nutanix" -#: xpack/plugins/cloud/const.py:24 +#: xpack/plugins/cloud/const.py:25 msgid "Huawei Private Cloud" msgstr "華為私有雲" -#: xpack/plugins/cloud/const.py:25 +#: xpack/plugins/cloud/const.py:26 msgid "Qingyun Private Cloud" msgstr "青雲私有雲" -#: xpack/plugins/cloud/const.py:26 +#: xpack/plugins/cloud/const.py:27 msgid "CTYun Private Cloud" msgstr "スカイウィング私有雲" -#: xpack/plugins/cloud/const.py:27 +#: xpack/plugins/cloud/const.py:28 msgid "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" msgstr "ZStack" -#: xpack/plugins/cloud/const.py:29 +#: xpack/plugins/cloud/const.py:30 msgid "Fusion Compute" msgstr "融合計算" -#: xpack/plugins/cloud/const.py:30 +#: xpack/plugins/cloud/const.py:31 msgid "SCP" msgstr "SCP" -#: xpack/plugins/cloud/const.py:31 +#: xpack/plugins/cloud/const.py:32 msgid "Apsara Stack" msgstr "Apsara Stack" -#: xpack/plugins/cloud/const.py:36 +#: xpack/plugins/cloud/const.py:37 msgid "Private IP" msgstr "プライベートIP" -#: xpack/plugins/cloud/const.py:37 +#: xpack/plugins/cloud/const.py:38 msgid "Public 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" msgstr "インスタンス名" -#: xpack/plugins/cloud/const.py:42 +#: xpack/plugins/cloud/const.py:43 msgid "Instance name and Partial IP" msgstr "インスタンス名と部分IP" -#: xpack/plugins/cloud/const.py:47 +#: xpack/plugins/cloud/const.py:48 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/const.py:51 +#: xpack/plugins/cloud/const.py:52 msgid "Unsync" msgstr "同期していません" -#: xpack/plugins/cloud/const.py:52 +#: xpack/plugins/cloud/const.py:53 msgid "New Sync" msgstr "新しい同期" -#: xpack/plugins/cloud/const.py:53 +#: xpack/plugins/cloud/const.py:54 msgid "Synced" msgstr "同期済み" -#: xpack/plugins/cloud/const.py:54 +#: xpack/plugins/cloud/const.py:55 msgid "Released" msgstr "リリース済み" -#: xpack/plugins/cloud/const.py:58 +#: xpack/plugins/cloud/const.py:59 msgid "And" msgstr "そして" -#: xpack/plugins/cloud/const.py:59 +#: xpack/plugins/cloud/const.py:60 msgid "Or" msgstr "または" @@ -9133,11 +9154,11 @@ msgstr "TR-Istanbul" msgid "CN East-Suqian" msgstr "華東-宿遷" -#: xpack/plugins/cloud/serializers/account.py:68 +#: xpack/plugins/cloud/serializers/account.py:69 msgid "Validity display" msgstr "有効表示" -#: xpack/plugins/cloud/serializers/account.py:69 +#: xpack/plugins/cloud/serializers/account.py:70 msgid "Provider display" msgstr "プロバイダ表示" diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 9698cbb94..2227bbfa2 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\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" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -35,7 +35,7 @@ msgstr "成功: %s, 失败: %s, 总数: %s" #: settings/serializers/auth/ldap.py:25 settings/serializers/auth/ldap.py:47 #: settings/serializers/msg.py:35 terminal/serializers/storage.py:123 #: 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/user_password_verify.html:18 #: xpack/plugins/cloud/serializers/account_attrs.py:28 @@ -79,7 +79,7 @@ msgstr "同名账号" msgid "Anonymous account" msgstr "匿名账号" -#: accounts/const/account.py:25 users/models/user.py:742 +#: accounts/const/account.py:25 users/models/user.py:752 msgid "Local" msgstr "数据库" @@ -104,7 +104,7 @@ msgstr "更新" #: accounts/const/account.py:33 accounts/const/automation.py:109 #: accounts/serializers/automations/change_secret.py:164 audits/const.py:62 #: 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" msgstr "失败" @@ -206,7 +206,7 @@ msgstr "仅创建" #: authentication/serializers/password_mfa.py:24 #: notifications/backends/__init__.py:10 settings/serializers/msg.py:22 #: 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/views/profile/reset.py:94 msgid "Email" @@ -294,7 +294,7 @@ msgid "Version" msgstr "版本" #: accounts/models/account.py:57 accounts/serializers/account/account.py:215 -#: users/models/user.py:849 +#: users/models/user.py:859 msgid "Source" msgstr "来源" @@ -308,7 +308,7 @@ msgstr "来源 ID" #: accounts/templates/accounts/change_secret_failed_info.html:12 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: 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 #: perms/serializers/permission.py:41 settings/serializers/msg.py:33 #: 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_oauth_bind.html:9 #: 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 #: xpack/plugins/cloud/serializers/account_attrs.py:26 msgid "Username" @@ -637,7 +637,7 @@ msgstr "密码规则" #: terminal/models/virtualapp/provider.py:10 #: terminal/models/virtualapp/virtualapp.py:19 tickets/api/ticket.py:87 #: 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/serializers/task.py:70 msgid "Name" @@ -653,7 +653,7 @@ msgstr "特权账号" #: authentication/serializers/connect_token_secret.py:117 #: terminal/models/applet/applet.py:40 #: 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" msgstr "激活" @@ -819,7 +819,7 @@ msgstr "已修改" #: acls/templates/acls/asset_login_reminder.html:6 #: assets/models/automations/base.py:19 #: 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 #: terminal/templates/terminal/_msg_command_execute_alert.html:16 msgid "Assets" @@ -861,8 +861,8 @@ msgstr "ID" #: terminal/notifications.py:205 terminal/serializers/command.py:16 #: terminal/templates/terminal/_msg_command_warning.html:6 #: terminal/templates/terminal/_msg_session_sharing.html:6 -#: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1009 -#: users/models/user.py:1047 users/serializers/group.py:21 +#: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:1019 +#: users/models/user.py:1057 users/serializers/group.py:21 msgid "User" msgstr "用户" @@ -958,7 +958,7 @@ msgstr "关联平台,可配置推送参数,如果不关联,将使用默认 #: terminal/models/component/endpoint.py:119 #: terminal/models/session/session.py:47 #: 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 msgid "Comment" msgstr "备注" @@ -1342,7 +1342,7 @@ msgid "Applications" msgstr "应用管理" #: 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" msgstr "属性" @@ -1391,7 +1391,7 @@ msgid " - Platform {} ansible disabled" msgstr " - 平台 {} Ansible 已禁用, 无法执行任务" #: assets/automations/ping_gateway/manager.py:33 -#: authentication/models/connection_token.py:128 +#: authentication/models/connection_token.py:131 msgid "No account" msgstr "没有账号" @@ -1674,18 +1674,18 @@ msgstr "SSH公钥" #: assets/models/_user.py:28 assets/models/automations/base.py:114 #: 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 -#: ops/models/job.py:235 users/models/user.py:1048 +#: ops/models/job.py:235 users/models/user.py:1058 msgid "Date created" msgstr "创建日期" #: 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" msgstr "更新日期" #: assets/models/_user.py:30 assets/models/cmd_filter.py:44 #: 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 msgid "Created by" msgstr "创建者" @@ -1874,7 +1874,7 @@ msgstr "校验日期" #: assets/models/cmd_filter.py:28 perms/models/asset_permission.py:66 #: perms/serializers/permission.py:34 users/models/group.py:25 -#: users/models/user.py:810 +#: users/models/user.py:820 msgid "User group" msgstr "用户组" @@ -1924,7 +1924,7 @@ msgstr "默认" msgid "Default asset group" 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" msgstr "系统" @@ -2565,7 +2565,7 @@ msgstr "登录 IP" #: audits/models.py:200 audits/serializers.py:52 #: 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 msgid "MFA" msgstr "MFA" @@ -2614,7 +2614,7 @@ msgstr "用户 %s %s 了当前资源" #: audits/serializers.py:172 authentication/models/connection_token.py:47 #: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80 #: 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" msgstr "失效日期" @@ -2647,29 +2647,29 @@ msgstr "认证令牌" #: audits/signal_handlers/login_log.py:37 authentication/notifications.py:73 #: authentication/views/login.py:77 notifications/backends/__init__.py:11 -#: settings/serializers/auth/wecom.py:10 users/models/user.py:749 -#: users/models/user.py:859 +#: settings/serializers/auth/wecom.py:10 users/models/user.py:759 +#: users/models/user.py:869 msgid "WeCom" msgstr "企业微信" #: audits/signal_handlers/login_log.py:38 authentication/views/feishu.py:105 #: authentication/views/login.py:89 notifications/backends/__init__.py:14 -#: settings/serializers/auth/feishu.py:10 users/models/user.py:751 -#: users/models/user.py:861 +#: settings/serializers/auth/feishu.py:10 users/models/user.py:761 +#: users/models/user.py:871 msgid "FeiShu" msgstr "飞书" #: audits/signal_handlers/login_log.py:40 authentication/views/login.py:101 #: authentication/views/slack.py:87 notifications/backends/__init__.py:16 -#: settings/serializers/auth/slack.py:10 users/models/user.py:753 -#: users/models/user.py:863 +#: settings/serializers/auth/slack.py:10 users/models/user.py:763 +#: users/models/user.py:873 msgid "Slack" msgstr "" #: audits/signal_handlers/login_log.py:41 authentication/views/dingtalk.py:161 #: authentication/views/login.py:83 notifications/backends/__init__.py:12 -#: settings/serializers/auth/dingtalk.py:10 users/models/user.py:750 -#: users/models/user.py:860 +#: settings/serializers/auth/dingtalk.py:10 users/models/user.py:760 +#: users/models/user.py:870 msgid "DingTalk" msgstr "钉钉" @@ -2704,27 +2704,27 @@ msgstr "参数中的值必须包含 %s" msgid "This action require verify your 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" msgstr "不允许使用可重复使用的连接令牌,未启用全局设置" -#: authentication/api/connection_token.py:374 +#: authentication/api/connection_token.py:379 msgid "Anonymous account is not supported for this asset" msgstr "匿名账号不支持当前资产" -#: authentication/api/connection_token.py:394 +#: authentication/api/connection_token.py:399 msgid "Account not found" msgstr "账号未找到" -#: authentication/api/connection_token.py:397 +#: authentication/api/connection_token.py:402 msgid "Permission expired" msgstr "授权已过期" -#: authentication/api/connection_token.py:430 +#: authentication/api/connection_token.py:435 msgid "ACL action is reject: {}({})" msgstr "ACL 动作是拒绝: {}({})" -#: authentication/api/connection_token.py:434 +#: authentication/api/connection_token.py:439 msgid "ACL action is review" msgstr "ACL 动作是复核" @@ -2918,19 +2918,19 @@ msgstr "等待登录复核处理" msgid "Login confirm ticket was {}" msgstr "登录复核: {}" -#: authentication/errors/failed.py:145 +#: authentication/errors/failed.py:149 msgid "Current IP and Time period is not allowed" msgstr "当前 IP 和时间段不被允许登录" -#: authentication/errors/failed.py:150 +#: authentication/errors/failed.py:154 msgid "Please enter MFA code" msgstr "请输入 MFA 验证码" -#: authentication/errors/failed.py:155 +#: authentication/errors/failed.py:159 msgid "Please enter SMS code" msgstr "请输入短信验证码" -#: authentication/errors/failed.py:160 users/exceptions.py:15 +#: authentication/errors/failed.py:164 users/exceptions.py:15 msgid "Phone not set" msgstr "手机号没有设置" @@ -3156,27 +3156,27 @@ msgstr "可以复用连接令牌" msgid "Connection token" msgstr "连接令牌" -#: authentication/models/connection_token.py:115 +#: authentication/models/connection_token.py:118 msgid "Connection token inactive" msgstr "连接令牌未激活" -#: authentication/models/connection_token.py:119 +#: authentication/models/connection_token.py:122 msgid "Connection token expired at: {}" msgstr "连接令牌过期: {}" -#: authentication/models/connection_token.py:122 +#: authentication/models/connection_token.py:125 msgid "No user or invalid user" msgstr "没有用户或用户失效" -#: authentication/models/connection_token.py:125 +#: authentication/models/connection_token.py:128 msgid "No asset or inactive asset" msgstr "没有资产或资产未激活" -#: authentication/models/connection_token.py:269 +#: authentication/models/connection_token.py:272 msgid "Can view super connection token secret" msgstr "可以查看超级连接令牌密文" -#: authentication/models/connection_token.py:271 +#: authentication/models/connection_token.py:274 msgid "Super connection token" msgstr "超级连接令牌" @@ -3253,7 +3253,7 @@ msgstr "动作" #: authentication/serializers/connection_token.py:42 #: 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" msgstr "已过期" @@ -3267,8 +3267,8 @@ msgid "Access IP" msgstr "IP 白名单" #: authentication/serializers/token.py:92 perms/serializers/permission.py:39 -#: perms/serializers/permission.py:61 users/serializers/user.py:98 -#: users/serializers/user.py:170 +#: perms/serializers/permission.py:61 users/serializers/user.py:101 +#: users/serializers/user.py:174 msgid "Is valid" msgstr "是否有效" @@ -3293,13 +3293,13 @@ msgid "Show" msgstr "显示" #: 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 msgid "Disable" msgstr "禁用" #: 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:68 msgid "Enable" @@ -3499,7 +3499,7 @@ msgid "Do you want to retry ?" msgstr "是否重试 ?" #: 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" msgstr "局域网" @@ -3765,7 +3765,7 @@ msgstr "忽略的" msgid "discard time" msgstr "忽略时间" -#: common/db/models.py:33 users/models/user.py:848 +#: common/db/models.py:33 users/models/user.py:858 msgid "Updated by" msgstr "最后更新者" @@ -4086,14 +4086,20 @@ msgstr "任务 {} 不存在" msgid "Task {} args or kwargs error" msgstr "任务 {} 执行参数错误" +#: ops/api/job.py:81 +#, python-brace-format msgid "" "Asset ({asset}) must have at least one of the following protocols added: " "SSH, SFTP, or 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" msgstr "资产({asset})授权缺少ssh,sftp或winrm协议" +#: ops/api/job.py:83 +#, python-brace-format msgid "Asset ({asset}) authorization lacks upload permissions" msgstr "资产({asset})授权缺少上传权限" @@ -4771,7 +4777,7 @@ msgid "Scope" msgstr "范围" #: rbac/models/role.py:46 rbac/models/rolebinding.py:52 -#: users/models/user.py:814 +#: users/models/user.py:824 msgid "Role" msgstr "角色" @@ -4783,25 +4789,25 @@ msgstr "系统角色" msgid "Organization role" msgstr "组织角色" -#: rbac/models/rolebinding.py:61 +#: rbac/models/rolebinding.py:62 msgid "Role binding" msgstr "角色绑定" -#: rbac/models/rolebinding.py:160 +#: rbac/models/rolebinding.py:161 msgid "All organizations" msgstr "所有组织" -#: rbac/models/rolebinding.py:192 +#: rbac/models/rolebinding.py:193 msgid "" "User last role in org, can not be delete, you can remove user from org " "instead" msgstr "用户最后一个角色,不能删除,你可以将用户从组织移除" -#: rbac/models/rolebinding.py:199 +#: rbac/models/rolebinding.py:200 msgid "Organization role binding" msgstr "组织角色绑定" -#: rbac/models/rolebinding.py:214 +#: rbac/models/rolebinding.py:215 msgid "System role binding" msgstr "系统角色绑定" @@ -6540,6 +6546,12 @@ msgstr "数据库客户端" msgid "Remote Desktop" msgstr "远程桌面客户端" +#: terminal/connect_methods.py:37 +#, fuzzy +#| msgid "DB Guide" +msgid "RDP Guide" +msgstr "DB 连接向导" + #: terminal/const.py:12 msgid "Review & Reject" msgstr "审批 & 拒绝" @@ -7238,7 +7250,7 @@ msgstr "端点后缀" msgid "HOST" 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 msgid "Private key" msgstr "ssh私钥" @@ -7792,11 +7804,11 @@ msgstr "无效的审批动作" msgid "This user is not authorized to approve this ticket" msgstr "此用户无权审批此工单" -#: users/api/user.py:136 +#: users/api/user.py:155 msgid "Can not invite self" msgstr "不能邀请自己" -#: users/api/user.py:189 +#: users/api/user.py:208 msgid "Could not reset self otp, use profile reset instead" msgstr "不能在该页面重置 MFA 多因子认证, 请去个人信息页面重置" @@ -7947,7 +7959,7 @@ msgstr "不能和原来的密钥相同" msgid "Not a valid ssh public key" 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 msgid "Public key" msgstr "SSH公钥" @@ -7956,78 +7968,78 @@ msgstr "SSH公钥" msgid "Preference" msgstr "用户设置" -#: users/models/user.py:646 users/serializers/profile.py:94 +#: users/models/user.py:656 users/serializers/profile.py:94 msgid "Force enable" msgstr "强制启用" -#: users/models/user.py:752 +#: users/models/user.py:762 msgid "Lark" 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" msgstr "服务账号" -#: users/models/user.py:818 +#: users/models/user.py:828 msgid "Avatar" msgstr "头像" -#: users/models/user.py:821 +#: users/models/user.py:831 msgid "Wechat" msgstr "微信" -#: users/models/user.py:824 users/serializers/user.py:108 +#: users/models/user.py:834 users/serializers/user.py:111 msgid "Phone" msgstr "手机" -#: users/models/user.py:830 +#: users/models/user.py:840 msgid "OTP secret key" msgstr "OTP 密钥" # msgid "Private key" # msgstr "ssh私钥" -#: users/models/user.py:842 users/serializers/profile.py:128 -#: users/serializers/user.py:168 +#: users/models/user.py:852 users/serializers/profile.py:128 +#: users/serializers/user.py:172 msgid "Is first login" msgstr "首次登录" -#: users/models/user.py:852 +#: users/models/user.py:862 msgid "Date password last updated" msgstr "最后更新密码日期" -#: users/models/user.py:855 +#: users/models/user.py:865 msgid "Need update password" msgstr "需要更新密码" -#: users/models/user.py:857 +#: users/models/user.py:867 msgid "Date api key used" msgstr "Api key 最后使用日期" -#: users/models/user.py:990 +#: users/models/user.py:1000 msgid "Can not delete admin user" msgstr "无法删除管理员用户" -#: users/models/user.py:1018 +#: users/models/user.py:1028 msgid "Can invite user" msgstr "可以邀请用户" -#: users/models/user.py:1019 +#: users/models/user.py:1029 msgid "Can remove user" msgstr "可以移除用户" -#: users/models/user.py:1020 +#: users/models/user.py:1030 msgid "Can match user" msgstr "可以匹配用户" -#: users/models/user.py:1029 +#: users/models/user.py:1039 msgid "Administrator" msgstr "管理员" -#: users/models/user.py:1032 +#: users/models/user.py:1042 msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" -#: users/models/user.py:1057 +#: users/models/user.py:1067 msgid "User password history" msgstr "用户密码历史" @@ -8157,67 +8169,72 @@ msgstr "密码不满足安全规则" msgid "The new password cannot be the last {} passwords" msgstr "新密码不能是最近 {} 次的密码" -#: users/serializers/user.py:42 +#: users/serializers/user.py:44 msgid "System roles" msgstr "系统角色" -#: users/serializers/user.py:46 +#: users/serializers/user.py:48 msgid "Org roles" 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" msgstr "密码策略" -#: users/serializers/user.py:92 +#: users/serializers/user.py:95 msgid "MFA enabled" msgstr "MFA 已启用" -#: users/serializers/user.py:94 +#: users/serializers/user.py:97 msgid "MFA force enabled" msgstr "强制 MFA" -#: users/serializers/user.py:96 +#: users/serializers/user.py:99 msgid "Login blocked" 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" msgstr "是否绑定了虚拟 MFA" -#: users/serializers/user.py:100 +#: users/serializers/user.py:103 msgid "Super Administrator" msgstr "超级管理员" -#: users/serializers/user.py:101 +#: users/serializers/user.py:104 msgid "Organization Administrator" msgstr "组织管理员" -#: users/serializers/user.py:103 +#: users/serializers/user.py:106 msgid "Can public key authentication" msgstr "可以使用公钥认证" -#: users/serializers/user.py:172 +#: users/serializers/user.py:176 msgid "Is org admin" msgstr "组织管理员" -#: users/serializers/user.py:174 +#: users/serializers/user.py:178 msgid "Avatar url" msgstr "头像路径" -#: users/serializers/user.py:178 +#: users/serializers/user.py:182 msgid "MFA level" msgstr "MFA 级别" -#: users/serializers/user.py:289 +#: users/serializers/user.py:304 msgid "Select users" msgstr "选择用户" -#: users/serializers/user.py:290 +#: users/serializers/user.py:305 msgid "For security, only list several users" msgstr "为了安全,仅列出几个用户" -#: users/serializers/user.py:323 +#: users/serializers/user.py:338 msgid "name not unique" msgstr "名称重复" @@ -8512,11 +8529,11 @@ msgid "" "The current task is not synchronized with unmatched policy assets, skipping" msgstr "" -#: xpack/plugins/cloud/api.py:58 +#: xpack/plugins/cloud/api.py:60 msgid "Test connection successful" msgstr "测试成功" -#: xpack/plugins/cloud/api.py:60 +#: xpack/plugins/cloud/api.py:62 msgid "Test connection failed: {}" msgstr "测试连接失败:{}" @@ -8568,87 +8585,91 @@ msgstr "谷歌云" msgid "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" 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" msgstr "Nutanix" -#: xpack/plugins/cloud/const.py:24 +#: xpack/plugins/cloud/const.py:25 msgid "Huawei Private Cloud" msgstr "华为私有云" -#: xpack/plugins/cloud/const.py:25 +#: xpack/plugins/cloud/const.py:26 msgid "Qingyun Private Cloud" msgstr "青云私有云" -#: xpack/plugins/cloud/const.py:26 +#: xpack/plugins/cloud/const.py:27 msgid "CTYun Private Cloud" msgstr "天翼私有云" -#: xpack/plugins/cloud/const.py:27 +#: xpack/plugins/cloud/const.py:28 msgid "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" msgstr "ZStack" -#: xpack/plugins/cloud/const.py:29 +#: xpack/plugins/cloud/const.py:30 msgid "Fusion Compute" msgstr "融合计算" -#: xpack/plugins/cloud/const.py:30 +#: xpack/plugins/cloud/const.py:31 msgid "SCP" msgstr "深信服SCP" -#: xpack/plugins/cloud/const.py:31 +#: xpack/plugins/cloud/const.py:32 msgid "Apsara Stack" msgstr "阿里云专有云" -#: xpack/plugins/cloud/const.py:36 +#: xpack/plugins/cloud/const.py:37 msgid "Private IP" msgstr "私有IP" -#: xpack/plugins/cloud/const.py:37 +#: xpack/plugins/cloud/const.py:38 msgid "Public 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" msgstr "实例名称" -#: xpack/plugins/cloud/const.py:42 +#: xpack/plugins/cloud/const.py:43 msgid "Instance name and Partial IP" msgstr "实例名称和部分IP" -#: xpack/plugins/cloud/const.py:47 +#: xpack/plugins/cloud/const.py:48 msgid "Succeed" msgstr "成功" -#: xpack/plugins/cloud/const.py:51 +#: xpack/plugins/cloud/const.py:52 msgid "Unsync" msgstr "未同步" -#: xpack/plugins/cloud/const.py:52 +#: xpack/plugins/cloud/const.py:53 msgid "New Sync" msgstr "新同步" -#: xpack/plugins/cloud/const.py:53 +#: xpack/plugins/cloud/const.py:54 msgid "Synced" msgstr "已同步" -#: xpack/plugins/cloud/const.py:54 +#: xpack/plugins/cloud/const.py:55 msgid "Released" msgstr "已释放" -#: xpack/plugins/cloud/const.py:58 +#: xpack/plugins/cloud/const.py:59 msgid "And" msgstr "与" -#: xpack/plugins/cloud/const.py:59 +#: xpack/plugins/cloud/const.py:60 msgid "Or" msgstr "或" @@ -9005,11 +9026,11 @@ msgstr "TR-Istanbul" msgid "CN East-Suqian" msgstr "华东-宿迁" -#: xpack/plugins/cloud/serializers/account.py:68 +#: xpack/plugins/cloud/serializers/account.py:69 msgid "Validity display" msgstr "有效性显示" -#: xpack/plugins/cloud/serializers/account.py:69 +#: xpack/plugins/cloud/serializers/account.py:70 msgid "Provider display" msgstr "服务商显示" diff --git a/apps/users/api/user.py b/apps/users/api/user.py index 7a67e9ddd..1088da6e8 100644 --- a/apps/users/api/user.py +++ b/apps/users/api/user.py @@ -63,11 +63,12 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV return super().match(request, *args, **kwargs) def get_serializer(self, *args, **kwargs): - """重写 get_serializer,用于设置用户的角色缓存 - 放到 paginate_queryset 里面会导致 导出有问题, 因为导出的时候,没有 pager + """重写 get_serializer, 用于设置用户的角色缓存 + 放到 paginate_queryset 里面会导致 导出有问题, 因为导出的时候,没有 pager """ if len(args) == 1 and kwargs.get('many'): queryset = self.set_users_roles_for_cache(args[0]) + queryset = self.set_users_orgs_roles(args[0]) args = (queryset,) return super().get_serializer(*args, **kwargs) @@ -98,6 +99,24 @@ class UserViewSet(CommonApiMixin, UserQuerysetMixin, SuggestionMixin, BulkModelV u.system_roles.cache_set(system_roles) 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): users = serializer.save() if isinstance(users, User): diff --git a/apps/users/models/user.py b/apps/users/models/user.py index ad90da0d1..e01e2b65e 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -435,6 +435,14 @@ class RoleMixin: cache.set(key, data, 60 * 60) 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): key = self.PERM_CACHE_KEY.format(self.id, '*') cache.delete_pattern(key) @@ -928,14 +936,6 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, LabeledMixin, JSONFilterM def is_local(self): 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): cas = self.Source.cas saml2 = self.Source.saml2 diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 24647483d..bd1dddab2 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -48,7 +48,7 @@ class RolesSerializerMixin(serializers.Serializer): label=_("Org roles"), many=True, required=False, 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): request = self.context.get("request") @@ -148,7 +148,7 @@ class UserSerializer(RolesSerializerMixin, CommonBulkSerializerMixin, ResourceLa # 外键的字段 fields_fk = [] # 多对多字段 - fields_m2m = ["groups", "system_roles", "org_roles", "labels"] + fields_m2m = ["groups", "system_roles", "org_roles", "labels", "orgs_roles"] # 在serializer 上定义的字段 fields_custom = ["login_blocked", "password_strategy"] fields = fields_verbose + fields_fk + fields_m2m + fields_custom @@ -288,7 +288,7 @@ class UserRetrieveSerializer(UserSerializer): ) class Meta(UserSerializer.Meta): - fields = UserSerializer.Meta.fields + ["login_confirm_settings", "orgs_roles"] + fields = UserSerializer.Meta.fields + ["login_confirm_settings"] class MiniUserSerializer(serializers.ModelSerializer):