fix: 修改sftp账号备份文件名及任务日志提示

pull/12092/head
wangruidong 2023-11-13 14:34:58 +08:00 committed by Bryan
parent 0f9223331c
commit 9babe977d8
10 changed files with 386 additions and 304 deletions

View File

@ -12,13 +12,17 @@ from accounts.serializers import AccountSecretSerializer
from accounts.models.automations.backup_account import AccountBackupAutomation from accounts.models.automations.backup_account import AccountBackupAutomation
from assets.const import AllTypes from assets.const import AllTypes
from common.utils.file import encrypt_and_compress_zip_file, zip_files from common.utils.file import encrypt_and_compress_zip_file, zip_files
from common.utils.timezone import local_now_display from common.utils.timezone import local_now_filename, local_now_display
from terminal.models.component.storage import ReplayStorage from terminal.models.component.storage import ReplayStorage
from users.models import User from users.models import User
PATH = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp') PATH = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp')
class RecipientsNotFound(Exception):
pass
class BaseAccountHandler: class BaseAccountHandler:
@classmethod @classmethod
def unpack_data(cls, serializer_data, data=None): def unpack_data(cls, serializer_data, data=None):
@ -70,7 +74,7 @@ class AssetAccountHandler(BaseAccountHandler):
@staticmethod @staticmethod
def get_filename(plan_name): def get_filename(plan_name):
filename = os.path.join( filename = os.path.join(
PATH, f'{plan_name}-{local_now_display()}-{time.time()}.xlsx' PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.xlsx'
) )
return filename return filename
@ -146,7 +150,7 @@ class AccountBackupHandler:
wb.save(filename) wb.save(filename)
files.append(filename) files.append(filename)
timedelta = round((time.time() - time_start), 2) timedelta = round((time.time() - time_start), 2)
print('步骤完成: 用时 {}s'.format(timedelta)) print('创建备份文件完成: 用时 {}s'.format(timedelta))
return files return files
def send_backup_mail(self, files, recipients): def send_backup_mail(self, files, recipients):
@ -155,7 +159,7 @@ class AccountBackupHandler:
recipients = User.objects.filter(id__in=list(recipients)) recipients = User.objects.filter(id__in=list(recipients))
print( print(
'\n' '\n'
'\033[32m>>> 发送备份邮件\033[0m' '\033[32m>>> 开始发送备份邮件\033[0m'
'' ''
) )
plan_name = self.plan_name plan_name = self.plan_name
@ -164,7 +168,7 @@ class AccountBackupHandler:
attachment_list = [] attachment_list = []
else: else:
password = user.secret_key.encode('utf8') password = user.secret_key.encode('utf8')
attachment = os.path.join(PATH, f'{plan_name}-{local_now_display()}-{time.time()}.zip') attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip')
encrypt_and_compress_zip_file(attachment, password, files) encrypt_and_compress_zip_file(attachment, password, files)
attachment_list = [attachment, ] attachment_list = [attachment, ]
AccountBackupExecutionTaskMsg(plan_name, user).publish(attachment_list) AccountBackupExecutionTaskMsg(plan_name, user).publish(attachment_list)
@ -178,13 +182,14 @@ class AccountBackupHandler:
recipients = ReplayStorage.objects.filter(id__in=list(recipients)) recipients = ReplayStorage.objects.filter(id__in=list(recipients))
print( print(
'\n' '\n'
'\033[31m>>> 发送备份文件到sftp服务器\033[0m' '\033[32m>>> 开始发送备份文件到sftp服务器\033[0m'
'' ''
) )
plan_name = self.plan_name plan_name = self.plan_name
for rec in recipients: for rec in recipients:
attachment = os.path.join(PATH, f'{plan_name}-{local_now_display()}-{time.time()}.zip') attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip')
if password: if password:
print('\033[32m>>> 使用加密密码对文件进行加密中\033[0m')
password = password.encode('utf8') password = password.encode('utf8')
encrypt_and_compress_zip_file(attachment, password, files) encrypt_and_compress_zip_file(attachment, password, files)
else: else:
@ -199,12 +204,12 @@ class AccountBackupHandler:
self.execution.reason = reason[:1024] self.execution.reason = reason[:1024]
self.execution.is_success = is_success self.execution.is_success = is_success
self.execution.save() self.execution.save()
print('已完成对任务状态的更新') print('\n已完成对任务状态的更新\n')
@staticmethod @staticmethod
def step_finished(is_success): def step_finished(is_success):
if is_success: if is_success:
print('任务执行') print('任务执行')
else: else:
print('任务执行失败') print('任务执行失败')
@ -241,8 +246,9 @@ class AccountBackupHandler:
'\033[31m>>> 该备份任务未分配sftp服务器\033[0m' '\033[31m>>> 该备份任务未分配sftp服务器\033[0m'
'' ''
) )
return raise RecipientsNotFound('Not Found Recipients')
if obj_recipients_part_one and obj_recipients_part_two: if obj_recipients_part_one and obj_recipients_part_two:
print('\033[32m>>> 账号的密钥将被拆分成前后两部分发送\033[0m')
files = self.create_excel(section='front') files = self.create_excel(section='front')
self.send_backup_obj_storage(files, obj_recipients_part_one, zip_encrypt_password) self.send_backup_obj_storage(files, obj_recipients_part_one, zip_encrypt_password)
@ -262,8 +268,9 @@ class AccountBackupHandler:
'\033[31m>>> 该备份任务未分配收件人\033[0m' '\033[31m>>> 该备份任务未分配收件人\033[0m'
'' ''
) )
return raise RecipientsNotFound('Not Found Recipients')
if recipients_part_one and recipients_part_two: if recipients_part_one and recipients_part_two:
print('\033[32m>>> 账号的密钥将被拆分成前后两部分发送\033[0m')
files = self.create_excel(section='front') files = self.create_excel(section='front')
self.send_backup_mail(files, recipients_part_one) self.send_backup_mail(files, recipients_part_one)
@ -286,4 +293,4 @@ class AccountBackupHandler:
finally: finally:
print('\n任务结束: {}'.format(local_now_display())) print('\n任务结束: {}'.format(local_now_display()))
timedelta = round((time.time() - time_start), 2) timedelta = round((time.time() - time_start), 2)
print('用时: {}'.format(timedelta)) print('用时: {}s'.format(timedelta))

View File

@ -13,7 +13,7 @@ from accounts.serializers import ChangeSecretRecordBackUpSerializer
from assets.const import HostTypes from assets.const import HostTypes
from common.utils import get_logger from common.utils import get_logger
from common.utils.file import encrypt_and_compress_zip_file from common.utils.file import encrypt_and_compress_zip_file
from common.utils.timezone import local_now_display from common.utils.timezone import local_now_filename
from users.models import User from users.models import User
from ..base.manager import AccountBasePlaybookManager from ..base.manager import AccountBasePlaybookManager
from ...utils import SecretGenerator from ...utils import SecretGenerator
@ -199,7 +199,7 @@ class ChangeSecretManager(AccountBasePlaybookManager):
name = self.execution.snapshot['name'] name = self.execution.snapshot['name']
path = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp') path = os.path.join(os.path.dirname(settings.BASE_DIR), 'tmp')
filename = os.path.join(path, f'{name}-{local_now_display()}-{time.time()}.xlsx') filename = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.xlsx')
if not self.create_file(recorders, filename): if not self.create_file(recorders, filename):
return return
@ -207,7 +207,7 @@ class ChangeSecretManager(AccountBasePlaybookManager):
attachments = [] attachments = []
if user.secret_key: if user.secret_key:
password = user.secret_key.encode('utf8') password = user.secret_key.encode('utf8')
attachment = os.path.join(path, f'{name}-{local_now_display()}-{time.time()}.zip') attachment = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.zip')
encrypt_and_compress_zip_file(attachment, password, [filename]) encrypt_and_compress_zip_file(attachment, password, [filename])
attachments = [attachment] attachments = [attachment]
ChangeSecretExecutionTaskMsg(name, user).publish(attachments) ChangeSecretExecutionTaskMsg(name, user).publish(attachments)

View File

@ -5,7 +5,6 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('authentication', '0023_auto_20231010_1101'), ('authentication', '0023_auto_20231010_1101'),
] ]
@ -14,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='accesskey', model_name='accesskey',
name='ip_group', name='ip_group',
field=models.JSONField(default=authentication.models.access_key.defatult_ip_group, verbose_name='IP group'), field=models.JSONField(default=authentication.models.access_key.default_ip_group, verbose_name='IP group'),
), ),
] ]

View File

@ -12,14 +12,14 @@ def default_secret():
return random_string(36) return random_string(36)
def defatult_ip_group(): def default_ip_group():
return ["*"] return ["*"]
class AccessKey(models.Model): class AccessKey(models.Model):
id = models.UUIDField(verbose_name='AccessKeyID', primary_key=True, default=uuid.uuid4, editable=False) id = models.UUIDField(verbose_name='AccessKeyID', primary_key=True, default=uuid.uuid4, editable=False)
secret = models.CharField(verbose_name='AccessKeySecret', default=default_secret, max_length=36) secret = models.CharField(verbose_name='AccessKeySecret', default=default_secret, max_length=36)
ip_group = models.JSONField(default=defatult_ip_group, verbose_name=_('IP group')) ip_group = models.JSONField(default=default_ip_group, verbose_name=_('IP group'))
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='User', user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='User',
on_delete=common.db.models.CASCADE_SIGNAL_SKIP, related_name='access_keys') on_delete=common.db.models.CASCADE_SIGNAL_SKIP, related_name='access_keys')
is_active = models.BooleanField(default=True, verbose_name=_('Active')) is_active = models.BooleanField(default=True, verbose_name=_('Active'))

View File

