perf: 支持改密日志记录保留天数

pull/12652/head
wangruidong 2024-02-05 16:36:03 +08:00 committed by Bryan
parent 1051c6af04
commit eaca296bd0
8 changed files with 243 additions and 222 deletions

View File

@ -19,7 +19,7 @@ from ops.celery.decorator import (
from ops.models import CeleryTaskExecution from ops.models import CeleryTaskExecution
from terminal.models import Session, Command from terminal.models import Session, Command
from terminal.backends import server_replay_storage from terminal.backends import server_replay_storage
from .models import UserLoginLog, OperateLog, FTPLog, ActivityLog from .models import UserLoginLog, OperateLog, FTPLog, ActivityLog, PasswordChangeLog
logger = get_logger(__name__) logger = get_logger(__name__)
@ -38,6 +38,13 @@ def clean_operation_log_period():
OperateLog.objects.filter(datetime__lt=expired_day).delete() OperateLog.objects.filter(datetime__lt=expired_day).delete()
def clean_password_change_log_period():
now = timezone.now()
days = get_log_keep_day('PASSWORD_CHANGE_LOG_KEEP_DAYS')
expired_day = now - datetime.timedelta(days=days)
PasswordChangeLog.objects.filter(datetime__lt=expired_day).delete()
def clean_activity_log_period(): def clean_activity_log_period():
now = timezone.now() now = timezone.now()
days = get_log_keep_day('ACTIVITY_LOG_KEEP_DAYS') days = get_log_keep_day('ACTIVITY_LOG_KEEP_DAYS')
@ -109,6 +116,7 @@ def clean_audits_log_period():
clean_activity_log_period() clean_activity_log_period()
clean_celery_tasks_period() clean_celery_tasks_period()
clean_expired_session_period() clean_expired_session_period()
clean_password_change_log_period()
@shared_task(verbose_name=_('Upload FTP file to external storage')) @shared_task(verbose_name=_('Upload FTP file to external storage'))

View File

@ -563,6 +563,7 @@ class Config(dict):
'FTP_LOG_KEEP_DAYS': 180, 'FTP_LOG_KEEP_DAYS': 180,
'CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS': 180, 'CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS': 180,
'JOB_EXECUTION_KEEP_DAYS': 180, 'JOB_EXECUTION_KEEP_DAYS': 180,
'PASSWORD_CHANGE_LOG_KEEP_DAYS': 999,
'TICKETS_ENABLED': True, 'TICKETS_ENABLED': True,

View File

@ -122,11 +122,11 @@ WS_LISTEN_PORT = CONFIG.WS_LISTEN_PORT
LOGIN_LOG_KEEP_DAYS = CONFIG.LOGIN_LOG_KEEP_DAYS LOGIN_LOG_KEEP_DAYS = CONFIG.LOGIN_LOG_KEEP_DAYS
TASK_LOG_KEEP_DAYS = CONFIG.TASK_LOG_KEEP_DAYS TASK_LOG_KEEP_DAYS = CONFIG.TASK_LOG_KEEP_DAYS
OPERATE_LOG_KEEP_DAYS = CONFIG.OPERATE_LOG_KEEP_DAYS OPERATE_LOG_KEEP_DAYS = CONFIG.OPERATE_LOG_KEEP_DAYS
PASSWORD_CHANGE_LOG_KEEP_DAYS = CONFIG.PASSWORD_CHANGE_LOG_KEEP_DAYS
ACTIVITY_LOG_KEEP_DAYS = CONFIG.ACTIVITY_LOG_KEEP_DAYS ACTIVITY_LOG_KEEP_DAYS = CONFIG.ACTIVITY_LOG_KEEP_DAYS
FTP_LOG_KEEP_DAYS = CONFIG.FTP_LOG_KEEP_DAYS FTP_LOG_KEEP_DAYS = CONFIG.FTP_LOG_KEEP_DAYS
CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = CONFIG.CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = CONFIG.CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS
JOB_EXECUTION_KEEP_DAYS = CONFIG.JOB_EXECUTION_KEEP_DAYS JOB_EXECUTION_KEEP_DAYS = CONFIG.JOB_EXECUTION_KEEP_DAYS
ORG_CHANGE_TO_URL = CONFIG.ORG_CHANGE_TO_URL ORG_CHANGE_TO_URL = CONFIG.ORG_CHANGE_TO_URL
WINDOWS_SKIP_ALL_MANUAL_PASSWORD = CONFIG.WINDOWS_SKIP_ALL_MANUAL_PASSWORD WINDOWS_SKIP_ALL_MANUAL_PASSWORD = CONFIG.WINDOWS_SKIP_ALL_MANUAL_PASSWORD

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:6a7f3882356366531dca8e6459bc4bc50dcbd1e0cf0c379ac93ee3bd1b679d3c oid sha256:2fd8cc044dd42750cc1c96a051cdd767172d2e1c6026c65a6db44f4eac21426a
size 171329 size 171418

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-01-25 15:38+0800\n" "POT-Creation-Date: 2024-02-05 16:29+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"
@ -208,8 +208,8 @@ msgstr "作成のみ"
#: 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:802 #: users/forms/profile.py:109 users/models/user.py:802
#: users/templates/users/forgot_password.html:117 #: users/templates/users/forgot_password.html:160
#: users/views/profile/reset.py:93 #: users/views/profile/reset.py:94
msgid "Email" msgid "Email"
msgstr "メール" msgstr "メール"
@ -365,7 +365,7 @@ msgstr "アカウントバックアップ計画"
#: accounts/models/automations/backup_account.py:119 #: accounts/models/automations/backup_account.py:119
#: assets/models/automations/base.py:115 audits/models.py:65 #: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:86 ops/models/job.py:237 #: ops/models/base.py:55 ops/models/celery.py:86 ops/models/job.py:236
#: ops/templates/ops/celery_task_log.html:75 #: ops/templates/ops/celery_task_log.html:75
#: perms/models/asset_permission.py:78 #: perms/models/asset_permission.py:78
#: settings/templates/ldap/_msg_import_ldap_user.html:5 #: settings/templates/ldap/_msg_import_ldap_user.html:5
@ -476,14 +476,14 @@ msgstr "開始日"
#: accounts/models/automations/change_secret.py:42 #: accounts/models/automations/change_secret.py:42
#: assets/models/automations/base.py:116 ops/models/base.py:56 #: assets/models/automations/base.py:116 ops/models/base.py:56
#: ops/models/celery.py:87 ops/models/job.py:238 #: ops/models/celery.py:87 ops/models/job.py:237
#: terminal/models/applet/host.py:142 #: terminal/models/applet/host.py:142
msgid "Date finished" msgid "Date finished"
msgstr "終了日" msgstr "終了日"
#: accounts/models/automations/change_secret.py:43 #: accounts/models/automations/change_secret.py:43
#: assets/models/automations/base.py:113 audits/models.py:208 #: assets/models/automations/base.py:113 audits/models.py:208
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:229 #: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:228
#: terminal/models/applet/applet.py:320 terminal/models/applet/host.py:140 #: terminal/models/applet/applet.py:320 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30 #: terminal/models/component/status.py:30
#: terminal/models/virtualapp/virtualapp.py:99 #: terminal/models/virtualapp/virtualapp.py:99
@ -609,7 +609,7 @@ msgstr "パスワードルール"
#: authentication/serializers/connect_token_secret.py:113 #: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:168 labels/models.py:11 #: authentication/serializers/connect_token_secret.py:168 labels/models.py:11
#: ops/mixin.py:21 ops/models/adhoc.py:20 ops/models/celery.py:15 #: ops/mixin.py:21 ops/models/adhoc.py:20 ops/models/celery.py:15
#: ops/models/celery.py:80 ops/models/job.py:138 ops/models/playbook.py:28 #: ops/models/celery.py:80 ops/models/job.py:137 ops/models/playbook.py:28
#: ops/serializers/job.py:18 orgs/models.py:82 #: ops/serializers/job.py:18 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29 #: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89 #: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89
@ -763,7 +763,7 @@ msgstr "カテゴリ"
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:120 #: assets/serializers/asset/common.py:126 assets/serializers/platform.py:120
#: assets/serializers/platform.py:139 audits/serializers.py:53 #: assets/serializers/platform.py:139 audits/serializers.py:53
#: audits/serializers.py:170 #: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:146 #: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:145
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:39 #: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:39
#: terminal/models/component/storage.py:57 #: terminal/models/component/storage.py:57
#: terminal/models/component/storage.py:146 terminal/serializers/applet.py:29 #: terminal/models/component/storage.py:146 terminal/serializers/applet.py:29
@ -800,7 +800,7 @@ msgstr "編集済み"
#: 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:404 ops/models/base.py:17 #: authentication/api/connection_token.py:404 ops/models/base.py:17
#: ops/models/job.py:148 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"
msgstr "資産" msgstr "資産"
@ -931,7 +931,7 @@ msgstr "关联平台,可以配置推送参数,如果不关联,则使用默
#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:27 #: accounts/serializers/account/virtual.py:19 assets/models/_user.py:27
#: assets/models/cmd_filter.py:40 assets/models/cmd_filter.py:88 #: assets/models/cmd_filter.py:40 assets/models/cmd_filter.py:88
#: assets/models/group.py:20 common/db/models.py:36 ops/models/adhoc.py:26 #: assets/models/group.py:20 common/db/models.py:36 ops/models/adhoc.py:26
#: ops/models/job.py:154 ops/models/playbook.py:31 rbac/models/role.py:37 #: ops/models/job.py:153 ops/models/playbook.py:31 rbac/models/role.py:37
#: settings/models.py:38 terminal/models/applet/applet.py:45 #: settings/models.py:38 terminal/models/applet/applet.py:45
#: terminal/models/applet/applet.py:321 terminal/models/applet/host.py:143 #: terminal/models/applet/applet.py:321 terminal/models/applet/host.py:143
#: terminal/models/component/endpoint.py:25 #: terminal/models/component/endpoint.py:25
@ -1076,7 +1076,7 @@ msgstr "秘密鍵が無効またはpassphraseエラー"
msgid "Acls" msgid "Acls"
msgstr "Acls" msgstr "Acls"
#: acls/const.py:6 audits/const.py:36 terminal/const.py:11 tickets/const.py:45 #: acls/const.py:6 audits/const.py:36 terminal/const.py:11 tickets/const.py:46
#: tickets/templates/tickets/approve_check_password.html:47 #: tickets/templates/tickets/approve_check_password.html:47
msgid "Reject" msgid "Reject"
msgstr "拒否" msgstr "拒否"
@ -1118,7 +1118,7 @@ msgstr "レビュー担当者"
#: authentication/models/connection_token.py:53 #: authentication/models/connection_token.py:53
#: authentication/templates/authentication/_access_key_modal.html:32 #: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/session/sharing.py:29 #: perms/models/asset_permission.py:82 terminal/models/session/sharing.py:29
#: tickets/const.py:37 #: tickets/const.py:38
msgid "Active" msgid "Active"
msgstr "アクティブ" msgstr "アクティブ"
@ -1176,7 +1176,7 @@ msgstr "生成された正規表現が正しくありません: {}"
msgid "Command acl" msgid "Command acl"
msgstr "コマンドフィルタリング" msgstr "コマンドフィルタリング"
#: acls/models/command_acl.py:112 tickets/const.py:11 #: acls/models/command_acl.py:112 tickets/const.py:12
msgid "Command confirm" msgid "Command confirm"
msgstr "コマンドの確認" msgstr "コマンドの確認"
@ -1197,7 +1197,7 @@ msgstr "ルール"
msgid "Login acl" msgid "Login acl"
msgstr "ログインacl" msgstr "ログインacl"
#: acls/models/login_acl.py:27 tickets/const.py:10 #: acls/models/login_acl.py:27 tickets/const.py:11
msgid "Login confirm" msgid "Login confirm"
msgstr "ログイン確認" msgstr "ログイン確認"
@ -1205,7 +1205,7 @@ msgstr "ログイン確認"
msgid "Login asset acl" msgid "Login asset acl"
msgstr "ログインasset acl" msgstr "ログインasset acl"
#: acls/models/login_asset_acl.py:22 tickets/const.py:12 #: acls/models/login_asset_acl.py:22 tickets/const.py:13
msgid "Login asset confirm" msgid "Login asset confirm"
msgstr "ログイン資産の確認" msgstr "ログイン資産の確認"
@ -1470,7 +1470,7 @@ msgid "Kubernetes"
msgstr "Kubernetes" msgstr "Kubernetes"
#: assets/const/device.py:7 terminal/models/applet/applet.py:26 #: assets/const/device.py:7 terminal/models/applet/applet.py:26
#: tickets/const.py:8 #: tickets/const.py:9
msgid "General" msgid "General"
msgstr "一般" msgstr "一般"
@ -1635,7 +1635,7 @@ 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:236 users/models/user.py:1042 #: ops/models/job.py:235 users/models/user.py:1042
msgid "Date created" msgid "Date created"
msgstr "作成された日付" msgstr "作成された日付"
@ -1804,7 +1804,7 @@ msgstr "証明書チェックを無視"
msgid "Proxy" msgid "Proxy"
msgstr "プロキシー" msgstr "プロキシー"
#: assets/models/automations/base.py:22 ops/models/job.py:232 #: assets/models/automations/base.py:22 ops/models/job.py:231
#: settings/serializers/auth/sms.py:103 #: settings/serializers/auth/sms.py:103
msgid "Parameters" msgid "Parameters"
msgstr "パラメータ" msgstr "パラメータ"
@ -2405,14 +2405,14 @@ msgstr "ログイン"
msgid "Change password" msgid "Change password"
msgstr "パスワードを変更する" msgstr "パスワードを変更する"
#: audits/const.py:37 tickets/const.py:46 #: audits/const.py:37 tickets/const.py:47
msgid "Approve" msgid "Approve"
msgstr "承認" msgstr "承認"
#: audits/const.py:38 #: audits/const.py:38
#: authentication/templates/authentication/_access_key_modal.html:155 #: authentication/templates/authentication/_access_key_modal.html:155
#: authentication/templates/authentication/_mfa_confirm_modal.html:53 #: authentication/templates/authentication/_mfa_confirm_modal.html:53
#: templates/_modal.html:22 tickets/const.py:44 #: templates/_modal.html:22 tickets/const.py:45
msgid "Close" msgid "Close"
msgstr "閉じる" msgstr "閉じる"
@ -2557,16 +2557,16 @@ msgstr "ユーザーログインログ"
msgid "Session key" msgid "Session key"
msgstr "セッションID" msgstr "セッションID"
#: audits/models.py:306 #: audits/models.py:305
msgid "User session" msgid "User session"
msgstr "ユーザーセッション" msgstr "ユーザーセッション"
#: audits/models.py:308 #: audits/models.py:307
msgid "Offline user session" msgid "Offline user session"
msgstr "オフラインユーザセッション" msgstr "オフラインユーザセッション"
#: audits/serializers.py:33 ops/models/adhoc.py:25 ops/models/base.py:16 #: audits/serializers.py:33 ops/models/adhoc.py:25 ops/models/base.py:16
#: ops/models/base.py:53 ops/models/job.py:147 ops/models/job.py:235 #: ops/models/base.py:53 ops/models/job.py:146 ops/models/job.py:234
#: ops/models/playbook.py:30 terminal/models/session/sharing.py:25 #: ops/models/playbook.py:30 terminal/models/session/sharing.py:25
msgid "Creator" msgid "Creator"
msgstr "作成者" msgstr "作成者"
@ -2636,7 +2636,7 @@ msgstr "本を飛ばす"
msgid "Slack" msgid "Slack"
msgstr "" msgstr ""
#: audits/signal_handlers/login_log.py:40 authentication/views/dingtalk.py:160 #: audits/signal_handlers/login_log.py:40 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:750
#: users/models/user.py:856 #: users/models/user.py:856
@ -2653,11 +2653,11 @@ msgstr "仮パスワード"
msgid "Passkey" msgid "Passkey"
msgstr "Passkey" msgstr "Passkey"
#: audits/tasks.py:101 #: audits/tasks.py:108
msgid "Clean audits session task log" msgid "Clean audits session task log"
msgstr "資産監査セッションタスクログのクリーンアップ" msgstr "資産監査セッションタスクログのクリーンアップ"
#: audits/tasks.py:114 #: audits/tasks.py:122
msgid "Upload FTP file to external storage" msgid "Upload FTP file to external storage"
msgstr "外部ストレージへのFTPファイルのアップロード" msgstr "外部ストレージへのFTPファイルのアップロード"
@ -2705,11 +2705,11 @@ msgid "Current user not support mfa type: {}"
msgstr "現在のユーザーはmfaタイプをサポートしていません: {}" msgstr "現在のユーザーはmfaタイプをサポートしていません: {}"
#: authentication/api/password.py:33 terminal/api/session/session.py:305 #: authentication/api/password.py:33 terminal/api/session/session.py:305
#: users/views/profile/reset.py:62 #: users/views/profile/reset.py:63
msgid "User does not exist: {}" msgid "User does not exist: {}"
msgstr "ユーザーが存在しない: {}" msgstr "ユーザーが存在しない: {}"
#: authentication/api/password.py:33 users/views/profile/reset.py:163 #: authentication/api/password.py:33 users/views/profile/reset.py:164
msgid "No user matched" msgid "No user matched"
msgstr "ユーザーにマッチしなかった" msgstr "ユーザーにマッチしなかった"
@ -2723,8 +2723,8 @@ msgstr ""
#: authentication/api/password.py:65 #: authentication/api/password.py:65
#: authentication/templates/authentication/login.html:361 #: authentication/templates/authentication/login.html:361
#: users/templates/users/forgot_password.html:27 #: users/templates/users/forgot_password.html:41
#: users/templates/users/forgot_password.html:28 #: users/templates/users/forgot_password.html:42
#: users/templates/users/forgot_password_previewing.html:13 #: users/templates/users/forgot_password_previewing.html:13
#: users/templates/users/forgot_password_previewing.html:14 #: users/templates/users/forgot_password_previewing.html:14
msgid "Forgot password" msgid "Forgot password"
@ -2928,8 +2928,8 @@ msgstr "企業の微信はすでにバインドされています"
msgid "WeCom is not bound" msgid "WeCom is not bound"
msgstr "企業の微信をバインドしていません" msgstr "企業の微信をバインドしていません"
#: authentication/errors/mfa.py:28 authentication/views/dingtalk.py:212 #: authentication/errors/mfa.py:28 authentication/views/dingtalk.py:213
#: authentication/views/dingtalk.py:254 #: authentication/views/dingtalk.py:255
msgid "DingTalk is not bound" msgid "DingTalk is not bound"
msgstr "DingTalkはバインドされていません" msgstr "DingTalkはバインドされていません"
@ -3040,8 +3040,8 @@ msgstr "メッセージ検証コードが無効"
#: authentication/mfa/sms.py:12 authentication/serializers/password_mfa.py:16 #: authentication/mfa/sms.py:12 authentication/serializers/password_mfa.py:16
#: authentication/serializers/password_mfa.py:24 #: authentication/serializers/password_mfa.py:24
#: settings/serializers/auth/sms.py:32 users/forms/profile.py:104 #: settings/serializers/auth/sms.py:32 users/forms/profile.py:104
#: users/forms/profile.py:109 users/templates/users/forgot_password.html:112 #: users/forms/profile.py:109 users/templates/users/forgot_password.html:155
#: users/views/profile/reset.py:99 #: users/views/profile/reset.py:100
msgid "SMS" msgid "SMS"
msgstr "メッセージ" msgstr "メッセージ"
@ -3239,7 +3239,7 @@ msgid "Is expired"
msgstr "期限切れです" msgstr "期限切れです"
#: authentication/serializers/password_mfa.py:29 #: authentication/serializers/password_mfa.py:29
#: users/templates/users/forgot_password.html:108 #: users/templates/users/forgot_password.html:151
msgid "The {} cannot be empty" msgid "The {} cannot be empty"
msgstr "{} 空にしてはならない" msgstr "{} 空にしてはならない"
@ -3379,7 +3379,7 @@ msgstr "新しいものを要求する"
#: authentication/templates/authentication/_msg_reset_password_code.html:12 #: authentication/templates/authentication/_msg_reset_password_code.html:12
#: terminal/models/session/sharing.py:27 terminal/models/session/sharing.py:97 #: terminal/models/session/sharing.py:27 terminal/models/session/sharing.py:97
#: terminal/templates/terminal/_msg_session_sharing.html:12 #: terminal/templates/terminal/_msg_session_sharing.html:12
#: users/forms/profile.py:107 users/templates/users/forgot_password.html:66 #: users/forms/profile.py:107 users/templates/users/forgot_password.html:97
msgid "Verify code" msgid "Verify code"
msgstr "コードの確認" msgstr "コードの確認"
@ -3427,7 +3427,7 @@ msgstr ""
"能性があります" "能性があります"
#: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28 #: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28
#: templates/flash_message_standalone.html:28 tickets/const.py:17 #: templates/flash_message_standalone.html:28 tickets/const.py:18
msgid "Cancel" msgid "Cancel"
msgstr "キャンセル" msgstr "キャンセル"
@ -3454,7 +3454,7 @@ msgstr "MFA マルチファクタ認証"
#: authentication/templates/authentication/login_mfa.html:19 #: authentication/templates/authentication/login_mfa.html:19
#: users/templates/users/user_otp_check_password.html:12 #: users/templates/users/user_otp_check_password.html:12
#: users/templates/users/user_otp_enable_bind.html:24 #: users/templates/users/user_otp_enable_bind.html:24
#: users/templates/users/user_otp_enable_install_app.html:29 #: users/templates/users/user_otp_enable_install_app.html:31
#: users/templates/users/user_verify_mfa.html:30 #: users/templates/users/user_verify_mfa.html:30
msgid "Next" msgid "Next"
msgstr "次へ" msgstr "次へ"
@ -3520,7 +3520,7 @@ msgstr "バインド%s成功"
msgid "DingTalk Error, Please contact your system administrator" msgid "DingTalk Error, Please contact your system administrator"
msgstr "DingTalkエラー、システム管理者に連絡してください" msgstr "DingTalkエラー、システム管理者に連絡してください"
#: authentication/views/dingtalk.py:45 authentication/views/dingtalk.py:211 #: authentication/views/dingtalk.py:45 authentication/views/dingtalk.py:212
msgid "DingTalk Error" msgid "DingTalk Error"
msgstr "DingTalkエラー" msgstr "DingTalkエラー"
@ -3534,27 +3534,27 @@ msgstr "システム設定が正しくありません。管理者に連絡して
msgid "DingTalk is already bound" msgid "DingTalk is already bound"
msgstr "DingTalkはすでにバインドされています" msgstr "DingTalkはすでにバインドされています"
#: authentication/views/dingtalk.py:129 #: authentication/views/dingtalk.py:130
msgid "Invalid user_id" msgid "Invalid user_id"
msgstr "無効なuser_id" msgstr "無効なuser_id"
#: authentication/views/dingtalk.py:145 #: authentication/views/dingtalk.py:146
msgid "DingTalk query user failed" msgid "DingTalk query user failed"
msgstr "DingTalkクエリユーザーが失敗しました" msgstr "DingTalkクエリユーザーが失敗しました"
#: authentication/views/dingtalk.py:154 #: authentication/views/dingtalk.py:155
msgid "The DingTalk is already bound to another user" msgid "The DingTalk is already bound to another user"
msgstr "DingTalkはすでに別のユーザーにバインドされています" msgstr "DingTalkはすでに別のユーザーにバインドされています"
#: authentication/views/dingtalk.py:161 #: authentication/views/dingtalk.py:162
msgid "Binding DingTalk successfully" msgid "Binding DingTalk successfully"
msgstr "DingTalkのバインドに成功" msgstr "DingTalkのバインドに成功"
#: authentication/views/dingtalk.py:213 authentication/views/dingtalk.py:248 #: authentication/views/dingtalk.py:214 authentication/views/dingtalk.py:249
msgid "Failed to get user from DingTalk" msgid "Failed to get user from DingTalk"
msgstr "DingTalkからユーザーを取得できませんでした" msgstr "DingTalkからユーザーを取得できませんでした"
#: authentication/views/dingtalk.py:255 #: authentication/views/dingtalk.py:256
msgid "Please login with a password and then bind the DingTalk" msgid "Please login with a password and then bind the DingTalk"
msgstr "パスワードでログインし、DingTalkをバインドしてください" msgstr "パスワードでログインし、DingTalkをバインドしてください"
@ -3654,8 +3654,8 @@ msgstr "タイミングトリガー"
msgid "Ready" msgid "Ready"
msgstr "の準備を" msgstr "の準備を"
#: common/const/choices.py:16 terminal/const.py:77 tickets/const.py:29 #: common/const/choices.py:16 terminal/const.py:77 tickets/const.py:30
#: tickets/const.py:39 #: tickets/const.py:40
msgid "Pending" msgid "Pending"
msgstr "未定" msgstr "未定"
@ -4157,7 +4157,7 @@ msgstr "VCS"
msgid "Adhoc" msgid "Adhoc"
msgstr "コマンド#コマンド#" msgstr "コマンド#コマンド#"
#: ops/const.py:39 ops/models/job.py:145 #: ops/const.py:39 ops/models/job.py:144
msgid "Playbook" msgid "Playbook"
msgstr "Playbook" msgstr "Playbook"
@ -4242,11 +4242,11 @@ msgstr "定期的または定期的に設定を行う必要があります"
msgid "Pattern" msgid "Pattern"
msgstr "パターン" msgstr "パターン"
#: ops/models/adhoc.py:23 ops/models/job.py:142 #: ops/models/adhoc.py:23 ops/models/job.py:141
msgid "Module" msgid "Module"
msgstr "モジュール" msgstr "モジュール"
#: ops/models/adhoc.py:24 ops/models/celery.py:81 ops/models/job.py:140 #: ops/models/adhoc.py:24 ops/models/celery.py:81 ops/models/job.py:139
#: terminal/models/component/task.py:14 #: terminal/models/component/task.py:14
msgid "Args" msgid "Args"
msgstr "アルグ" msgstr "アルグ"
@ -4265,12 +4265,12 @@ msgstr "最後の実行"
msgid "Date last run" msgid "Date last run"
msgstr "最終実行日" msgstr "最終実行日"
#: ops/models/base.py:51 ops/models/job.py:233 #: ops/models/base.py:51 ops/models/job.py:232
#: xpack/plugins/cloud/models.py:202 #: xpack/plugins/cloud/models.py:202
msgid "Result" msgid "Result"
msgstr "結果" msgstr "結果"
#: ops/models/base.py:52 ops/models/job.py:234 #: ops/models/base.py:52 ops/models/job.py:233
msgid "Summary" msgid "Summary"
msgstr "概要" msgstr "概要"
@ -4291,7 +4291,7 @@ msgid "Kwargs"
msgstr "クワーグ" msgstr "クワーグ"
#: ops/models/celery.py:84 terminal/models/session/sharing.py:128 #: ops/models/celery.py:84 terminal/models/session/sharing.py:128
#: tickets/const.py:25 #: tickets/const.py:26
msgid "Finished" msgid "Finished"
msgstr "終了" msgstr "終了"
@ -4303,43 +4303,43 @@ msgstr "発売日"
msgid "Celery Task Execution" msgid "Celery Task Execution"
msgstr "Celery タスク実行" msgstr "Celery タスク実行"
#: ops/models/job.py:143 #: ops/models/job.py:142
msgid "Chdir" msgid "Chdir"
msgstr "実行ディレクトリ" msgstr "実行ディレクトリ"
#: ops/models/job.py:144 #: ops/models/job.py:143
msgid "Timeout (Seconds)" msgid "Timeout (Seconds)"
msgstr "タイムアウト(秒)" msgstr "タイムアウト(秒)"
#: ops/models/job.py:149 #: ops/models/job.py:148
msgid "Use Parameter Define" msgid "Use Parameter Define"
msgstr "パラメータ定義を使用する" msgstr "パラメータ定義を使用する"
#: ops/models/job.py:150 #: ops/models/job.py:149
msgid "Parameters define" msgid "Parameters define"
msgstr "パラメータ定義" msgstr "パラメータ定義"
#: ops/models/job.py:151 #: ops/models/job.py:150
msgid "Runas" msgid "Runas"
msgstr "ユーザーとして実行" msgstr "ユーザーとして実行"
#: ops/models/job.py:153 #: ops/models/job.py:152
msgid "Runas policy" msgid "Runas policy"
msgstr "ユーザー ポリシー" msgstr "ユーザー ポリシー"
#: ops/models/job.py:217 #: ops/models/job.py:216
msgid "Job" msgid "Job"
msgstr "ジョブ#ジョブ#" msgstr "ジョブ#ジョブ#"
#: ops/models/job.py:240 #: ops/models/job.py:239
msgid "Material" msgid "Material"
msgstr "Material" msgstr "Material"
#: ops/models/job.py:242 #: ops/models/job.py:241
msgid "Material Type" msgid "Material Type"
msgstr "Material を選択してオプションを設定します。" msgstr "Material を選択してオプションを設定します。"
#: ops/models/job.py:559 #: ops/models/job.py:558
msgid "Job Execution" msgid "Job Execution"
msgstr "ジョブ実行" msgstr "ジョブ実行"
@ -5509,26 +5509,30 @@ msgid "Operate log keep days (day)"
msgstr "ログ管理日を操作する(天)" msgstr "ログ管理日を操作する(天)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "password change log keep days (day)"
msgstr "パスワード変更ログ(天)"
#: settings/serializers/cleaning.py:31
msgid "FTP log keep days (day)" msgid "FTP log keep days (day)"
msgstr "ダウンロードのアップロード(天)" msgstr "ダウンロードのアップロード(天)"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:35
msgid "Cloud sync record keep days (day)" msgid "Cloud sync record keep days (day)"
msgstr "クラウド同期レコードは日数を保持します(天)" msgstr "クラウド同期レコードは日数を保持します(天)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:39
msgid "job execution keep days (day)" msgid "job execution keep days (day)"
msgstr "ジョブセンターの実行履歴 (天) " msgstr "ジョブセンターの実行履歴 (天) "
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:43
msgid "Activity log keep days (day)" msgid "Activity log keep days (day)"
msgstr "活動ログは日数を保持します(天)" msgstr "活動ログは日数を保持します(天)"
#: settings/serializers/cleaning.py:42 #: settings/serializers/cleaning.py:46
msgid "Session keep duration (day)" msgid "Session keep duration (day)"
msgstr "セッション維持期間(天)" msgstr "セッション維持期間(天)"
#: settings/serializers/cleaning.py:44 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
"Session, record, command will be delete if more than duration, only in " "Session, record, command will be delete if more than duration, only in "
"database, OSS will not be affected." "database, OSS will not be affected."
@ -6365,12 +6369,12 @@ msgid "Send verification code"
msgstr "確認コードを送信" msgstr "確認コードを送信"
#: templates/_mfa_login_field.html:106 #: templates/_mfa_login_field.html:106
#: users/templates/users/forgot_password.html:130 #: users/templates/users/forgot_password.html:174
msgid "Wait: " msgid "Wait: "
msgstr "待つ:" msgstr "待つ:"
#: templates/_mfa_login_field.html:116 #: templates/_mfa_login_field.html:116
#: users/templates/users/forgot_password.html:146 #: users/templates/users/forgot_password.html:190
msgid "The verification code has been sent" msgid "The verification code has been sent"
msgstr "確認コードが送信されました" msgstr "確認コードが送信されました"
@ -6424,13 +6428,13 @@ msgstr ""
msgid "Offline video player" msgid "Offline video player"
msgstr "オフラインビデオプレーヤー" msgstr "オフラインビデオプレーヤー"
#: terminal/api/applet/applet.py:50 terminal/api/applet/applet.py:53 #: terminal/api/applet/applet.py:52 terminal/api/applet/applet.py:55
#: terminal/api/virtualapp/virtualapp.py:43 #: terminal/api/virtualapp/virtualapp.py:43
#: terminal/api/virtualapp/virtualapp.py:46 #: terminal/api/virtualapp/virtualapp.py:46
msgid "Invalid zip file" msgid "Invalid zip file"
msgstr "zip ファイルが無効です" msgstr "zip ファイルが無効です"
#: terminal/api/applet/applet.py:72 #: terminal/api/applet/applet.py:74
msgid "This is enterprise edition applet" msgid "This is enterprise edition applet"
msgstr "これはエンタープライズ版アプレットです" msgstr "これはエンタープライズ版アプレットです"
@ -7343,63 +7347,63 @@ msgstr "応募者"
msgid "Tickets" msgid "Tickets"
msgstr "チケット" msgstr "チケット"
#: tickets/const.py:9 #: tickets/const.py:10
msgid "Apply for asset" msgid "Apply for asset"
msgstr "資産の申請" msgstr "資産の申請"
#: tickets/const.py:16 tickets/const.py:24 tickets/const.py:43 #: tickets/const.py:17 tickets/const.py:25 tickets/const.py:44
msgid "Open" msgid "Open"
msgstr "オープン" msgstr "オープン"
#: tickets/const.py:18 tickets/const.py:31 #: tickets/const.py:19 tickets/const.py:32
msgid "Reopen" msgid "Reopen"
msgstr "再オープン" msgstr "再オープン"
#: tickets/const.py:19 tickets/const.py:32 #: tickets/const.py:20 tickets/const.py:33
msgid "Approved" msgid "Approved"
msgstr "承認済み" msgstr "承認済み"
#: tickets/const.py:20 tickets/const.py:33 #: tickets/const.py:21 tickets/const.py:34
msgid "Rejected" msgid "Rejected"
msgstr "拒否" msgstr "拒否"
#: tickets/const.py:30 tickets/const.py:38 #: tickets/const.py:31 tickets/const.py:39
msgid "Closed" msgid "Closed"
msgstr "クローズ" msgstr "クローズ"
#: tickets/const.py:50 #: tickets/const.py:51
msgid "One level" msgid "One level"
msgstr "1つのレベル" msgstr "1つのレベル"
#: tickets/const.py:51 #: tickets/const.py:52
msgid "Two level" msgid "Two level"
msgstr "2つのレベル" msgstr "2つのレベル"
#: tickets/const.py:55 #: tickets/const.py:56
msgid "Org admin" msgid "Org admin"
msgstr "Org admin" msgstr "Org admin"
#: tickets/const.py:56 #: tickets/const.py:57
msgid "Custom user" msgid "Custom user"
msgstr "カスタムユーザー" msgstr "カスタムユーザー"
#: tickets/const.py:57 #: tickets/const.py:58
msgid "Super admin" msgid "Super admin"
msgstr "スーパー管理者" msgstr "スーパー管理者"
#: tickets/const.py:58 #: tickets/const.py:59
msgid "Super admin and org admin" msgid "Super admin and org admin"
msgstr "スーパーadminとorg admin" msgstr "スーパーadminとorg admin"
#: tickets/const.py:62 #: tickets/const.py:63
msgid "All assets" msgid "All assets"
msgstr "すべての資産" msgstr "すべての資産"
#: tickets/const.py:63 #: tickets/const.py:64
msgid "Permed assets" msgid "Permed assets"
msgstr "許可された資産" msgstr "許可された資産"
#: tickets/const.py:64 #: tickets/const.py:65
msgid "Permed valid assets" msgid "Permed valid assets"
msgstr "有効な許可を受けた資産" msgstr "有効な許可を受けた資産"
@ -7913,7 +7917,7 @@ msgstr "ユーザーパスワード履歴"
msgid "Reset password" msgid "Reset password"
msgstr "パスワードのリセット" msgstr "パスワードのリセット"
#: users/notifications.py:85 users/views/profile/reset.py:230 #: users/notifications.py:85 users/views/profile/reset.py:231
msgid "Reset password success" msgid "Reset password success"
msgstr "パスワードのリセット成功" msgstr "パスワードのリセット成功"
@ -8179,28 +8183,28 @@ msgstr "あなたのssh公開鍵はサイト管理者によってリセットさ
msgid "click here to set your password" msgid "click here to set your password"
msgstr "ここをクリックしてパスワードを設定してください" msgstr "ここをクリックしてパスワードを設定してください"
#: users/templates/users/forgot_password.html:32 #: users/templates/users/forgot_password.html:46
msgid "Input your email account, that will send a email to your" msgid "Input your email account, that will send a email to your"
msgstr "あなたのメールを入力し、それはあなたにメールを送信します" msgstr "あなたのメールを入力し、それはあなたにメールを送信します"
#: users/templates/users/forgot_password.html:35 #: users/templates/users/forgot_password.html:49
msgid "" msgid ""
"Enter your mobile number and a verification code will be sent to your phone" "Enter your mobile number and a verification code will be sent to your phone"
msgstr "携帯電話番号を入力すると、認証コードが携帯電話に送信されます" msgstr "携帯電話番号を入力すると、認証コードが携帯電話に送信されます"
#: users/templates/users/forgot_password.html:57 #: users/templates/users/forgot_password.html:71
msgid "Email account" msgid "Email account"
msgstr "メールアドレス" msgstr "メールアドレス"
#: users/templates/users/forgot_password.html:61 #: users/templates/users/forgot_password.html:92
msgid "Mobile number" msgid "Mobile number"
msgstr "携帯番号" msgstr "携帯番号"
#: users/templates/users/forgot_password.html:69 #: users/templates/users/forgot_password.html:100
msgid "Send" msgid "Send"
msgstr "送信" msgstr "送信"
#: users/templates/users/forgot_password.html:73 #: users/templates/users/forgot_password.html:104
#: users/templates/users/forgot_password_previewing.html:30 #: users/templates/users/forgot_password_previewing.html:30
msgid "Submit" msgid "Submit"
msgstr "送信" msgstr "送信"
@ -8294,7 +8298,7 @@ msgstr "Androidのダウンロード"
msgid "iPhone downloads" msgid "iPhone downloads"
msgstr "IPhoneのダウンロード" msgstr "IPhoneのダウンロード"
#: users/templates/users/user_otp_enable_install_app.html:26 #: users/templates/users/user_otp_enable_install_app.html:27
msgid "" msgid ""
"After installation, click the next step to enter the binding page (if " "After installation, click the next step to enter the binding page (if "
"installed, go to the next step directly)." "installed, go to the next step directly)."
@ -8322,32 +8326,32 @@ msgstr ""
msgid "Open MFA Authenticator and enter the 6-bit dynamic code" msgid "Open MFA Authenticator and enter the 6-bit dynamic code"
msgstr "MFA Authenticatorを開き、6ビットの動的コードを入力します" msgstr "MFA Authenticatorを開き、6ビットの動的コードを入力します"
#: users/views/profile/otp.py:85 #: users/views/profile/otp.py:106
msgid "Already bound" msgid "Already bound"
msgstr "すでにバインド済み" msgstr "すでにバインド済み"
#: users/views/profile/otp.py:86 #: users/views/profile/otp.py:107
msgid "MFA already bound, disable first, then bound" msgid "MFA already bound, disable first, then bound"
msgstr "" msgstr ""
"MFAはすでにバインドされており、最初に無効にしてからバインドされています。" "MFAはすでにバインドされており、最初に無効にしてからバインドされています。"
#: users/views/profile/otp.py:113 #: users/views/profile/otp.py:134
msgid "OTP enable success" msgid "OTP enable success"
msgstr "OTP有効化成功" msgstr "OTP有効化成功"
#: users/views/profile/otp.py:114 #: users/views/profile/otp.py:135
msgid "OTP enable success, return login page" msgid "OTP enable success, return login page"
msgstr "OTP有効化成功、ログインページを返す" msgstr "OTP有効化成功、ログインページを返す"
#: users/views/profile/otp.py:156 #: users/views/profile/otp.py:177
msgid "Disable OTP" msgid "Disable OTP"
msgstr "OTPの無効化" msgstr "OTPの無効化"
#: users/views/profile/otp.py:162 #: users/views/profile/otp.py:183
msgid "OTP disable success" msgid "OTP disable success"
msgstr "OTP無効化成功" msgstr "OTP無効化成功"
#: users/views/profile/otp.py:163 #: users/views/profile/otp.py:184
msgid "OTP disable success, return login page" msgid "OTP disable success, return login page"
msgstr "OTP無効化成功、ログインページを返す" msgstr "OTP無効化成功、ログインページを返す"
@ -8355,7 +8359,7 @@ msgstr "OTP無効化成功、ログインページを返す"
msgid "Password invalid" msgid "Password invalid"
msgstr "パスワード無効" msgstr "パスワード無効"
#: users/views/profile/reset.py:65 #: users/views/profile/reset.py:66
msgid "" msgid ""
"Non-local users can log in only from third-party platforms and cannot change " "Non-local users can log in only from third-party platforms and cannot change "
"their passwords: {}" "their passwords: {}"
@ -8363,23 +8367,23 @@ msgstr ""
"ローカル以外のユーザーは、サードパーティ プラットフォームからのログインのみが" "ローカル以外のユーザーは、サードパーティ プラットフォームからのログインのみが"
"許可され、パスワードの変更はサポートされていません: {}" "許可され、パスワードの変更はサポートされていません: {}"
#: users/views/profile/reset.py:185 users/views/profile/reset.py:196 #: users/views/profile/reset.py:186 users/views/profile/reset.py:197
msgid "Token invalid or expired" msgid "Token invalid or expired"
msgstr "トークンが無効または期限切れ" msgstr "トークンが無効または期限切れ"
#: users/views/profile/reset.py:201 #: users/views/profile/reset.py:202
msgid "User auth from {}, go there change password" msgid "User auth from {}, go there change password"
msgstr "ユーザー認証ソース {}, 対応するシステムにパスワードを変更してください" msgstr "ユーザー認証ソース {}, 対応するシステムにパスワードを変更してください"
#: users/views/profile/reset.py:208 #: users/views/profile/reset.py:209
msgid "* Your password does not meet the requirements" msgid "* Your password does not meet the requirements"
msgstr "* パスワードが要件を満たしていない" msgstr "* パスワードが要件を満たしていない"
#: users/views/profile/reset.py:214 #: users/views/profile/reset.py:215
msgid "* The new password cannot be the last {} passwords" msgid "* The new password cannot be the last {} passwords"
msgstr "* 新しいパスワードを最後の {} パスワードにすることはできません" msgstr "* 新しいパスワードを最後の {} パスワードにすることはできません"
#: users/views/profile/reset.py:231 #: users/views/profile/reset.py:232
msgid "Reset password success, return to login page" msgid "Reset password success, return to login page"
msgstr "パスワードの成功をリセットし、ログインページに戻る" msgstr "パスワードの成功をリセットし、ログインページに戻る"

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:82a37a09d6142219f93f871746f9bc036bff1df07d10f273f8ea8b26c5dbd63b oid sha256:68cbef2326c0b3abe8d8358eba96400ead043348c80ab9ece490c18610bf6b6c
size 140456 size 140527

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-01-25 15:38+0800\n" "POT-Creation-Date: 2024-02-05 16:29+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"
@ -207,8 +207,8 @@ msgstr "仅创建"
#: 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:802 #: users/forms/profile.py:109 users/models/user.py:802
#: users/templates/users/forgot_password.html:117 #: users/templates/users/forgot_password.html:160
#: users/views/profile/reset.py:93 #: users/views/profile/reset.py:94
msgid "Email" msgid "Email"
msgstr "邮箱" msgstr "邮箱"
@ -364,7 +364,7 @@ msgstr "账号备份计划"
#: accounts/models/automations/backup_account.py:119 #: accounts/models/automations/backup_account.py:119
#: assets/models/automations/base.py:115 audits/models.py:65 #: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:86 ops/models/job.py:237 #: ops/models/base.py:55 ops/models/celery.py:86 ops/models/job.py:236
#: ops/templates/ops/celery_task_log.html:75 #: ops/templates/ops/celery_task_log.html:75
#: perms/models/asset_permission.py:78 #: perms/models/asset_permission.py:78
#: settings/templates/ldap/_msg_import_ldap_user.html:5 #: settings/templates/ldap/_msg_import_ldap_user.html:5
@ -475,14 +475,14 @@ msgstr "开始日期"
#: accounts/models/automations/change_secret.py:42 #: accounts/models/automations/change_secret.py:42
#: assets/models/automations/base.py:116 ops/models/base.py:56 #: assets/models/automations/base.py:116 ops/models/base.py:56
#: ops/models/celery.py:87 ops/models/job.py:238 #: ops/models/celery.py:87 ops/models/job.py:237
#: terminal/models/applet/host.py:142 #: terminal/models/applet/host.py:142
msgid "Date finished" msgid "Date finished"
msgstr "结束日期" msgstr "结束日期"
#: accounts/models/automations/change_secret.py:43 #: accounts/models/automations/change_secret.py:43
#: assets/models/automations/base.py:113 audits/models.py:208 #: assets/models/automations/base.py:113 audits/models.py:208
#: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:229 #: audits/serializers.py:54 ops/models/base.py:49 ops/models/job.py:228
#: terminal/models/applet/applet.py:320 terminal/models/applet/host.py:140 #: terminal/models/applet/applet.py:320 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30 #: terminal/models/component/status.py:30
#: terminal/models/virtualapp/virtualapp.py:99 #: terminal/models/virtualapp/virtualapp.py:99
@ -608,7 +608,7 @@ msgstr "密码规则"
#: authentication/serializers/connect_token_secret.py:113 #: authentication/serializers/connect_token_secret.py:113
#: authentication/serializers/connect_token_secret.py:168 labels/models.py:11 #: authentication/serializers/connect_token_secret.py:168 labels/models.py:11
#: ops/mixin.py:21 ops/models/adhoc.py:20 ops/models/celery.py:15 #: ops/mixin.py:21 ops/models/adhoc.py:20 ops/models/celery.py:15
#: ops/models/celery.py:80 ops/models/job.py:138 ops/models/playbook.py:28 #: ops/models/celery.py:80 ops/models/job.py:137 ops/models/playbook.py:28
#: ops/serializers/job.py:18 orgs/models.py:82 #: ops/serializers/job.py:18 orgs/models.py:82
#: perms/models/asset_permission.py:61 rbac/models/role.py:29 #: perms/models/asset_permission.py:61 rbac/models/role.py:29
#: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89 #: settings/models.py:33 settings/models.py:181 settings/serializers/msg.py:89
@ -761,7 +761,7 @@ msgstr "类别"
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:120 #: assets/serializers/asset/common.py:126 assets/serializers/platform.py:120
#: assets/serializers/platform.py:139 audits/serializers.py:53 #: assets/serializers/platform.py:139 audits/serializers.py:53
#: audits/serializers.py:170 #: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:146 #: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:145
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:39 #: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:39
#: terminal/models/component/storage.py:57 #: terminal/models/component/storage.py:57
#: terminal/models/component/storage.py:146 terminal/serializers/applet.py:29 #: terminal/models/component/storage.py:146 terminal/serializers/applet.py:29
@ -798,7 +798,7 @@ msgstr "已修改"
#: 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:404 ops/models/base.py:17 #: authentication/api/connection_token.py:404 ops/models/base.py:17
#: ops/models/job.py:148 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"
msgstr "资产" msgstr "资产"
@ -929,7 +929,7 @@ msgstr "关联平台,可配置推送参数,如果不关联,将使用默认
#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:27 #: accounts/serializers/account/virtual.py:19 assets/models/_user.py:27
#: assets/models/cmd_filter.py:40 assets/models/cmd_filter.py:88 #: assets/models/cmd_filter.py:40 assets/models/cmd_filter.py:88
#: assets/models/group.py:20 common/db/models.py:36 ops/models/adhoc.py:26 #: assets/models/group.py:20 common/db/models.py:36 ops/models/adhoc.py:26
#: ops/models/job.py:154 ops/models/playbook.py:31 rbac/models/role.py:37 #: ops/models/job.py:153 ops/models/playbook.py:31 rbac/models/role.py:37
#: settings/models.py:38 terminal/models/applet/applet.py:45 #: settings/models.py:38 terminal/models/applet/applet.py:45
#: terminal/models/applet/applet.py:321 terminal/models/applet/host.py:143 #: terminal/models/applet/applet.py:321 terminal/models/applet/host.py:143
#: terminal/models/component/endpoint.py:25 #: terminal/models/component/endpoint.py:25
@ -1072,7 +1072,7 @@ msgstr "密钥不合法或密钥密码错误"
msgid "Acls" msgid "Acls"
msgstr "访问控制" msgstr "访问控制"
#: acls/const.py:6 audits/const.py:36 terminal/const.py:11 tickets/const.py:45 #: acls/const.py:6 audits/const.py:36 terminal/const.py:11 tickets/const.py:46
#: tickets/templates/tickets/approve_check_password.html:47 #: tickets/templates/tickets/approve_check_password.html:47
msgid "Reject" msgid "Reject"
msgstr "拒绝" msgstr "拒绝"
@ -1114,7 +1114,7 @@ msgstr "审批人"
#: authentication/models/connection_token.py:53 #: authentication/models/connection_token.py:53
#: authentication/templates/authentication/_access_key_modal.html:32 #: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/session/sharing.py:29 #: perms/models/asset_permission.py:82 terminal/models/session/sharing.py:29
#: tickets/const.py:37 #: tickets/const.py:38
msgid "Active" msgid "Active"
msgstr "激活中" msgstr "激活中"
@ -1172,7 +1172,7 @@ msgstr "生成的正则表达式有误"
msgid "Command acl" msgid "Command acl"
msgstr "命令过滤" msgstr "命令过滤"
#: acls/models/command_acl.py:112 tickets/const.py:11 #: acls/models/command_acl.py:112 tickets/const.py:12
msgid "Command confirm" msgid "Command confirm"
msgstr "命令复核" msgstr "命令复核"
@ -1193,7 +1193,7 @@ msgstr "规则"
msgid "Login acl" msgid "Login acl"
msgstr "登录访问控制" msgstr "登录访问控制"
#: acls/models/login_acl.py:27 tickets/const.py:10 #: acls/models/login_acl.py:27 tickets/const.py:11
msgid "Login confirm" msgid "Login confirm"
msgstr "登录复核" msgstr "登录复核"
@ -1201,7 +1201,7 @@ msgstr "登录复核"
msgid "Login asset acl" msgid "Login asset acl"
msgstr "登录资产访问控制" msgstr "登录资产访问控制"
#: acls/models/login_asset_acl.py:22 tickets/const.py:12 #: acls/models/login_asset_acl.py:22 tickets/const.py:13
msgid "Login asset confirm" msgid "Login asset confirm"
msgstr "登录资产复核" msgstr "登录资产复核"
@ -1462,7 +1462,7 @@ msgid "Kubernetes"
msgstr "Kubernetes" msgstr "Kubernetes"
#: assets/const/device.py:7 terminal/models/applet/applet.py:26 #: assets/const/device.py:7 terminal/models/applet/applet.py:26
#: tickets/const.py:8 #: tickets/const.py:9
msgid "General" msgid "General"
msgstr "一般" msgstr "一般"
@ -1627,7 +1627,7 @@ 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:236 users/models/user.py:1042 #: ops/models/job.py:235 users/models/user.py:1042
msgid "Date created" msgid "Date created"
msgstr "创建日期" msgstr "创建日期"
@ -1796,7 +1796,7 @@ msgstr "忽略证书校验"
msgid "Proxy" msgid "Proxy"
msgstr "代理" msgstr "代理"
#: assets/models/automations/base.py:22 ops/models/job.py:232 #: assets/models/automations/base.py:22 ops/models/job.py:231
#: settings/serializers/auth/sms.py:103 #: settings/serializers/auth/sms.py:103
msgid "Parameters" msgid "Parameters"
msgstr "参数" msgstr "参数"
@ -2388,14 +2388,14 @@ msgstr "登录"
msgid "Change password" msgid "Change password"
msgstr "改密" msgstr "改密"
#: audits/const.py:37 tickets/const.py:46 #: audits/const.py:37 tickets/const.py:47
msgid "Approve" msgid "Approve"
msgstr "同意" msgstr "同意"
#: audits/const.py:38 #: audits/const.py:38
#: authentication/templates/authentication/_access_key_modal.html:155 #: authentication/templates/authentication/_access_key_modal.html:155
#: authentication/templates/authentication/_mfa_confirm_modal.html:53 #: authentication/templates/authentication/_mfa_confirm_modal.html:53
#: templates/_modal.html:22 tickets/const.py:44 #: templates/_modal.html:22 tickets/const.py:45
msgid "Close" msgid "Close"
msgstr "关闭" msgstr "关闭"
@ -2540,16 +2540,16 @@ msgstr "用户登录日志"
msgid "Session key" msgid "Session key"
msgstr "会话标识" msgstr "会话标识"
#: audits/models.py:306 #: audits/models.py:305
msgid "User session" msgid "User session"
msgstr "用户会话" msgstr "用户会话"
#: audits/models.py:308 #: audits/models.py:307
msgid "Offline user session" msgid "Offline user session"
msgstr "下线用户会话" msgstr "下线用户会话"
#: audits/serializers.py:33 ops/models/adhoc.py:25 ops/models/base.py:16 #: audits/serializers.py:33 ops/models/adhoc.py:25 ops/models/base.py:16
#: ops/models/base.py:53 ops/models/job.py:147 ops/models/job.py:235 #: ops/models/base.py:53 ops/models/job.py:146 ops/models/job.py:234
#: ops/models/playbook.py:30 terminal/models/session/sharing.py:25 #: ops/models/playbook.py:30 terminal/models/session/sharing.py:25
msgid "Creator" msgid "Creator"
msgstr "创建者" msgstr "创建者"
@ -2619,7 +2619,7 @@ msgstr "飞书"
msgid "Slack" msgid "Slack"
msgstr "" msgstr ""
#: audits/signal_handlers/login_log.py:40 authentication/views/dingtalk.py:160 #: audits/signal_handlers/login_log.py:40 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:750
#: users/models/user.py:856 #: users/models/user.py:856
@ -2636,11 +2636,11 @@ msgstr "临时密码"
msgid "Passkey" msgid "Passkey"
msgstr "Passkey" msgstr "Passkey"
#: audits/tasks.py:101 #: audits/tasks.py:108
msgid "Clean audits session task log" msgid "Clean audits session task log"
msgstr "清理资产审计会话任务日志" msgstr "清理资产审计会话任务日志"
#: audits/tasks.py:114 #: audits/tasks.py:122
msgid "Upload FTP file to external storage" msgid "Upload FTP file to external storage"
msgstr "上传 FTP 文件到外部存储" msgstr "上传 FTP 文件到外部存储"
@ -2686,11 +2686,11 @@ msgid "Current user not support mfa type: {}"
msgstr "当前用户不支持 MFA 类型: {}" msgstr "当前用户不支持 MFA 类型: {}"
#: authentication/api/password.py:33 terminal/api/session/session.py:305 #: authentication/api/password.py:33 terminal/api/session/session.py:305
#: users/views/profile/reset.py:62 #: users/views/profile/reset.py:63
msgid "User does not exist: {}" msgid "User does not exist: {}"
msgstr "用户不存在: {}" msgstr "用户不存在: {}"
#: authentication/api/password.py:33 users/views/profile/reset.py:163 #: authentication/api/password.py:33 users/views/profile/reset.py:164
msgid "No user matched" msgid "No user matched"
msgstr "没有匹配到用户" msgstr "没有匹配到用户"
@ -2702,8 +2702,8 @@ msgstr "用户来自 {} 请去相应系统修改密码"
#: authentication/api/password.py:65 #: authentication/api/password.py:65
#: authentication/templates/authentication/login.html:361 #: authentication/templates/authentication/login.html:361
#: users/templates/users/forgot_password.html:27 #: users/templates/users/forgot_password.html:41
#: users/templates/users/forgot_password.html:28 #: users/templates/users/forgot_password.html:42
#: users/templates/users/forgot_password_previewing.html:13 #: users/templates/users/forgot_password_previewing.html:13
#: users/templates/users/forgot_password_previewing.html:14 #: users/templates/users/forgot_password_previewing.html:14
msgid "Forgot password" msgid "Forgot password"
@ -2900,8 +2900,8 @@ msgstr "企业微信已经绑定"
msgid "WeCom is not bound" msgid "WeCom is not bound"
msgstr "没有绑定企业微信" msgstr "没有绑定企业微信"
#: authentication/errors/mfa.py:28 authentication/views/dingtalk.py:212 #: authentication/errors/mfa.py:28 authentication/views/dingtalk.py:213
#: authentication/views/dingtalk.py:254 #: authentication/views/dingtalk.py:255
msgid "DingTalk is not bound" msgid "DingTalk is not bound"
msgstr "钉钉没有绑定" msgstr "钉钉没有绑定"
@ -3010,8 +3010,8 @@ msgstr "短信验证码校验失败"
#: authentication/mfa/sms.py:12 authentication/serializers/password_mfa.py:16 #: authentication/mfa/sms.py:12 authentication/serializers/password_mfa.py:16
#: authentication/serializers/password_mfa.py:24 #: authentication/serializers/password_mfa.py:24
#: settings/serializers/auth/sms.py:32 users/forms/profile.py:104 #: settings/serializers/auth/sms.py:32 users/forms/profile.py:104
#: users/forms/profile.py:109 users/templates/users/forgot_password.html:112 #: users/forms/profile.py:109 users/templates/users/forgot_password.html:155
#: users/views/profile/reset.py:99 #: users/views/profile/reset.py:100
msgid "SMS" msgid "SMS"
msgstr "短信" msgstr "短信"
@ -3207,7 +3207,7 @@ msgid "Is expired"
msgstr "已过期" msgstr "已过期"
#: authentication/serializers/password_mfa.py:29 #: authentication/serializers/password_mfa.py:29
#: users/templates/users/forgot_password.html:108 #: users/templates/users/forgot_password.html:151
msgid "The {} cannot be empty" msgid "The {} cannot be empty"
msgstr "{} 不能为空" msgstr "{} 不能为空"
@ -3343,7 +3343,7 @@ msgstr "重新申请"
#: authentication/templates/authentication/_msg_reset_password_code.html:12 #: authentication/templates/authentication/_msg_reset_password_code.html:12
#: terminal/models/session/sharing.py:27 terminal/models/session/sharing.py:97 #: terminal/models/session/sharing.py:27 terminal/models/session/sharing.py:97
#: terminal/templates/terminal/_msg_session_sharing.html:12 #: terminal/templates/terminal/_msg_session_sharing.html:12
#: users/forms/profile.py:107 users/templates/users/forgot_password.html:66 #: users/forms/profile.py:107 users/templates/users/forgot_password.html:97
msgid "Verify code" msgid "Verify code"
msgstr "验证码" msgstr "验证码"
@ -3387,7 +3387,7 @@ msgid ""
msgstr "如果这次公钥更新不是由你发起的,那么你的账号可能存在安全问题" msgstr "如果这次公钥更新不是由你发起的,那么你的账号可能存在安全问题"
#: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28 #: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28
#: templates/flash_message_standalone.html:28 tickets/const.py:17 #: templates/flash_message_standalone.html:28 tickets/const.py:18
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
@ -3412,7 +3412,7 @@ msgstr "MFA 多因子认证"
#: authentication/templates/authentication/login_mfa.html:19 #: authentication/templates/authentication/login_mfa.html:19
#: users/templates/users/user_otp_check_password.html:12 #: users/templates/users/user_otp_check_password.html:12
#: users/templates/users/user_otp_enable_bind.html:24 #: users/templates/users/user_otp_enable_bind.html:24
#: users/templates/users/user_otp_enable_install_app.html:29 #: users/templates/users/user_otp_enable_install_app.html:31
#: users/templates/users/user_verify_mfa.html:30 #: users/templates/users/user_verify_mfa.html:30
msgid "Next" msgid "Next"
msgstr "下一步" msgstr "下一步"
@ -3476,7 +3476,7 @@ msgstr "绑定 %s 成功"
msgid "DingTalk Error, Please contact your system administrator" msgid "DingTalk Error, Please contact your system administrator"
msgstr "钉钉错误,请联系系统管理员" msgstr "钉钉错误,请联系系统管理员"
#: authentication/views/dingtalk.py:45 authentication/views/dingtalk.py:211 #: authentication/views/dingtalk.py:45 authentication/views/dingtalk.py:212
msgid "DingTalk Error" msgid "DingTalk Error"
msgstr "钉钉错误" msgstr "钉钉错误"
@ -3490,27 +3490,27 @@ msgstr "企业配置错误,请联系系统管理员"
msgid "DingTalk is already bound" msgid "DingTalk is already bound"
msgstr "钉钉已经绑定" msgstr "钉钉已经绑定"
#: authentication/views/dingtalk.py:129 #: authentication/views/dingtalk.py:130
msgid "Invalid user_id" msgid "Invalid user_id"
msgstr "无效的 user_id" msgstr "无效的 user_id"
#: authentication/views/dingtalk.py:145 #: authentication/views/dingtalk.py:146
msgid "DingTalk query user failed" msgid "DingTalk query user failed"
msgstr "钉钉查询用户失败" msgstr "钉钉查询用户失败"
#: authentication/views/dingtalk.py:154 #: authentication/views/dingtalk.py:155
msgid "The DingTalk is already bound to another user" msgid "The DingTalk is already bound to another user"
msgstr "该钉钉已经绑定其他用户" msgstr "该钉钉已经绑定其他用户"
#: authentication/views/dingtalk.py:161 #: authentication/views/dingtalk.py:162
msgid "Binding DingTalk successfully" msgid "Binding DingTalk successfully"
msgstr "绑定 钉钉 成功" msgstr "绑定 钉钉 成功"
#: authentication/views/dingtalk.py:213 authentication/views/dingtalk.py:248 #: authentication/views/dingtalk.py:214 authentication/views/dingtalk.py:249
msgid "Failed to get user from DingTalk" msgid "Failed to get user from DingTalk"
msgstr "从钉钉获取用户失败" msgstr "从钉钉获取用户失败"
#: authentication/views/dingtalk.py:255 #: authentication/views/dingtalk.py:256
msgid "Please login with a password and then bind the DingTalk" msgid "Please login with a password and then bind the DingTalk"
msgstr "请使用密码登录,然后绑定钉钉" msgstr "请使用密码登录,然后绑定钉钉"
@ -3610,8 +3610,8 @@ msgstr "定时触发"
msgid "Ready" msgid "Ready"
msgstr "准备" msgstr "准备"
#: common/const/choices.py:16 terminal/const.py:77 tickets/const.py:29 #: common/const/choices.py:16 terminal/const.py:77 tickets/const.py:30
#: tickets/const.py:39 #: tickets/const.py:40
msgid "Pending" msgid "Pending"
msgstr "待定的" msgstr "待定的"
@ -4106,7 +4106,7 @@ msgstr "VCS"
msgid "Adhoc" msgid "Adhoc"
msgstr "命令" msgstr "命令"
#: ops/const.py:39 ops/models/job.py:145 #: ops/const.py:39 ops/models/job.py:144
msgid "Playbook" msgid "Playbook"
msgstr "Playbook" msgstr "Playbook"
@ -4191,11 +4191,11 @@ msgstr "需要周期或定期设置"
msgid "Pattern" msgid "Pattern"
msgstr "模式" msgstr "模式"
#: ops/models/adhoc.py:23 ops/models/job.py:142 #: ops/models/adhoc.py:23 ops/models/job.py:141
msgid "Module" msgid "Module"
msgstr "模块" msgstr "模块"
#: ops/models/adhoc.py:24 ops/models/celery.py:81 ops/models/job.py:140 #: ops/models/adhoc.py:24 ops/models/celery.py:81 ops/models/job.py:139
#: terminal/models/component/task.py:14 #: terminal/models/component/task.py:14
msgid "Args" msgid "Args"
msgstr "参数" msgstr "参数"
@ -4214,12 +4214,12 @@ msgstr "最后执行"
msgid "Date last run" msgid "Date last run"
msgstr "最后运行日期" msgstr "最后运行日期"
#: ops/models/base.py:51 ops/models/job.py:233 #: ops/models/base.py:51 ops/models/job.py:232
#: xpack/plugins/cloud/models.py:202 #: xpack/plugins/cloud/models.py:202
msgid "Result" msgid "Result"
msgstr "结果" msgstr "结果"
#: ops/models/base.py:52 ops/models/job.py:234 #: ops/models/base.py:52 ops/models/job.py:233
msgid "Summary" msgid "Summary"
msgstr "汇总" msgstr "汇总"
@ -4240,7 +4240,7 @@ msgid "Kwargs"
msgstr "其它参数" msgstr "其它参数"
#: ops/models/celery.py:84 terminal/models/session/sharing.py:128 #: ops/models/celery.py:84 terminal/models/session/sharing.py:128
#: tickets/const.py:25 #: tickets/const.py:26
msgid "Finished" msgid "Finished"
msgstr "结束" msgstr "结束"
@ -4252,43 +4252,43 @@ msgstr "发布日期"
msgid "Celery Task Execution" msgid "Celery Task Execution"
msgstr "Celery 任务执行" msgstr "Celery 任务执行"
#: ops/models/job.py:143 #: ops/models/job.py:142
msgid "Chdir" msgid "Chdir"
msgstr "运行目录" msgstr "运行目录"
#: ops/models/job.py:144 #: ops/models/job.py:143
msgid "Timeout (Seconds)" msgid "Timeout (Seconds)"
msgstr "超时时间 (秒)" msgstr "超时时间 (秒)"
#: ops/models/job.py:149 #: ops/models/job.py:148
msgid "Use Parameter Define" msgid "Use Parameter Define"
msgstr "使用参数定义" msgstr "使用参数定义"
#: ops/models/job.py:150 #: ops/models/job.py:149
msgid "Parameters define" msgid "Parameters define"
msgstr "参数定义" msgstr "参数定义"
#: ops/models/job.py:151 #: ops/models/job.py:150
msgid "Runas" msgid "Runas"
msgstr "运行用户" msgstr "运行用户"
#: ops/models/job.py:153 #: ops/models/job.py:152
msgid "Runas policy" msgid "Runas policy"
msgstr "用户策略" msgstr "用户策略"
#: ops/models/job.py:217 #: ops/models/job.py:216
msgid "Job" msgid "Job"
msgstr "作业" msgstr "作业"
#: ops/models/job.py:240 #: ops/models/job.py:239
msgid "Material" msgid "Material"
msgstr "Material" msgstr "Material"
#: ops/models/job.py:242 #: ops/models/job.py:241
msgid "Material Type" msgid "Material Type"
msgstr "Material 类型" msgstr "Material 类型"
#: ops/models/job.py:559 #: ops/models/job.py:558
msgid "Job Execution" msgid "Job Execution"
msgstr "作业执行" msgstr "作业执行"
@ -5451,26 +5451,30 @@ msgid "Operate log keep days (day)"
msgstr "操作日志 (天)" msgstr "操作日志 (天)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "password change log keep days (day)"
msgstr "改密日志 (天)"
#: settings/serializers/cleaning.py:31
msgid "FTP log keep days (day)" msgid "FTP log keep days (day)"
msgstr "上传下载 (天)" msgstr "上传下载 (天)"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:35
msgid "Cloud sync record keep days (day)" msgid "Cloud sync record keep days (day)"
msgstr "云同步记录 (天)" msgstr "云同步记录 (天)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:39
msgid "job execution keep days (day)" msgid "job execution keep days (day)"
msgstr "作业中心执行历史 (天)" msgstr "作业中心执行历史 (天)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:43
msgid "Activity log keep days (day)" msgid "Activity log keep days (day)"
msgstr "活动记录 (天)" msgstr "活动记录 (天)"
#: settings/serializers/cleaning.py:42 #: settings/serializers/cleaning.py:46
msgid "Session keep duration (day)" msgid "Session keep duration (day)"
msgstr "会话日志 (天)" msgstr "会话日志 (天)"
#: settings/serializers/cleaning.py:44 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
"Session, record, command will be delete if more than duration, only in " "Session, record, command will be delete if more than duration, only in "
"database, OSS will not be affected." "database, OSS will not be affected."
@ -6276,12 +6280,12 @@ msgid "Send verification code"
msgstr "发送验证码" msgstr "发送验证码"
#: templates/_mfa_login_field.html:106 #: templates/_mfa_login_field.html:106
#: users/templates/users/forgot_password.html:130 #: users/templates/users/forgot_password.html:174
msgid "Wait: " msgid "Wait: "
msgstr "等待:" msgstr "等待:"
#: templates/_mfa_login_field.html:116 #: templates/_mfa_login_field.html:116
#: users/templates/users/forgot_password.html:146 #: users/templates/users/forgot_password.html:190
msgid "The verification code has been sent" msgid "The verification code has been sent"
msgstr "验证码已发送" msgstr "验证码已发送"
@ -6330,13 +6334,13 @@ msgstr "OpenSSH 是在 windows 远程应用发布服务器中用来连接远程
msgid "Offline video player" msgid "Offline video player"
msgstr "离线录像播放器" msgstr "离线录像播放器"
#: terminal/api/applet/applet.py:50 terminal/api/applet/applet.py:53 #: terminal/api/applet/applet.py:52 terminal/api/applet/applet.py:55
#: terminal/api/virtualapp/virtualapp.py:43 #: terminal/api/virtualapp/virtualapp.py:43
#: terminal/api/virtualapp/virtualapp.py:46 #: terminal/api/virtualapp/virtualapp.py:46
msgid "Invalid zip file" msgid "Invalid zip file"
msgstr "无效的 zip 文件" msgstr "无效的 zip 文件"
#: terminal/api/applet/applet.py:72 #: terminal/api/applet/applet.py:74
msgid "This is enterprise edition applet" msgid "This is enterprise edition applet"
msgstr "企业版远程应用,在社区版中不能使用" msgstr "企业版远程应用,在社区版中不能使用"
@ -7239,63 +7243,63 @@ msgstr "申请人"
msgid "Tickets" msgid "Tickets"
msgstr "工单管理" msgstr "工单管理"
#: tickets/const.py:9 #: tickets/const.py:10
msgid "Apply for asset" msgid "Apply for asset"
msgstr "申请资产" msgstr "申请资产"
#: tickets/const.py:16 tickets/const.py:24 tickets/const.py:43 #: tickets/const.py:17 tickets/const.py:25 tickets/const.py:44
msgid "Open" msgid "Open"
msgstr "打开" msgstr "打开"
#: tickets/const.py:18 tickets/const.py:31 #: tickets/const.py:19 tickets/const.py:32
msgid "Reopen" msgid "Reopen"
msgstr "重新打开" msgstr "重新打开"
#: tickets/const.py:19 tickets/const.py:32 #: tickets/const.py:20 tickets/const.py:33
msgid "Approved" msgid "Approved"
msgstr "已同意" msgstr "已同意"
#: tickets/const.py:20 tickets/const.py:33 #: tickets/const.py:21 tickets/const.py:34
msgid "Rejected" msgid "Rejected"
msgstr "已拒绝" msgstr "已拒绝"
#: tickets/const.py:30 tickets/const.py:38 #: tickets/const.py:31 tickets/const.py:39
msgid "Closed" msgid "Closed"
msgstr "关闭的" msgstr "关闭的"
#: tickets/const.py:50 #: tickets/const.py:51
msgid "One level" msgid "One level"
msgstr "1 级" msgstr "1 级"
#: tickets/const.py:51 #: tickets/const.py:52
msgid "Two level" msgid "Two level"
msgstr "2 级" msgstr "2 级"
#: tickets/const.py:55 #: tickets/const.py:56
msgid "Org admin" msgid "Org admin"
msgstr "组织管理员" msgstr "组织管理员"
#: tickets/const.py:56 #: tickets/const.py:57
msgid "Custom user" msgid "Custom user"
msgstr "自定义用户" msgstr "自定义用户"
#: tickets/const.py:57 #: tickets/const.py:58
msgid "Super admin" msgid "Super admin"
msgstr "超级管理员" msgstr "超级管理员"
#: tickets/const.py:58 #: tickets/const.py:59
msgid "Super admin and org admin" msgid "Super admin and org admin"
msgstr "组织管理员或超级管理员" msgstr "组织管理员或超级管理员"
#: tickets/const.py:62 #: tickets/const.py:63
msgid "All assets" msgid "All assets"
msgstr "所有资产" msgstr "所有资产"
#: tickets/const.py:63 #: tickets/const.py:64
msgid "Permed assets" msgid "Permed assets"
msgstr "授权的资产" msgstr "授权的资产"
#: tickets/const.py:64 #: tickets/const.py:65
msgid "Permed valid assets" msgid "Permed valid assets"
msgstr "有效授权的资产" msgstr "有效授权的资产"
@ -7806,7 +7810,7 @@ msgstr "用户密码历史"
msgid "Reset password" msgid "Reset password"
msgstr "重置密码" msgstr "重置密码"
#: users/notifications.py:85 users/views/profile/reset.py:230 #: users/notifications.py:85 users/views/profile/reset.py:231
msgid "Reset password success" msgid "Reset password success"
msgstr "重置密码成功" msgstr "重置密码成功"
@ -8065,28 +8069,28 @@ msgstr "你的 SSH 密钥已经被管理员重置"
msgid "click here to set your password" msgid "click here to set your password"
msgstr "点击这里设置密码" msgstr "点击这里设置密码"
#: users/templates/users/forgot_password.html:32 #: users/templates/users/forgot_password.html:46
msgid "Input your email account, that will send a email to your" msgid "Input your email account, that will send a email to your"
msgstr "输入您的邮箱, 将会发一封重置邮件到您的邮箱中" msgstr "输入您的邮箱, 将会发一封重置邮件到您的邮箱中"
#: users/templates/users/forgot_password.html:35 #: users/templates/users/forgot_password.html:49
msgid "" msgid ""
"Enter your mobile number and a verification code will be sent to your phone" "Enter your mobile number and a verification code will be sent to your phone"
msgstr "输入您的手机号码,验证码将发送到您的手机" msgstr "输入您的手机号码,验证码将发送到您的手机"
#: users/templates/users/forgot_password.html:57 #: users/templates/users/forgot_password.html:71
msgid "Email account" msgid "Email account"
msgstr "邮箱账号" msgstr "邮箱账号"
#: users/templates/users/forgot_password.html:61 #: users/templates/users/forgot_password.html:92
msgid "Mobile number" msgid "Mobile number"
msgstr "手机号码" msgstr "手机号码"
#: users/templates/users/forgot_password.html:69 #: users/templates/users/forgot_password.html:100
msgid "Send" msgid "Send"
msgstr "发送" msgstr "发送"
#: users/templates/users/forgot_password.html:73 #: users/templates/users/forgot_password.html:104
#: users/templates/users/forgot_password_previewing.html:30 #: users/templates/users/forgot_password_previewing.html:30
msgid "Submit" msgid "Submit"
msgstr "提交" msgstr "提交"
@ -8176,7 +8180,7 @@ msgstr "Android手机下载"
msgid "iPhone downloads" msgid "iPhone downloads"
msgstr "iPhone手机下载" msgstr "iPhone手机下载"
#: users/templates/users/user_otp_enable_install_app.html:26 #: users/templates/users/user_otp_enable_install_app.html:27
msgid "" msgid ""
"After installation, click the next step to enter the binding page (if " "After installation, click the next step to enter the binding page (if "
"installed, go to the next step directly)." "installed, go to the next step directly)."
@ -8201,31 +8205,31 @@ msgstr "账号保护已开启,请根据提示完成以下操作"
msgid "Open MFA Authenticator and enter the 6-bit dynamic code" msgid "Open MFA Authenticator and enter the 6-bit dynamic code"
msgstr "请打开 MFA 验证器,输入 6 位动态码" msgstr "请打开 MFA 验证器,输入 6 位动态码"
#: users/views/profile/otp.py:85 #: users/views/profile/otp.py:106
msgid "Already bound" msgid "Already bound"
msgstr "已经绑定" msgstr "已经绑定"
#: users/views/profile/otp.py:86 #: users/views/profile/otp.py:107
msgid "MFA already bound, disable first, then bound" msgid "MFA already bound, disable first, then bound"
msgstr "MFA(OTP) 已经绑定,请先禁用,再绑定" msgstr "MFA(OTP) 已经绑定,请先禁用,再绑定"
#: users/views/profile/otp.py:113 #: users/views/profile/otp.py:134
msgid "OTP enable success" msgid "OTP enable success"
msgstr "MFA(OTP) 启用成功" msgstr "MFA(OTP) 启用成功"
#: users/views/profile/otp.py:114 #: users/views/profile/otp.py:135
msgid "OTP enable success, return login page" msgid "OTP enable success, return login page"
msgstr "MFA(OTP) 启用成功,返回到登录页面" msgstr "MFA(OTP) 启用成功,返回到登录页面"
#: users/views/profile/otp.py:156 #: users/views/profile/otp.py:177
msgid "Disable OTP" msgid "Disable OTP"
msgstr "禁用虚拟 MFA(OTP)" msgstr "禁用虚拟 MFA(OTP)"
#: users/views/profile/otp.py:162 #: users/views/profile/otp.py:183
msgid "OTP disable success" msgid "OTP disable success"
msgstr "MFA(OTP) 禁用成功" msgstr "MFA(OTP) 禁用成功"
#: users/views/profile/otp.py:163 #: users/views/profile/otp.py:184
msgid "OTP disable success, return login page" msgid "OTP disable success, return login page"
msgstr "MFA(OTP) 禁用成功,返回登录页面" msgstr "MFA(OTP) 禁用成功,返回登录页面"
@ -8233,29 +8237,29 @@ msgstr "MFA(OTP) 禁用成功,返回登录页面"
msgid "Password invalid" msgid "Password invalid"
msgstr "用户名或密码无效" msgstr "用户名或密码无效"
#: users/views/profile/reset.py:65 #: users/views/profile/reset.py:66
msgid "" msgid ""
"Non-local users can log in only from third-party platforms and cannot change " "Non-local users can log in only from third-party platforms and cannot change "
"their passwords: {}" "their passwords: {}"
msgstr "非本地用户仅允许从第三方平台登录,不支持修改密码: {}" msgstr "非本地用户仅允许从第三方平台登录,不支持修改密码: {}"
#: users/views/profile/reset.py:185 users/views/profile/reset.py:196 #: users/views/profile/reset.py:186 users/views/profile/reset.py:197
msgid "Token invalid or expired" msgid "Token invalid or expired"
msgstr "令牌错误或失效" msgstr "令牌错误或失效"
#: users/views/profile/reset.py:201 #: users/views/profile/reset.py:202
msgid "User auth from {}, go there change password" msgid "User auth from {}, go there change password"
msgstr "用户认证源来自 {}, 请去相应系统修改密码" msgstr "用户认证源来自 {}, 请去相应系统修改密码"
#: users/views/profile/reset.py:208 #: users/views/profile/reset.py:209
msgid "* Your password does not meet the requirements" msgid "* Your password does not meet the requirements"
msgstr "* 您的密码不符合要求" msgstr "* 您的密码不符合要求"
#: users/views/profile/reset.py:214 #: users/views/profile/reset.py:215
msgid "* The new password cannot be the last {} passwords" msgid "* The new password cannot be the last {} passwords"
msgstr "* 新密码不能是最近 {} 次的密码" msgstr "* 新密码不能是最近 {} 次的密码"
#: users/views/profile/reset.py:231 #: users/views/profile/reset.py:232
msgid "Reset password success, return to login page" msgid "Reset password success, return to login page"
msgstr "重置密码成功,返回到登录页面" msgstr "重置密码成功,返回到登录页面"

View File

@ -22,6 +22,10 @@ class CleaningSerializer(serializers.Serializer):
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Operate log keep days (day)"), label=_("Operate log keep days (day)"),
) )
PASSWORD_CHANGE_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999,
label=_("password change log keep days (day)"),
)
FTP_LOG_KEEP_DAYS = serializers.IntegerField( FTP_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("FTP log keep days (day)"), label=_("FTP log keep days (day)"),