@ -20,6 +20,10 @@ def local_now_display(fmt='%Y-%m-%d %H:%M:%S'):
return local_now().strftime(fmt) return local_now().strftime(fmt)
def local_now_filename():
return local_now().strftime('%Y%m%d-%H%M%S')
def local_now_date_display(fmt='%Y-%m-%d'): def local_now_date_display(fmt='%Y-%m-%d'):
return local_now().strftime(fmt) return local_now().strftime(fmt)

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:5a5207051b4a959f750ebd48c770a552c460f864547aea8d6bb62d8920e24e32 oid sha256:eb8cb8f322ccd54d1caea9727d92a82b061757eca5551b140c2035a12fd05dc6
size 164428 size 164068

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: 2023-11-03 18:29+0800\n" "POT-Creation-Date: 2023-11-13 14:19+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"
@ -24,7 +24,7 @@ msgstr "パラメータ 'action' は [{}] でなければなりません。"
#: accounts/const/account.py:6 #: accounts/const/account.py:6
#: accounts/serializers/automations/change_secret.py:32 #: accounts/serializers/automations/change_secret.py:32
#: assets/models/_user.py:23 audits/signal_handlers/login_log.py:34 #: assets/models/_user.py:24 audits/signal_handlers/login_log.py:34
#: authentication/confirm/password.py:9 authentication/confirm/password.py:24 #: authentication/confirm/password.py:9 authentication/confirm/password.py:24
#: authentication/confirm/password.py:26 authentication/forms.py:32 #: authentication/confirm/password.py:26 authentication/forms.py:32
#: authentication/templates/authentication/login.html:330 #: authentication/templates/authentication/login.html:330
@ -47,7 +47,7 @@ msgstr "SSH キー"
msgid "Access key" msgid "Access key"
msgstr "アクセスキー" msgstr "アクセスキー"
#: accounts/const/account.py:9 assets/models/_user.py:47 #: accounts/const/account.py:9 assets/models/_user.py:48
#: authentication/backends/passkey/models.py:16 #: authentication/backends/passkey/models.py:16
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:50 #: authentication/models/sso_token.py:14 settings/serializers/feature.py:50
msgid "Token" msgid "Token"
@ -243,7 +243,7 @@ msgstr "ユーザー %s がパスワードを閲覧/導き出しました"
#: acls/serializers/base.py:123 assets/models/asset/common.py:93 #: acls/serializers/base.py:123 assets/models/asset/common.py:93
#: assets/models/asset/common.py:334 assets/models/cmd_filter.py:36 #: assets/models/asset/common.py:334 assets/models/cmd_filter.py:36
#: assets/serializers/domain.py:19 assets/serializers/label.py:27 #: assets/serializers/domain.py:19 assets/serializers/label.py:27
#: audits/models.py:57 authentication/models/connection_token.py:36 #: audits/models.py:58 authentication/models/connection_token.py:36
#: perms/models/asset_permission.py:68 perms/serializers/permission.py:34 #: perms/models/asset_permission.py:68 perms/serializers/permission.py:34
#: terminal/backends/command/models.py:17 terminal/models/session/session.py:31 #: terminal/backends/command/models.py:17 terminal/models/session/session.py:31
#: terminal/notifications.py:155 terminal/serializers/command.py:17 #: terminal/notifications.py:155 terminal/serializers/command.py:17
@ -282,7 +282,7 @@ msgstr "ソース ID"
#: accounts/serializers/automations/change_secret.py:127 #: accounts/serializers/automations/change_secret.py:127
#: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7
#: assets/serializers/asset/common.py:125 assets/serializers/gateway.py:28 #: assets/serializers/asset/common.py:125 assets/serializers/gateway.py:28
#: audits/models.py:58 authentication/api/connection_token.py:408 #: audits/models.py:59 authentication/api/connection_token.py:403
#: ops/models/base.py:18 perms/models/asset_permission.py:74 #: ops/models/base.py:18 perms/models/asset_permission.py:74
#: perms/serializers/permission.py:39 terminal/backends/command/models.py:18 #: perms/serializers/permission.py:39 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:33 #: terminal/models/session/session.py:33
@ -312,43 +312,43 @@ msgstr "アカウントを確認できます"
msgid "Can push account" msgid "Can push account"
msgstr "アカウントをプッシュできます" msgstr "アカウントをプッシュできます"
#: accounts/models/automations/backup_account.py:28 #: accounts/models/automations/backup_account.py:27
msgid "Backup Type" msgid "Backup Type"
msgstr "バックアップの種類" msgstr "バックアップの種類"
#: accounts/models/automations/backup_account.py:28
#: accounts/models/automations/backup_account.py:29 #: accounts/models/automations/backup_account.py:29
#: accounts/models/automations/backup_account.py:30
msgid "Is Password Divided" msgid "Is Password Divided"
msgstr "キーが 2 つの部分に分割されているかどうか" msgstr "キーが 2 つの部分に分割されているかどうか"
#: accounts/models/automations/backup_account.py:33 #: accounts/models/automations/backup_account.py:32
msgid "Recipient part one" msgid "Recipient part one"
msgstr "受信者 1" msgstr "受信者 1"
#: accounts/models/automations/backup_account.py:37 #: accounts/models/automations/backup_account.py:36
msgid "Recipient part two" msgid "Recipient part two"
msgstr "受信者 2" msgstr "受信者 2"
#: accounts/models/automations/backup_account.py:41 #: accounts/models/automations/backup_account.py:40
msgid "Object Storage Recipient part one" msgid "Object Storage Recipient part one"
msgstr "受信サーバー 1" msgstr "受信サーバー 1"
#: accounts/models/automations/backup_account.py:45 #: accounts/models/automations/backup_account.py:44
msgid "Object Storage Recipient part two" msgid "Object Storage Recipient part two"
msgstr "受信サーバー 2" msgstr "受信サーバー 2"
#: accounts/models/automations/backup_account.py:48 #: accounts/models/automations/backup_account.py:47
#: accounts/serializers/account/backup.py:20 #: accounts/serializers/account/backup.py:20
msgid "Zip Encrypt Password" msgid "Zip Encrypt Password"
msgstr "新しいファイルの暗号化パスワード" msgstr "新しいファイルの暗号化パスワード"
#: accounts/models/automations/backup_account.py:56 #: accounts/models/automations/backup_account.py:55
#: accounts/models/automations/backup_account.py:139 #: accounts/models/automations/backup_account.py:138
msgid "Account backup plan" msgid "Account backup plan"
msgstr "アカウントバックアップ計画" msgstr "アカウントバックアップ計画"
#: accounts/models/automations/backup_account.py:120 #: accounts/models/automations/backup_account.py:119
#: assets/models/automations/base.py:115 audits/models.py:64 #: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:228 #: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:228
#: ops/templates/ops/celery_task_log.html:75 #: ops/templates/ops/celery_task_log.html:75
#: perms/models/asset_permission.py:77 terminal/models/applet/host.py:141 #: perms/models/asset_permission.py:77 terminal/models/applet/host.py:141
@ -358,17 +358,17 @@ msgstr "アカウントバックアップ計画"
msgid "Date start" msgid "Date start"
msgstr "開始日" msgstr "開始日"
#: accounts/models/automations/backup_account.py:123 #: accounts/models/automations/backup_account.py:122
#: authentication/templates/authentication/_msg_oauth_bind.html:11 #: authentication/templates/authentication/_msg_oauth_bind.html:11
#: notifications/notifications.py:186 #: notifications/notifications.py:186
msgid "Time" msgid "Time"
msgstr "時間" msgstr "時間"
#: accounts/models/automations/backup_account.py:127 #: accounts/models/automations/backup_account.py:126
msgid "Account backup snapshot" msgid "Account backup snapshot"
msgstr "アカウントのバックアップスナップショット" msgstr "アカウントのバックアップスナップショット"
#: accounts/models/automations/backup_account.py:131 #: accounts/models/automations/backup_account.py:130
#: accounts/serializers/account/backup.py:49 #: accounts/serializers/account/backup.py:49
#: accounts/serializers/automations/base.py:55 #: accounts/serializers/automations/base.py:55
#: assets/models/automations/base.py:122 #: assets/models/automations/base.py:122
@ -376,19 +376,19 @@ msgstr "アカウントのバックアップスナップショット"
msgid "Trigger mode" msgid "Trigger mode"
msgstr "トリガーモード" msgstr "トリガーモード"
#: accounts/models/automations/backup_account.py:134 audits/models.py:202 #: accounts/models/automations/backup_account.py:133 audits/models.py:203
#: terminal/models/session/sharing.py:125 xpack/plugins/cloud/models.py:205 #: terminal/models/session/sharing.py:125 xpack/plugins/cloud/models.py:205
msgid "Reason" msgid "Reason"
msgstr "理由" msgstr "理由"
#: accounts/models/automations/backup_account.py:136 #: accounts/models/automations/backup_account.py:135
#: accounts/serializers/automations/change_secret.py:105 #: accounts/serializers/automations/change_secret.py:105
#: accounts/serializers/automations/change_secret.py:128 #: accounts/serializers/automations/change_secret.py:128
#: ops/serializers/job.py:56 terminal/serializers/session.py:49 #: ops/serializers/job.py:56 terminal/serializers/session.py:49
msgid "Is success" msgid "Is success"
msgstr "成功は" msgstr "成功は"
#: accounts/models/automations/backup_account.py:144 #: accounts/models/automations/backup_account.py:143
msgid "Account backup execution" msgid "Account backup execution"
msgstr "アカウントバックアップの実行" msgstr "アカウントバックアップの実行"
@ -433,6 +433,7 @@ msgid "SSH key change strategy"
msgstr "SSHキープッシュ方式" msgstr "SSHキープッシュ方式"
#: accounts/models/automations/change_secret.py:15 #: accounts/models/automations/change_secret.py:15
#: accounts/models/automations/gather_account.py:58
#: accounts/serializers/account/backup.py:41 #: accounts/serializers/account/backup.py:41
#: accounts/serializers/automations/change_secret.py:56 #: accounts/serializers/automations/change_secret.py:56
msgid "Recipient" msgid "Recipient"
@ -462,7 +463,7 @@ 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:207 #: assets/models/automations/base.py:113 audits/models.py:208
#: audits/serializers.py:51 ops/models/base.py:49 ops/models/job.py:220 #: audits/serializers.py:51 ops/models/base.py:49 ops/models/job.py:220
#: terminal/models/applet/applet.py:316 terminal/models/applet/host.py:140 #: terminal/models/applet/applet.py:316 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30 terminal/serializers/applet.py:18 #: terminal/models/component/status.py:30 terminal/serializers/applet.py:18
@ -497,8 +498,8 @@ msgstr "最終ログイン日"
#: accounts/models/automations/push_account.py:15 accounts/models/base.py:65 #: accounts/models/automations/push_account.py:15 accounts/models/base.py:65
#: accounts/serializers/account/virtual.py:21 acls/serializers/base.py:19 #: accounts/serializers/account/virtual.py:21 acls/serializers/base.py:19
#: acls/serializers/base.py:50 acls/templates/acls/asset_login_reminder.html:5 #: acls/serializers/base.py:50 acls/templates/acls/asset_login_reminder.html:5
#: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:22 #: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:23
#: audits/models.py:187 authentication/forms.py:25 authentication/forms.py:27 #: audits/models.py:188 authentication/forms.py:25 authentication/forms.py:27
#: authentication/models/temp_token.py:9 #: authentication/models/temp_token.py:9
#: authentication/templates/authentication/_msg_different_city.html:9 #: authentication/templates/authentication/_msg_different_city.html:9
#: authentication/templates/authentication/_msg_oauth_bind.html:9 #: authentication/templates/authentication/_msg_oauth_bind.html:9
@ -521,7 +522,7 @@ msgstr "自動収集アカウント"
msgid "Is sync account" msgid "Is sync account"
msgstr "アカウントを同期するかどうか" msgstr "アカウントを同期するかどうか"
#: accounts/models/automations/gather_account.py:71 #: accounts/models/automations/gather_account.py:75
#: accounts/tasks/gather_accounts.py:29 #: accounts/tasks/gather_accounts.py:29
msgid "Gather asset accounts" msgid "Gather asset accounts"
msgstr "アカウントのコレクション" msgstr "アカウントのコレクション"
@ -532,8 +533,8 @@ msgstr "トリガー方式"
#: accounts/models/automations/push_account.py:16 acls/models/base.py:41 #: accounts/models/automations/push_account.py:16 acls/models/base.py:41
#: acls/serializers/base.py:57 assets/models/cmd_filter.py:81 #: acls/serializers/base.py:57 assets/models/cmd_filter.py:81
#: audits/models.py:91 audits/serializers.py:84 #: audits/models.py:92 audits/serializers.py:84
#: authentication/serializers/connect_token_secret.py:116 #: authentication/serializers/connect_token_secret.py:118
#: authentication/templates/authentication/_access_key_modal.html:34 #: authentication/templates/authentication/_access_key_modal.html:34
msgid "Action" msgid "Action"
msgstr "アクション" msgstr "アクション"
@ -577,14 +578,14 @@ msgstr "パスワードルール"
#: accounts/models/base.py:64 accounts/serializers/account/virtual.py:20 #: accounts/models/base.py:64 accounts/serializers/account/virtual.py:20
#: acls/models/base.py:35 acls/models/base.py:96 acls/models/command_acl.py:21 #: acls/models/base.py:35 acls/models/base.py:96 acls/models/command_acl.py:21
#: acls/serializers/base.py:35 applications/models.py:9 #: acls/serializers/base.py:35 applications/models.py:9
#: assets/models/_user.py:21 assets/models/asset/common.py:91 #: assets/models/_user.py:22 assets/models/asset/common.py:91
#: assets/models/asset/common.py:149 assets/models/cmd_filter.py:21 #: assets/models/asset/common.py:149 assets/models/cmd_filter.py:21
#: assets/models/domain.py:18 assets/models/group.py:17 #: assets/models/domain.py:18 assets/models/group.py:17
#: assets/models/label.py:18 assets/models/platform.py:15 #: assets/models/label.py:18 assets/models/platform.py:15
#: assets/models/platform.py:88 assets/serializers/asset/common.py:146 #: assets/models/platform.py:88 assets/serializers/asset/common.py:146
#: assets/serializers/platform.py:111 assets/serializers/platform.py:228 #: assets/serializers/platform.py:111 assets/serializers/platform.py:228
#: authentication/backends/passkey/models.py:10 #: authentication/backends/passkey/models.py:10
#: authentication/serializers/connect_token_secret.py:110 ops/mixin.py:21 #: authentication/serializers/connect_token_secret.py:112 ops/mixin.py:21
#: ops/models/adhoc.py:20 ops/models/celery.py:15 ops/models/celery.py:57 #: ops/models/adhoc.py:20 ops/models/celery.py:15 ops/models/celery.py:57
#: ops/models/job.py:126 ops/models/playbook.py:28 ops/serializers/job.py:20 #: ops/models/job.py:126 ops/models/playbook.py:28 ops/serializers/job.py:20
#: orgs/models.py:82 perms/models/asset_permission.py:60 rbac/models/role.py:29 #: orgs/models.py:82 perms/models/asset_permission.py:60 rbac/models/role.py:29
@ -607,13 +608,13 @@ msgstr "特権アカウント"
#: accounts/models/base.py:70 assets/models/asset/common.py:156 #: accounts/models/base.py:70 assets/models/asset/common.py:156
#: assets/models/automations/base.py:21 assets/models/cmd_filter.py:39 #: assets/models/automations/base.py:21 assets/models/cmd_filter.py:39
#: assets/models/label.py:22 #: assets/models/label.py:22
#: authentication/serializers/connect_token_secret.py:114 #: authentication/serializers/connect_token_secret.py:116
#: terminal/models/applet/applet.py:40 #: terminal/models/applet/applet.py:40
#: terminal/models/component/endpoint.py:105 users/serializers/user.py:167 #: terminal/models/component/endpoint.py:105 users/serializers/user.py:167
msgid "Is active" msgid "Is active"
msgstr "アクティブです。" msgstr "アクティブです。"
#: accounts/models/template.py:17 assets/models/_user.py:54 #: accounts/models/template.py:17 assets/models/_user.py:53
msgid "Auto push" msgid "Auto push"
msgstr "オートプッシュ" msgstr "オートプッシュ"
@ -666,11 +667,11 @@ msgstr ""
"ユーザー名とパスワードを使用せずにアセットに接続します。Webベースとカスタムタ" "ユーザー名とパスワードを使用せずにアセットに接続します。Webベースとカスタムタ"
"イプのアセットのみをサポートします" "イプのアセットのみをサポートします"
#: accounts/notifications.py:9 accounts/notifications.py:34 #: accounts/notifications.py:11 accounts/notifications.py:36
msgid "Notification of account backup route task results" msgid "Notification of account backup route task results"
msgstr "アカウントバックアップルートタスクの結果の通知" msgstr "アカウントバックアップルートタスクの結果の通知"
#: accounts/notifications.py:19 accounts/notifications.py:43 #: accounts/notifications.py:21 accounts/notifications.py:45
msgid "" msgid ""
"{} - The account backup passage task has been completed. See the attachment " "{} - The account backup passage task has been completed. See the attachment "
"for details" "for details"
@ -678,7 +679,7 @@ msgstr ""
"{} -アカウントバックアップの通過タスクが完了しました。詳細は添付ファイルをご" "{} -アカウントバックアップの通過タスクが完了しました。詳細は添付ファイルをご"
"覧ください" "覧ください"
#: accounts/notifications.py:22 #: accounts/notifications.py:24
msgid "" msgid ""
"{} - The account backup passage task has been completed: the encryption " "{} - The account backup passage task has been completed: the encryption "
"password has not been set - please go to personal information -> file " "password has not been set - please go to personal information -> file "
@ -688,17 +689,17 @@ msgstr ""
"されていません-個人情報にアクセスしてください-> ファイル暗号化パスワードを設" "されていません-個人情報にアクセスしてください-> ファイル暗号化パスワードを設"
"定してください暗号化パスワード" "定してください暗号化パスワード"
#: accounts/notifications.py:53 #: accounts/notifications.py:55
msgid "Notification of implementation result of encryption change plan" msgid "Notification of implementation result of encryption change plan"
msgstr "暗号化変更プランの実装結果の通知" msgstr "暗号化変更プランの実装結果の通知"
#: accounts/notifications.py:63 #: accounts/notifications.py:65
msgid "" msgid ""
"{} - The encryption change task has been completed. See the attachment for " "{} - The encryption change task has been completed. See the attachment for "
"details" "details"
msgstr "{} -暗号化変更タスクが完了しました。詳細は添付ファイルをご覧ください" msgstr "{} -暗号化変更タスクが完了しました。詳細は添付ファイルをご覧ください"
#: accounts/notifications.py:66 #: accounts/notifications.py:68
msgid "" msgid ""
"{} - The encryption change task has been completed: the encryption password " "{} - The encryption change task has been completed: the encryption password "
"has not been set - please go to personal information -> file encryption " "has not been set - please go to personal information -> file encryption "
@ -707,6 +708,12 @@ msgstr ""
"{} -暗号化変更タスクが完了しました: 暗号化パスワードが設定されていません-個人" "{} -暗号化変更タスクが完了しました: 暗号化パスワードが設定されていません-個人"
"情報にアクセスしてください-> ファイル暗号化パスワードを設定してください" "情報にアクセスしてください-> ファイル暗号化パスワードを設定してください"
#: accounts/notifications.py:79
#, fuzzy
#| msgid "Gather account automation"
msgid "Gather account change information"
msgstr "自動収集アカウント"
#: accounts/serializers/account/account.py:31 #: accounts/serializers/account/account.py:31
msgid "Push now" msgid "Push now"
msgstr "今すぐプッシュ" msgstr "今すぐプッシュ"
@ -727,12 +734,12 @@ msgstr "カテゴリ"
#: accounts/serializers/account/account.py:191 #: accounts/serializers/account/account.py:191
#: accounts/serializers/automations/base.py:54 acls/models/command_acl.py:24 #: accounts/serializers/automations/base.py:54 acls/models/command_acl.py:24
#: acls/serializers/command_acl.py:19 applications/models.py:14 #: acls/serializers/command_acl.py:19 applications/models.py:14
#: assets/models/_user.py:49 assets/models/automations/base.py:20 #: assets/models/_user.py:50 assets/models/automations/base.py:20
#: assets/models/cmd_filter.py:74 assets/models/platform.py:90 #: assets/models/cmd_filter.py:74 assets/models/platform.py:90
#: assets/serializers/asset/common.py:122 assets/serializers/platform.py:113 #: assets/serializers/asset/common.py:122 assets/serializers/platform.py:113
#: assets/serializers/platform.py:132 audits/serializers.py:50 #: assets/serializers/platform.py:132 audits/serializers.py:50
#: audits/serializers.py:170 #: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:123 ops/models/job.py:137 #: authentication/serializers/connect_token_secret.py:125 ops/models/job.py:137
#: perms/serializers/user_permission.py:26 terminal/models/applet/applet.py:39 #: perms/serializers/user_permission.py:26 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
@ -768,7 +775,7 @@ msgstr "編集済み"
#: acls/templates/acls/asset_login_reminder.html:6 #: acls/templates/acls/asset_login_reminder.html:6
#: assets/models/automations/base.py:19 #: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 #: assets/serializers/automations/base.py:20
#: authentication/api/connection_token.py:407 ops/models/base.py:17 #: authentication/api/connection_token.py:402 ops/models/base.py:17
#: ops/models/job.py:139 ops/serializers/job.py:21 #: ops/models/job.py:139 ops/serializers/job.py:21
#: terminal/templates/terminal/_msg_command_execute_alert.html:16 #: terminal/templates/terminal/_msg_command_execute_alert.html:16
msgid "Assets" msgid "Assets"
@ -788,15 +795,15 @@ msgid "Account has exist"
msgstr "アカウントはすでに存在しています" msgstr "アカウントはすでに存在しています"
#: accounts/serializers/account/account.py:438 #: accounts/serializers/account/account.py:438
#: authentication/serializers/connect_token_secret.py:156 #: authentication/serializers/connect_token_secret.py:158
#: authentication/templates/authentication/_access_key_modal.html:30 #: authentication/templates/authentication/_access_key_modal.html:30
#: perms/models/perm_node.py:21 users/serializers/group.py:31 #: perms/models/perm_node.py:21 users/serializers/group.py:31
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:448 acls/serializers/base.py:116 #: accounts/serializers/account/account.py:448 acls/serializers/base.py:116
#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:53 #: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:54
#: audits/models.py:89 audits/models.py:171 audits/models.py:268 #: audits/models.py:90 audits/models.py:172 audits/models.py:269
#: audits/serializers.py:171 authentication/models/connection_token.py:32 #: audits/serializers.py:171 authentication/models/connection_token.py:32
#: authentication/models/sso_token.py:16 #: authentication/models/sso_token.py:16
#: notifications/models/notification.py:12 #: notifications/models/notification.py:12
@ -891,7 +898,7 @@ msgid ""
"default parameters will be used" "default parameters will be used"
msgstr "关联平台,可以配置推送参数,如果不关联,则使用默认参数" msgstr "关联平台,可以配置推送参数,如果不关联,则使用默认参数"
#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:26 #: 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:145 ops/models/playbook.py:31 rbac/models/role.py:37 #: ops/models/job.py:145 ops/models/playbook.py:31 rbac/models/role.py:37
@ -951,7 +958,7 @@ msgid "Automation task execution"
msgstr "自動タスク実行履歴" msgstr "自動タスク実行履歴"
#: accounts/serializers/automations/change_secret.py:149 audits/const.py:61 #: accounts/serializers/automations/change_secret.py:149 audits/const.py:61
#: audits/models.py:63 audits/signal_handlers/activity_log.py:33 #: audits/models.py:64 audits/signal_handlers/activity_log.py:33
#: common/const/choices.py:18 ops/const.py:72 ops/serializers/celery.py:40 #: common/const/choices.py:18 ops/const.py:72 ops/serializers/celery.py:40
#: terminal/const.py:77 terminal/models/session/sharing.py:121 #: terminal/const.py:77 terminal/models/session/sharing.py:121
#: tickets/views/approve.py:117 #: tickets/views/approve.py:117
@ -1009,22 +1016,36 @@ msgstr "アセット アカウントの可用性を確認する"
msgid "Verify accounts connectivity" msgid "Verify accounts connectivity"
msgstr "アカウント接続のテスト" msgstr "アカウント接続のテスト"
#: accounts/templates/accounts/asset_account_change_info.html:7
#, fuzzy
#| msgid "Asset type"
msgid "Asset name"
msgstr "資産タイプ"
#: accounts/templates/accounts/asset_account_change_info.html:8
#, fuzzy
#| msgid "Add account: %s"
msgid "Added account"
msgstr "アカウントを追加: %s"
#: accounts/templates/accounts/asset_account_change_info.html:9
#, fuzzy
#| msgid "Delete account: %s"
msgid "Deleted account"
msgstr "アカウントを削除: %s"
#: accounts/utils.py:53 #: accounts/utils.py:53
msgid "Password can not contains `{{` " #, fuzzy
#| msgid "Password can not contains `{{` "
msgid "Password can not contains `{{` or `}}`"
msgstr "パスワードには '{{' を含まない" msgstr "パスワードには '{{' を含まない"
#: accounts/utils.py:55 #: accounts/utils.py:55
msgid "Password can not contains `{%` " #, fuzzy
#| msgid "Password can not contains `{%` "
msgid "Password can not contains `{%` or `%}`"
msgstr "パスワードには '{%' を含まない" msgstr "パスワードには '{%' を含まない"
#: accounts/utils.py:58
msgid "Password can not contains `'` "
msgstr "パスワードには `'` を含まない"
#: accounts/utils.py:60
msgid "Password can not contains `\"` "
msgstr "パスワードには `\"` を含まない"
#: accounts/utils.py:66 #: accounts/utils.py:66
msgid "private key invalid or passphrase error" msgid "private key invalid or passphrase error"
msgstr "秘密鍵が無効またはpassphraseエラー" msgstr "秘密鍵が無効またはpassphraseエラー"
@ -1054,7 +1075,7 @@ msgstr "警告"
msgid "Notifications" msgid "Notifications"
msgstr "通知" msgstr "通知"
#: acls/models/base.py:37 assets/models/_user.py:50 #: acls/models/base.py:37 assets/models/_user.py:51
#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:97 #: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:97
#: xpack/plugins/cloud/models.py:275 #: xpack/plugins/cloud/models.py:275
msgid "Priority" msgid "Priority"
@ -1067,7 +1088,7 @@ msgid "1-100, the lower the value will be match first"
msgstr "1-100、低い値は最初に一致します" msgstr "1-100、低い値は最初に一致します"
#: acls/models/base.py:42 assets/models/cmd_filter.py:86 #: acls/models/base.py:42 assets/models/cmd_filter.py:86
#: authentication/serializers/connect_token_secret.py:88 #: authentication/serializers/connect_token_secret.py:90
msgid "Reviewers" msgid "Reviewers"
msgstr "レビュー担当者" msgstr "レビュー担当者"
@ -1118,7 +1139,7 @@ msgstr "家を無視する"
#: acls/models/command_acl.py:33 acls/models/command_acl.py:97 #: acls/models/command_acl.py:33 acls/models/command_acl.py:97
#: acls/serializers/command_acl.py:29 #: acls/serializers/command_acl.py:29
#: authentication/serializers/connect_token_secret.py:85 #: authentication/serializers/connect_token_secret.py:87
#: terminal/templates/terminal/_msg_command_warning.html:14 #: terminal/templates/terminal/_msg_command_warning.html:14
msgid "Command group" msgid "Command group"
msgstr "コマンドグループ" msgstr "コマンドグループ"
@ -1247,15 +1268,15 @@ msgstr ""
msgid "Thank you" msgid "Thank you"
msgstr "ありがとうございます。" msgstr "ありがとうございます。"
#: acls/templates/acls/user_login_reminder.html:7 audits/models.py:193 #: acls/templates/acls/user_login_reminder.html:7 audits/models.py:194
#: audits/models.py:262 #: audits/models.py:263
#: authentication/templates/authentication/_msg_different_city.html:11 #: authentication/templates/authentication/_msg_different_city.html:11
#: tickets/models/ticket/login_confirm.py:11 #: tickets/models/ticket/login_confirm.py:11
msgid "Login city" msgid "Login city"
msgstr "ログイン都市" msgstr "ログイン都市"
#: acls/templates/acls/user_login_reminder.html:8 audits/models.py:196 #: acls/templates/acls/user_login_reminder.html:8 audits/models.py:197
#: audits/models.py:263 audits/serializers.py:65 #: audits/models.py:264 audits/serializers.py:65
msgid "User agent" msgid "User agent"
msgstr "ユーザーエージェント" msgstr "ユーザーエージェント"
@ -1580,97 +1601,97 @@ msgstr "Webサイト"
msgid "This function is not supported temporarily" msgid "This function is not supported temporarily"
msgstr "この機能は一時的にサポートされていません" msgstr "この機能は一時的にサポートされていません"
#: assets/models/_user.py:24 #: assets/models/_user.py:25
msgid "SSH private key" msgid "SSH private key"
msgstr "SSH秘密鍵" msgstr "SSH秘密鍵"
#: assets/models/_user.py:25 #: assets/models/_user.py:26
msgid "SSH public key" msgid "SSH public key"
msgstr "SSHパブリックキー" msgstr "SSHパブリックキー"
#: assets/models/_user.py:27 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:266 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:227 users/models/user.py:1024 #: ops/models/job.py:227 users/models/user.py:1024
msgid "Date created" msgid "Date created"
msgstr "作成された日付" msgstr "作成された日付"
#: assets/models/_user.py:28 assets/models/cmd_filter.py:42 #: assets/models/_user.py:29 assets/models/cmd_filter.py:42
#: common/db/models.py:35 users/models/user.py:846 #: common/db/models.py:35 users/models/user.py:846
msgid "Date updated" msgid "Date updated"
msgstr "更新日" msgstr "更新日"
#: assets/models/_user.py:29 assets/models/cmd_filter.py:44 #: assets/models/_user.py:30 assets/models/cmd_filter.py:44
#: assets/models/cmd_filter.py:91 assets/models/group.py:18 #: assets/models/cmd_filter.py:91 assets/models/group.py:18
#: common/db/models.py:32 users/models/user.py:835 #: common/db/models.py:32 users/models/user.py:835
#: users/serializers/group.py:29 #: users/serializers/group.py:29
msgid "Created by" msgid "Created by"
msgstr "によって作成された" msgstr "によって作成された"
#: assets/models/_user.py:39 #: assets/models/_user.py:40
msgid "Automatic managed" msgid "Automatic managed"
msgstr "自動管理" msgstr "自動管理"
#: assets/models/_user.py:40 #: assets/models/_user.py:41
msgid "Manually input" msgid "Manually input"
msgstr "手動入力" msgstr "手動入力"
#: assets/models/_user.py:44 #: assets/models/_user.py:45
msgid "Common user" msgid "Common user"
msgstr "共通ユーザー" msgstr "共通ユーザー"
#: assets/models/_user.py:45 assets/models/_user.py:98 #: assets/models/_user.py:46 assets/models/_user.py:95
msgid "Admin user" msgid "Admin user"
msgstr "管理ユーザー" msgstr "管理ユーザー"
#: assets/models/_user.py:48 #: assets/models/_user.py:49
msgid "Username same with user" msgid "Username same with user"
msgstr "ユーザーと同じユーザー名" msgstr "ユーザーと同じユーザー名"
#: assets/models/_user.py:53 authentication/models/connection_token.py:41 #: assets/models/_user.py:52 authentication/models/connection_token.py:41
#: authentication/serializers/connect_token_secret.py:111 #: authentication/serializers/connect_token_secret.py:113
#: terminal/models/applet/applet.py:42 terminal/serializers/session.py:19 #: terminal/models/applet/applet.py:42 terminal/serializers/session.py:19
#: terminal/serializers/session.py:45 terminal/serializers/storage.py:71 #: terminal/serializers/session.py:45 terminal/serializers/storage.py:71
msgid "Protocol" msgid "Protocol"
msgstr "プロトコル" msgstr "プロトコル"
#: assets/models/_user.py:55 #: assets/models/_user.py:54
msgid "Sudo" msgid "Sudo"
msgstr "すど" msgstr "すど"
#: assets/models/_user.py:56 ops/const.py:49 ops/const.py:59 #: assets/models/_user.py:55 ops/const.py:49 ops/const.py:59
msgid "Shell" msgid "Shell"
msgstr "シェル" msgstr "シェル"
#: assets/models/_user.py:58 #: assets/models/_user.py:56
msgid "Login mode" msgid "Login mode"
msgstr "ログインモード" msgstr "ログインモード"
#: assets/models/_user.py:59 terminal/serializers/storage.py:152 #: assets/models/_user.py:57 terminal/serializers/storage.py:152
msgid "SFTP Root" msgid "SFTP Root"
msgstr "SFTPルート" msgstr "SFTPルート"
#: assets/models/_user.py:60 #: assets/models/_user.py:58
msgid "Home" msgid "Home"
msgstr "ホーム" msgstr "ホーム"
#: assets/models/_user.py:61 #: assets/models/_user.py:59
msgid "System groups" msgid "System groups"
msgstr "システムグループ" msgstr "システムグループ"
#: assets/models/_user.py:64 #: assets/models/_user.py:62
msgid "User switch" msgid "User switch"
msgstr "ユーザースイッチ" msgstr "ユーザースイッチ"
#: assets/models/_user.py:66 #: assets/models/_user.py:63
msgid "Switch from" msgid "Switch from"
msgstr "から切り替え" msgstr "から切り替え"
#: assets/models/_user.py:72 #: assets/models/_user.py:69
msgid "System user" msgid "System user"
msgstr "システムユーザー" msgstr "システムユーザー"
#: assets/models/_user.py:74 #: assets/models/_user.py:71
msgid "Can match system user" msgid "Can match system user"
msgstr "システムユーザーに一致できます" msgstr "システムユーザーに一致できます"
@ -1691,13 +1712,13 @@ msgstr "アドレス"
#: assets/models/asset/common.py:151 assets/models/platform.py:119 #: assets/models/asset/common.py:151 assets/models/platform.py:119
#: authentication/backends/passkey/models.py:12 #: authentication/backends/passkey/models.py:12
#: authentication/serializers/connect_token_secret.py:115 #: authentication/serializers/connect_token_secret.py:117
#: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:321 #: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:321
msgid "Platform" msgid "Platform"
msgstr "プラットフォーム" msgstr "プラットフォーム"
#: assets/models/asset/common.py:153 assets/models/domain.py:21 #: assets/models/asset/common.py:153 assets/models/domain.py:21
#: authentication/serializers/connect_token_secret.py:133 #: authentication/serializers/connect_token_secret.py:135
#: perms/serializers/user_permission.py:28 xpack/plugins/cloud/models.py:323 #: perms/serializers/user_permission.py:28 xpack/plugins/cloud/models.py:323
msgid "Domain" msgid "Domain"
msgstr "ドメイン" msgstr "ドメイン"
@ -1844,7 +1865,7 @@ msgstr "システム"
#: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18 #: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18
#: assets/serializers/cagegory.py:24 #: assets/serializers/cagegory.py:24
#: authentication/models/connection_token.py:29 #: authentication/models/connection_token.py:29
#: authentication/serializers/connect_token_secret.py:122 #: authentication/serializers/connect_token_secret.py:124
#: common/serializers/common.py:86 settings/models.py:33 #: common/serializers/common.py:86 settings/models.py:33
#: users/models/preference.py:13 #: users/models/preference.py:13
msgid "Value" msgid "Value"
@ -1853,7 +1874,7 @@ msgstr "値"
#: assets/models/label.py:40 assets/serializers/asset/common.py:123 #: assets/models/label.py:40 assets/serializers/asset/common.py:123
#: assets/serializers/cagegory.py:10 assets/serializers/cagegory.py:17 #: assets/serializers/cagegory.py:10 assets/serializers/cagegory.py:17
#: assets/serializers/cagegory.py:23 assets/serializers/platform.py:112 #: assets/serializers/cagegory.py:23 assets/serializers/platform.py:112
#: authentication/serializers/connect_token_secret.py:121 #: authentication/serializers/connect_token_secret.py:123
#: common/serializers/common.py:85 perms/serializers/user_permission.py:27 #: common/serializers/common.py:85 perms/serializers/user_permission.py:27
#: settings/serializers/msg.py:83 #: settings/serializers/msg.py:83
msgid "Label" msgid "Label"
@ -2021,7 +2042,7 @@ msgstr ""
#: assets/serializers/asset/common.py:124 assets/serializers/platform.py:134 #: assets/serializers/asset/common.py:124 assets/serializers/platform.py:134
#: authentication/serializers/connect_token_secret.py:29 #: authentication/serializers/connect_token_secret.py:29
#: authentication/serializers/connect_token_secret.py:72 #: authentication/serializers/connect_token_secret.py:74
#: perms/models/asset_permission.py:75 perms/serializers/permission.py:40 #: perms/models/asset_permission.py:75 perms/serializers/permission.py:40
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:324 #: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:324
#: xpack/plugins/cloud/serializers/task.py:31 #: xpack/plugins/cloud/serializers/task.py:31
@ -2112,7 +2133,7 @@ msgid "Disk total"
msgstr "ディスクの合計" msgstr "ディスクの合計"
#: assets/serializers/asset/info/gathered.py:16 #: assets/serializers/asset/info/gathered.py:16
#: authentication/serializers/connect_token_secret.py:112 #: authentication/serializers/connect_token_secret.py:114
msgid "OS" msgid "OS"
msgstr "OS" msgstr "OS"
@ -2367,7 +2388,7 @@ msgstr "閉じる"
msgid "Terminal" msgid "Terminal"
msgstr "ターミナル" msgstr "ターミナル"
#: audits/const.py:48 audits/models.py:131 #: audits/const.py:48 audits/models.py:132
msgid "Operate log" msgid "Operate log"
msgstr "ログの操作" msgstr "ログの操作"
@ -2396,28 +2417,28 @@ msgstr "是"
msgid "No" msgid "No"
msgstr "否" msgstr "否"
#: audits/models.py:46 #: audits/models.py:47
msgid "Job audit log" msgid "Job audit log"
msgstr "ジョブ監査ログ" msgstr "ジョブ監査ログ"
#: audits/models.py:55 audits/models.py:99 audits/models.py:174 #: audits/models.py:56 audits/models.py:100 audits/models.py:175
#: terminal/models/session/session.py:38 terminal/models/session/sharing.py:113 #: terminal/models/session/session.py:38 terminal/models/session/sharing.py:113
msgid "Remote addr" msgid "Remote addr"
msgstr "リモートaddr" msgstr "リモートaddr"
#: audits/models.py:60 audits/serializers.py:35 #: audits/models.py:61 audits/serializers.py:35
msgid "Operate" msgid "Operate"
msgstr "操作" msgstr "操作"
#: audits/models.py:62 #: audits/models.py:63
msgid "Filename" msgid "Filename"
msgstr "ファイル名" msgstr "ファイル名"
#: audits/models.py:65 common/serializers/common.py:98 #: audits/models.py:66 common/serializers/common.py:98
msgid "File" msgid "File"
msgstr "書類" msgstr "書類"
#: audits/models.py:66 terminal/backends/command/models.py:21 #: audits/models.py:67 terminal/backends/command/models.py:21
#: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20 #: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20
#: terminal/models/session/sharing.py:95 #: terminal/models/session/sharing.py:95
#: terminal/templates/terminal/_msg_command_alert.html:10 #: terminal/templates/terminal/_msg_command_alert.html:10
@ -2426,86 +2447,86 @@ msgstr "書類"
msgid "Session" msgid "Session"
msgstr "セッション" msgstr "セッション"
#: audits/models.py:69 #: audits/models.py:70
msgid "File transfer log" msgid "File transfer log"
msgstr "ファイル転送ログ" msgstr "ファイル転送ログ"
#: audits/models.py:93 audits/serializers.py:86 #: audits/models.py:94 audits/serializers.py:86
msgid "Resource Type" msgid "Resource Type"
msgstr "リソースタイプ" msgstr "リソースタイプ"
#: audits/models.py:94 audits/models.py:97 audits/models.py:143 #: audits/models.py:95 audits/models.py:98 audits/models.py:144
#: audits/serializers.py:85 #: audits/serializers.py:85
msgid "Resource" msgid "Resource"
msgstr "リソース" msgstr "リソース"
#: audits/models.py:100 audits/models.py:146 audits/models.py:176 #: audits/models.py:101 audits/models.py:147 audits/models.py:177
#: terminal/serializers/command.py:75 #: terminal/serializers/command.py:75
msgid "Datetime" msgid "Datetime"
msgstr "時間" msgstr "時間"
#: audits/models.py:139 #: audits/models.py:140
msgid "Activity type" msgid "Activity type"
msgstr "活動の種類" msgstr "活動の種類"
#: audits/models.py:149 #: audits/models.py:150
msgid "Detail" msgid "Detail"
msgstr "詳細" msgstr "詳細"
#: audits/models.py:152 #: audits/models.py:153
msgid "Detail ID" msgid "Detail ID"
msgstr "詳細 ID" msgstr "詳細 ID"
#: audits/models.py:156 #: audits/models.py:157
msgid "Activity log" msgid "Activity log"
msgstr "活動記録" msgstr "活動記録"
#: audits/models.py:172 #: audits/models.py:173
msgid "Change by" msgid "Change by"
msgstr "による変更" msgstr "による変更"
#: audits/models.py:182 #: audits/models.py:183
msgid "Password change log" msgid "Password change log"
msgstr "パスワード変更ログ" msgstr "パスワード変更ログ"
#: audits/models.py:189 audits/models.py:264 #: audits/models.py:190 audits/models.py:265
msgid "Login type" msgid "Login type"
msgstr "ログインタイプ" msgstr "ログインタイプ"
#: audits/models.py:191 audits/models.py:260 #: audits/models.py:192 audits/models.py:261
#: tickets/models/ticket/login_confirm.py:10 #: tickets/models/ticket/login_confirm.py:10
msgid "Login IP" msgid "Login IP"
msgstr "ログインIP" msgstr "ログインIP"
#: audits/models.py:199 audits/serializers.py:49 #: audits/models.py:200 audits/serializers.py:49
#: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/_mfa_confirm_modal.html:14
#: users/forms/profile.py:65 users/models/user.py:815 #: users/forms/profile.py:65 users/models/user.py:815
#: users/serializers/profile.py:102 #: users/serializers/profile.py:102
msgid "MFA" msgid "MFA"
msgstr "MFA" msgstr "MFA"
#: audits/models.py:209 #: audits/models.py:210
msgid "Date login" msgid "Date login"
msgstr "日付ログイン" msgstr "日付ログイン"
#: audits/models.py:211 audits/models.py:265 audits/serializers.py:67 #: audits/models.py:212 audits/models.py:266 audits/serializers.py:67
#: audits/serializers.py:184 #: audits/serializers.py:184
msgid "Authentication backend" msgid "Authentication backend"
msgstr "認証バックエンド" msgstr "認証バックエンド"
#: audits/models.py:255 #: audits/models.py:256
msgid "User login log" msgid "User login log"
msgstr "ユーザーログインログ" msgstr "ユーザーログインログ"
#: audits/models.py:261 #: audits/models.py:262
msgid "Session key" msgid "Session key"
msgstr "セッションID" msgstr "セッションID"
#: audits/models.py:300 #: audits/models.py:306
msgid "User session" msgid "User session"
msgstr "ユーザーセッション" msgstr "ユーザーセッション"
#: audits/models.py:302 #: audits/models.py:308
msgid "Offline ussr session" msgid "Offline ussr session"
msgstr "ユーザー・セッションの下限" msgstr "ユーザー・セッションの下限"
@ -2600,29 +2621,29 @@ msgstr ""
msgid "This action require verify your MFA" msgid "This action require verify your MFA"
msgstr "この操作には、MFAを検証する必要があります" msgstr "この操作には、MFAを検証する必要があります"
#: authentication/api/connection_token.py:263 #: authentication/api/connection_token.py:258
msgid "Reusable connection token is not allowed, global setting not enabled" msgid "Reusable connection token is not allowed, global setting not enabled"
msgstr "" msgstr ""
"再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効に" "再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効に"
"なっていません" "なっていません"
#: authentication/api/connection_token.py:377 #: authentication/api/connection_token.py:372
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "匿名アカウントはこのプロパティではサポートされていません" msgstr "匿名アカウントはこのプロパティではサポートされていません"
#: authentication/api/connection_token.py:396 #: authentication/api/connection_token.py:391
msgid "Account not found" msgid "Account not found"
msgstr "アカウントが見つかりません" msgstr "アカウントが見つかりません"
#: authentication/api/connection_token.py:399 #: authentication/api/connection_token.py:394
msgid "Permission expired" msgid "Permission expired"
msgstr "承認の有効期限が切れています" msgstr "承認の有効期限が切れています"
#: authentication/api/connection_token.py:429 #: authentication/api/connection_token.py:424
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL アクションは拒否です: {}({})" msgstr "ACL アクションは拒否です: {}({})"
#: authentication/api/connection_token.py:433 #: authentication/api/connection_token.py:428
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL アクションはレビューです" msgstr "ACL アクションはレビューです"
@ -3107,19 +3128,19 @@ msgstr "異なる都市ログインのリマインダー"
msgid "binding reminder" msgid "binding reminder"
msgstr "バインディングリマインダー" msgstr "バインディングリマインダー"
#: authentication/serializers/connect_token_secret.py:113 #: authentication/serializers/connect_token_secret.py:115
msgid "Is builtin" msgid "Is builtin"
msgstr "ビルトイン" msgstr "ビルトイン"
#: authentication/serializers/connect_token_secret.py:117 #: authentication/serializers/connect_token_secret.py:119
msgid "Options" msgid "Options"
msgstr "オプション" msgstr "オプション"
#: authentication/serializers/connect_token_secret.py:124 #: authentication/serializers/connect_token_secret.py:126
msgid "Component" msgid "Component"
msgstr "コンポーネント" msgstr "コンポーネント"
#: authentication/serializers/connect_token_secret.py:135 #: authentication/serializers/connect_token_secret.py:137
msgid "Expired now" msgid "Expired now"
msgstr "すぐに期限切れ" msgstr "すぐに期限切れ"
@ -3609,7 +3630,7 @@ msgstr "テキストフィールドへのマーシャルデータ"
msgid "Encrypt field using Secret Key" msgid "Encrypt field using Secret Key"
msgstr "Secret Keyを使用したフィールドの暗号化" msgstr "Secret Keyを使用したフィールドの暗号化"
#: common/db/fields.py:575 #: common/db/fields.py:573
msgid "" msgid ""
"Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or " "Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or "
"{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', " "{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', "
@ -3619,15 +3640,15 @@ msgstr ""
"'type''ids''ids':[]}或 #タイプ:属性、属性:[名前ip、照合正確、" "'type''ids''ids':[]}或 #タイプ:属性、属性:[名前ip、照合正確、"
"値1.1.1.1" "値1.1.1.1"
#: common/db/fields.py:582 #: common/db/fields.py:580
msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\"" msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\""
msgstr "無効なタイプです。all、ids、またはattrsでなければなりません" msgstr "無効なタイプです。all、ids、またはattrsでなければなりません"
#: common/db/fields.py:585 #: common/db/fields.py:583
msgid "Invalid ids for ids, should be a list" msgid "Invalid ids for ids, should be a list"
msgstr "無効なID、リストでなければなりません" msgstr "無効なID、リストでなければなりません"
#: common/db/fields.py:587 common/db/fields.py:592 #: common/db/fields.py:585 common/db/fields.py:590
#: common/serializers/fields.py:104 tickets/serializers/ticket/common.py:58 #: common/serializers/fields.py:104 tickets/serializers/ticket/common.py:58
#: xpack/plugins/cloud/serializers/account_attrs.py:56 #: xpack/plugins/cloud/serializers/account_attrs.py:56
#: xpack/plugins/cloud/serializers/account_attrs.py:79 #: xpack/plugins/cloud/serializers/account_attrs.py:79
@ -3635,11 +3656,11 @@ msgstr "無効なID、リストでなければなりません"
msgid "This field is required." msgid "This field is required."
msgstr "このフィールドは必須です。" msgstr "このフィールドは必須です。"
#: common/db/fields.py:590 common/db/fields.py:595 #: common/db/fields.py:588 common/db/fields.py:593
msgid "Invalid attrs, should be a list of dict" msgid "Invalid attrs, should be a list of dict"
msgstr "無効な属性、dictリストでなければなりません" msgstr "無効な属性、dictリストでなければなりません"
#: common/db/fields.py:597 #: common/db/fields.py:595
msgid "Invalid attrs, should be has name and value" msgid "Invalid attrs, should be has name and value"
msgstr "名前と値が必要な無効な属性" msgstr "名前と値が必要な無効な属性"
@ -4403,11 +4424,15 @@ msgstr "コピー"
msgid "Paste" msgid "Paste"
msgstr "貼り付け" msgstr "貼り付け"
#: perms/const.py:27 #: perms/const.py:18
msgid "Share"
msgstr ""
#: perms/const.py:28
msgid "Transfer" msgid "Transfer"
msgstr "転送" msgstr "転送"
#: perms/const.py:28 #: perms/const.py:29
msgid "Clipboard" msgid "Clipboard"
msgstr "クリップボード" msgstr "クリップボード"
@ -6204,10 +6229,11 @@ msgstr "テスト失敗: {}"
msgid "Test successful" msgid "Test successful"
msgstr "テスト成功" msgstr "テスト成功"
#: terminal/api/component/storage.py:124 terminal/notifications.py:240 #: terminal/api/component/storage.py:124
#: terminal/tasks.py:146 #, fuzzy
msgid "Test failure: Account invalid" #| msgid "Test failure: Account invalid"
msgstr "テスト失敗: アカウントが無効" msgid "Test failure: Please check configuration"
msgstr "テストが失敗しました: 構成を確認してください"
#: terminal/api/component/terminal.py:55 #: terminal/api/component/terminal.py:55
msgid "Have online sessions" msgid "Have online sessions"
@ -6683,6 +6709,10 @@ msgstr "コマンド及び録画記憶"
msgid "Connectivity alarm" msgid "Connectivity alarm"
msgstr "接続性アラーム" msgstr "接続性アラーム"
#: terminal/notifications.py:240 terminal/tasks.py:146
msgid "Test failure: Account invalid"
msgstr "テスト失敗: アカウントが無効"
#: terminal/notifications.py:250 #: terminal/notifications.py:250
#: terminal/templates/terminal/_msg_check_command_replay_storage_connectivity.html:4 #: terminal/templates/terminal/_msg_check_command_replay_storage_connectivity.html:4
msgid "Invalid storage" msgid "Invalid storage"
@ -8691,5 +8721,11 @@ msgstr "エンタープライズプロフェッショナル版"
msgid "Ultimate edition" msgid "Ultimate edition"
msgstr "エンタープライズ・フラッグシップ・エディション" msgstr "エンタープライズ・フラッグシップ・エディション"
#~ msgid "Password can not contains `'` "
#~ msgstr "パスワードには `'` を含まない"
#~ msgid "Password can not contains `\"` "
#~ msgstr "パスワードには `\"` を含まない"
#~ msgid "Object Storage" #~ msgid "Object Storage"
#~ 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:b9a380c7adbd9fad7af4257cb72742c0e68b50846591cc5b0124a0df539ec285 oid sha256:258efb0208b560b1d27fefa33d462d0ff072d44844d66328afea5ddd3a4b2812
size 134380 size 134068

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: 2023-11-03 18:29+0800\n" "POT-Creation-Date: 2023-11-13 14:19+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"
@ -23,7 +23,7 @@ msgstr "参数 'action' 必须是 [{}]"
#: accounts/const/account.py:6 #: accounts/const/account.py:6
#: accounts/serializers/automations/change_secret.py:32 #: accounts/serializers/automations/change_secret.py:32
#: assets/models/_user.py:23 audits/signal_handlers/login_log.py:34 #: assets/models/_user.py:24 audits/signal_handlers/login_log.py:34
#: authentication/confirm/password.py:9 authentication/confirm/password.py:24 #: authentication/confirm/password.py:9 authentication/confirm/password.py:24
#: authentication/confirm/password.py:26 authentication/forms.py:32 #: authentication/confirm/password.py:26 authentication/forms.py:32
#: authentication/templates/authentication/login.html:330 #: authentication/templates/authentication/login.html:330
@ -46,7 +46,7 @@ msgstr "SSH 密钥"
msgid "Access key" msgid "Access key"
msgstr "Access key" msgstr "Access key"
#: accounts/const/account.py:9 assets/models/_user.py:47 #: accounts/const/account.py:9 assets/models/_user.py:48
#: authentication/backends/passkey/models.py:16 #: authentication/backends/passkey/models.py:16
#: authentication/models/sso_token.py:14 settings/serializers/feature.py:50 #: authentication/models/sso_token.py:14 settings/serializers/feature.py:50
msgid "Token" msgid "Token"
@ -242,7 +242,7 @@ msgstr "用户 %s 查看/导出 了密码"
#: acls/serializers/base.py:123 assets/models/asset/common.py:93 #: acls/serializers/base.py:123 assets/models/asset/common.py:93
#: assets/models/asset/common.py:334 assets/models/cmd_filter.py:36 #: assets/models/asset/common.py:334 assets/models/cmd_filter.py:36
#: assets/serializers/domain.py:19 assets/serializers/label.py:27 #: assets/serializers/domain.py:19 assets/serializers/label.py:27
#: audits/models.py:57 authentication/models/connection_token.py:36 #: audits/models.py:58 authentication/models/connection_token.py:36
#: perms/models/asset_permission.py:68 perms/serializers/permission.py:34 #: perms/models/asset_permission.py:68 perms/serializers/permission.py:34
#: terminal/backends/command/models.py:17 terminal/models/session/session.py:31 #: terminal/backends/command/models.py:17 terminal/models/session/session.py:31
#: terminal/notifications.py:155 terminal/serializers/command.py:17 #: terminal/notifications.py:155 terminal/serializers/command.py:17
@ -281,7 +281,7 @@ msgstr "来源 ID"
#: accounts/serializers/automations/change_secret.py:127 #: accounts/serializers/automations/change_secret.py:127
#: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7 #: acls/serializers/base.py:124 acls/templates/acls/asset_login_reminder.html:7
#: assets/serializers/asset/common.py:125 assets/serializers/gateway.py:28 #: assets/serializers/asset/common.py:125 assets/serializers/gateway.py:28
#: audits/models.py:58 authentication/api/connection_token.py:408 #: audits/models.py:59 authentication/api/connection_token.py:403
#: ops/models/base.py:18 perms/models/asset_permission.py:74 #: ops/models/base.py:18 perms/models/asset_permission.py:74
#: perms/serializers/permission.py:39 terminal/backends/command/models.py:18 #: perms/serializers/permission.py:39 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:33 #: terminal/models/session/session.py:33
@ -311,43 +311,43 @@ msgstr "可以验证账号"
msgid "Can push account" msgid "Can push account"
msgstr "可以推送账号" msgstr "可以推送账号"
#: accounts/models/automations/backup_account.py:28 #: accounts/models/automations/backup_account.py:27
msgid "Backup Type" msgid "Backup Type"
msgstr "备份类型" msgstr "备份类型"
#: accounts/models/automations/backup_account.py:28
#: accounts/models/automations/backup_account.py:29 #: accounts/models/automations/backup_account.py:29
#: accounts/models/automations/backup_account.py:30
msgid "Is Password Divided" msgid "Is Password Divided"
msgstr "密钥是否拆分成前后两部分" msgstr "密钥是否拆分成前后两部分"
#: accounts/models/automations/backup_account.py:33 #: accounts/models/automations/backup_account.py:32
msgid "Recipient part one" msgid "Recipient part one"
msgstr "收件人部分一" msgstr "收件人部分一"
#: accounts/models/automations/backup_account.py:37 #: accounts/models/automations/backup_account.py:36
msgid "Recipient part two" msgid "Recipient part two"
msgstr "收件人部分二" msgstr "收件人部分二"
#: accounts/models/automations/backup_account.py:41 #: accounts/models/automations/backup_account.py:40
msgid "Object Storage Recipient part one" msgid "Object Storage Recipient part one"
msgstr "接收服务器一" msgstr "接收服务器一"
#: accounts/models/automations/backup_account.py:45 #: accounts/models/automations/backup_account.py:44
msgid "Object Storage Recipient part two" msgid "Object Storage Recipient part two"
msgstr "接收服务器二" msgstr "接收服务器二"
#: accounts/models/automations/backup_account.py:48 #: accounts/models/automations/backup_account.py:47
#: accounts/serializers/account/backup.py:20 #: accounts/serializers/account/backup.py:20
msgid "Zip Encrypt Password" msgid "Zip Encrypt Password"
msgstr "文件加密密码" msgstr "文件加密密码"
#: accounts/models/automations/backup_account.py:56 #: accounts/models/automations/backup_account.py:55
#: accounts/models/automations/backup_account.py:139 #: accounts/models/automations/backup_account.py:138
msgid "Account backup plan" msgid "Account backup plan"
msgstr "账号备份计划" msgstr "账号备份计划"
#: accounts/models/automations/backup_account.py:120 #: accounts/models/automations/backup_account.py:119
#: assets/models/automations/base.py:115 audits/models.py:64 #: assets/models/automations/base.py:115 audits/models.py:65
#: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:228 #: ops/models/base.py:55 ops/models/celery.py:63 ops/models/job.py:228
#: ops/templates/ops/celery_task_log.html:75 #: ops/templates/ops/celery_task_log.html:75
#: perms/models/asset_permission.py:77 terminal/models/applet/host.py:141 #: perms/models/asset_permission.py:77 terminal/models/applet/host.py:141
@ -357,17 +357,17 @@ msgstr "账号备份计划"
msgid "Date start" msgid "Date start"
msgstr "开始日期" msgstr "开始日期"
#: accounts/models/automations/backup_account.py:123 #: accounts/models/automations/backup_account.py:122
#: authentication/templates/authentication/_msg_oauth_bind.html:11 #: authentication/templates/authentication/_msg_oauth_bind.html:11
#: notifications/notifications.py:186 #: notifications/notifications.py:186
msgid "Time" msgid "Time"
msgstr "时间" msgstr "时间"
#: accounts/models/automations/backup_account.py:127 #: accounts/models/automations/backup_account.py:126
msgid "Account backup snapshot" msgid "Account backup snapshot"
msgstr "账号备份快照" msgstr "账号备份快照"
#: accounts/models/automations/backup_account.py:131 #: accounts/models/automations/backup_account.py:130
#: accounts/serializers/account/backup.py:49 #: accounts/serializers/account/backup.py:49
#: accounts/serializers/automations/base.py:55 #: accounts/serializers/automations/base.py:55
#: assets/models/automations/base.py:122 #: assets/models/automations/base.py:122
@ -375,19 +375,19 @@ msgstr "账号备份快照"
msgid "Trigger mode" msgid "Trigger mode"
msgstr "触发模式" msgstr "触发模式"
#: accounts/models/automations/backup_account.py:134 audits/models.py:202 #: accounts/models/automations/backup_account.py:133 audits/models.py:203
#: terminal/models/session/sharing.py:125 xpack/plugins/cloud/models.py:205 #: terminal/models/session/sharing.py:125 xpack/plugins/cloud/models.py:205
msgid "Reason" msgid "Reason"
msgstr "原因" msgstr "原因"
#: accounts/models/automations/backup_account.py:136 #: accounts/models/automations/backup_account.py:135
#: accounts/serializers/automations/change_secret.py:105 #: accounts/serializers/automations/change_secret.py:105
#: accounts/serializers/automations/change_secret.py:128 #: accounts/serializers/automations/change_secret.py:128
#: ops/serializers/job.py:56 terminal/serializers/session.py:49 #: ops/serializers/job.py:56 terminal/serializers/session.py:49
msgid "Is success" msgid "Is success"
msgstr "是否成功" msgstr "是否成功"
#: accounts/models/automations/backup_account.py:144 #: accounts/models/automations/backup_account.py:143
msgid "Account backup execution" msgid "Account backup execution"
msgstr "账号备份执行" msgstr "账号备份执行"
@ -432,6 +432,7 @@ msgid "SSH key change strategy"
msgstr "SSH 密钥推送方式" msgstr "SSH 密钥推送方式"
#: accounts/models/automations/change_secret.py:15 #: accounts/models/automations/change_secret.py:15
#: accounts/models/automations/gather_account.py:58
#: accounts/serializers/account/backup.py:41 #: accounts/serializers/account/backup.py:41
#: accounts/serializers/automations/change_secret.py:56 #: accounts/serializers/automations/change_secret.py:56
msgid "Recipient" msgid "Recipient"
@ -461,7 +462,7 @@ 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:207 #: assets/models/automations/base.py:113 audits/models.py:208
#: audits/serializers.py:51 ops/models/base.py:49 ops/models/job.py:220 #: audits/serializers.py:51 ops/models/base.py:49 ops/models/job.py:220
#: terminal/models/applet/applet.py:316 terminal/models/applet/host.py:140 #: terminal/models/applet/applet.py:316 terminal/models/applet/host.py:140
#: terminal/models/component/status.py:30 terminal/serializers/applet.py:18 #: terminal/models/component/status.py:30 terminal/serializers/applet.py:18
@ -496,8 +497,8 @@ msgstr "最后登录日期"
#: accounts/models/automations/push_account.py:15 accounts/models/base.py:65 #: accounts/models/automations/push_account.py:15 accounts/models/base.py:65
#: accounts/serializers/account/virtual.py:21 acls/serializers/base.py:19 #: accounts/serializers/account/virtual.py:21 acls/serializers/base.py:19
#: acls/serializers/base.py:50 acls/templates/acls/asset_login_reminder.html:5 #: acls/serializers/base.py:50 acls/templates/acls/asset_login_reminder.html:5
#: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:22 #: acls/templates/acls/user_login_reminder.html:5 assets/models/_user.py:23
#: audits/models.py:187 authentication/forms.py:25 authentication/forms.py:27 #: audits/models.py:188 authentication/forms.py:25 authentication/forms.py:27
#: authentication/models/temp_token.py:9 #: authentication/models/temp_token.py:9
#: authentication/templates/authentication/_msg_different_city.html:9 #: authentication/templates/authentication/_msg_different_city.html:9
#: authentication/templates/authentication/_msg_oauth_bind.html:9 #: authentication/templates/authentication/_msg_oauth_bind.html:9
@ -520,7 +521,7 @@ msgstr "自动化收集账号"
msgid "Is sync account" msgid "Is sync account"
msgstr "是否同步账号" msgstr "是否同步账号"
#: accounts/models/automations/gather_account.py:71 #: accounts/models/automations/gather_account.py:75
#: accounts/tasks/gather_accounts.py:29 #: accounts/tasks/gather_accounts.py:29
msgid "Gather asset accounts" msgid "Gather asset accounts"
msgstr "收集账号" msgstr "收集账号"
@ -531,8 +532,8 @@ msgstr "触发方式"
#: accounts/models/automations/push_account.py:16 acls/models/base.py:41 #: accounts/models/automations/push_account.py:16 acls/models/base.py:41
#: acls/serializers/base.py:57 assets/models/cmd_filter.py:81 #: acls/serializers/base.py:57 assets/models/cmd_filter.py:81
#: audits/models.py:91 audits/serializers.py:84 #: audits/models.py:92 audits/serializers.py:84
#: authentication/serializers/connect_token_secret.py:116 #: authentication/serializers/connect_token_secret.py:118
#: authentication/templates/authentication/_access_key_modal.html:34 #: authentication/templates/authentication/_access_key_modal.html:34
msgid "Action" msgid "Action"
msgstr "动作" msgstr "动作"
@ -576,14 +577,14 @@ msgstr "密码规则"
#: accounts/models/base.py:64 accounts/serializers/account/virtual.py:20 #: accounts/models/base.py:64 accounts/serializers/account/virtual.py:20
#: acls/models/base.py:35 acls/models/base.py:96 acls/models/command_acl.py:21 #: acls/models/base.py:35 acls/models/base.py:96 acls/models/command_acl.py:21
#: acls/serializers/base.py:35 applications/models.py:9 #: acls/serializers/base.py:35 applications/models.py:9
#: assets/models/_user.py:21 assets/models/asset/common.py:91 #: assets/models/_user.py:22 assets/models/asset/common.py:91
#: assets/models/asset/common.py:149 assets/models/cmd_filter.py:21 #: assets/models/asset/common.py:149 assets/models/cmd_filter.py:21
#: assets/models/domain.py:18 assets/models/group.py:17 #: assets/models/domain.py:18 assets/models/group.py:17
#: assets/models/label.py:18 assets/models/platform.py:15 #: assets/models/label.py:18 assets/models/platform.py:15
#: assets/models/platform.py:88 assets/serializers/asset/common.py:146 #: assets/models/platform.py:88 assets/serializers/asset/common.py:146
#: assets/serializers/platform.py:111 assets/serializers/platform.py:228 #: assets/serializers/platform.py:111 assets/serializers/platform.py:228
#: authentication/backends/passkey/models.py:10 #: authentication/backends/passkey/models.py:10
#: authentication/serializers/connect_token_secret.py:110 ops/mixin.py:21 #: authentication/serializers/connect_token_secret.py:112 ops/mixin.py:21
#: ops/models/adhoc.py:20 ops/models/celery.py:15 ops/models/celery.py:57 #: ops/models/adhoc.py:20 ops/models/celery.py:15 ops/models/celery.py:57
#: ops/models/job.py:126 ops/models/playbook.py:28 ops/serializers/job.py:20 #: ops/models/job.py:126 ops/models/playbook.py:28 ops/serializers/job.py:20
#: orgs/models.py:82 perms/models/asset_permission.py:60 rbac/models/role.py:29 #: orgs/models.py:82 perms/models/asset_permission.py:60 rbac/models/role.py:29
@ -606,13 +607,13 @@ msgstr "特权账号"
#: accounts/models/base.py:70 assets/models/asset/common.py:156 #: accounts/models/base.py:70 assets/models/asset/common.py:156
#: assets/models/automations/base.py:21 assets/models/cmd_filter.py:39 #: assets/models/automations/base.py:21 assets/models/cmd_filter.py:39
#: assets/models/label.py:22 #: assets/models/label.py:22
#: authentication/serializers/connect_token_secret.py:114 #: authentication/serializers/connect_token_secret.py:116
#: terminal/models/applet/applet.py:40 #: terminal/models/applet/applet.py:40
#: terminal/models/component/endpoint.py:105 users/serializers/user.py:167 #: terminal/models/component/endpoint.py:105 users/serializers/user.py:167
msgid "Is active" msgid "Is active"
msgstr "激活" msgstr "激活"
#: accounts/models/template.py:17 assets/models/_user.py:54 #: accounts/models/template.py:17 assets/models/_user.py:53
msgid "Auto push" msgid "Auto push"
msgstr "自动推送" msgstr "自动推送"
@ -667,17 +668,17 @@ msgid ""
msgstr "" msgstr ""
"连接资产时不使用用户名和密码的账号,仅支持 web类型 和 自定义类型 的资产" "连接资产时不使用用户名和密码的账号,仅支持 web类型 和 自定义类型 的资产"
#: accounts/notifications.py:9 accounts/notifications.py:34 #: accounts/notifications.py:11 accounts/notifications.py:36
msgid "Notification of account backup route task results" msgid "Notification of account backup route task results"
msgstr "账号备份任务结果通知" msgstr "账号备份任务结果通知"
#: accounts/notifications.py:19 accounts/notifications.py:43 #: accounts/notifications.py:21 accounts/notifications.py:45
msgid "" msgid ""
"{} - The account backup passage task has been completed. See the attachment " "{} - The account backup passage task has been completed. See the attachment "
"for details" "for details"
msgstr "{} - 账号备份任务已完成, 详情见附件" msgstr "{} - 账号备份任务已完成, 详情见附件"
#: accounts/notifications.py:22 #: accounts/notifications.py:24
msgid "" msgid ""
"{} - The account backup passage task has been completed: the encryption " "{} - The account backup passage task has been completed: the encryption "
"password has not been set - please go to personal information -> file " "password has not been set - please go to personal information -> file "
@ -686,17 +687,17 @@ msgstr ""
"{} - 账号备份任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设" "{} - 账号备份任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设"
"置加密密码" "置加密密码"
#: accounts/notifications.py:53 #: accounts/notifications.py:55
msgid "Notification of implementation result of encryption change plan" msgid "Notification of implementation result of encryption change plan"
msgstr "改密计划任务结果通知" msgstr "改密计划任务结果通知"
#: accounts/notifications.py:63 #: accounts/notifications.py:65
msgid "" msgid ""
"{} - The encryption change task has been completed. See the attachment for " "{} - The encryption change task has been completed. See the attachment for "
"details" "details"
msgstr "{} - 改密任务已完成, 详情见附件" msgstr "{} - 改密任务已完成, 详情见附件"
#: accounts/notifications.py:66 #: accounts/notifications.py:68
msgid "" msgid ""
"{} - The encryption change task has been completed: the encryption password " "{} - The encryption change task has been completed: the encryption password "
"has not been set - please go to personal information -> file encryption " "has not been set - please go to personal information -> file encryption "
@ -705,6 +706,12 @@ msgstr ""
"{} - 改密任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设置加" "{} - 改密任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设置加"
"密密码" "密密码"
#: accounts/notifications.py:79
#, fuzzy
#| msgid "Gather account automation"
msgid "Gather account change information"
msgstr "自动化收集账号"
#: accounts/serializers/account/account.py:31 #: accounts/serializers/account/account.py:31
msgid "Push now" msgid "Push now"
msgstr "立即推送" msgstr "立即推送"
@ -725,12 +732,12 @@ msgstr "类别"
#: accounts/serializers/account/account.py:191 #: accounts/serializers/account/account.py:191
#: accounts/serializers/automations/base.py:54 acls/models/command_acl.py:24 #: accounts/serializers/automations/base.py:54 acls/models/command_acl.py:24
#: acls/serializers/command_acl.py:19 applications/models.py:14 #: acls/serializers/command_acl.py:19 applications/models.py:14
#: assets/models/_user.py:49 assets/models/automations/base.py:20 #: assets/models/_user.py:50 assets/models/automations/base.py:20
#: assets/models/cmd_filter.py:74 assets/models/platform.py:90 #: assets/models/cmd_filter.py:74 assets/models/platform.py:90
#: assets/serializers/asset/common.py:122 assets/serializers/platform.py:113 #: assets/serializers/asset/common.py:122 assets/serializers/platform.py:113
#: assets/serializers/platform.py:132 audits/serializers.py:50 #: assets/serializers/platform.py:132 audits/serializers.py:50
#: audits/serializers.py:170 #: audits/serializers.py:170
#: authentication/serializers/connect_token_secret.py:123 ops/models/job.py:137 #: authentication/serializers/connect_token_secret.py:125 ops/models/job.py:137
#: perms/serializers/user_permission.py:26 terminal/models/applet/applet.py:39 #: perms/serializers/user_permission.py:26 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
@ -766,7 +773,7 @@ msgstr "已修改"
#: acls/templates/acls/asset_login_reminder.html:6 #: acls/templates/acls/asset_login_reminder.html:6
#: assets/models/automations/base.py:19 #: assets/models/automations/base.py:19
#: assets/serializers/automations/base.py:20 #: assets/serializers/automations/base.py:20
#: authentication/api/connection_token.py:407 ops/models/base.py:17 #: authentication/api/connection_token.py:402 ops/models/base.py:17
#: ops/models/job.py:139 ops/serializers/job.py:21 #: ops/models/job.py:139 ops/serializers/job.py:21
#: terminal/templates/terminal/_msg_command_execute_alert.html:16 #: terminal/templates/terminal/_msg_command_execute_alert.html:16
msgid "Assets" msgid "Assets"
@ -786,15 +793,15 @@ msgid "Account has exist"
msgstr "账号已存在" msgstr "账号已存在"
#: accounts/serializers/account/account.py:438 #: accounts/serializers/account/account.py:438
#: authentication/serializers/connect_token_secret.py:156 #: authentication/serializers/connect_token_secret.py:158
#: authentication/templates/authentication/_access_key_modal.html:30 #: authentication/templates/authentication/_access_key_modal.html:30
#: perms/models/perm_node.py:21 users/serializers/group.py:31 #: perms/models/perm_node.py:21 users/serializers/group.py:31
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:448 acls/serializers/base.py:116 #: accounts/serializers/account/account.py:448 acls/serializers/base.py:116
#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:53 #: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:54
#: audits/models.py:89 audits/models.py:171 audits/models.py:268 #: audits/models.py:90 audits/models.py:172 audits/models.py:269
#: audits/serializers.py:171 authentication/models/connection_token.py:32 #: audits/serializers.py:171 authentication/models/connection_token.py:32
#: authentication/models/sso_token.py:16 #: authentication/models/sso_token.py:16
#: notifications/models/notification.py:12 #: notifications/models/notification.py:12
@ -889,7 +896,7 @@ msgid ""
"default parameters will be used" "default parameters will be used"
msgstr "关联平台,可配置推送参数,如果不关联,将使用默认参数" msgstr "关联平台,可配置推送参数,如果不关联,将使用默认参数"
#: accounts/serializers/account/virtual.py:19 assets/models/_user.py:26 #: 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:145 ops/models/playbook.py:31 rbac/models/role.py:37 #: ops/models/job.py:145 ops/models/playbook.py:31 rbac/models/role.py:37
@ -948,7 +955,7 @@ msgid "Automation task execution"
msgstr "自动化任务执行历史" msgstr "自动化任务执行历史"
#: accounts/serializers/automations/change_secret.py:149 audits/const.py:61 #: accounts/serializers/automations/change_secret.py:149 audits/const.py:61
#: audits/models.py:63 audits/signal_handlers/activity_log.py:33 #: audits/models.py:64 audits/signal_handlers/activity_log.py:33
#: common/const/choices.py:18 ops/const.py:72 ops/serializers/celery.py:40 #: common/const/choices.py:18 ops/const.py:72 ops/serializers/celery.py:40
#: terminal/const.py:77 terminal/models/session/sharing.py:121 #: terminal/const.py:77 terminal/models/session/sharing.py:121
#: tickets/views/approve.py:117 #: tickets/views/approve.py:117
@ -1008,22 +1015,36 @@ msgstr "验证资产账号可用性"
msgid "Verify accounts connectivity" msgid "Verify accounts connectivity"
msgstr "测试账号可连接性" msgstr "测试账号可连接性"
#: accounts/templates/accounts/asset_account_change_info.html:7
#, fuzzy
#| msgid "Asset type"
msgid "Asset name"
msgstr "资产类型"
#: accounts/templates/accounts/asset_account_change_info.html:8
#, fuzzy
#| msgid "Add account: %s"
msgid "Added account"
msgstr "添加账号: %s"
#: accounts/templates/accounts/asset_account_change_info.html:9
#, fuzzy
#| msgid "Delete account: %s"
msgid "Deleted account"
msgstr "删除账号: %s"
#: accounts/utils.py:53 #: accounts/utils.py:53
msgid "Password can not contains `{{` " #, fuzzy
#| msgid "Password can not contains `{{` "
msgid "Password can not contains `{{` or `}}`"
msgstr "密码不能包含 `{{` 字符" msgstr "密码不能包含 `{{` 字符"
#: accounts/utils.py:55 #: accounts/utils.py:55
msgid "Password can not contains `{%` " #, fuzzy
#| msgid "Password can not contains `{%` "
msgid "Password can not contains `{%` or `%}`"
msgstr "密码不能包含 `{%` 字符" msgstr "密码不能包含 `{%` 字符"
#: accounts/utils.py:58
msgid "Password can not contains `'` "
msgstr "密码不能包含 `'` 字符"
#: accounts/utils.py:60
msgid "Password can not contains `\"` "
msgstr "密码不能包含 `\"` 字符"
#: accounts/utils.py:66 #: accounts/utils.py:66
msgid "private key invalid or passphrase error" msgid "private key invalid or passphrase error"
msgstr "密钥不合法或密钥密码错误" msgstr "密钥不合法或密钥密码错误"
@ -1053,7 +1074,7 @@ msgstr "告警"
msgid "Notifications" msgid "Notifications"
msgstr "通知" msgstr "通知"
#: acls/models/base.py:37 assets/models/_user.py:50 #: acls/models/base.py:37 assets/models/_user.py:51
#: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:97 #: assets/models/cmd_filter.py:76 terminal/models/component/endpoint.py:97
#: xpack/plugins/cloud/models.py:275 #: xpack/plugins/cloud/models.py:275
msgid "Priority" msgid "Priority"
@ -1066,7 +1087,7 @@ msgid "1-100, the lower the value will be match first"
msgstr "优先级可选范围为 1-100 (数值越小越优先)" msgstr "优先级可选范围为 1-100 (数值越小越优先)"
#: acls/models/base.py:42 assets/models/cmd_filter.py:86 #: acls/models/base.py:42 assets/models/cmd_filter.py:86
#: authentication/serializers/connect_token_secret.py:88 #: authentication/serializers/connect_token_secret.py:90
msgid "Reviewers" msgid "Reviewers"
msgstr "审批人" msgstr "审批人"
@ -1117,7 +1138,7 @@ msgstr "忽略大小写"
#: acls/models/command_acl.py:33 acls/models/command_acl.py:97 #: acls/models/command_acl.py:33 acls/models/command_acl.py:97
#: acls/serializers/command_acl.py:29 #: acls/serializers/command_acl.py:29
#: authentication/serializers/connect_token_secret.py:85 #: authentication/serializers/connect_token_secret.py:87
#: terminal/templates/terminal/_msg_command_warning.html:14 #: terminal/templates/terminal/_msg_command_warning.html:14
msgid "Command group" msgid "Command group"
msgstr "命令组" msgstr "命令组"
@ -1245,15 +1266,15 @@ msgstr ""
msgid "Thank you" msgid "Thank you"
msgstr "谢谢" msgstr "谢谢"
#: acls/templates/acls/user_login_reminder.html:7 audits/models.py:193 #: acls/templates/acls/user_login_reminder.html:7 audits/models.py:194
#: audits/models.py:262 #: audits/models.py:263
#: authentication/templates/authentication/_msg_different_city.html:11 #: authentication/templates/authentication/_msg_different_city.html:11
#: tickets/models/ticket/login_confirm.py:11 #: tickets/models/ticket/login_confirm.py:11
msgid "Login city" msgid "Login city"
msgstr "登录城市" msgstr "登录城市"
#: acls/templates/acls/user_login_reminder.html:8 audits/models.py:196 #: acls/templates/acls/user_login_reminder.html:8 audits/models.py:197
#: audits/models.py:263 audits/serializers.py:65 #: audits/models.py:264 audits/serializers.py:65
msgid "User agent" msgid "User agent"
msgstr "用户代理" msgstr "用户代理"
@ -1573,99 +1594,99 @@ msgstr "网站"
msgid "This function is not supported temporarily" msgid "This function is not supported temporarily"
msgstr "暂时不支持此功能" msgstr "暂时不支持此功能"
#: assets/models/_user.py:24 #: assets/models/_user.py:25
msgid "SSH private key" msgid "SSH private key"
msgstr "SSH密钥" msgstr "SSH密钥"
#: assets/models/_user.py:25 #: assets/models/_user.py:26
msgid "SSH public key" msgid "SSH public key"
msgstr "SSH公钥" msgstr "SSH公钥"
# msgid "Comment" # msgid "Comment"
# msgstr "备注" # msgstr "备注"
#: assets/models/_user.py:27 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:266 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:227 users/models/user.py:1024 #: ops/models/job.py:227 users/models/user.py:1024
msgid "Date created" msgid "Date created"
msgstr "创建日期" msgstr "创建日期"
#: assets/models/_user.py:28 assets/models/cmd_filter.py:42 #: assets/models/_user.py:29 assets/models/cmd_filter.py:42
#: common/db/models.py:35 users/models/user.py:846 #: common/db/models.py:35 users/models/user.py:846
msgid "Date updated" msgid "Date updated"
msgstr "更新日期" msgstr "更新日期"
#: assets/models/_user.py:29 assets/models/cmd_filter.py:44 #: assets/models/_user.py:30 assets/models/cmd_filter.py:44
#: assets/models/cmd_filter.py:91 assets/models/group.py:18 #: assets/models/cmd_filter.py:91 assets/models/group.py:18
#: common/db/models.py:32 users/models/user.py:835 #: common/db/models.py:32 users/models/user.py:835
#: users/serializers/group.py:29 #: users/serializers/group.py:29
msgid "Created by" msgid "Created by"
msgstr "创建者" msgstr "创建者"
#: assets/models/_user.py:39 #: assets/models/_user.py:40
msgid "Automatic managed" msgid "Automatic managed"
msgstr "托管密码" msgstr "托管密码"
#: assets/models/_user.py:40 #: assets/models/_user.py:41
msgid "Manually input" msgid "Manually input"
msgstr "手动输入" msgstr "手动输入"
#: assets/models/_user.py:44 #: assets/models/_user.py:45
msgid "Common user" msgid "Common user"
msgstr "普通用户" msgstr "普通用户"
#: assets/models/_user.py:45 assets/models/_user.py:98 #: assets/models/_user.py:46 assets/models/_user.py:95
msgid "Admin user" msgid "Admin user"
msgstr "特权用户" msgstr "特权用户"
#: assets/models/_user.py:48 #: assets/models/_user.py:49
msgid "Username same with user" msgid "Username same with user"
msgstr "用户名与用户相同" msgstr "用户名与用户相同"
#: assets/models/_user.py:53 authentication/models/connection_token.py:41 #: assets/models/_user.py:52 authentication/models/connection_token.py:41
#: authentication/serializers/connect_token_secret.py:111 #: authentication/serializers/connect_token_secret.py:113
#: terminal/models/applet/applet.py:42 terminal/serializers/session.py:19 #: terminal/models/applet/applet.py:42 terminal/serializers/session.py:19
#: terminal/serializers/session.py:45 terminal/serializers/storage.py:71 #: terminal/serializers/session.py:45 terminal/serializers/storage.py:71
msgid "Protocol" msgid "Protocol"
msgstr "协议" msgstr "协议"
#: assets/models/_user.py:55 #: assets/models/_user.py:54
msgid "Sudo" msgid "Sudo"
msgstr "Sudo" msgstr "Sudo"
#: assets/models/_user.py:56 ops/const.py:49 ops/const.py:59 #: assets/models/_user.py:55 ops/const.py:49 ops/const.py:59
msgid "Shell" msgid "Shell"
msgstr "Shell" msgstr "Shell"
#: assets/models/_user.py:58 #: assets/models/_user.py:56
msgid "Login mode" msgid "Login mode"
msgstr "认证方式" msgstr "认证方式"
#: assets/models/_user.py:59 terminal/serializers/storage.py:152 #: assets/models/_user.py:57 terminal/serializers/storage.py:152
msgid "SFTP Root" msgid "SFTP Root"
msgstr "SFTP根路径" msgstr "SFTP根路径"
#: assets/models/_user.py:60 #: assets/models/_user.py:58
msgid "Home" msgid "Home"
msgstr "家目录" msgstr "家目录"
#: assets/models/_user.py:61 #: assets/models/_user.py:59
msgid "System groups" msgid "System groups"
msgstr "用户组" msgstr "用户组"
#: assets/models/_user.py:64 #: assets/models/_user.py:62
msgid "User switch" msgid "User switch"
msgstr "用户切换" msgstr "用户切换"
#: assets/models/_user.py:66 #: assets/models/_user.py:63
msgid "Switch from" msgid "Switch from"
msgstr "切换自" msgstr "切换自"
#: assets/models/_user.py:72 #: assets/models/_user.py:69
msgid "System user" msgid "System user"
msgstr "系统用户" msgstr "系统用户"
#: assets/models/_user.py:74 #: assets/models/_user.py:71
msgid "Can match system user" msgid "Can match system user"
msgstr "可以匹配系统用户" msgstr "可以匹配系统用户"
@ -1686,13 +1707,13 @@ msgstr "地址"
#: assets/models/asset/common.py:151 assets/models/platform.py:119 #: assets/models/asset/common.py:151 assets/models/platform.py:119
#: authentication/backends/passkey/models.py:12 #: authentication/backends/passkey/models.py:12
#: authentication/serializers/connect_token_secret.py:115 #: authentication/serializers/connect_token_secret.py:117
#: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:321 #: perms/serializers/user_permission.py:24 xpack/plugins/cloud/models.py:321
msgid "Platform" msgid "Platform"
msgstr "系统平台" msgstr "系统平台"
#: assets/models/asset/common.py:153 assets/models/domain.py:21 #: assets/models/asset/common.py:153 assets/models/domain.py:21
#: authentication/serializers/connect_token_secret.py:133 #: authentication/serializers/connect_token_secret.py:135
#: perms/serializers/user_permission.py:28 xpack/plugins/cloud/models.py:323 #: perms/serializers/user_permission.py:28 xpack/plugins/cloud/models.py:323
msgid "Domain" msgid "Domain"
msgstr "网域" msgstr "网域"
@ -1839,7 +1860,7 @@ msgstr "系统"
#: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18 #: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18
#: assets/serializers/cagegory.py:24 #: assets/serializers/cagegory.py:24
#: authentication/models/connection_token.py:29 #: authentication/models/connection_token.py:29
#: authentication/serializers/connect_token_secret.py:122 #: authentication/serializers/connect_token_secret.py:124
#: common/serializers/common.py:86 settings/models.py:33 #: common/serializers/common.py:86 settings/models.py:33
#: users/models/preference.py:13 #: users/models/preference.py:13
msgid "Value" msgid "Value"
@ -1848,7 +1869,7 @@ msgstr "值"
#: assets/models/label.py:40 assets/serializers/asset/common.py:123 #: assets/models/label.py:40 assets/serializers/asset/common.py:123
#: assets/serializers/cagegory.py:10 assets/serializers/cagegory.py:17 #: assets/serializers/cagegory.py:10 assets/serializers/cagegory.py:17
#: assets/serializers/cagegory.py:23 assets/serializers/platform.py:112 #: assets/serializers/cagegory.py:23 assets/serializers/platform.py:112
#: authentication/serializers/connect_token_secret.py:121 #: authentication/serializers/connect_token_secret.py:123
#: common/serializers/common.py:85 perms/serializers/user_permission.py:27 #: common/serializers/common.py:85 perms/serializers/user_permission.py:27
#: settings/serializers/msg.py:83 #: settings/serializers/msg.py:83
msgid "Label" msgid "Label"
@ -2014,7 +2035,7 @@ msgstr "资产中批量更新平台,不符合平台类型跳过的资产"
#: assets/serializers/asset/common.py:124 assets/serializers/platform.py:134 #: assets/serializers/asset/common.py:124 assets/serializers/platform.py:134
#: authentication/serializers/connect_token_secret.py:29 #: authentication/serializers/connect_token_secret.py:29
#: authentication/serializers/connect_token_secret.py:72 #: authentication/serializers/connect_token_secret.py:74
#: perms/models/asset_permission.py:75 perms/serializers/permission.py:40 #: perms/models/asset_permission.py:75 perms/serializers/permission.py:40
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:324 #: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:324
#: xpack/plugins/cloud/serializers/task.py:31 #: xpack/plugins/cloud/serializers/task.py:31
@ -2105,7 +2126,7 @@ msgid "Disk total"
msgstr "硬盘大小" msgstr "硬盘大小"
#: assets/serializers/asset/info/gathered.py:16 #: assets/serializers/asset/info/gathered.py:16
#: authentication/serializers/connect_token_secret.py:112 #: authentication/serializers/connect_token_secret.py:114
msgid "OS" msgid "OS"
msgstr "操作系统" msgstr "操作系统"
@ -2353,7 +2374,7 @@ msgstr "关闭"
msgid "Terminal" msgid "Terminal"
msgstr "终端" msgstr "终端"
#: audits/const.py:48 audits/models.py:131 #: audits/const.py:48 audits/models.py:132
msgid "Operate log" msgid "Operate log"
msgstr "操作日志" msgstr "操作日志"
@ -2382,28 +2403,28 @@ msgstr "是"
msgid "No" msgid "No"
msgstr "否" msgstr "否"
#: audits/models.py:46 #: audits/models.py:47
msgid "Job audit log" msgid "Job audit log"
msgstr "作业审计日志" msgstr "作业审计日志"
#: audits/models.py:55 audits/models.py:99 audits/models.py:174 #: audits/models.py:56 audits/models.py:100 audits/models.py:175
#: terminal/models/session/session.py:38 terminal/models/session/sharing.py:113 #: terminal/models/session/session.py:38 terminal/models/session/sharing.py:113
msgid "Remote addr" msgid "Remote addr"
msgstr "远端地址" msgstr "远端地址"
#: audits/models.py:60 audits/serializers.py:35 #: audits/models.py:61 audits/serializers.py:35
msgid "Operate" msgid "Operate"
msgstr "操作" msgstr "操作"
#: audits/models.py:62 #: audits/models.py:63
msgid "Filename" msgid "Filename"
msgstr "文件名" msgstr "文件名"
#: audits/models.py:65 common/serializers/common.py:98 #: audits/models.py:66 common/serializers/common.py:98
msgid "File" msgid "File"
msgstr "文件" msgstr "文件"
#: audits/models.py:66 terminal/backends/command/models.py:21 #: audits/models.py:67 terminal/backends/command/models.py:21
#: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20 #: terminal/models/session/replay.py:9 terminal/models/session/sharing.py:20
#: terminal/models/session/sharing.py:95 #: terminal/models/session/sharing.py:95
#: terminal/templates/terminal/_msg_command_alert.html:10 #: terminal/templates/terminal/_msg_command_alert.html:10
@ -2412,86 +2433,86 @@ msgstr "文件"
msgid "Session" msgid "Session"
msgstr "会话" msgstr "会话"
#: audits/models.py:69 #: audits/models.py:70
msgid "File transfer log" msgid "File transfer log"
msgstr "文件管理" msgstr "文件管理"
#: audits/models.py:93 audits/serializers.py:86 #: audits/models.py:94 audits/serializers.py:86
msgid "Resource Type" msgid "Resource Type"
msgstr "资源类型" msgstr "资源类型"
#: audits/models.py:94 audits/models.py:97 audits/models.py:143 #: audits/models.py:95 audits/models.py:98 audits/models.py:144
#: audits/serializers.py:85 #: audits/serializers.py:85
msgid "Resource" msgid "Resource"
msgstr "资源" msgstr "资源"
#: audits/models.py:100 audits/models.py:146 audits/models.py:176 #: audits/models.py:101 audits/models.py:147 audits/models.py:177
#: terminal/serializers/command.py:75 #: terminal/serializers/command.py:75
msgid "Datetime" msgid "Datetime"
msgstr "日期" msgstr "日期"
#: audits/models.py:139 #: audits/models.py:140
msgid "Activity type" msgid "Activity type"
msgstr "活动类型" msgstr "活动类型"
#: audits/models.py:149 #: audits/models.py:150
msgid "Detail" msgid "Detail"
msgstr "详情" msgstr "详情"
#: audits/models.py:152 #: audits/models.py:153
msgid "Detail ID" msgid "Detail ID"
msgstr "详情 ID" msgstr "详情 ID"
#: audits/models.py:156 #: audits/models.py:157
msgid "Activity log" msgid "Activity log"
msgstr "活动日志" msgstr "活动日志"
#: audits/models.py:172 #: audits/models.py:173
msgid "Change by" msgid "Change by"
msgstr "修改者" msgstr "修改者"
#: audits/models.py:182 #: audits/models.py:183
msgid "Password change log" msgid "Password change log"
msgstr "改密日志" msgstr "改密日志"
#: audits/models.py:189 audits/models.py:264 #: audits/models.py:190 audits/models.py:265
msgid "Login type" msgid "Login type"
msgstr "登录方式" msgstr "登录方式"
#: audits/models.py:191 audits/models.py:260 #: audits/models.py:192 audits/models.py:261
#: tickets/models/ticket/login_confirm.py:10 #: tickets/models/ticket/login_confirm.py:10
msgid "Login IP" msgid "Login IP"
msgstr "登录 IP" msgstr "登录 IP"
#: audits/models.py:199 audits/serializers.py:49 #: audits/models.py:200 audits/serializers.py:49
#: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/_mfa_confirm_modal.html:14
#: users/forms/profile.py:65 users/models/user.py:815 #: users/forms/profile.py:65 users/models/user.py:815
#: users/serializers/profile.py:102 #: users/serializers/profile.py:102
msgid "MFA" msgid "MFA"
msgstr "MFA" msgstr "MFA"
#: audits/models.py:209 #: audits/models.py:210
msgid "Date login" msgid "Date login"
msgstr "登录日期" msgstr "登录日期"
#: audits/models.py:211 audits/models.py:265 audits/serializers.py:67 #: audits/models.py:212 audits/models.py:266 audits/serializers.py:67
#: audits/serializers.py:184 #: audits/serializers.py:184
msgid "Authentication backend" msgid "Authentication backend"
msgstr "认证方式" msgstr "认证方式"
#: audits/models.py:255 #: audits/models.py:256
msgid "User login log" msgid "User login log"
msgstr "用户登录日志" msgstr "用户登录日志"
#: audits/models.py:261 #: audits/models.py:262
msgid "Session key" msgid "Session key"
msgstr "会话标识" msgstr "会话标识"
#: audits/models.py:300 #: audits/models.py:306
msgid "User session" msgid "User session"
msgstr "用户会话" msgstr "用户会话"
#: audits/models.py:302 #: audits/models.py:308
msgid "Offline ussr session" msgid "Offline ussr session"
msgstr "下限用户会话" msgstr "下限用户会话"
@ -2586,27 +2607,27 @@ msgstr ""
msgid "This action require verify your MFA" msgid "This action require verify your MFA"
msgstr "该操作需要验证您的 MFA, 请先开启并配置" msgstr "该操作需要验证您的 MFA, 请先开启并配置"
#: authentication/api/connection_token.py:263 #: authentication/api/connection_token.py:258
msgid "Reusable connection token is not allowed, global setting not enabled" msgid "Reusable connection token is not allowed, global setting not enabled"
msgstr "不允许使用可重复使用的连接令牌,未启用全局设置" msgstr "不允许使用可重复使用的连接令牌,未启用全局设置"
#: authentication/api/connection_token.py:377 #: authentication/api/connection_token.py:372
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "匿名账号不支持当前资产" msgstr "匿名账号不支持当前资产"
#: authentication/api/connection_token.py:396 #: authentication/api/connection_token.py:391
msgid "Account not found" msgid "Account not found"
msgstr "账号未找到" msgstr "账号未找到"
#: authentication/api/connection_token.py:399 #: authentication/api/connection_token.py:394
msgid "Permission expired" msgid "Permission expired"
msgstr "授权已过期" msgstr "授权已过期"
#: authentication/api/connection_token.py:429 #: authentication/api/connection_token.py:424
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL 动作是拒绝: {}({})" msgstr "ACL 动作是拒绝: {}({})"
#: authentication/api/connection_token.py:433 #: authentication/api/connection_token.py:428
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL 动作是复核" msgstr "ACL 动作是复核"
@ -3078,19 +3099,19 @@ msgstr "异地登录提醒"
msgid "binding reminder" msgid "binding reminder"
msgstr "绑定提醒" msgstr "绑定提醒"
#: authentication/serializers/connect_token_secret.py:113 #: authentication/serializers/connect_token_secret.py:115
msgid "Is builtin" msgid "Is builtin"
msgstr "内置的" msgstr "内置的"
#: authentication/serializers/connect_token_secret.py:117 #: authentication/serializers/connect_token_secret.py:119
msgid "Options" msgid "Options"
msgstr "选项" msgstr "选项"
#: authentication/serializers/connect_token_secret.py:124 #: authentication/serializers/connect_token_secret.py:126
msgid "Component" msgid "Component"
msgstr "组件" msgstr "组件"
#: authentication/serializers/connect_token_secret.py:135 #: authentication/serializers/connect_token_secret.py:137
msgid "Expired now" msgid "Expired now"
msgstr "立刻过期" msgstr "立刻过期"
@ -3568,7 +3589,7 @@ msgstr "编码数据为 text"
msgid "Encrypt field using Secret Key" msgid "Encrypt field using Secret Key"
msgstr "加密的字段" msgstr "加密的字段"
#: common/db/fields.py:575 #: common/db/fields.py:573
msgid "" msgid ""
"Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or " "Invalid JSON data for JSONManyToManyField, should be like {'type': 'all'} or "
"{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', " "{'type': 'ids', 'ids': []} or {'type': 'attrs', 'attrs': [{'name': 'ip', "
@ -3578,15 +3599,15 @@ msgstr ""
"{'type': 'attrs', 'attrs': [{'name': 'ip', 'match': 'exact', 'value': " "{'type': 'attrs', 'attrs': [{'name': 'ip', 'match': 'exact', 'value': "
"'1.1.1.1'}}" "'1.1.1.1'}}"
#: common/db/fields.py:582 #: common/db/fields.py:580
msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\"" msgid "Invalid type, should be \"all\", \"ids\" or \"attrs\""
msgstr "无效类型,应为 all、ids 或 attrs" msgstr "无效类型,应为 all、ids 或 attrs"
#: common/db/fields.py:585 #: common/db/fields.py:583
msgid "Invalid ids for ids, should be a list" msgid "Invalid ids for ids, should be a list"
msgstr "无效的ID应为列表" msgstr "无效的ID应为列表"
#: common/db/fields.py:587 common/db/fields.py:592 #: common/db/fields.py:585 common/db/fields.py:590
#: common/serializers/fields.py:104 tickets/serializers/ticket/common.py:58 #: common/serializers/fields.py:104 tickets/serializers/ticket/common.py:58
#: xpack/plugins/cloud/serializers/account_attrs.py:56 #: xpack/plugins/cloud/serializers/account_attrs.py:56
#: xpack/plugins/cloud/serializers/account_attrs.py:79 #: xpack/plugins/cloud/serializers/account_attrs.py:79
@ -3594,11 +3615,11 @@ msgstr "无效的ID应为列表"
msgid "This field is required." msgid "This field is required."
msgstr "该字段是必填项。" msgstr "该字段是必填项。"
#: common/db/fields.py:590 common/db/fields.py:595 #: common/db/fields.py:588 common/db/fields.py:593
msgid "Invalid attrs, should be a list of dict" msgid "Invalid attrs, should be a list of dict"
msgstr "无效的属性应为dict列表" msgstr "无效的属性应为dict列表"
#: common/db/fields.py:597 #: common/db/fields.py:595
msgid "Invalid attrs, should be has name and value" msgid "Invalid attrs, should be has name and value"
msgstr "无效属性,应具有名称和值" msgstr "无效属性,应具有名称和值"
@ -4354,11 +4375,15 @@ msgstr "复制"
msgid "Paste" msgid "Paste"
msgstr "粘贴" msgstr "粘贴"
#: perms/const.py:27 #: perms/const.py:18
msgid "Share"
msgstr ""
#: perms/const.py:28
msgid "Transfer" msgid "Transfer"
msgstr "文件传输" msgstr "文件传输"
#: perms/const.py:28 #: perms/const.py:29
msgid "Clipboard" msgid "Clipboard"
msgstr "剪贴板" msgstr "剪贴板"
@ -6118,10 +6143,11 @@ msgstr "测试失败: {}"
msgid "Test successful" msgid "Test successful"
msgstr "测试成功" msgstr "测试成功"
#: terminal/api/component/storage.py:124 terminal/notifications.py:240 #: terminal/api/component/storage.py:124
#: terminal/tasks.py:146 #, fuzzy
msgid "Test failure: Account invalid" #| msgid "Test failure: Account invalid"
msgstr "测试失败: 账号无效" msgid "Test failure: Please check configuration"
msgstr "测试失败: 请检查配置"
#: terminal/api/component/terminal.py:55 #: terminal/api/component/terminal.py:55
msgid "Have online sessions" msgid "Have online sessions"
@ -6595,6 +6621,10 @@ msgstr "命令及录像存储"
msgid "Connectivity alarm" msgid "Connectivity alarm"
msgstr "可连接性告警" msgstr "可连接性告警"
#: terminal/notifications.py:240 terminal/tasks.py:146
msgid "Test failure: Account invalid"
msgstr "测试失败: 账号无效"
#: terminal/notifications.py:250 #: terminal/notifications.py:250
#: terminal/templates/terminal/_msg_check_command_replay_storage_connectivity.html:4 #: terminal/templates/terminal/_msg_check_command_replay_storage_connectivity.html:4
msgid "Invalid storage" msgid "Invalid storage"
@ -8574,5 +8604,11 @@ msgstr "企业专业版"
msgid "Ultimate edition" msgid "Ultimate edition"
msgstr "企业旗舰版" msgstr "企业旗舰版"
#~ msgid "Password can not contains `'` "
#~ msgstr "密码不能包含 `'` 字符"
#~ msgid "Password can not contains `\"` "
#~ msgstr "密码不能包含 `\"` 字符"
#~ msgid "Object Storage" #~ msgid "Object Storage"
#~ msgstr "对象存储" #~ msgstr "对象存储"

View File

@ -121,7 +121,7 @@ class BaseStorageTestConnectiveMixin:
if is_valid: if is_valid:
msg = _("Test successful") msg = _("Test successful")
else: else:
msg = _("Test failure: Account invalid") msg = _("Test failure: Please check configuration")
data = { data = {
'is_valid': is_valid, 'is_valid': is_valid,
'msg': msg 'msg': msg