Compare commits

..

2 Commits

Author SHA1 Message Date
github-actions[bot]
40369b5df3 perf: Update Dockerfile with new base image tag 2025-10-29 03:23:29 +00:00
wrd
f42a08152d Revert "perf: update fields serialization and bump django and djangorestframe…"
This reverts commit dd0cacb4bc.
2025-10-29 11:18:54 +08:00
28 changed files with 1035 additions and 1259 deletions

View File

@@ -1,26 +0,0 @@
{
"dry_run": false,
"min_account_age_days": 3,
"max_urls_for_spam": 1,
"min_body_len_for_links": 40,
"spam_words": [
"call now",
"zadzwoń",
"zadzwoń teraz",
"kontakt",
"telefon",
"telefone",
"contato",
"suporte",
"infolinii",
"click here",
"buy now",
"subscribe",
"visit"
],
"bracket_max": 6,
"special_char_density_threshold": 0.12,
"phone_regex": "\\+?\\d[\\d\\-\\s\\(\\)\\.]{6,}\\d",
"labels_for_spam": ["spam"],
"labels_for_review": ["needs-triage"]
}

View File

@@ -1,4 +1,4 @@
FROM jumpserver/core-base:20251014_095903 AS stage-build FROM jumpserver/core-base:20251029_031929 AS stage-build
ARG VERSION ARG VERSION

View File

@@ -1,7 +1,6 @@
from django.db import transaction from django.db import transaction
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from rest_framework import serializers as drf_serializers
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.generics import ListAPIView, CreateAPIView from rest_framework.generics import ListAPIView, CreateAPIView
from rest_framework.response import Response from rest_framework.response import Response
@@ -185,56 +184,12 @@ class AssetAccountBulkCreateApi(CreateAPIView):
'POST': 'accounts.add_account', 'POST': 'accounts.add_account',
} }
@staticmethod
def get_all_assets(base_payload: dict):
nodes = base_payload.pop('nodes', [])
asset_ids = base_payload.pop('assets', [])
nodes = Node.objects.filter(id__in=nodes).only('id', 'key')
node_asset_ids = Node.get_nodes_all_assets(*nodes).values_list('id', flat=True)
asset_ids = set(asset_ids + list(node_asset_ids))
return Asset.objects.filter(id__in=asset_ids)
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
if hasattr(request.data, "copy"): serializer = self.get_serializer(data=request.data)
base_payload = request.data.copy() serializer.is_valid(raise_exception=True)
else: data = serializer.create(serializer.validated_data)
base_payload = dict(request.data) serializer = serializers.AssetAccountBulkSerializerResultSerializer(data, many=True)
return Response(data=serializer.data, status=HTTP_200_OK)
templates = base_payload.pop("template", None)
assets = self.get_all_assets(base_payload)
result = []
errors = []
def handle_one(_payload):
try:
ser = self.get_serializer(data=_payload)
ser.is_valid(raise_exception=True)
data = ser.bulk_create(ser.validated_data, assets)
if isinstance(data, (list, tuple)):
result.extend(data)
else:
result.append(data)
except drf_serializers.ValidationError as e:
errors.extend(list(e.detail))
except Exception as e:
errors.extend([str(e)])
if not templates:
handle_one(base_payload)
else:
if not isinstance(templates, (list, tuple)):
templates = [templates]
for tpl in templates:
payload = dict(base_payload)
payload["template"] = tpl
handle_one(payload)
if errors:
raise drf_serializers.ValidationError(errors)
out_ser = serializers.AssetAccountBulkSerializerResultSerializer(result, many=True)
return Response(data=out_ser.data, status=HTTP_200_OK)
class AccountHistoriesSecretAPI(ExtraFilterFieldsMixin, AccountRecordViewLogMixin, ListAPIView): class AccountHistoriesSecretAPI(ExtraFilterFieldsMixin, AccountRecordViewLogMixin, ListAPIView):

View File

@@ -14,7 +14,7 @@ from accounts.models import Account, AccountTemplate, GatheredAccount
from accounts.tasks import push_accounts_to_assets_task from accounts.tasks import push_accounts_to_assets_task
from assets.const import Category, AllTypes from assets.const import Category, AllTypes
from assets.models import Asset from assets.models import Asset
from common.serializers import SecretReadableMixin, CommonBulkModelSerializer from common.serializers import SecretReadableMixin
from common.serializers.fields import ObjectRelatedField, LabeledChoiceField from common.serializers.fields import ObjectRelatedField, LabeledChoiceField
from common.utils import get_logger from common.utils import get_logger
from .base import BaseAccountSerializer, AuthValidateMixin from .base import BaseAccountSerializer, AuthValidateMixin
@@ -292,27 +292,27 @@ class AccountDetailSerializer(AccountSerializer):
class AssetAccountBulkSerializerResultSerializer(serializers.Serializer): class AssetAccountBulkSerializerResultSerializer(serializers.Serializer):
asset = serializers.CharField(read_only=True, label=_('Asset')) asset = serializers.CharField(read_only=True, label=_('Asset'))
account = serializers.CharField(read_only=True, label=_('Account'))
state = serializers.CharField(read_only=True, label=_('State')) state = serializers.CharField(read_only=True, label=_('State'))
error = serializers.CharField(read_only=True, label=_('Error')) error = serializers.CharField(read_only=True, label=_('Error'))
changed = serializers.BooleanField(read_only=True, label=_('Changed')) changed = serializers.BooleanField(read_only=True, label=_('Changed'))
class AssetAccountBulkSerializer( class AssetAccountBulkSerializer(
AccountCreateUpdateSerializerMixin, AuthValidateMixin, CommonBulkModelSerializer AccountCreateUpdateSerializerMixin, AuthValidateMixin, serializers.ModelSerializer
): ):
su_from_username = serializers.CharField( su_from_username = serializers.CharField(
max_length=128, required=False, write_only=True, allow_null=True, label=_("Su from"), max_length=128, required=False, write_only=True, allow_null=True, label=_("Su from"),
allow_blank=True, allow_blank=True,
) )
assets = serializers.PrimaryKeyRelatedField(queryset=Asset.objects, many=True, label=_('Assets'))
class Meta: class Meta:
model = Account model = Account
fields = [ fields = [
'name', 'username', 'secret', 'secret_type', 'secret_reset', 'name', 'username', 'secret', 'secret_type', 'secret_reset',
'passphrase', 'privileged', 'is_active', 'comment', 'template', 'passphrase', 'privileged', 'is_active', 'comment', 'template',
'on_invalid', 'push_now', 'params', 'on_invalid', 'push_now', 'params', 'assets', 'su_from_username',
'su_from_username', 'source', 'source_id', 'source', 'source_id',
] ]
extra_kwargs = { extra_kwargs = {
'name': {'required': False}, 'name': {'required': False},
@@ -393,7 +393,8 @@ class AssetAccountBulkSerializer(
handler = self._handle_err_create handler = self._handle_err_create
return handler return handler
def perform_bulk_create(self, vd, assets): def perform_bulk_create(self, vd):
assets = vd.pop('assets')
on_invalid = vd.pop('on_invalid', 'skip') on_invalid = vd.pop('on_invalid', 'skip')
secret_type = vd.get('secret_type', 'password') secret_type = vd.get('secret_type', 'password')
@@ -401,7 +402,8 @@ class AssetAccountBulkSerializer(
vd['name'] = vd.get('username') vd['name'] = vd.get('username')
create_handler = self.get_create_handler(on_invalid) create_handler = self.get_create_handler(on_invalid)
secret_type_supports = Asset.get_secret_type_assets(assets, secret_type) asset_ids = [asset.id for asset in assets]
secret_type_supports = Asset.get_secret_type_assets(asset_ids, secret_type)
_results = {} _results = {}
for asset in assets: for asset in assets:
@@ -409,7 +411,6 @@ class AssetAccountBulkSerializer(
_results[asset] = { _results[asset] = {
'error': _('Asset does not support this secret type: %s') % secret_type, 'error': _('Asset does not support this secret type: %s') % secret_type,
'state': 'error', 'state': 'error',
'account': vd['name'],
} }
continue continue
@@ -419,13 +420,13 @@ class AssetAccountBulkSerializer(
self.clean_auth_fields(vd) self.clean_auth_fields(vd)
instance, changed, state = self.perform_create(vd, create_handler) instance, changed, state = self.perform_create(vd, create_handler)
_results[asset] = { _results[asset] = {
'changed': changed, 'instance': instance.id, 'state': state, 'account': vd['name'] 'changed': changed, 'instance': instance.id, 'state': state
} }
except serializers.ValidationError as e: except serializers.ValidationError as e:
_results[asset] = {'error': e.detail[0], 'state': 'error', 'account': vd['name']} _results[asset] = {'error': e.detail[0], 'state': 'error'}
except Exception as e: except Exception as e:
logger.exception(e) logger.exception(e)
_results[asset] = {'error': str(e), 'state': 'error', 'account': vd['name']} _results[asset] = {'error': str(e), 'state': 'error'}
results = [{'asset': asset, **result} for asset, result in _results.items()] results = [{'asset': asset, **result} for asset, result in _results.items()]
state_score = {'created': 3, 'updated': 2, 'skipped': 1, 'error': 0} state_score = {'created': 3, 'updated': 2, 'skipped': 1, 'error': 0}
@@ -442,8 +443,7 @@ class AssetAccountBulkSerializer(
errors.append({ errors.append({
'error': _('Account has exist'), 'error': _('Account has exist'),
'state': 'error', 'state': 'error',
'asset': str(result['asset']), 'asset': str(result['asset'])
'account': result.get('account'),
}) })
if errors: if errors:
raise serializers.ValidationError(errors) raise serializers.ValidationError(errors)
@@ -462,16 +462,10 @@ class AssetAccountBulkSerializer(
account_ids = [str(_id) for _id in accounts.values_list('id', flat=True)] account_ids = [str(_id) for _id in accounts.values_list('id', flat=True)]
push_accounts_to_assets_task.delay(account_ids, params) push_accounts_to_assets_task.delay(account_ids, params)
def bulk_create(self, validated_data, assets): def create(self, validated_data):
if not assets:
raise serializers.ValidationError(
{'assets': _('At least one asset or node must be specified')},
{'nodes': _('At least one asset or node must be specified')}
)
params = validated_data.pop('params', None) params = validated_data.pop('params', None)
push_now = validated_data.pop('push_now', False) push_now = validated_data.pop('push_now', False)
results = self.perform_bulk_create(validated_data, assets) results = self.perform_bulk_create(validated_data)
self.push_accounts_if_need(results, push_now, params) self.push_accounts_if_need(results, push_now, params)
for res in results: for res in results:
res['asset'] = str(res['asset']) res['asset'] = str(res['asset'])

View File

@@ -408,7 +408,8 @@ class Asset(NodesRelationMixin, LabeledMixin, AbsConnectivity, JSONFilterMixin,
return tree_node return tree_node
@staticmethod @staticmethod
def get_secret_type_assets(assets, secret_type): def get_secret_type_assets(asset_ids, secret_type):
assets = Asset.objects.filter(id__in=asset_ids)
asset_protocol = assets.prefetch_related('protocols').values_list('id', 'protocols__name') asset_protocol = assets.prefetch_related('protocols').values_list('id', 'protocols__name')
protocol_secret_types_map = const.Protocol.protocol_secret_types() protocol_secret_types_map = const.Protocol.protocol_secret_types()
asset_secret_types_mapp = defaultdict(set) asset_secret_types_mapp = defaultdict(set)

View File

@@ -23,8 +23,6 @@ logger = get_logger(__name__)
class OperatorLogHandler(metaclass=Singleton): class OperatorLogHandler(metaclass=Singleton):
CACHE_KEY = 'OPERATOR_LOG_CACHE_KEY' CACHE_KEY = 'OPERATOR_LOG_CACHE_KEY'
SYSTEM_OBJECTS = frozenset({"Role"})
PREFER_CURRENT_ELSE_USER = frozenset({"SSOToken"})
def __init__(self): def __init__(self):
self.log_client = self.get_storage_client() self.log_client = self.get_storage_client()
@@ -144,21 +142,13 @@ class OperatorLogHandler(metaclass=Singleton):
after = self.__data_processing(after) after = self.__data_processing(after)
return before, after return before, after
def get_org_id(self, user, object_name): @staticmethod
if object_name in self.SYSTEM_OBJECTS: def get_org_id(object_name):
return Organization.SYSTEM_ID system_obj = ('Role',)
org_id = get_current_org_id()
current = get_current_org_id() if object_name in system_obj:
current_id = str(current) if current else None org_id = Organization.SYSTEM_ID
return org_id
if object_name in self.PREFER_CURRENT_ELSE_USER:
if current_id and current_id != Organization.DEFAULT_ID:
return current_id
org = user.orgs.distinct().first()
return str(org.id) if org else Organization.DEFAULT_ID
return current_id or Organization.DEFAULT_ID
def create_or_update_operate_log( def create_or_update_operate_log(
self, action, resource_type, resource=None, resource_display=None, self, action, resource_type, resource=None, resource_display=None,
@@ -178,7 +168,7 @@ class OperatorLogHandler(metaclass=Singleton):
# 前后都没变化,没必要生成日志,除非手动强制保存 # 前后都没变化,没必要生成日志,除非手动强制保存
return return
org_id = self.get_org_id(user, object_name) org_id = self.get_org_id(object_name)
data = { data = {
'id': log_id, "user": str(user), 'action': action, 'id': log_id, "user": str(user), 'action': action,
'resource_type': str(resource_type), 'org_id': org_id, 'resource_type': str(resource_type), 'org_id': org_id,

View File

@@ -162,7 +162,6 @@ class FeiShu(RequestMixin):
except Exception as e: except Exception as e:
logger.error(f'Get user detail error: {e} data={data}') logger.error(f'Get user detail error: {e} data={data}')
data.update(kwargs['other_info'] if 'other_info' in kwargs else {})
info = flatten_dict(data) info = flatten_dict(data)
default_detail = self.default_user_detail(data, user_id) default_detail = self.default_user_detail(data, user_id)
detail = map_attributes(default_detail, info, self.attributes) detail = map_attributes(default_detail, info, self.attributes)

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: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "" msgstr ""
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "" msgstr ""
@@ -456,7 +456,7 @@ msgstr ""
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -471,7 +471,7 @@ msgstr ""
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -518,14 +518,13 @@ msgstr ""
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -615,7 +614,7 @@ msgstr ""
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -785,7 +784,7 @@ msgid "Status"
msgstr "" msgstr ""
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1009,7 +1008,7 @@ msgid "Verify asset account"
msgstr "" msgstr ""
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1229,46 +1228,54 @@ msgstr ""
msgid "Has secret" msgid "Has secret"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr ""
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr ""
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1292,7 +1299,7 @@ msgstr ""
msgid "User" msgid "User"
msgstr "" msgstr ""
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1711,7 +1718,7 @@ msgstr ""
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "" msgstr ""
@@ -1832,18 +1839,6 @@ msgstr ""
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr ""
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2586,19 +2581,19 @@ msgstr ""
msgid "Custom info" msgid "Custom info"
msgstr "" msgstr ""
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "" msgstr ""
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "" msgstr ""
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "" msgstr ""
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "" msgstr ""
@@ -3461,7 +3456,7 @@ msgstr ""
msgid "-" msgid "-"
msgstr "" msgstr ""
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
@@ -3740,35 +3735,35 @@ msgstr ""
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:426 #: authentication/api/connection_token.py:425
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:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "" msgstr ""
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "" msgstr ""
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "" msgstr ""
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "" msgstr ""
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "" msgstr ""
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "" msgstr ""
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "" msgstr ""
@@ -3842,7 +3837,7 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "" msgstr ""
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "" msgstr ""
@@ -4061,16 +4056,16 @@ msgstr ""
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "" msgstr ""
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "" msgstr ""
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "" msgstr ""
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "" msgstr ""
@@ -4187,28 +4182,21 @@ msgstr ""
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "" msgstr ""
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact "
"the administrator."
msgstr ""
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "" msgstr ""
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
msgstr "" msgstr ""
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "" msgstr ""
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "" msgstr ""
@@ -4690,22 +4678,22 @@ msgstr ""
msgid "LAN" msgid "LAN"
msgstr "" msgstr ""
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "" msgstr ""
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "" msgstr ""
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "" msgstr ""
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "" msgstr ""
@@ -4842,7 +4830,7 @@ msgstr ""
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "" msgstr ""
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "" msgstr ""
@@ -5355,7 +5343,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "Labels" msgstr "Labels"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "" msgstr ""
@@ -7280,39 +7268,39 @@ msgid "Period clean"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
@@ -7322,7 +7310,7 @@ msgid ""
msgstr "" msgstr ""
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "" msgstr ""
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
@@ -7783,32 +7771,28 @@ msgid "Watermark"
msgstr "" msgstr ""
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "Custom content for session" msgstr ""
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "Custom content on the management page" msgstr ""
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "Font color"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "Font size (px)" msgstr ""
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "Height (px)" msgstr ""
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "Height (px)" msgstr ""
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "Rotate (degree)" msgstr ""
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8100,15 +8084,15 @@ msgstr ""
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "" msgstr ""
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "" msgstr ""
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "" msgstr ""
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr "" msgstr ""

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: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "La cuenta ya existe" msgstr "La cuenta ya existe"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "Cuenta no encontrada" msgstr "Cuenta no encontrada"
@@ -484,7 +484,7 @@ msgstr ""
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -499,7 +499,7 @@ msgstr "Activos"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -546,14 +546,13 @@ msgstr "Estado de cambio de contraseña"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -646,7 +645,7 @@ msgstr "Ícono"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -819,7 +818,7 @@ msgid "Status"
msgstr "Estado" msgstr "Estado"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1050,7 +1049,7 @@ msgid "Verify asset account"
msgstr "Verificación de cuentas" msgstr "Verificación de cuentas"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1287,46 +1286,54 @@ msgstr "La cuenta ya existe. El campo: {fields} debe ser único."
msgid "Has secret" msgid "Has secret"
msgstr "Contraseña ya gestionada" msgstr "Contraseña ya gestionada"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "Estado" msgstr "Estado"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "Modificado" msgstr "Modificado"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Activos"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "Tipo de cuenta de activos no soportado: %s" msgstr "Tipo de cuenta de activos no soportado: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "La cuenta ya existe" msgstr "La cuenta ya existe"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "Seleccionar al menos un activo o nodo"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "Información especial" msgstr "Información especial"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1351,7 +1358,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "Usuario" msgstr "Usuario"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1817,7 +1824,7 @@ msgstr "Cuenta exitosa"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "No" msgstr "No"
@@ -1943,18 +1950,6 @@ msgstr "Persona aprobadora"
msgid "Users" msgid "Users"
msgstr "Usuario" msgstr "Usuario"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Activos"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2735,19 +2730,19 @@ msgstr "Recopilar información sobre hardware de activos"
msgid "Custom info" msgid "Custom info"
msgstr "Atributos personalizados" msgstr "Atributos personalizados"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "Se puede actualizar la información del hardware de activos" msgstr "Se puede actualizar la información del hardware de activos"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "Se puede probar la conectividad de los activos" msgstr "Se puede probar la conectividad de los activos"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "Se pueden emparejar activos" msgstr "Se pueden emparejar activos"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "Se pueden modificar nodos de activos" msgstr "Se pueden modificar nodos de activos"
@@ -3656,7 +3651,7 @@ msgstr "Tarea"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "Es" msgstr "Es"
@@ -3954,37 +3949,37 @@ msgstr ""
"No se permite el uso de tokens de conexión reutilizables, no se han " "No se permite el uso de tokens de conexión reutilizables, no se han "
"habilitado configuraciones globales." "habilitado configuraciones globales."
#: authentication/api/connection_token.py:426 #: authentication/api/connection_token.py:425
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "Las cuentas anónimas no son compatibles con los activos actuales." msgstr "Las cuentas anónimas no son compatibles con los activos actuales."
#: authentication/api/connection_token.py:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "La autorización ha expirado." msgstr "La autorización ha expirado."
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "La acción de ACL es rechazar: {}({})" msgstr "La acción de ACL es rechazar: {}({})"
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "La acción de ACL es revisar." msgstr "La acción de ACL es revisar."
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "La acción de ACL es verificación facial." msgstr "La acción de ACL es verificación facial."
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "" msgstr ""
"La regla de inicio de sesión del activo no es compatible con los activos " "La regla de inicio de sesión del activo no es compatible con los activos "
"actuales." "actuales."
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "La acción de ACL es verificación facial en línea." msgstr "La acción de ACL es verificación facial en línea."
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "No hay características faciales disponibles." msgstr "No hay características faciales disponibles."
@@ -4066,7 +4061,7 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "El token de actualización o la caché son inválidos." msgstr "El token de actualización o la caché son inválidos."
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "Error de OpenID" msgstr "Error de OpenID"
@@ -4297,18 +4292,18 @@ msgstr "Tu contraseña es inválida"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "Por favor, inténtalo de nuevo en %s segundos" msgstr "Por favor, inténtalo de nuevo en %s segundos"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "" msgstr ""
"Tu contraseña es demasiado simple, por razones de seguridad, modifícala" "Tu contraseña es demasiado simple, por razones de seguridad, modifícala"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "" msgstr ""
"Antes de completar el inicio de sesión, por favor, modifique su contraseña." "Antes de completar el inicio de sesión, por favor, modifique su contraseña."
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "Su contraseña ha expirado; modifíquela antes de iniciar sesión." msgstr "Su contraseña ha expirado; modifíquela antes de iniciar sesión."
@@ -4435,20 +4430,11 @@ msgstr ""
"Error de autenticación (fallo en la verificación antes de iniciar sesión): " "Error de autenticación (fallo en la verificación antes de iniciar sesión): "
"{}" "{}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr ""
"El administrador ha habilitado 'solo permitir que los usuarios existentes "
"inicien sesión', el usuario actual no está en la lista, por favor contacta "
"al administrador."
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "Usuario no válido" msgstr "Usuario no válido"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
@@ -4457,11 +4443,11 @@ msgstr ""
"usuario'; la fuente actual del usuario es {}, por favor contacte al " "usuario'; la fuente actual del usuario es {}, por favor contacte al "
"administrador." "administrador."
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "El método MFA ({}) no está habilitado" msgstr "El método MFA ({}) no está habilitado"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "Por favor, modifica la contraseña" msgstr "Por favor, modifica la contraseña"
@@ -4980,24 +4966,24 @@ msgstr "¿Reintentar?"
msgid "LAN" msgid "LAN"
msgstr "Red local" msgstr "Red local"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "" msgstr ""
"Si tienes alguna duda o necesidad, por favor contacta al administrador del " "Si tienes alguna duda o necesidad, por favor contacta al administrador del "
"sistema" "sistema"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "Error al consultar el usuario %s" msgstr "Error al consultar el usuario %s"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s ya está vinculado a otro usuario" msgstr "%s ya está vinculado a otro usuario"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "Vinculación de %s exitosa" msgstr "Vinculación de %s exitosa"
@@ -5140,7 +5126,7 @@ msgid "Please login with a password and then bind the WeCom"
msgstr "" msgstr ""
"Por favor inicie sesión con su contraseña y luego vincule WeChat empresarial" "Por favor inicie sesión con su contraseña y luego vincule WeChat empresarial"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "" msgstr ""
"Formato de archivo subido incorrecto o archivo de otro tipo de recurso" "Formato de archivo subido incorrecto o archivo de otro tipo de recurso"
@@ -5704,7 +5690,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "Gestión de etiquetas" msgstr "Gestión de etiquetas"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "Color" msgstr "Color"
@@ -7830,40 +7816,40 @@ msgid "Period clean"
msgstr "Limpieza programada" msgstr "Limpieza programada"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "Días de retención de los registros de inicio de sesión" msgstr "Registro de inicio de sesión (días)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "Días de retención de los registros de tareas" msgstr "Registro de tareas (días)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "Días de retención de los registros de acción" msgstr "Registro de acciones (días)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "Días de retención de los registros de cambio de contraseña de usuario" msgstr "Registro de cambios de contraseña"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "Días de retención de los registros de subida y descarga" msgstr "Subidas y descargas (días)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "Días de retención de los registros de sincronización en la nube" msgstr "Sincronización de registros en la nube (días)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "Días de retención del historial de ejecución de trabajos" msgstr "Historial de ejecución del centro de tareas (días)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "Días de retención de los registros de actividades" msgstr "Registro de actividades (días)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "Días de retención de los registros de sesiones" msgstr "Registro de sesiones (días)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7875,10 +7861,8 @@ msgstr ""
"etc.)" "etc.)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "" msgstr "Días de conservación de los registros de cambio de contraseña (días)"
"Días de retención de los registros de notificaciones de cambio de contraseña"
" de cuenta"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -8434,32 +8418,29 @@ msgid "Watermark"
msgstr "Activar marca de agua" msgstr "Activar marca de agua"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "Contenido personalizado de marca de agua de sesión" msgstr "Contenido de personalización de la marca de agua de la sesión"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "Contenido personalizado de marca de agua de página de gestión" msgstr ""
"Contenido de personalización de la marca de agua en la página de gestión"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "Color de fuente"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "Tamaño de fuente (px)" msgstr "Tamaño y tipo de fuente"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "Altura (px)" msgstr "Altura de la marca de agua individual"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "Ancho (px)" msgstr "Ancho de la marca de agua individual"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "Rotación (grados)" msgstr "Ángulo de rotación de la marca de agua"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8793,15 +8774,15 @@ msgstr "Error de autenticación: (desconocido): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "Autenticación exitosa: {}" msgstr "Autenticación exitosa: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "No se obtuvo ningún usuario LDAP" msgstr "No se obtuvo ningún usuario LDAP"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "Total: {}, Éxitos: {}, Fracasos: {}" msgstr "Total: {}, Éxitos: {}, Fracasos: {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr ", deshabilitar {}" msgstr ", deshabilitar {}"
@@ -12250,3 +12231,28 @@ msgstr "Importación de licencia exitosa"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "Licencia no válida" msgstr "Licencia no válida"
#, fuzzy
#~ msgid "Themes"
#~ msgstr "Tema"
#, fuzzy
#~ msgid "domain_name"
#~ msgstr "Nombre de dominio"
#~ msgid "Task execution id"
#~ msgstr "ID de ejecución de tareas"
#~ msgid "Respectful"
#~ msgstr "Estimado"
#~ msgid ""
#~ "Hello! The following is the failure of changing the password of your assets "
#~ "or pushing the account. Please check and handle it in time."
#~ msgstr ""
#~ "¡Hola! A continuación se presentan las situaciones en las que ha fallado el "
#~ "cambio o envío de la cuenta de activos. Por favor, revise y procese a la "
#~ "brevedad."
#~ msgid "EXCHANGE"
#~ msgstr "Intercambio"

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: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "アカウントはすでに存在しています" msgstr "アカウントはすでに存在しています"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "アカウントが見つかりません" msgstr "アカウントが見つかりません"
@@ -459,7 +459,7 @@ msgstr "Vault 操作に失敗しました。再試行するか、Vault のアカ
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -474,7 +474,7 @@ msgstr "資産"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -536,14 +536,13 @@ msgstr "変更状態"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -636,7 +635,7 @@ msgstr "アイコン"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -809,7 +808,7 @@ msgid "Status"
msgstr "ステータス" msgstr "ステータス"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1033,7 +1032,7 @@ msgid "Verify asset account"
msgstr "アカウントの確認" msgstr "アカウントの確認"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1256,46 +1255,54 @@ msgstr "アカウントは既に存在します。フィールド:{fields}は
msgid "Has secret" msgid "Has secret"
msgstr "エスクローされたパスワード" msgstr "エスクローされたパスワード"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "状態" msgstr "状態"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "編集済み" msgstr "編集済み"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "資産"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "アセットはアカウント タイプをサポートしていません: %s" msgstr "アセットはアカウント タイプをサポートしていません: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "アカウントはすでに存在しています" msgstr "アカウントはすでに存在しています"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "少なくとも1つのアセットまたはードを選択します。"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "特別情報" msgstr "特別情報"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1320,7 +1327,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "ユーザー" msgstr "ユーザー"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1734,7 +1741,7 @@ msgstr "成功したアカウント"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "否" msgstr "否"
@@ -1856,18 +1863,6 @@ msgstr "レビュー担当者"
msgid "Users" msgid "Users"
msgstr "ユーザー" msgstr "ユーザー"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "資産"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2619,19 +2614,19 @@ msgstr "資産ハードウェア情報の収集"
msgid "Custom info" msgid "Custom info"
msgstr "カスタム属性" msgstr "カスタム属性"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "資産ハードウェア情報を更新できます" msgstr "資産ハードウェア情報を更新できます"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "資産接続をテストできます" msgstr "資産接続をテストできます"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "アセットを一致させることができます" msgstr "アセットを一致させることができます"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "資産ノードを変更できます" msgstr "資産ノードを変更できます"
@@ -3505,7 +3500,7 @@ msgstr "タスク"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "是" msgstr "是"
@@ -3784,35 +3779,35 @@ msgstr "この操作には、MFAを検証する必要があります"
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:426 #: authentication/api/connection_token.py:425
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:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "承認の有効期限が切れています" msgstr "承認の有効期限が切れています"
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL アクションは拒否です: {}({})" msgstr "ACL アクションは拒否です: {}({})"
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL アクションはレビューです" msgstr "ACL アクションはレビューです"
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "ACL Action は顔認証です" msgstr "ACL Action は顔認証です"
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "資産ログインルールは現在の資産をサポートしていません" msgstr "資産ログインルールは現在の資産をサポートしていません"
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "ACL Action は顔オンラインです" msgstr "ACL Action は顔オンラインです"
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "利用可能な顔の特徴はありません" msgstr "利用可能な顔の特徴はありません"
@@ -3887,7 +3882,7 @@ msgstr "無効なトークンヘッダー。署名文字列に無効な文字を
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "無効なトークンまたはキャッシュの更新。" msgstr "無効なトークンまたはキャッシュの更新。"
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "OpenID エラー" msgstr "OpenID エラー"
@@ -4106,16 +4101,16 @@ msgstr "パスワードが無効です"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "%s 秒後に再試行してください" msgstr "%s 秒後に再試行してください"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "パスワードがシンプルすぎるので、セキュリティのために変更してください" msgstr "パスワードがシンプルすぎるので、セキュリティのために変更してください"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "ログインする前にパスワードを変更する必要があります" msgstr "ログインする前にパスワードを変更する必要があります"
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "パスワードの有効期限が切れました。ログインする前にリセットしてください。" msgstr "パスワードの有効期限が切れました。ログインする前にリセットしてください。"
@@ -4232,27 +4227,21 @@ msgstr "無効にする電話番号をクリアする"
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}" msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr "管理者は「既存のユーザーのみログインを許可」をオンにしており、現在のユーザーはユーザーリストにありません。管理者に連絡してください。"
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "無効なユーザーです" msgstr "無効なユーザーです"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
msgstr "管理者は「ユーザーソースからのみログインを許可」をオンにしており、現在のユーザーソースは {} です。管理者に連絡してください。" msgstr "管理者は「ユーザーソースからのみログインを許可」をオンにしており、現在のユーザーソースは {} です。管理者に連絡してください。"
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "MFAタイプ ({}) が有効になっていない" msgstr "MFAタイプ ({}) が有効になっていない"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "パスワードを変更してください" msgstr "パスワードを変更してください"
@@ -4736,22 +4725,22 @@ msgstr "再試行しますか?"
msgid "LAN" msgid "LAN"
msgstr "ローカルエリアネットワーク" msgstr "ローカルエリアネットワーク"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "質問があったら、管理者に連絡して下さい" msgstr "質問があったら、管理者に連絡して下さい"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "%sユーザーのクエリに失敗しました" msgstr "%sユーザーのクエリに失敗しました"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%sが別のユーザーにバインドされています。" msgstr "%sが別のユーザーにバインドされています。"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "バインド%s成功" msgstr "バインド%s成功"
@@ -4890,7 +4879,7 @@ msgstr "企業の微信からユーザーを取得できませんでした"
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "パスワードでログインしてからWeComをバインドしてください" msgstr "パスワードでログインしてからWeComをバインドしてください"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "リクエストファイルの形式が間違っている可能性があります" msgstr "リクエストファイルの形式が間違っている可能性があります"
@@ -5407,7 +5396,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "ラベル" msgstr "ラベル"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "色" msgstr "色"
@@ -7367,40 +7356,40 @@ msgid "Period clean"
msgstr "定時清掃" msgstr "定時清掃"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "ログインログ保持日数" msgstr "ログインログは日数を保持します(天)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "タスクログ保持日数" msgstr "タスクログは日数を保持します(天)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "アクションログ保持日数" msgstr "ログ管理日を操作する(天)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "ユーザー変更パスワードログ保持日数" msgstr "パスワード変更ログ(天)"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "アップロードダウンロード記録保持日数" msgstr "タスクログは日数を保持します(天)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "クラウド同期記録保持日数" msgstr "タスクログは日数を保持します(天)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "作業実行履歴保持日数" msgstr "ジョブセンターの実行履歴 (天) "
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "活動記録保持日数" msgstr "活動ログは日数を保持します(天)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "セッションログ保持日数" msgstr "ログインログは日数を保持します(天)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7410,8 +7399,8 @@ msgstr ""
"この期間を超えるセッション、録音、およびコマンド レコードは削除されます (データベースのバックアップに影響し、OSS などには影響しません)" "この期間を超えるセッション、録音、およびコマンド レコードは削除されます (データベースのバックアップに影響し、OSS などには影響しません)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "アカウント変更パスワードプッシュ記録保持日数" msgstr "パスワード変更プッシュ記録保持する日数 (日)"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -7883,32 +7872,28 @@ msgid "Watermark"
msgstr "透かしの有効化" msgstr "透かしの有効化"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "セッションウォーターマークカスタム内容" msgstr "セッションウォーターマークカスタム内容"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "管理ページウォーターマークカスタム内容" msgstr "管理ページウォーターマークカスタム内容"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "フォントカラー"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "フォントサイズ (px)" msgstr "フォントサイズ"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "高さ (px)" msgstr "単一ウォーターマークの高さ"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "幅 (px)" msgstr "単一ウォーターマークの幅"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "回転 (度)" msgstr "ウォーターマークの回転角度"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8210,15 +8195,15 @@ msgstr "認証に失敗しました (不明): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "認証成功: {}" msgstr "認証成功: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "LDAPユーザーが取得されませんでした" msgstr "LDAPユーザーが取得されませんでした"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "合計 {},成功 {},失敗 {}" msgstr "合計 {},成功 {},失敗 {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr "無効 {}" msgstr "無効 {}"
@@ -11486,18 +11471,3 @@ msgstr "ライセンスのインポートに成功"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "ライセンスが無効です" msgstr "ライセンスが無効です"
#~ msgid "Watermark console content"
#~ msgstr "管理ページのウォーターマークカスタム内容"
#~ msgid "Watermark font size"
#~ msgstr "フォントサイズ"
#~ msgid "Watermark height"
#~ msgstr "単一ウォーターマークの高さ"
#~ msgid "Watermark width"
#~ msgstr "単一ウォーターマークの幅"
#~ msgid "Watermark rotate"
#~ msgstr "ウォーターマークの回転角度"

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: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "계정이 이미 존재합니다" msgstr "계정이 이미 존재합니다"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "계정을 찾을 수 없습니다" msgstr "계정을 찾을 수 없습니다"
@@ -459,7 +459,7 @@ msgstr "Vault 작업이 실패했습니다. 다시 시도하거나 Vault의 계
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -474,7 +474,7 @@ msgstr "자산"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -521,14 +521,13 @@ msgstr "비밀번호 변경 상태"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -621,7 +620,7 @@ msgstr "아이콘"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -794,7 +793,7 @@ msgid "Status"
msgstr "상태" msgstr "상태"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1018,7 +1017,7 @@ msgid "Verify asset account"
msgstr "계정 검증" msgstr "계정 검증"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1242,46 +1241,54 @@ msgstr "계정이 이미 존재합니다. 필드: {fields}는 고유해야 합
msgid "Has secret" msgid "Has secret"
msgstr "이미 관리된 비밀번호" msgstr "이미 관리된 비밀번호"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "상태" msgstr "상태"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "수정됨" msgstr "수정됨"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "자산"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "자산이 지원하지 않는 계정 유형: %s" msgstr "자산이 지원하지 않는 계정 유형: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "계정이 이미 존재합니다" msgstr "계정이 이미 존재합니다"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "자산 또는 노드 중 최소 하나 선택"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "특별 정보" msgstr "특별 정보"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1306,7 +1313,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "사용자" msgstr "사용자"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1724,7 +1731,7 @@ msgstr "성공한 계정"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "아니요" msgstr "아니요"
@@ -1846,18 +1853,6 @@ msgstr "승인자"
msgid "Users" msgid "Users"
msgstr "사용자" msgstr "사용자"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "자산"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2611,19 +2606,19 @@ msgstr "자산 하드웨어 정보 수집"
msgid "Custom info" msgid "Custom info"
msgstr "사용자 정의 속성" msgstr "사용자 정의 속성"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "자산 하드웨어 정보를 업데이트할 수 있습니다" msgstr "자산 하드웨어 정보를 업데이트할 수 있습니다"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "자산 연결성을 테스트할 수 있습니다." msgstr "자산 연결성을 테스트할 수 있습니다."
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "자산을 매칭할 수 있습니다." msgstr "자산을 매칭할 수 있습니다."
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "자산 노드를 수정할 수 있습니다." msgstr "자산 노드를 수정할 수 있습니다."
@@ -3496,7 +3491,7 @@ msgstr "업무"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "입니다" msgstr "입니다"
@@ -3774,35 +3769,35 @@ msgstr "이 작업은 귀하의 MFA를 확인해야 하므로, 먼저 활성화
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:426 #: authentication/api/connection_token.py:425
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:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "권한이 만료되었습니다." msgstr "권한이 만료되었습니다."
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL Action은 거부: {}({})입니다." msgstr "ACL Action은 거부: {}({})입니다."
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL Action은 재검토입니다." msgstr "ACL Action은 재검토입니다."
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "ACL Action은 얼굴 인식입니다." msgstr "ACL Action은 얼굴 인식입니다."
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "자산 로그인 규칙은 현재 자산을 지원하지 않습니다." msgstr "자산 로그인 규칙은 현재 자산을 지원하지 않습니다."
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "ACL Action은 온라인 얼굴 인식입니다." msgstr "ACL Action은 온라인 얼굴 인식입니다."
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "사용 가능한 얼굴 특징이 없습니다." msgstr "사용 가능한 얼굴 특징이 없습니다."
@@ -3884,7 +3879,7 @@ msgstr "유효하지 않은 토큰 헤더입니다. 기호 문자열에는 유
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "새로 고침된 토큰 또는 캐시가 유효하지 않습니다." msgstr "새로 고침된 토큰 또는 캐시가 유효하지 않습니다."
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "OpenID 오류" msgstr "OpenID 오류"
@@ -4105,16 +4100,16 @@ msgstr "귀하의 비밀번호가 유효하지 않습니다"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "%s 초 후에 다시 시도해주세요." msgstr "%s 초 후에 다시 시도해주세요."
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "비밀번호가 너무 간단합니다. 보안을 위해 수정해주세요." msgstr "비밀번호가 너무 간단합니다. 보안을 위해 수정해주세요."
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "로그인 완료 전에 비밀번호를 먼저 수정해주세요." msgstr "로그인 완료 전에 비밀번호를 먼저 수정해주세요."
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "당신의 비밀번호가 만료되었습니다. 수정 후 로그인해주세요." msgstr "당신의 비밀번호가 만료되었습니다. 수정 후 로그인해주세요."
@@ -4231,27 +4226,21 @@ msgstr "전화번호 삭제로 비활성화"
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "인증 실패 (로그인 전 검사 실패): {}" msgstr "인증 실패 (로그인 전 검사 실패): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr "관리자가 '기존 사용자만 로그인 허용'을 활성화했으며, 현재 사용자가 사용자 목록에 없습니다. 관리자에게 연락해 주십시오."
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "무효한 사용자" msgstr "무효한 사용자"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
msgstr "관리자가 '사용자 출처에서만 로그인 허용'을 활성화하였습니다. 현재 사용자 출처는 {}이며 관리자를 연락하십시오." msgstr "관리자가 '사용자 출처에서만 로그인 허용'을 활성화하였습니다. 현재 사용자 출처는 {}이며 관리자를 연락하십시오."
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "해당 MFA ({}) 방식이 활성화되지 않았습니다." msgstr "해당 MFA ({}) 방식이 활성화되지 않았습니다."
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "비밀번호를 수정하십시오." msgstr "비밀번호를 수정하십시오."
@@ -4737,22 +4726,22 @@ msgstr "재시도 하시겠습니까?"
msgid "LAN" msgid "LAN"
msgstr "지역 네트워크" msgstr "지역 네트워크"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "질문이나 요구 사항이 있는 경우 시스템 관리자에게 문의해 주세요" msgstr "질문이나 요구 사항이 있는 경우 시스템 관리자에게 문의해 주세요"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "%s 사용자 조회 실패" msgstr "%s 사용자 조회 실패"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s 다른 사용자에 이미 바인딩되었습니다." msgstr "%s 다른 사용자에 이미 바인딩되었습니다."
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "%s 바인딩 성공" msgstr "%s 바인딩 성공"
@@ -4891,7 +4880,7 @@ msgstr "기업 WeChat에서 사용자 정보를 가져오지 못했습니다."
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "密码로 로그인한 후 기업 WeChat을 연결해 주시기 바랍니다." msgstr "密码로 로그인한 후 기업 WeChat을 연결해 주시기 바랍니다."
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "업로드한 파일 형식이 잘못되었거나 다른 유형의 리소스 파일입니다." msgstr "업로드한 파일 형식이 잘못되었거나 다른 유형의 리소스 파일입니다."
@@ -5409,7 +5398,7 @@ msgstr "태그 관리"
msgid "App Labels" msgid "App Labels"
msgstr "색상" msgstr "색상"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "색상" msgstr "색상"
@@ -7409,40 +7398,40 @@ msgid "Period clean"
msgstr "정기 청소" msgstr "정기 청소"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "로그인 로그 보존 일수" msgstr "로그인 로그 (일)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "작업 로그 보존 일수" msgstr "작업 로그 (일)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "액션 로그 보존 일수" msgstr "액션 로그 (일)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "사용자 비밀번호 변경 로그 보존 일수" msgstr "비밀번호 변경 로그"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "업로드 다운로드 기록 보존 일수" msgstr "업로드 다운로드 (일)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "클라우드 동기화 기록 보존 일수" msgstr "클라우드 동기화 기록 (일)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "작업 실행 이력 보존 일수" msgstr "작업 센터 실행 이력 (일)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "활동 기록 보존 일수" msgstr "활동 기록 (일)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "세션 로그 보존 일수" msgstr "세션 로그 (일)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7452,8 +7441,8 @@ msgstr ""
"세션, 녹화 및 명령 기록은 해당 시간을 초과하면 삭제됩니다 (데이터베이스 저장소에 영향, OSS 등은 영향을 받지 않습니다)" "세션, 녹화 및 명령 기록은 해당 시간을 초과하면 삭제됩니다 (데이터베이스 저장소에 영향, OSS 등은 영향을 받지 않습니다)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "계정 비밀번호 변경 푸시 기록 보존 일수" msgstr "비밀번호 변경 푸시 기록 보존 일수 (일)"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -7946,32 +7935,28 @@ msgid "Watermark"
msgstr "워터마크 활성화" msgstr "워터마크 활성화"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "세션 워터마크 사용자 정의 내용" msgstr "세션 워터마크 사용자 정의 내용"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "관리 페이지 워터마크 사용자 정의 내용" msgstr "관리 페이지 워터마크 사용자 정의 내용"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "글꼴 색상"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "글꼴 크기 (px)" msgstr "글꼴 크기"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "높이 (px)" msgstr "단일 워터마크 높이"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "너비 (px)" msgstr "단일 워터마크 너비"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "회전 (도)" msgstr "워터마크 회전 각도"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8274,15 +8259,15 @@ msgstr "인증 실패: (알 수 없음): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "인증 성공: {}" msgstr "인증 성공: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "LDAP 사용자를 획득하지 못함" msgstr "LDAP 사용자를 획득하지 못함"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "총 {}명, 성공 {}명, 실패 {}명" msgstr "총 {}명, 성공 {}명, 실패 {}명"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr "비활성화 {}" msgstr "비활성화 {}"
@@ -11578,3 +11563,25 @@ msgstr "라이센스 가져오기 성공"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "라이센스가 유효하지 않습니다." msgstr "라이센스가 유효하지 않습니다."
#, fuzzy
#~ msgid "Themes"
#~ msgstr "테마"
#, fuzzy
#~ msgid "domain_name"
#~ msgstr "도메인 이름."
#~ msgid "Task execution id"
#~ msgstr "작업 실행 ID"
#~ msgid "Respectful"
#~ msgstr "존경하는"
#~ msgid ""
#~ "Hello! The following is the failure of changing the password of your assets "
#~ "or pushing the account. Please check and handle it in time."
#~ msgstr "안녕하세요! 다음은 자산 비밀번호 변경 또는 계정 푸시 실패의 상황입니다. 제때 확인하고 처리해 주세요."
#~ msgid "EXCHANGE"
#~ msgstr "EXCHANGE"

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: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "Conta já existente" msgstr "Conta já existente"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "Conta não encontrada" msgstr "Conta não encontrada"
@@ -462,7 +462,7 @@ msgstr ""
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -477,7 +477,7 @@ msgstr "Ativos"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -524,14 +524,13 @@ msgstr "Status da Alteração de Senha"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -624,7 +623,7 @@ msgstr "Ícone"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -797,7 +796,7 @@ msgid "Status"
msgstr "Status" msgstr "Status"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1041,7 +1040,7 @@ msgid "Verify asset account"
msgstr "Conta verificada" msgstr "Conta verificada"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1275,46 +1274,54 @@ msgstr "Conta já existe. O campo: {fields} deve ser único."
msgid "Has secret" msgid "Has secret"
msgstr "Senha já gerenciada" msgstr "Senha já gerenciada"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "Estado" msgstr "Estado"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "Modificado" msgstr "Modificado"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Bens"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "Bens não suportam o tipo de conta: %s" msgstr "Bens não suportam o tipo de conta: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "Conta já existente" msgstr "Conta já existente"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "Selecione pelo menos um item de ativo ou nó"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "Informações especiais" msgstr "Informações especiais"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1339,7 +1346,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "Usuário" msgstr "Usuário"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1794,7 +1801,7 @@ msgstr "Contas bem-sucedidas"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "Não" msgstr "Não"
@@ -1919,18 +1926,6 @@ msgstr "Aprovador"
msgid "Users" msgid "Users"
msgstr "Usuário" msgstr "Usuário"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Bens"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2704,19 +2699,19 @@ msgstr "Coletar informações do hardware do ativo"
msgid "Custom info" msgid "Custom info"
msgstr "Propriedades personalizadas" msgstr "Propriedades personalizadas"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "Pode atualizar as informações do hardware do ativo" msgstr "Pode atualizar as informações do hardware do ativo"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "Pode testar a conectividade do ativo" msgstr "Pode testar a conectividade do ativo"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "Pode correspondências de ativos" msgstr "Pode correspondências de ativos"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "Pode modificar o nó do ativo" msgstr "Pode modificar o nó do ativo"
@@ -3619,7 +3614,7 @@ msgstr "Tarefas"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "Sim" msgstr "Sim"
@@ -3908,35 +3903,35 @@ msgstr ""
"Não é permitido o uso de tokens de conexão reutilizáveis, as configurações " "Não é permitido o uso de tokens de conexão reutilizáveis, as configurações "
"globais não estão ativadas" "globais não estão ativadas"
#: authentication/api/connection_token.py:426 #: authentication/api/connection_token.py:425
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "Contas anônimas não suportam o ativo atual" msgstr "Contas anônimas não suportam o ativo atual"
#: authentication/api/connection_token.py:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "A autorização expirou" msgstr "A autorização expirou"
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "Ação do ACL é rejeitar: {} ({})." msgstr "Ação do ACL é rejeitar: {} ({})."
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "Ação ACL é para revisão" msgstr "Ação ACL é para revisão"
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "Ação ACL é verificação facial" msgstr "Ação ACL é verificação facial"
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "As regras de login de ativos não suportam o ativo atual" msgstr "As regras de login de ativos não suportam o ativo atual"
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "Ação ACL é facial online" msgstr "Ação ACL é facial online"
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "Não há características faciais disponíveis" msgstr "Não há características faciais disponíveis"
@@ -4018,7 +4013,7 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "O token de atualização ou o cache é inválido." msgstr "O token de atualização ou o cache é inválido."
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "Erro OpenID" msgstr "Erro OpenID"
@@ -4245,16 +4240,16 @@ msgstr "Sua senha é inválida"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "Por favor, tente novamente após %s segundos" msgstr "Por favor, tente novamente após %s segundos"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "Sua senha é muito simples, por segurança, favor alterar" msgstr "Sua senha é muito simples, por segurança, favor alterar"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "Antes de finalizar o login, favor alterar a senha" msgstr "Antes de finalizar o login, favor alterar a senha"
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "Sua senha expirou, modifique antes de fazer login" msgstr "Sua senha expirou, modifique antes de fazer login"
@@ -4375,20 +4370,11 @@ msgstr "Desativar limpeza de número de telefone"
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "Falha de autenticação (verificação pré-login falhou): {}" msgstr "Falha de autenticação (verificação pré-login falhou): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr ""
"O administrador ativou a opção 'Permitir login apenas para usuários "
"existentes', o usuário atual não está na lista de usuários, por favor, "
"contate o administrador."
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "Usuário inválido" msgstr "Usuário inválido"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
@@ -4396,11 +4382,11 @@ msgstr ""
"O administrador ativou 'Apenas login a partir da fonte do usuário', a origem" "O administrador ativou 'Apenas login a partir da fonte do usuário', a origem"
" do usuário atual é {}, por favor, contate o administrador." " do usuário atual é {}, por favor, contate o administrador."
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "Este método MFA ({}) não está ativado" msgstr "Este método MFA ({}) não está ativado"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "Por favor, altere sua senha." msgstr "Por favor, altere sua senha."
@@ -4917,24 +4903,24 @@ msgstr "Deseja tentar novamente?"
msgid "LAN" msgid "LAN"
msgstr "Rede Local" msgstr "Rede Local"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "" msgstr ""
"Em caso de dúvidas ou necessidades, por favor, entre em contato com o " "Em caso de dúvidas ou necessidades, por favor, entre em contato com o "
"administrador do sistema" "administrador do sistema"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "%s Falha ao consultar o usuário" msgstr "%s Falha ao consultar o usuário"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s já está vinculado a outro usuário" msgstr "%s já está vinculado a outro usuário"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "Vinculação com %s bem sucedida" msgstr "Vinculação com %s bem sucedida"
@@ -5077,7 +5063,7 @@ msgstr "Falha ao obter o usuário do WeChat Corporativo"
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "Faça login com a senha, e então vincule ao WeChat Corporativo" msgstr "Faça login com a senha, e então vincule ao WeChat Corporativo"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "Formato de arquivo enviado errado ou outro tipo de recurso do arquivo" msgstr "Formato de arquivo enviado errado ou outro tipo de recurso do arquivo"
@@ -5618,7 +5604,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "Gerenciar tags" msgstr "Gerenciar tags"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "Cor" msgstr "Cor"
@@ -7671,40 +7657,40 @@ msgid "Period clean"
msgstr "Limpeza Programada" msgstr "Limpeza Programada"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "Número de dias para retenção de logs de login" msgstr "Logins (dias)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "Número de dias para retenção de logs de tarefas" msgstr "Log de tarefas (dias)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "Número de dias para retenção de logs de Ação" msgstr "Registro de Operações (dias)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "Número de dias para retenção de logs de alteração de senha do usuário" msgstr "Registro de Alteração de Senha"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "Número de dias para retenção de registros de upload e download" msgstr "Upload/Download (dias)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "Número de dias para retenção de registros de sincronização na nuvem" msgstr "Registros de Sincronização em Nuvem (dias)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "Número de dias para retenção do histórico de execução de tarefas" msgstr "Histórico de Execuções do Centro de Trabalhos (dias)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "Número de dias para retenção de registros de atividades" msgstr "Registros de Atividades (dias)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "Número de dias para retenção de logs de sessão" msgstr "Registros de Sessão (dias)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7715,10 +7701,8 @@ msgstr ""
" (afeta o armazenamento do banco de dados, OSS, etc não são afetados)" " (afeta o armazenamento do banco de dados, OSS, etc não são afetados)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "" msgstr "Registro de Notificações de Alteração de Senha (dias)"
"Número de dias para retenção de registros de notificações sobre alteração de"
" senha da conta"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -8244,32 +8228,28 @@ msgid "Watermark"
msgstr "Ativar marca d'água" msgstr "Ativar marca d'água"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "Conteúdo personalizado da marca d'água da sessão" msgstr "Conteúdo personalizado da marca d'água da sessão"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "Conteúdo personalizado da marca d'água da página" msgstr "Página de gerenciamento, conteúdo personalizado de marca d'água"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "Cor da fonte"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "Tamanho da fonte (px)" msgstr "Tamanho da fonte"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "Altura (px)" msgstr "Altura da marca d'água única"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "Largura (px)" msgstr "Largura da marca d'água única"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "Rotação (graus)" msgstr "Ângulo de rotação da marca d'água"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8601,15 +8581,15 @@ msgstr "Falha na autenticação: (desconhecido): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "Autenticação bem sucedida: {}" msgstr "Autenticação bem sucedida: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "Não foi possível obter usuário LDAP" msgstr "Não foi possível obter usuário LDAP"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "Total de {}, sucesso {}, falha {}" msgstr "Total de {}, sucesso {}, falha {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr ", desativar {}" msgstr ", desativar {}"
@@ -12002,3 +11982,27 @@ msgstr "Importação de licença bem-sucedida"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "Licença inválida" msgstr "Licença inválida"
#, fuzzy
#~ msgid "Themes"
#~ msgstr "Tema"
#, fuzzy
#~ msgid "domain_name"
#~ msgstr "Nome do domínio"
#~ msgid "Task execution id"
#~ msgstr "ID de execução da tarefa"
#~ msgid "Respectful"
#~ msgstr "Prezado(a)"
#~ msgid ""
#~ "Hello! The following is the failure of changing the password of your assets "
#~ "or pushing the account. Please check and handle it in time."
#~ msgstr ""
#~ "Olá! Aqui estão os casos de falha ao alterar ou enviar a senha do ativo. Por"
#~ " favor, verifique e corrija o mais rápido possível."
#~ msgid "EXCHANGE"
#~ msgstr "EXCHANGE"

View File

@@ -1,15 +1,10 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: jumpserver\n" "Project-Id-Version: jumpserver\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+0800\n"
"PO-Revision-Date: 2025-11-01 11:01\n" "PO-Revision-Date: 2025-09-26 11:16\n"
"Last-Translator: ibuler <ibuler@qq.com>\n" "Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
"Language: ru_RU\n" "Language: ru_RU\n"
@@ -24,14 +19,14 @@ msgstr ""
"X-Crowdin-Project-ID: 832018\n" "X-Crowdin-Project-ID: 832018\n"
"X-Generator: Poedit 2.4.3\n" "X-Generator: Poedit 2.4.3\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "Учетная запись уже существует." msgstr "Учетная запись уже существует"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "Учетная запись не найдена" msgstr "Учетная запись не найдена"
@@ -469,7 +464,7 @@ msgstr ""
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -484,7 +479,7 @@ msgstr "Актив"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -531,14 +526,13 @@ msgstr "Статус изменения секрета"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -631,7 +625,7 @@ msgstr "Иконка"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -804,7 +798,7 @@ msgid "Status"
msgstr "Статус" msgstr "Статус"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1033,7 +1027,7 @@ msgid "Verify asset account"
msgstr "Проверка УЗ актива" msgstr "Проверка УЗ актива"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1272,46 +1266,54 @@ msgstr ""
msgid "Has secret" msgid "Has secret"
msgstr "Секрет добавлен" msgstr "Секрет добавлен"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "Состояние" msgstr "Состояние"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "Изменено" msgstr "Изменено"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Активы"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "Актив не поддерживает этот тип секрета: %s" msgstr "Актив не поддерживает этот тип секрета: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "Учетная запись уже существует" msgstr "Учетная запись уже существует"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "Выберите хотя бы один актив или папку"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "Специальная информация" msgstr "Специальная информация"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1336,7 +1338,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "Пользователь" msgstr "Пользователь"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1782,7 +1784,7 @@ msgstr "Успешные УЗ"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "Нет" msgstr "Нет"
@@ -1905,18 +1907,6 @@ msgstr "Утверждающий"
msgid "Users" msgid "Users"
msgstr "Пользователь" msgstr "Пользователь"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Активы"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -1976,7 +1966,7 @@ msgstr "Правила метода подключения"
#: acls/models/data_masking.py:13 #: acls/models/data_masking.py:13
msgid "Fixed Character Replacement" msgid "Fixed Character Replacement"
msgstr "Замена на фиксированные символы" msgstr "Фиксированная замена символов"
#: acls/models/data_masking.py:14 #: acls/models/data_masking.py:14
msgid "Hide Middle Characters" msgid "Hide Middle Characters"
@@ -1984,19 +1974,19 @@ msgstr "Скрыть средние символы"
#: acls/models/data_masking.py:15 #: acls/models/data_masking.py:15
msgid "Keep Prefix Only" msgid "Keep Prefix Only"
msgstr "Сохранить только префикс" msgstr "Сохранить префикс"
#: acls/models/data_masking.py:16 #: acls/models/data_masking.py:16
msgid "Keep Suffix Only" msgid "Keep Suffix Only"
msgstr "Сохранить только суффикс" msgstr "Сохранить суффикс"
#: acls/models/data_masking.py:21 #: acls/models/data_masking.py:21
msgid "Fields pattern" msgid "Fields pattern"
msgstr "Маскировать столбцы" msgstr "Скрыть имя столбца"
#: acls/models/data_masking.py:27 acls/serializers/data_masking.py:14 #: acls/models/data_masking.py:27 acls/serializers/data_masking.py:14
msgid "Masking Method" msgid "Masking Method"
msgstr "Метод маскирования" msgstr "Метод маскировки"
#: acls/models/data_masking.py:31 #: acls/models/data_masking.py:31
msgid "Mask Pattern" msgid "Mask Pattern"
@@ -2687,19 +2677,19 @@ msgstr "Собранные данные"
msgid "Custom info" msgid "Custom info"
msgstr "Пользовательские атрибуты" msgstr "Пользовательские атрибуты"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "Обновление информации об оборудовании актива" msgstr "Обновление информации об оборудовании актива"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "Проверка доступности актива" msgstr "Проверка доступности актива"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "Сопоставление актива" msgstr "Сопоставление актива"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "Изменение папки актива" msgstr "Изменение папки актива"
@@ -3610,7 +3600,7 @@ msgstr "Задача"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "Да" msgstr "Да"
@@ -3897,35 +3887,35 @@ msgstr ""
"Повторное использование токена не допускается, глобальная настройка не " "Повторное использование токена не допускается, глобальная настройка не "
"включена" "включена"
#: authentication/api/connection_token.py:426 #: authentication/api/connection_token.py:425
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:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "Разрешение истекло" msgstr "Разрешение истекло"
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "Действие правила — запрет: {}({})" msgstr "Действие правила — запрет: {}({})"
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "Действие правила — проверка" msgstr "Действие правила — проверка"
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "Действие правила — идентификация по лицу" msgstr "Действие правила — идентификация по лицу"
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "Правило входа в актив не поддерживает текущий актив" msgstr "Правило входа в актив не поддерживает текущий актив"
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "Действие правила — онлайн распознавание лица." msgstr "Действие правила — онлайн распознавание лица."
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "Нет доступных характеристик лица" msgstr "Нет доступных характеристик лица"
@@ -3965,7 +3955,7 @@ msgstr "Забыли пароль"
#: authentication/api/password.py:70 authentication/mfa/email.py:42 #: authentication/api/password.py:70 authentication/mfa/email.py:42
msgid "The validity period of the verification code is {} minute" msgid "The validity period of the verification code is {} minute"
msgstr "Срок действия кода проверки: {} мин" msgstr "Срок действия кода проверки составляет {} минут."
#: authentication/apps.py:7 #: authentication/apps.py:7
msgid "App Authentication" msgid "App Authentication"
@@ -4006,7 +3996,7 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "Обновлённый токен или кэш недействителен." msgstr "Обновлённый токен или кэш недействителен."
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "Ошибка OpenID" msgstr "Ошибка OpenID"
@@ -4234,16 +4224,16 @@ msgstr "Ваш пароль недействителен"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "Пожалуйста, подождите %s секунд перед повторной попыткой" msgstr "Пожалуйста, подождите %s секунд перед повторной попыткой"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "Ваш пароль слишком простой, измените его в целях безопасности" msgstr "Ваш пароль слишком простой, измените его в целях безопасности"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "Вам необходимо сменить пароль перед входом в систему" msgstr "Вам необходимо сменить пароль перед входом в систему"
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "" msgstr ""
"Срок действия вашего пароля истек, пожалуйста, сбросьте его перед входом в " "Срок действия вашего пароля истек, пожалуйста, сбросьте его перед входом в "
@@ -4364,20 +4354,11 @@ msgstr "Удалите номер телефона для отключения"
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "Ошибка аутентификации (сбой до проверки входа): {}" msgstr "Ошибка аутентификации (сбой до проверки входа): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr ""
"Администратор включил опцию 'Разрешить вход только для существующих пользователей'.\n"
" Текущий пользователь не найден в списке пользователей,\n"
" пожалуйста, свяжитесь с администратором."
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "Недействительный пользователь" msgstr "Недействительный пользователь"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
@@ -4385,11 +4366,11 @@ msgstr ""
"Администратор включил «Разрешить вход только из источника пользователя».\n" "Администратор включил «Разрешить вход только из источника пользователя».\n"
" Текущий источник пользователя — {}. Обратитесь к администратору." " Текущий источник пользователя — {}. Обратитесь к администратору."
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "Способ МФА ({}) не включен" msgstr "Способ МФА ({}) не включен"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "Пожалуйста, измените свой пароль" msgstr "Пожалуйста, измените свой пароль"
@@ -4909,22 +4890,22 @@ msgstr "Хотите попробовать снова?"
msgid "LAN" msgid "LAN"
msgstr "Локальная сеть" msgstr "Локальная сеть"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "Если у вас есть вопросы, пожалуйста, свяжитесь с администратором" msgstr "Если у вас есть вопросы, пожалуйста, свяжитесь с администратором"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "Ошибка при запросе пользователя %s" msgstr "Ошибка при запросе пользователя %s"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s уже привязан к другому пользователю" msgstr "%s уже привязан к другому пользователю"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "Привязка %s выполнена успешно" msgstr "Привязка %s выполнена успешно"
@@ -5067,7 +5048,7 @@ msgstr "Не удалось получить пользователя WeCom"
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "Пожалуйста, войдите с паролем, а затем привяжите WeCom" msgstr "Пожалуйста, войдите с паролем, а затем привяжите WeCom"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "Неверный формат загружаемого файла или файл другого типа ресурсов" msgstr "Неверный формат загружаемого файла или файл другого типа ресурсов"
@@ -5608,7 +5589,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "Управление тегами" msgstr "Управление тегами"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "Цвет" msgstr "Цвет"
@@ -6798,11 +6779,11 @@ msgstr "Панель смены пароля УЗ"
#: reports/views.py:181 #: reports/views.py:181
msgid "Failed to send email: " msgid "Failed to send email: "
msgstr "Не удалось отправить письмо " msgstr "Не удалось отправить письмо"
#: reports/views.py:182 #: reports/views.py:182
msgid "Email sent successfully to " msgid "Email sent successfully to "
msgstr "Письмо успешно отправлено " msgstr "Успешно отправлено письмо."
#: settings/api/chat.py:41 #: settings/api/chat.py:41
msgid "Chat AI is not enabled" msgid "Chat AI is not enabled"
@@ -7656,40 +7637,40 @@ msgid "Period clean"
msgstr "Периодическая очистка" msgstr "Периодическая очистка"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "Время хранения журнала входа" msgstr "Журнал входа (дни)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "Время хранения журнала задач" msgstr "Журнал задач (дни)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "Время хранения журнала действий" msgstr "Журнал операций (дни)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "Время хранения журнала изменения пароля пользователя" msgstr "Журнал смены пароля (дни)"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "Время хранения записей загрузки и скачивания" msgstr "Журнал загрузки/скачивания FTP (дни)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "Время хранения записей облачной синхронизации" msgstr "Журнал синхронизации с облаком (дни)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "Время хранения истории выполнения заданий" msgstr "История выполнения заданий (дни)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "Время хранения 기록 активности" msgstr "Журнал действий (дни)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "Время хранения журнала сеансов" msgstr "Журнал сессий (дни)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7700,8 +7681,8 @@ msgstr ""
" удалены (влияет на хранение базы данных, но на OSS не влияет)" " удалены (влияет на хранение базы данных, но на OSS не влияет)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "Время хранения записей уведомлений о смене пароля аккаунта" msgstr "Срок хранения записей смены и публикации паролей (дни)"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -8219,32 +8200,28 @@ msgid "Watermark"
msgstr "Водяной знак" msgstr "Водяной знак"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "Настраиваемое содержание водяного знака сессии" msgstr "Водяной знак в сессиях"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "Настраиваемое содержание водяного знака страницы" msgstr "Водяной знак в Консоли"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "Цвет шрифта"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "Размер шрифта (пиксели)" msgstr "Размер шрифта водяного знака"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "Высота (пиксели)" msgstr "Высота водяного знака"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "Ширина (пиксели)" msgstr "Ширина водяного знака"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "Поворот (градусы)" msgstr "Угол поворота водяного знака"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8572,15 +8549,15 @@ msgstr "Ошибка аутентификации: (неизвестная): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "Успешная аутентификация: {}" msgstr "Успешная аутентификация: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "Не удалось получить пользователей из LDAP" msgstr "Не удалось получить пользователей из LDAP"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "Всего {} , успешно {} , неудачно {}" msgstr "Всего {} , успешно {} , неудачно {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr ", отключено {}" msgstr ", отключено {}"
@@ -11966,21 +11943,3 @@ msgstr "Лицензия успешно импортирована"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "Лицензия недействительна" msgstr "Лицензия недействительна"
#~ msgid "Watermark console content"
#~ msgstr "Водяной знак в Консоли"
#~ msgid "Watermark font size"
#~ msgstr "Размер шрифта водяного знака"
#~ msgid "Watermark height"
#~ msgstr "Высота водяного знака"
#~ msgid "Watermark width"
#~ msgstr "Ширина водяного знака"
#~ msgid "Watermark rotate"
#~ msgstr "Угол поворота водяного знака"
#~ msgid "domain_name"
#~ msgstr "域名称"

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: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "Tài khoản đã tồn tại" msgstr "Tài khoản đã tồn tại"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "Tài khoản không tìm thấy" msgstr "Tài khoản không tìm thấy"
@@ -463,7 +463,7 @@ msgstr ""
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -478,7 +478,7 @@ msgstr "Tài sản"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -525,14 +525,13 @@ msgstr "Trạng thái đổi mật khẩu"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -625,7 +624,7 @@ msgstr "Biểu tượng"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -798,7 +797,7 @@ msgid "Status"
msgstr "Trạng thái" msgstr "Trạng thái"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1030,7 +1029,7 @@ msgid "Verify asset account"
msgstr "Xác thực tài khoản" msgstr "Xác thực tài khoản"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1275,46 +1274,54 @@ msgstr "Tài khoản đã tồn tại. Trường :{fields} phải là duy nhất
msgid "Has secret" msgid "Has secret"
msgstr "Đã quản lý mật khẩu" msgstr "Đã quản lý mật khẩu"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "Trạng thái" msgstr "Trạng thái"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "Đã sửa đổi" msgstr "Đã sửa đổi"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Tài sản"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "Tài sản không hỗ trợ loại tài khoản: %s" msgstr "Tài sản không hỗ trợ loại tài khoản: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "Tài khoản đã tồn tại" msgstr "Tài khoản đã tồn tại"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "Tài khoản yêu cầu"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "Thông tin đặc biệt" msgstr "Thông tin đặc biệt"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1339,7 +1346,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "Người dùng" msgstr "Người dùng"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1789,7 +1796,7 @@ msgstr "Tài khoản thành công"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "Không" msgstr "Không"
@@ -1915,18 +1922,6 @@ msgstr "Người phê duyệt"
msgid "Users" msgid "Users"
msgstr "Người dùng" msgstr "Người dùng"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "Tài sản"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2706,19 +2701,19 @@ msgstr "Thu thập thông tin phần cứng tài sản"
msgid "Custom info" msgid "Custom info"
msgstr "Thuộc tính tùy chỉnh" msgstr "Thuộc tính tùy chỉnh"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "Có thể cập nhật thông tin phần cứng tài sản" msgstr "Có thể cập nhật thông tin phần cứng tài sản"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "Có thể kiểm tra tính kết nối của tài sản" msgstr "Có thể kiểm tra tính kết nối của tài sản"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "Có thể khớp tài sản" msgstr "Có thể khớp tài sản"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "Có thể sửa đổi nút tài sản" msgstr "Có thể sửa đổi nút tài sản"
@@ -3648,7 +3643,7 @@ msgstr "Nhiệm vụ"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "Là" msgstr "Là"
@@ -3934,35 +3929,35 @@ msgstr ""
"Không cho phép sử dụng mã thông báo kết nối có thể tái sử dụng, chưa kích " "Không cho phép sử dụng mã thông báo kết nối có thể tái sử dụng, chưa kích "
"hoạt cài đặt toàn cầu" "hoạt cài đặt toàn cầu"
#: authentication/api/connection_token.py:426 #: authentication/api/connection_token.py:425
msgid "Anonymous account is not supported for this asset" msgid "Anonymous account is not supported for this asset"
msgstr "Tài khoản ẩn danh không hỗ trợ tài sản hiện tại" msgstr "Tài khoản ẩn danh không hỗ trợ tài sản hiện tại"
#: authentication/api/connection_token.py:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "Quyền truy cập đã hết hạn" msgstr "Quyền truy cập đã hết hạn"
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "Hành động ACL là từ chối: {}({})" msgstr "Hành động ACL là từ chối: {}({})"
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "Hành động ACL là xem xét" msgstr "Hành động ACL là xem xét"
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "Hành động ACL là xác thực khuôn mặt" msgstr "Hành động ACL là xác thực khuôn mặt"
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "Quy tắc đăng nhập tài sản không hỗ trợ tài sản hiện tại." msgstr "Quy tắc đăng nhập tài sản không hỗ trợ tài sản hiện tại."
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "Hành động ACL là nhận diện khuôn mặt trực tuyến" msgstr "Hành động ACL là nhận diện khuôn mặt trực tuyến"
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "Không có đặc điểm khuôn mặt khả dụng" msgstr "Không có đặc điểm khuôn mặt khả dụng"
@@ -4043,7 +4038,7 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "Token làm mới hoặc bộ nhớ cache không hợp lệ." msgstr "Token làm mới hoặc bộ nhớ cache không hợp lệ."
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "Lỗi OpenID." msgstr "Lỗi OpenID."
@@ -4271,16 +4266,16 @@ msgstr "Mật khẩu của bạn không hợp lệ"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "Vui lòng thử lại sau %s giây" msgstr "Vui lòng thử lại sau %s giây"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "Mật khẩu của bạn quá đơn giản, để đảm bảo an toàn, vui lòng thay đổi" msgstr "Mật khẩu của bạn quá đơn giản, để đảm bảo an toàn, vui lòng thay đổi"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "Trước khi hoàn tất đăng nhập, vui lòng thay đổi mật khẩu" msgstr "Trước khi hoàn tất đăng nhập, vui lòng thay đổi mật khẩu"
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "Mật khẩu của bạn đã hết hạn, hãy thay đổi rồi mới đăng nhập" msgstr "Mật khẩu của bạn đã hết hạn, hãy thay đổi rồi mới đăng nhập"
@@ -4400,20 +4395,11 @@ msgstr "Xóa số điện thoại để vô hiệu hóa."
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "Xác thực không thành công (Kiểm tra trước khi đăng nhập thất bại): {}" msgstr "Xác thực không thành công (Kiểm tra trước khi đăng nhập thất bại): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr ""
"Quản trị viên đã bật 'chỉ cho phép người dùng đã tồn tại đăng nhập', người "
"dùng hiện tại không có trong danh sách người dùng, xin vui lòng liên hệ với "
"quản trị viên."
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "Người dùng không hợp lệ" msgstr "Người dùng không hợp lệ"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
@@ -4421,11 +4407,11 @@ msgstr ""
"Quản trị viên đã bật 'Chỉ cho phép đăng nhập từ nguồn người dùng', nguồn " "Quản trị viên đã bật 'Chỉ cho phép đăng nhập từ nguồn người dùng', nguồn "
"người dùng hiện tại là {}. Vui lòng liên hệ với quản trị viên." "người dùng hiện tại là {}. Vui lòng liên hệ với quản trị viên."
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "Phương thức MFA ({}) này chưa được kích hoạt" msgstr "Phương thức MFA ({}) này chưa được kích hoạt"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "Vui lòng thay đổi mật khẩu" msgstr "Vui lòng thay đổi mật khẩu"
@@ -4940,24 +4926,24 @@ msgstr "Có muốn thử lại không?"
msgid "LAN" msgid "LAN"
msgstr "Mạng nội bộ" msgstr "Mạng nội bộ"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "" msgstr ""
"Nếu có bất kỳ câu hỏi hoặc nhu cầu nào, xin vui lòng liên hệ với quản trị " "Nếu có bất kỳ câu hỏi hoặc nhu cầu nào, xin vui lòng liên hệ với quản trị "
"viên hệ thống" "viên hệ thống"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "%s truy vấn người dùng không thành công" msgstr "%s truy vấn người dùng không thành công"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s đã được liên kết với một người dùng khác" msgstr "%s đã được liên kết với một người dùng khác"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "Liên kết %s thành công" msgstr "Liên kết %s thành công"
@@ -5099,7 +5085,7 @@ msgid "Please login with a password and then bind the WeCom"
msgstr "" msgstr ""
"Vui lòng đăng nhập bằng mật khẩu trước, rồi liên kết WeChat Doanh Nghiệp" "Vui lòng đăng nhập bằng mật khẩu trước, rồi liên kết WeChat Doanh Nghiệp"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "Định dạng tệp tải lên sai hoặc tệp thuộc loại tài nguyên khác." msgstr "Định dạng tệp tải lên sai hoặc tệp thuộc loại tài nguyên khác."
@@ -5647,7 +5633,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "Labels" msgstr "Labels"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "Màu sắc" msgstr "Màu sắc"
@@ -7699,40 +7685,40 @@ msgid "Period clean"
msgstr "Dọn dẹp định kỳ" msgstr "Dọn dẹp định kỳ"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "Ngày lưu giữ nhật ký đăng nhập" msgstr "Nhật ký đăng nhập (ngày)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "Ngày lưu giữ nhật ký nhiệm vụ" msgstr "Nhật ký tác vụ (ngày)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "Ngày lưu giữ nhật ký hành động" msgstr "Nhật ký hành động (ngày)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "Ngày lưu giữ nhật ký thay đổi mật khẩu người dùng" msgstr "Nhật ký thay đổi mật khẩu"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "Ngày lưu giữ nhật ký tải lên và tải xuống" msgstr "Tải lên và tải xuống (ngày)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "Ngày lưu giữ nhật ký đồng bộ đám mây" msgstr "Hồ sơ đồng bộ đám mây (ngày)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "Ngày lưu giữ lịch sử thực hiện công việc" msgstr "Lịch sử thực hiện trung tâm công việc (ngày)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "Ngày lưu giữ nhật ký hoạt động" msgstr "Hồ sơ hoạt động (ngày)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "Ngày lưu giữ nhật ký phiên làm việc" msgstr "Nhật ký phiên (ngày)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7743,8 +7729,8 @@ msgstr ""
"tới lưu trữ cơ sở dữ liệu, không ảnh hưởng tới OSS)" "tới lưu trữ cơ sở dữ liệu, không ảnh hưởng tới OSS)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "Ngày lưu giữ nhật ký thông báo thay đổi mật khẩu tài khoản." msgstr "Số ngày lưu giữ nhật ký đẩy thay đổi mật khẩu (ngày)"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -8261,32 +8247,28 @@ msgid "Watermark"
msgstr "Bật hình mờ" msgstr "Bật hình mờ"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "Nội dung tùy chỉnh cho watermark phiên họp" msgstr "Nội dung hình mờ cuộc trò chuyện tùy chỉnh"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "Nội dung tùy chỉnh cho watermark trang quản lý" msgstr "Nội dung hình mờ trang quản trị tùy chỉnh"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "Màu sắc phông chữ"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "Kích thước phông chữ (px)" msgstr "Font chữ và cỡ chữ"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "Chiều cao (px)" msgstr "Chiều cao hình mờ đơn lẻ"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "Chiều rộng (px)" msgstr "Chiều rộng hình mờ đơn lẻ"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "Góc xoay (độ)" msgstr "Góc xoay hình mờ"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8609,15 +8591,15 @@ msgstr "Xác thực thất bại: (không xác định): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "Xác thực thành công: {}" msgstr "Xác thực thành công: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "Không lấy được người dùng LDAP" msgstr "Không lấy được người dùng LDAP"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "Tổng cộng {} , thành công {} , thất bại {}" msgstr "Tổng cộng {} , thành công {} , thất bại {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr ", đã vô hiệu hóa {}" msgstr ", đã vô hiệu hóa {}"
@@ -12039,3 +12021,24 @@ msgstr "Nhập giấy phép thành công"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "Giấy phép không hợp lệ" msgstr "Giấy phép không hợp lệ"
#, fuzzy
#~ msgid "Themes"
#~ msgstr "Chủ đề"
#, fuzzy
#~ msgid "domain_name"
#~ msgstr "Tên miền"
#~ msgid "Task execution id"
#~ msgstr "ID thực hiện nhiệm vụ"
#~ msgid "Respectful"
#~ msgstr "Kính gửi"
#~ msgid ""
#~ "Hello! The following is the failure of changing the password of your assets "
#~ "or pushing the account. Please check and handle it in time."
#~ msgstr ""
#~ "Chào bạn! Dưới đây là tình huống về việc thay đổi mật khẩu tài sản hoặc thất"
#~ " bại khi đẩy tài khoản. Vui lòng kiểm tra và xử lý kịp thời."

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: 2025-11-05 18:33+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -17,14 +17,14 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.3\n" "X-Generator: Poedit 2.4.3\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "账号已存在" msgstr "账号已存在"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "账号未找到" msgstr "账号未找到"
@@ -458,7 +458,7 @@ msgstr "Vault 操作失败,请重试,或者检查 Vault 上的账号信息
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -473,7 +473,7 @@ msgstr "资产"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -520,14 +520,13 @@ msgstr "改密状态"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -617,7 +616,7 @@ msgstr "图标"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -787,7 +786,7 @@ msgid "Status"
msgstr "状态" msgstr "状态"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1011,7 +1010,7 @@ msgid "Verify asset account"
msgstr "账号验证" msgstr "账号验证"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1240,46 +1239,54 @@ msgstr "帐号已存在。字段:{fields} 必须是唯一的。"
msgid "Has secret" msgid "Has secret"
msgstr "已托管密码" msgstr "已托管密码"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "状态" msgstr "状态"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "已修改" msgstr "已修改"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "资产"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "资产不支持账号类型: %s" msgstr "资产不支持账号类型: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "账号已存在" msgstr "账号已存在"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "必须指定至少一个资产或节点"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "特殊信息" msgstr "特殊信息"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1303,7 +1310,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "用户" msgstr "用户"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1740,7 +1747,7 @@ msgstr "成功账号"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "否" msgstr "否"
@@ -1861,18 +1868,6 @@ msgstr "审批人"
msgid "Users" msgid "Users"
msgstr "用户" msgstr "用户"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "资产"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2626,19 +2621,19 @@ msgstr "收集资产硬件信息"
msgid "Custom info" msgid "Custom info"
msgstr "自定义属性" msgstr "自定义属性"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "可以更新资产硬件信息" msgstr "可以更新资产硬件信息"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "可以测试资产连接性" msgstr "可以测试资产连接性"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "可以匹配资产" msgstr "可以匹配资产"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "可以修改资产节点" msgstr "可以修改资产节点"
@@ -3523,7 +3518,7 @@ msgstr "任务"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "是" msgstr "是"
@@ -3806,35 +3801,35 @@ msgstr "该操作需要验证您的 MFA, 请先开启并配置"
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:426 #: authentication/api/connection_token.py:425
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:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "授权已过期" msgstr "授权已过期"
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL 动作是拒绝: {}({})" msgstr "ACL 动作是拒绝: {}({})"
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL 动作是复核" msgstr "ACL 动作是复核"
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "ACL 动作是人脸验证" msgstr "ACL 动作是人脸验证"
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "资产登录规则不支持当前资产" msgstr "资产登录规则不支持当前资产"
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "ACL 动作是人脸在线" msgstr "ACL 动作是人脸在线"
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "没有可用的人脸特征" msgstr "没有可用的人脸特征"
@@ -3910,7 +3905,7 @@ msgstr "无效的令牌头。符号字符串不应包含无效字符。"
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "刷新的令牌或缓存无效。" msgstr "刷新的令牌或缓存无效。"
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "OpenID 错误" msgstr "OpenID 错误"
@@ -4130,16 +4125,16 @@ msgstr "您的密码无效"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "请在 %s 秒后重试" msgstr "请在 %s 秒后重试"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "你的密码过于简单,为了安全,请修改" msgstr "你的密码过于简单,为了安全,请修改"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "登录完成前,请先修改密码" msgstr "登录完成前,请先修改密码"
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "您的密码已过期,先修改再登录" msgstr "您的密码已过期,先修改再登录"
@@ -4256,29 +4251,21 @@ msgstr "清空手机号码禁用"
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "认证失败 (登录前检查失败): {}" msgstr "认证失败 (登录前检查失败): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact "
"the administrator."
msgstr ""
"管理员已开启'仅允许已存在用户登录',当前用户不在用户列表中,请联系管理员。"
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "无效的用户" msgstr "无效的用户"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
msgstr "管理员已开启'仅允许从用户来源登录',当前用户来源为{},请联系管理员。" msgstr "管理员已开启'仅允许从用户来源登录',当前用户来源为{},请联系管理员。"
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "该 MFA ({}) 方式没有启用" msgstr "该 MFA ({}) 方式没有启用"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "请修改密码" msgstr "请修改密码"
@@ -4763,22 +4750,22 @@ msgstr "是否重试 "
msgid "LAN" msgid "LAN"
msgstr "局域网" msgstr "局域网"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "如果有疑问或需求,请联系系统管理员" msgstr "如果有疑问或需求,请联系系统管理员"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "%s 查询用户失败" msgstr "%s 查询用户失败"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s 已绑定到另一个用户" msgstr "%s 已绑定到另一个用户"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "绑定 %s 成功" msgstr "绑定 %s 成功"
@@ -4918,7 +4905,7 @@ msgstr "从企业微信获取用户失败"
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "请使用密码登录,然后绑定企业微信" msgstr "请使用密码登录,然后绑定企业微信"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "上传的文件格式错误 或 其它类型资源的文件" msgstr "上传的文件格式错误 或 其它类型资源的文件"
@@ -5442,7 +5429,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "标签管理" msgstr "标签管理"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "颜色" msgstr "颜色"
@@ -7420,40 +7407,40 @@ msgid "Period clean"
msgstr "定時清掃" msgstr "定時清掃"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "登录日志保留天数" msgstr "登录日志 (天)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "任务日志保留天数" msgstr "任务日志 (天)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "操作日志保留天数" msgstr "操作日志 (天)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "用户改密日志保留天数" msgstr "改密日志"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "上传下载记录保留天数" msgstr "上传下载 (天)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "云同步记录保留天数" msgstr "云同步记录 (天)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "作业执行历史保留天数" msgstr "作业中心执行历史 (天)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "活动记录保留天数" msgstr "活动记录 (天)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "会话日志保留天数" msgstr "会话日志 (天)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7463,8 +7450,8 @@ msgstr ""
"会话、录像,命令记录超过该时长将会被清除 (影响数据库存储OSS 等不受影响)" "会话、录像,命令记录超过该时长将会被清除 (影响数据库存储OSS 等不受影响)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "账号改密推送记录保留天数" msgstr "改密推送记录保留天数 (天)"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -7946,32 +7933,28 @@ msgid "Watermark"
msgstr "开启水印" msgstr "开启水印"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "会话水印自定义内容" msgstr "会话水印自定义内容"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "管理页面水印自定义内容" msgstr "管理页面水印自定义内容"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "字体颜色"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "字体大小 (px)" msgstr "字体字号"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "高度 (px)" msgstr "单个水印高度"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "宽度 (px)" msgstr "单个水印宽度"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "旋转 (度)" msgstr "水印旋转角度"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8276,15 +8259,15 @@ msgstr "认证失败: (未知): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "认证成功: {}" msgstr "认证成功: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "没有获取到 LDAP 用户" msgstr "没有获取到 LDAP 用户"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "总共 {},成功 {},失败 {}" msgstr "总共 {},成功 {},失败 {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr ", 禁用 {}" msgstr ", 禁用 {}"
@@ -11585,3 +11568,6 @@ msgstr "许可证导入成功"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "许可证无效" msgstr "许可证无效"
#~ msgid "domain_name"
#~ msgstr "域名称"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n" "Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-06 15:37+0800\n" "POT-Creation-Date: 2025-10-16 14:10+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"
@@ -18,14 +18,14 @@ msgstr ""
"X-Generator: Poedit 2.4.3\n" "X-Generator: Poedit 2.4.3\n"
"X-ZhConverter: 繁化姬 dict-74c8d060-r1048 @ 2024/04/07 18:19:20 | https://zhconvert.org\n" "X-ZhConverter: 繁化姬 dict-74c8d060-r1048 @ 2024/04/07 18:19:20 | https://zhconvert.org\n"
#: accounts/api/account/account.py:142 #: accounts/api/account/account.py:141
#: accounts/serializers/account/account.py:181 #: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:362 #: accounts/serializers/account/account.py:362
msgid "Account already exists" msgid "Account already exists"
msgstr "帳號已存在" msgstr "帳號已存在"
#: accounts/api/account/application.py:77 #: accounts/api/account/application.py:77
#: authentication/api/connection_token.py:453 #: authentication/api/connection_token.py:452
msgid "Account not found" msgid "Account not found"
msgstr "帳號未找到" msgstr "帳號未找到"
@@ -459,7 +459,7 @@ msgstr "Vault 操作失敗,請重試,或檢查 Vault 上的帳號信息。"
#: accounts/templates/accounts/push_account_report.html:78 #: accounts/templates/accounts/push_account_report.html:78
#: accounts/templates/accounts/push_account_report.html:118 #: accounts/templates/accounts/push_account_report.html:118
#: acls/notifications.py:70 acls/serializers/base.py:111 #: acls/notifications.py:70 acls/serializers/base.py:111
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427 #: assets/models/asset/common.py:102 assets/models/asset/common.py:428
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336 #: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
#: audits/serializers.py:230 authentication/models/connection_token.py:42 #: audits/serializers.py:230 authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17 #: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
@@ -474,7 +474,7 @@ msgstr "資產"
#: accounts/models/account.py:89 accounts/models/template.py:16 #: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:234 #: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:305 #: accounts/serializers/account/account.py:304
#: accounts/serializers/account/template.py:35 #: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:51 #: authentication/serializers/connect_token_secret.py:51
msgid "Su from" msgid "Su from"
@@ -521,14 +521,13 @@ msgstr "改密狀態"
#: accounts/models/account.py:107 #: accounts/models/account.py:107
#: accounts/models/automations/check_account.py:64 #: accounts/models/automations/check_account.py:64
#: accounts/serializers/account/account.py:295
#: accounts/serializers/account/service.py:13 #: accounts/serializers/account/service.py:13
#: accounts/serializers/automations/change_secret.py:117 #: accounts/serializers/automations/change_secret.py:117
#: accounts/serializers/automations/change_secret.py:148 #: accounts/serializers/automations/change_secret.py:148
#: acls/serializers/base.py:112 #: acls/serializers/base.py:112
#: acls/templates/acls/asset_login_reminder.html:11 #: acls/templates/acls/asset_login_reminder.html:11
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337 #: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
#: audits/serializers.py:231 authentication/api/connection_token.py:465 #: audits/serializers.py:231 authentication/api/connection_token.py:464
#: ops/models/base.py:18 perms/models/asset_permission.py:75 #: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18 #: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:31 terminal/notifications.py:291 #: terminal/models/session/session.py:31 terminal/notifications.py:291
@@ -621,7 +620,7 @@ msgstr "圖示"
#: accounts/models/application.py:20 accounts/models/base.py:39 #: accounts/models/application.py:20 accounts/models/base.py:39
#: accounts/models/mixins/vault.py:49 #: accounts/models/mixins/vault.py:49
#: accounts/serializers/account/account.py:498 #: accounts/serializers/account/account.py:492
#: accounts/serializers/account/base.py:20 #: accounts/serializers/account/base.py:20
#: authentication/models/temp_token.py:11 #: authentication/models/temp_token.py:11
#: authentication/templates/authentication/_access_key_modal.html:31 #: authentication/templates/authentication/_access_key_modal.html:31
@@ -794,7 +793,7 @@ msgid "Status"
msgstr "狀態" msgstr "狀態"
#: accounts/models/automations/change_secret.py:51 #: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9 #: accounts/serializers/account/account.py:296 assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:177 #: authentication/templates/authentication/passkey.html:177
#: authentication/views/base.py:42 authentication/views/base.py:43 #: authentication/views/base.py:42 authentication/views/base.py:43
#: authentication/views/base.py:44 common/const/choices.py:67 #: authentication/views/base.py:44 common/const/choices.py:67
@@ -1018,7 +1017,7 @@ msgid "Verify asset account"
msgstr "帳號驗證" msgstr "帳號驗證"
#: accounts/models/base.py:37 accounts/models/base.py:66 #: accounts/models/base.py:37 accounts/models/base.py:66
#: accounts/serializers/account/account.py:497 #: accounts/serializers/account/account.py:491
#: accounts/serializers/account/base.py:17 #: accounts/serializers/account/base.py:17
#: accounts/serializers/automations/change_secret.py:50 #: accounts/serializers/automations/change_secret.py:50
#: authentication/serializers/connect_token_secret.py:42 #: authentication/serializers/connect_token_secret.py:42
@@ -1242,46 +1241,54 @@ msgstr "帳號已存在。字段:{fields} 必須是唯一的。"
msgid "Has secret" msgid "Has secret"
msgstr "已託管密碼" msgstr "已託管密碼"
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84 #: accounts/serializers/account/account.py:295 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49 #: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14 #: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State" msgid "State"
msgstr "狀態" msgstr "狀態"
#: accounts/serializers/account/account.py:298 #: accounts/serializers/account/account.py:297
msgid "Changed" msgid "Changed"
msgstr "已修改" msgstr "已修改"
#: accounts/serializers/account/account.py:410 #: accounts/serializers/account/account.py:307 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "資產"
#: accounts/serializers/account/account.py:412
#, python-format #, python-format
msgid "Asset does not support this secret type: %s" msgid "Asset does not support this secret type: %s"
msgstr "資產不支持帳號類型: %s" msgstr "資產不支持帳號類型: %s"
#: accounts/serializers/account/account.py:443 #: accounts/serializers/account/account.py:444
msgid "Account has exist" msgid "Account has exist"
msgstr "帳號已存在" msgstr "帳號已存在"
#: accounts/serializers/account/account.py:468 #: accounts/serializers/account/account.py:476
#: accounts/serializers/account/account.py:469 #: accounts/serializers/account/account.py:483
msgid "At least one asset or node must be specified"
msgstr "資產或者節點至少選擇一項"
#: accounts/serializers/account/account.py:482
#: accounts/serializers/account/account.py:489
#: accounts/serializers/account/base.py:73 #: accounts/serializers/account/base.py:73
#: accounts/serializers/account/base.py:88 #: accounts/serializers/account/base.py:88
#: assets/serializers/asset/common.py:425 #: assets/serializers/asset/common.py:425
msgid "Spec info" msgid "Spec info"
msgstr "特殊資訊" msgstr "特殊資訊"
#: accounts/serializers/account/account.py:499 #: accounts/serializers/account/account.py:493
#: authentication/serializers/connect_token_secret.py:173 #: authentication/serializers/connect_token_secret.py:173
#: 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:33 #: perms/models/perm_node.py:21 users/serializers/group.py:33
msgid "ID" msgid "ID"
msgstr "ID" msgstr "ID"
#: accounts/serializers/account/account.py:509 acls/notifications.py:18 #: accounts/serializers/account/account.py:503 acls/notifications.py:18
#: acls/notifications.py:68 acls/serializers/base.py:104 #: acls/notifications.py:68 acls/serializers/base.py:104
#: acls/templates/acls/asset_login_reminder.html:8 #: acls/templates/acls/asset_login_reminder.html:8
#: acls/templates/acls/user_login_reminder.html:8 #: acls/templates/acls/user_login_reminder.html:8
@@ -1306,7 +1313,7 @@ msgstr "ID"
msgid "User" msgid "User"
msgstr "用戶" msgstr "用戶"
#: accounts/serializers/account/account.py:510 #: accounts/serializers/account/account.py:504
#: authentication/templates/authentication/_access_key_modal.html:33 #: authentication/templates/authentication/_access_key_modal.html:33
#: terminal/notifications.py:165 terminal/notifications.py:225 #: terminal/notifications.py:165 terminal/notifications.py:225
msgid "Date" msgid "Date"
@@ -1716,7 +1723,7 @@ msgstr "成功帳號"
#: accounts/templates/accounts/change_secret_report.html:118 #: accounts/templates/accounts/change_secret_report.html:118
#: accounts/templates/accounts/push_account_report.html:77 #: accounts/templates/accounts/push_account_report.html:77
#: accounts/templates/accounts/push_account_report.html:117 #: accounts/templates/accounts/push_account_report.html:117
#: audits/handler.py:130 #: audits/handler.py:128
msgid "No" msgid "No"
msgstr "否" msgstr "否"
@@ -1838,18 +1845,6 @@ msgstr "審批人"
msgid "Users" msgid "Users"
msgstr "用戶管理" msgstr "用戶管理"
#: acls/models/base.py:97 acls/templates/acls/asset_login_reminder.html:10
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:33
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:464 ops/models/base.py:17
#: ops/models/job.py:157 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
#: xpack/plugins/cloud/manager.py:101
msgid "Assets"
msgstr "資產"
#: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60 #: acls/models/command_acl.py:16 assets/models/cmd_filter.py:60
#: ops/serializers/job.py:92 terminal/const.py:88 #: ops/serializers/job.py:92 terminal/const.py:88
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18 #: terminal/models/session/session.py:40 terminal/serializers/command.py:18
@@ -2599,19 +2594,19 @@ msgstr "收集資產硬體資訊"
msgid "Custom info" msgid "Custom info"
msgstr "自訂屬性" msgstr "自訂屬性"
#: assets/models/asset/common.py:430 #: assets/models/asset/common.py:431
msgid "Can refresh asset hardware info" msgid "Can refresh asset hardware info"
msgstr "可以更新資產硬體資訊" msgstr "可以更新資產硬體資訊"
#: assets/models/asset/common.py:431 #: assets/models/asset/common.py:432
msgid "Can test asset connectivity" msgid "Can test asset connectivity"
msgstr "可以測試資產連接性" msgstr "可以測試資產連接性"
#: assets/models/asset/common.py:432 #: assets/models/asset/common.py:433
msgid "Can match asset" msgid "Can match asset"
msgstr "可以匹配資產" msgstr "可以匹配資產"
#: assets/models/asset/common.py:433 #: assets/models/asset/common.py:434
msgid "Can change asset nodes" msgid "Can change asset nodes"
msgstr "可以修改資產節點" msgstr "可以修改資產節點"
@@ -3484,7 +3479,7 @@ msgstr "任務"
msgid "-" msgid "-"
msgstr "-" msgstr "-"
#: audits/handler.py:130 #: audits/handler.py:128
msgid "Yes" msgid "Yes"
msgstr "是" msgstr "是"
@@ -3762,35 +3757,35 @@ msgstr "該操作需要驗證您的 MFA, 請先開啟並配置"
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:426 #: authentication/api/connection_token.py:425
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:456 #: authentication/api/connection_token.py:455
msgid "Permission expired" msgid "Permission expired"
msgstr "授權已過期" msgstr "授權已過期"
#: authentication/api/connection_token.py:489 #: authentication/api/connection_token.py:488
msgid "ACL action is reject: {}({})" msgid "ACL action is reject: {}({})"
msgstr "ACL 動作是拒絕: {}({})" msgstr "ACL 動作是拒絕: {}({})"
#: authentication/api/connection_token.py:493 #: authentication/api/connection_token.py:492
msgid "ACL action is review" msgid "ACL action is review"
msgstr "ACL 動作是覆核" msgstr "ACL 動作是覆核"
#: authentication/api/connection_token.py:503 #: authentication/api/connection_token.py:502
msgid "ACL action is face verify" msgid "ACL action is face verify"
msgstr "ACL Action 係人臉驗證" msgstr "ACL Action 係人臉驗證"
#: authentication/api/connection_token.py:508 #: authentication/api/connection_token.py:507
msgid "ACL action not supported for this asset" msgid "ACL action not supported for this asset"
msgstr "資產登錄規則不支持當前資產" msgstr "資產登錄規則不支持當前資產"
#: authentication/api/connection_token.py:515 #: authentication/api/connection_token.py:514
msgid "ACL action is face online" msgid "ACL action is face online"
msgstr "ACL Action 係人臉在線" msgstr "ACL Action 係人臉在線"
#: authentication/api/connection_token.py:540 #: authentication/api/connection_token.py:539
msgid "No available face feature" msgid "No available face feature"
msgstr "沒有可用的人臉特徵" msgstr "沒有可用的人臉特徵"
@@ -3864,7 +3859,7 @@ msgstr "無效的令牌頭。符號字串不應包含無效字元。"
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "刷新的令牌或快取無效。" msgstr "刷新的令牌或快取無效。"
#: authentication/backends/oidc/views.py:137 #: authentication/backends/oidc/views.py:175
msgid "OpenID Error" msgid "OpenID Error"
msgstr "OpenID 錯誤" msgstr "OpenID 錯誤"
@@ -4082,16 +4077,16 @@ msgstr "您的密碼無效"
msgid "Please wait for %s seconds before retry" msgid "Please wait for %s seconds before retry"
msgstr "請在 %s 秒後重試" msgstr "請在 %s 秒後重試"
#: authentication/errors/redirect.py:85 authentication/mixins.py:365 #: authentication/errors/redirect.py:85 authentication/mixins.py:332
#: users/views/profile/reset.py:224 #: users/views/profile/reset.py:224
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "你的密碼過於簡單,為了安全,請修改" msgstr "你的密碼過於簡單,為了安全,請修改"
#: authentication/errors/redirect.py:93 authentication/mixins.py:374 #: authentication/errors/redirect.py:93 authentication/mixins.py:341
msgid "You should to change your password before login" msgid "You should to change your password before login"
msgstr "登錄完成前,請先修改密碼" msgstr "登錄完成前,請先修改密碼"
#: authentication/errors/redirect.py:101 authentication/mixins.py:383 #: authentication/errors/redirect.py:101 authentication/mixins.py:350
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "您的密碼已過期,先修改再登錄" msgstr "您的密碼已過期,先修改再登錄"
@@ -4208,27 +4203,21 @@ msgstr "清空手機號碼禁用"
msgid "Authentication failed (before login check failed): {}" msgid "Authentication failed (before login check failed): {}"
msgstr "認證失敗 (登錄前檢查失敗): {}" msgstr "認證失敗 (登錄前檢查失敗): {}"
#: authentication/mixins.py:105 #: authentication/mixins.py:84
msgid ""
"The administrator has enabled \"Only allow existing users to log in\", \n"
" and the current user is not in the user list. Please contact the administrator."
msgstr "管理員已開啟'僅允許已存在用戶登錄',當前用戶不在用戶列表中,請聯絡管理員。"
#: authentication/mixins.py:117
msgid "User is invalid" msgid "User is invalid"
msgstr "無效的用戶" msgstr "無效的用戶"
#: authentication/mixins.py:132 #: authentication/mixins.py:99
msgid "" msgid ""
"The administrator has enabled 'Only allow login from user source'. \n" "The administrator has enabled 'Only allow login from user source'. \n"
" The current user source is {}. Please contact the administrator." " The current user source is {}. Please contact the administrator."
msgstr "管理員已開啟'僅允許從用戶來源登錄',當前用戶來源為{},請聯絡管理員。" msgstr "管理員已開啟'僅允許從用戶來源登錄',當前用戶來源為{},請聯絡管理員。"
#: authentication/mixins.py:311 #: authentication/mixins.py:278
msgid "The MFA type ({}) is not enabled" msgid "The MFA type ({}) is not enabled"
msgstr "該 MFA ({}) 方式沒有啟用" msgstr "該 MFA ({}) 方式沒有啟用"
#: authentication/mixins.py:353 #: authentication/mixins.py:320
msgid "Please change your password" msgid "Please change your password"
msgstr "請修改密碼" msgstr "請修改密碼"
@@ -4712,22 +4701,22 @@ msgstr "是否重試 "
msgid "LAN" msgid "LAN"
msgstr "區域網路" msgstr "區域網路"
#: authentication/views/base.py:70 #: authentication/views/base.py:71
#: perms/templates/perms/_msg_permed_items_expire.html:18 #: perms/templates/perms/_msg_permed_items_expire.html:18
msgid "If you have any question, please contact the administrator" msgid "If you have any question, please contact the administrator"
msgstr "如果有疑問或需求,請聯絡系統管理員" msgstr "如果有疑問或需求,請聯絡系統管理員"
#: authentication/views/base.py:143 #: authentication/views/base.py:144
#, python-format #, python-format
msgid "%s query user failed" msgid "%s query user failed"
msgstr "%s 查詢用戶失敗" msgstr "%s 查詢用戶失敗"
#: authentication/views/base.py:151 #: authentication/views/base.py:152
#, python-format #, python-format
msgid "The %s is already bound to another user" msgid "The %s is already bound to another user"
msgstr "%s 已綁定到另一個用戶" msgstr "%s 已綁定到另一個用戶"
#: authentication/views/base.py:158 #: authentication/views/base.py:159
#, python-format #, python-format
msgid "Binding %s successfully" msgid "Binding %s successfully"
msgstr "綁定 %s 成功" msgstr "綁定 %s 成功"
@@ -4866,7 +4855,7 @@ msgstr "從企業微信獲取用戶失敗"
msgid "Please login with a password and then bind the WeCom" msgid "Please login with a password and then bind the WeCom"
msgstr "請使用密碼登錄,然後綁定企業微信" msgstr "請使用密碼登錄,然後綁定企業微信"
#: common/api/action.py:80 #: common/api/action.py:68
msgid "Request file format may be wrong" msgid "Request file format may be wrong"
msgstr "上傳的檔案格式錯誤 或 其它類型資源的文件" msgstr "上傳的檔案格式錯誤 或 其它類型資源的文件"
@@ -5383,7 +5372,7 @@ msgstr ""
msgid "App Labels" msgid "App Labels"
msgstr "標籤管理" msgstr "標籤管理"
#: labels/models.py:15 #: labels/models.py:15 settings/serializers/security.py:211
msgid "Color" msgid "Color"
msgstr "顏色" msgstr "顏色"
@@ -7325,40 +7314,40 @@ msgid "Period clean"
msgstr "定時清掃" msgstr "定時清掃"
#: settings/serializers/cleaning.py:15 #: settings/serializers/cleaning.py:15
msgid "Login log retention days" msgid "Login log retention days (day)"
msgstr "登入日誌保留天數" msgstr "登入記錄 (天)"
#: settings/serializers/cleaning.py:19 #: settings/serializers/cleaning.py:19
msgid "Task log retention days" msgid "Task log retention days (day)"
msgstr "任務日誌保留天數" msgstr "工作紀錄 (天)"
#: settings/serializers/cleaning.py:23 #: settings/serializers/cleaning.py:23
msgid "Operate log retention days" msgid "Operate log retention days (day)"
msgstr "操作日誌保留天數" msgstr "Action日誌 (天)"
#: settings/serializers/cleaning.py:27 #: settings/serializers/cleaning.py:27
msgid "Password change log retention days" msgid "password change log keep days (day)"
msgstr "用戶改密日誌保留天數" msgstr "改密日誌 (天)"
#: settings/serializers/cleaning.py:31 #: settings/serializers/cleaning.py:31
msgid "FTP log retention days" msgid "FTP log retention days (day)"
msgstr "上傳下載記錄保留天數" msgstr "上傳下載 (天)"
#: settings/serializers/cleaning.py:35 #: settings/serializers/cleaning.py:35
msgid "Cloud sync task history retention days" msgid "Cloud sync task history retention days (day)"
msgstr "雲同步記錄保留天數" msgstr "雲同步紀錄 (天)"
#: settings/serializers/cleaning.py:39 #: settings/serializers/cleaning.py:39
msgid "job execution retention days" msgid "job execution retention days (day)"
msgstr "作業執行歷史保留天數" msgstr "作業中心執行歷史 (天)"
#: settings/serializers/cleaning.py:43 #: settings/serializers/cleaning.py:43
msgid "Activity log retention days" msgid "Activity log retention days (day)"
msgstr "活動記錄保留天數" msgstr "活動紀錄 (天)"
#: settings/serializers/cleaning.py:46 #: settings/serializers/cleaning.py:46
msgid "Session log retention days" msgid "Session log retention days (day)"
msgstr "會話日誌保留天數" msgstr "會話日誌 (天)"
#: settings/serializers/cleaning.py:48 #: settings/serializers/cleaning.py:48
msgid "" msgid ""
@@ -7367,8 +7356,8 @@ msgid ""
msgstr "會話、錄影,命令記錄超過該時長將會被清除 (影響資料庫儲存OSS 等不受影響)" msgstr "會話、錄影,命令記錄超過該時長將會被清除 (影響資料庫儲存OSS 等不受影響)"
#: settings/serializers/cleaning.py:53 #: settings/serializers/cleaning.py:53
msgid "Change secret and push record retention days" msgid "Change secret and push record retention days (day)"
msgstr "帳號改密推送記錄保留天數" msgstr "改密推送記錄保留天數 (天)"
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69 #: settings/serializers/feature.py:23 settings/serializers/msg.py:69
msgid "Subject" msgid "Subject"
@@ -7831,32 +7820,28 @@ msgid "Watermark"
msgstr "開啟浮水印" msgstr "開啟浮水印"
#: settings/serializers/security.py:205 #: settings/serializers/security.py:205
msgid "Session content" msgid "Watermark session content"
msgstr "會話水印自訂內容" msgstr "會話水印自訂內容"
#: settings/serializers/security.py:208 #: settings/serializers/security.py:208
msgid "Console content" msgid "Watermark console content"
msgstr "管理頁面水印自訂內容" msgstr "管理頁面水印自訂內容"
#: settings/serializers/security.py:211
msgid "Font color"
msgstr "字體顏色"
#: settings/serializers/security.py:214 #: settings/serializers/security.py:214
msgid "Font size" msgid "Watermark font size"
msgstr "字體大小 (px)" msgstr "字體字號"
#: settings/serializers/security.py:217 #: settings/serializers/security.py:217
msgid "Height" msgid "Watermark height"
msgstr "高度 (px)" msgstr "單個水印高度"
#: settings/serializers/security.py:220 #: settings/serializers/security.py:220
msgid "Width" msgid "Watermark width"
msgstr "寬度 (px)" msgstr "單個水印寬度"
#: settings/serializers/security.py:223 #: settings/serializers/security.py:223
msgid "Rotate" msgid "Watermark rotate"
msgstr "旋轉 (度)" msgstr "水印旋轉角度"
#: settings/serializers/security.py:227 #: settings/serializers/security.py:227
msgid "Max idle time (minute)" msgid "Max idle time (minute)"
@@ -8150,15 +8135,15 @@ msgstr "認證失敗: (未知): {}"
msgid "Authentication success: {}" msgid "Authentication success: {}"
msgstr "認證成功: {}" msgstr "認證成功: {}"
#: settings/ws.py:228 #: settings/ws.py:226
msgid "No LDAP user was found" msgid "No LDAP user was found"
msgstr "沒有取得到 LDAP 用戶" msgstr "沒有取得到 LDAP 用戶"
#: settings/ws.py:237 #: settings/ws.py:235
msgid "Total {}, success {}, failure {}" msgid "Total {}, success {}, failure {}"
msgstr "總共 {},成功 {},失敗 {}" msgstr "總共 {},成功 {},失敗 {}"
#: settings/ws.py:241 #: settings/ws.py:239
msgid ", disabled {}" msgid ", disabled {}"
msgstr ",禁用 {}" msgstr ",禁用 {}"
@@ -11412,3 +11397,25 @@ msgstr "許可證匯入成功"
#: xpack/plugins/license/api.py:53 #: xpack/plugins/license/api.py:53
msgid "Invalid license" msgid "Invalid license"
msgstr "許可證無效" msgstr "許可證無效"
#, fuzzy
#~ msgid "Themes"
#~ msgstr "主題"
#, fuzzy
#~ msgid "domain_name"
#~ msgstr "域名稱"
#~ msgid "Task execution id"
#~ msgstr "任務執行 ID"
#~ msgid "Respectful"
#~ msgstr "尊敬的"
#~ msgid ""
#~ "Hello! The following is the failure of changing the password of your assets "
#~ "or pushing the account. Please check and handle it in time."
#~ msgstr "你好! 以下是資產改密或推送帳戶失敗的情況。 請及時檢查並處理。"
#~ msgid "EXCHANGE"
#~ msgstr "EXCHANGE"

View File

@@ -9,7 +9,7 @@
"ActionPerm": "Разрешения на действия", "ActionPerm": "Разрешения на действия",
"Address": "Адрес", "Address": "Адрес",
"AlreadyExistsPleaseRename": "Файл уже существует, пожалуйста, переименуйте его", "AlreadyExistsPleaseRename": "Файл уже существует, пожалуйста, переименуйте его",
"Announcement: ": "Объявление: ", "Announcement: ": "Объявление:",
"Authentication failed": "Ошибка аутентификации: неверное имя пользователя или пароль", "Authentication failed": "Ошибка аутентификации: неверное имя пользователя или пароль",
"AvailableShortcutKey": "Доступные горячие клавиши", "AvailableShortcutKey": "Доступные горячие клавиши",
"Back": "Назад", "Back": "Назад",

View File

@@ -1627,6 +1627,5 @@
"removeWarningMsg": "Are you sure you want to remove", "removeWarningMsg": "Are you sure you want to remove",
"setVariable": "Set variable", "setVariable": "Set variable",
"userId": "User ID", "userId": "User ID",
"userName": "User name", "userName": "User name"
"LeakPasswordList": "Leaked password list"
} }

View File

@@ -122,7 +122,7 @@
"AppletHelpText": "В процессе загрузки, если приложение отсутствует, оно будет создано; если уже существует, будет выполнено обновление.", "AppletHelpText": "В процессе загрузки, если приложение отсутствует, оно будет создано; если уже существует, будет выполнено обновление.",
"AppletHostCreate": "Добавить сервер RemoteApp", "AppletHostCreate": "Добавить сервер RemoteApp",
"AppletHostDetail": "Подробности о хосте RemoteApp", "AppletHostDetail": "Подробности о хосте RemoteApp",
"AppletHostSelectHelpMessage": "При подключении к активу выбор сервера публикации приложения происходит случайным образом (но предпочтение отдается последнему использованному).<br>\nЕсли необходимо закрепить сервер публикации за конкретным активом, можно указать один из тегов:\n[AppletHost:имя_сервера], [AppletHostOnly:имя_сервера].<br>\nПри подключении к выбранному серверу публикации и выборе учётной записи применяются следующие правила:<br>\nв перечисленных ниже случаях будет использована <b>учетная запись пользователя с тем же именем</b> или <b>специальная учётная запись (начинающаяся с js)</b>,<br>\nв противном случае будет использоваться общая учётная запись (начинающаяся с jms)<br>\n 1. И сервер публикации, и приложение поддерживают одновременные подключения;<br>\n 2. Сервер публикации поддерживает одновременные подключения, а приложение — нет, и текущее приложение не использует специальную учётную запись;<br>\n 3. Сервер публикации не поддерживает одновременные подключения, а приложение может как поддерживать, так и не поддерживать одновременные подключения, и ни одно приложение не использует специализированную учетную запись;<br>\n\nПримечание: поддержка одновременных подключений со стороны приложения определяется разработчиком,<br>\nа поддержка одновременных подключений со стороны хоста определяется настройкой «один пользователь — одна сессия» в настройках сервера публикации.", "AppletHostSelectHelpMessage": "При подключении к активу выбор машины публикации приложения происходит случайным образом (но предпочтение отдается последней использованной). Если вы хотите назначить активу определенную машину, вы можете использовать следующие теги: [publishing machine: имя машины публикации] или [AppletHost: имя машины публикации]; <br>при выборе учетной записи для машины публикации в следующих ситуациях будет выбрана собственная <b>учетная запись пользователя с тем же именем или собственная учетная запись (начинающаяся с js)</b>, в противном случае будет использоваться публичная учетная запись (начинающаяся с jms):<br>&nbsp; 1. И машина публикации, и приложение поддерживают одновременные подключения; <br>&nbsp; 2. Машина публикации поддерживает одновременные подключения, а приложение — нет, и текущее приложение не использует специализированную учетную запись; <br>&nbsp; 3. Машина публикации не поддерживает одновременные подключения, а приложение может как поддерживать, так и не поддерживать одновременные подключения, и ни одно приложение не использует специализированную учетную запись; <br> Примечание: поддержка одновременных подключений со стороны приложения определяется разработчиком, а поддержка одновременных подключений со стороны хоста определяется настройкой «один пользователь — одна сессия» в конфигурации машины публикации.",
"AppletHostUpdate": "Обновить машину публикации RemoteApp", "AppletHostUpdate": "Обновить машину публикации RemoteApp",
"AppletHostZoneHelpText": "Эта зона принадлежит Системной организации", "AppletHostZoneHelpText": "Эта зона принадлежит Системной организации",
"AppletHosts": "Хост RemoteApp", "AppletHosts": "Хост RemoteApp",
@@ -447,10 +447,10 @@
"DangerCommand": "Опасная команда", "DangerCommand": "Опасная команда",
"DangerousCommandNum": "Всего опасных команд", "DangerousCommandNum": "Всего опасных команд",
"Dashboard": "Панель инструментов", "Dashboard": "Панель инструментов",
"DataMasking": "Маскирование данных", "DataMasking": "Демаскировка данных",
"DataMaskingFieldsPatternHelpTip": "Поддерживается нескольких имён полей, разделённых запятыми, а также использование подстановочного знака *.\nПримеры:\nОдно имя поля: password — выполняется маскирование только поля password.\nНесколько имён полей: password,secret — выполняется маскирование полей password и secret.\nПодстановочный знак *: password* — выполняется маскирование всех полей, имя которых начинается с password.\nПодстановочный знак .*: .*password — выполняется маскирование всех полей, имя которых оканчивается на password", "DataMaskingFieldsPatternHelpTip": "Поддержка нескольких имен полей, разделенных запятой, поддержка подстановочных знаков *\nНапример:\nОдно имя поля: password означает, что будет проведено действие по хранению в тайне поля password.\nНесколько имен полей: password, secret означает сохранение в тайне полей password и secret.\nПодстановочный знак *: password* означает, что действие будет применено к полям, содержащим префикс password.\nПодстановочный знак *: .*password означает, что действие будет применено к полям, содержащим суффикс password.",
"DataMaskingRuleHelpHelpMsg": "При подключении к активу базы данных результаты запросов могут быть подвергнуты маскированию в соответствии с этим правилом", "DataMaskingRuleHelpHelpMsg": "При подключении к базе данных активов результаты запроса могут быть обработаны в соответствии с этим правилом для обеспечения безопасности данных.",
"DataMaskingRuleHelpHelpText": "При подключении к активу базы данных можно выполнять маскирование результатов запросов в соответствии с этим правилом", "DataMaskingRuleHelpHelpText": "При подключении к базе данных активов можно обезопасить результаты запроса в соответствии с данным правилом.",
"Database": "База данных", "Database": "База данных",
"DatabaseCreate": "Создать актив - база данных", "DatabaseCreate": "Создать актив - база данных",
"DatabasePort": "Порт протокола базы данных", "DatabasePort": "Порт протокола базы данных",
@@ -1045,7 +1045,7 @@
"PrivilegedOnly": "Только привилегированные", "PrivilegedOnly": "Только привилегированные",
"PrivilegedTemplate": "Привилегированные", "PrivilegedTemplate": "Привилегированные",
"Processing": "В процессе", "Processing": "В процессе",
"ProcessingMessage": "Задача выполняется, пожалуйста, подождите ⏳", "ProcessingMessage": "Задача в процессе, пожалуйста, подождите ⏳",
"Product": "Продукт", "Product": "Продукт",
"ProfileSetting": "Данные профиля", "ProfileSetting": "Данные профиля",
"Project": "Название проекта", "Project": "Название проекта",

View File

@@ -86,7 +86,7 @@
"Expand all asset": "Развернуть все активы в папке", "Expand all asset": "Развернуть все активы в папке",
"Expire time": "Срок действия", "Expire time": "Срок действия",
"ExpiredTime": "Срок действия", "ExpiredTime": "Срок действия",
"Face Verify": "Проверка по лицу", "Face Verify": "Проверка лица",
"Face online required": "Для входа требуется верификация по лицу и мониторинг. Продолжить?", "Face online required": "Для входа требуется верификация по лицу и мониторинг. Продолжить?",
"Face verify": "Распознавание лица", "Face verify": "Распознавание лица",
"Face verify required": "Для входа требуется верификация по лицу. Продолжить?", "Face verify required": "Для входа требуется верификация по лицу. Продолжить?",
@@ -107,7 +107,7 @@
"GUI": "Графический интерфейс", "GUI": "Графический интерфейс",
"General": "Основные настройки", "General": "Основные настройки",
"Go to Settings": "Перейти в настройки", "Go to Settings": "Перейти в настройки",
"Go to profile": "Перейти в профиль", "Go to profile": "Перейти к личной информации",
"Help": "Помощь", "Help": "Помощь",
"Help or download": "Помощь → Скачать", "Help or download": "Помощь → Скачать",
"Help text": "Описание", "Help text": "Описание",

View File

@@ -1,6 +1,6 @@
from collections import defaultdict from collections import defaultdict
from django.db.models import Count, Max, F, CharField, Q from django.db.models import Count, Max, F, CharField
from django.db.models.functions import Cast from django.db.models.functions import Cast
from django.http.response import JsonResponse from django.http.response import JsonResponse
from django.utils import timezone from django.utils import timezone
@@ -18,8 +18,8 @@ from common.utils import lazyproperty
from common.utils.timezone import local_now, local_zero_hour from common.utils.timezone import local_now, local_zero_hour
from ops.const import JobStatus from ops.const import JobStatus
from orgs.caches import OrgResourceStatisticsCache from orgs.caches import OrgResourceStatisticsCache
from orgs.utils import current_org, filter_org_queryset from orgs.utils import current_org
from terminal.const import RiskLevelChoices, CommandStorageType from terminal.const import RiskLevelChoices
from terminal.models import Session, CommandStorage from terminal.models import Session, CommandStorage
__all__ = ['IndexApi'] __all__ = ['IndexApi']
@@ -123,18 +123,15 @@ class DateTimeMixin:
return self.get_logs_queryset_filter(qs, 'date_start') return self.get_logs_queryset_filter(qs, 'date_start')
@lazyproperty @lazyproperty
def command_type_queryset_list(self): def command_queryset_list(self):
qs_list = [] qs_list = []
for storage in CommandStorage.objects.exclude(name='null'): for storage in CommandStorage.objects.all():
if not storage.is_valid(): if not storage.is_valid():
continue continue
qs = storage.get_command_queryset() qs = storage.get_command_queryset()
qs = filter_org_queryset(qs) qs_list.append(self.get_logs_queryset_filter(
qs = self.get_logs_queryset_filter(
qs, 'timestamp', is_timestamp=True qs, 'timestamp', is_timestamp=True
) ))
qs_list.append((storage.type, qs))
return qs_list return qs_list
@lazyproperty @lazyproperty
@@ -146,7 +143,7 @@ class DateTimeMixin:
class DatesLoginMetricMixin: class DatesLoginMetricMixin:
dates_list: list dates_list: list
date_start_end: tuple date_start_end: tuple
command_type_queryset_list: list command_queryset_list: list
sessions_queryset: Session.objects sessions_queryset: Session.objects
ftp_logs_queryset: FTPLog.objects ftp_logs_queryset: FTPLog.objects
job_logs_queryset: JobLog.objects job_logs_queryset: JobLog.objects
@@ -264,25 +261,11 @@ class DatesLoginMetricMixin:
@lazyproperty @lazyproperty
def command_statistics(self): def command_statistics(self):
def _count_pair(_tp, _qs):
if _tp == CommandStorageType.es:
total = _qs.count(limit_to_max_result_window=False)
danger = _qs.filter(risk_level=RiskLevelChoices.reject) \
.count(limit_to_max_result_window=False)
return total, danger
agg = _qs.aggregate(
total=Count('pk'),
danger=Count('pk', filter=Q(risk_level=RiskLevelChoices.reject)),
)
return (agg['total'] or 0), (agg['danger'] or 0)
total_amount = 0 total_amount = 0
danger_amount = 0 danger_amount = 0
for tp, qs in self.command_type_queryset_list: for qs in self.command_queryset_list:
t, d = _count_pair(tp, qs) total_amount += qs.count()
total_amount += t danger_amount += qs.filter(risk_level=RiskLevelChoices.reject).count()
danger_amount += d
return total_amount, danger_amount return total_amount, danger_amount
@lazyproperty @lazyproperty

View File

@@ -160,19 +160,6 @@ class SSHClient:
try: try:
self.client.connect(**self.connect_params) self.client.connect(**self.connect_params)
self._channel = self.client.invoke_shell() self._channel = self.client.invoke_shell()
# Always perform a gentle handshake that works for servers and
# network devices: drain banner, brief settle, send newline, then
# read in quiet mode to avoid blocking on missing prompt.
try:
while self._channel.recv_ready():
self._channel.recv(self.buffer_size)
except Exception:
pass
time.sleep(0.5)
try:
self._channel.send(b'\n')
except Exception:
pass
self._get_match_recv() self._get_match_recv()
self.switch_user() self.switch_user()
except Exception as error: except Exception as error:
@@ -199,40 +186,16 @@ class SSHClient:
def _get_match_recv(self, answer_reg=DEFAULT_RE): def _get_match_recv(self, answer_reg=DEFAULT_RE):
buffer_str = '' buffer_str = ''
prev_str = '' prev_str = ''
last_change_ts = time.time()
# Quiet-mode reading only when explicitly requested, or when both
# answer regex and prompt are permissive defaults.
use_regex_match = True
if answer_reg == DEFAULT_RE and self.prompt == DEFAULT_RE:
use_regex_match = False
check_reg = self.prompt if answer_reg == DEFAULT_RE else answer_reg check_reg = self.prompt if answer_reg == DEFAULT_RE else answer_reg
while True: while True:
if self.channel.recv_ready(): if self.channel.recv_ready():
chunk = self.channel.recv(self.buffer_size).decode('utf-8', 'replace') chunk = self.channel.recv(self.buffer_size).decode('utf-8', 'replace')
if chunk: buffer_str += chunk
buffer_str += chunk
last_change_ts = time.time()
if buffer_str and buffer_str != prev_str: if buffer_str and buffer_str != prev_str:
if use_regex_match: if self.__match(check_reg, buffer_str):
if self.__match(check_reg, buffer_str):
break
else:
# Wait for a brief quiet period to approximate completion
if time.time() - last_change_ts > 0.3:
break
elif not use_regex_match and buffer_str:
# In quiet mode with some data already seen, also break after
# a brief quiet window even if buffer hasn't changed this loop.
if time.time() - last_change_ts > 0.3:
break break
elif not use_regex_match and not buffer_str:
# No data at all in quiet mode; bail after short wait
if time.time() - last_change_ts > 1.0:
break
prev_str = buffer_str prev_str = buffer_str
time.sleep(0.01) time.sleep(0.01)

View File

@@ -76,8 +76,7 @@ class JMSInventory:
proxy_command_list.extend(["-W", "%h:%p", "-q"]) proxy_command_list.extend(["-W", "%h:%p", "-q"])
if gateway.password: if gateway.password:
password = gateway.password.replace("%", "%%") proxy_command_list.insert(0, f"sshpass -p {gateway.password}")
proxy_command_list.insert(0, f"sshpass -p '{password}'")
if gateway.private_key: if gateway.private_key:
proxy_command_list.append(f"-i {gateway.get_private_key_path(path_dir)}") proxy_command_list.append(f"-i {gateway.get_private_key_path(path_dir)}")

View File

@@ -6,7 +6,6 @@ from rest_framework.generics import ListAPIView, CreateAPIView
from rest_framework.views import Response from rest_framework.views import Response
from rest_framework_bulk.generics import BulkModelViewSet from rest_framework_bulk.generics import BulkModelViewSet
from common.api.action import RenderToJsonMixin
from common.drf.filters import IDSpmFilterBackend from common.drf.filters import IDSpmFilterBackend
from users.utils import LoginIpBlockUtil from users.utils import LoginIpBlockUtil
from ..models import LeakPasswords from ..models import LeakPasswords
@@ -62,7 +61,7 @@ class UnlockIPSecurityAPI(CreateAPIView):
return Response(status=200) return Response(status=200)
class LeakPasswordViewSet(BulkModelViewSet, RenderToJsonMixin): class LeakPasswordViewSet(BulkModelViewSet):
serializer_class = LeakPasswordPSerializer serializer_class = LeakPasswordPSerializer
model = LeakPasswords model = LeakPasswords
rbac_perms = { rbac_perms = {
@@ -71,12 +70,6 @@ class LeakPasswordViewSet(BulkModelViewSet, RenderToJsonMixin):
queryset = LeakPasswords.objects.none() queryset = LeakPasswords.objects.none()
search_fields = ['password'] search_fields = ['password']
def get_object(self):
pk = self.kwargs.get('pk')
if pk:
return self.get_queryset().get(id=pk)
return super().get_object()
def get_queryset(self): def get_queryset(self):
return LeakPasswords.objects.using('sqlite').all() return LeakPasswords.objects.using('sqlite').all()

View File

@@ -12,43 +12,43 @@ class CleaningSerializer(serializers.Serializer):
LOGIN_LOG_KEEP_DAYS = serializers.IntegerField( LOGIN_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Login log retention days"), label=_("Login log retention days (day)"),
) )
TASK_LOG_KEEP_DAYS = serializers.IntegerField( TASK_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Task log retention days"), label=_("Task log retention days (day)"),
) )
OPERATE_LOG_KEEP_DAYS = serializers.IntegerField( OPERATE_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Operate log retention days"), label=_("Operate log retention days (day)"),
) )
PASSWORD_CHANGE_LOG_KEEP_DAYS = serializers.IntegerField( PASSWORD_CHANGE_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Password change log retention days"), label=_("password change log keep days (day)"),
) )
FTP_LOG_KEEP_DAYS = serializers.IntegerField( FTP_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("FTP log retention days"), label=_("FTP log retention days (day)"),
) )
CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = serializers.IntegerField( CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Cloud sync task history retention days"), label=_("Cloud sync task history retention days (day)"),
) )
JOB_EXECUTION_KEEP_DAYS = serializers.IntegerField( JOB_EXECUTION_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("job execution retention days"), label=_("job execution retention days (day)"),
) )
ACTIVITY_LOG_KEEP_DAYS = serializers.IntegerField( ACTIVITY_LOG_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Activity log retention days"), label=_("Activity log retention days (day)"),
) )
TERMINAL_SESSION_KEEP_DURATION = serializers.IntegerField( TERMINAL_SESSION_KEEP_DURATION = serializers.IntegerField(
min_value=MIN_VALUE, max_value=99999, required=True, label=_('Session log retention days'), min_value=MIN_VALUE, max_value=99999, required=True, label=_('Session log retention days (day)'),
help_text=_( help_text=_(
'Session, record, command will be delete if more than duration, only in database, OSS will not be affected.') 'Session, record, command will be delete if more than duration, only in database, OSS will not be affected.')
) )
ACCOUNT_CHANGE_SECRET_RECORD_KEEP_DAYS = serializers.IntegerField( ACCOUNT_CHANGE_SECRET_RECORD_KEEP_DAYS = serializers.IntegerField(
min_value=MIN_VALUE, max_value=9999, min_value=MIN_VALUE, max_value=9999,
label=_("Change secret and push record retention days"), label=_("Change secret and push record retention days (day)"),
) )

View File

@@ -202,25 +202,25 @@ class SecuritySessionSerializer(serializers.Serializer):
required=True, label=_('Watermark'), required=True, label=_('Watermark'),
) )
SECURITY_WATERMARK_SESSION_CONTENT = serializers.CharField( SECURITY_WATERMARK_SESSION_CONTENT = serializers.CharField(
required=False, label=_('Session content'), required=False, label=_('Watermark session content'),
) )
SECURITY_WATERMARK_CONSOLE_CONTENT = serializers.CharField( SECURITY_WATERMARK_CONSOLE_CONTENT = serializers.CharField(
required=False, label=_("Console content") required=False, label=_("Watermark console content")
) )
SECURITY_WATERMARK_COLOR = serializers.CharField( SECURITY_WATERMARK_COLOR = serializers.CharField(
max_length=32, default="", label=_("Font color") max_length=32, default="", label=_("Color")
) )
SECURITY_WATERMARK_FONT_SIZE = serializers.IntegerField( SECURITY_WATERMARK_FONT_SIZE = serializers.IntegerField(
required=False, label=_('Font size'), min_value=1, max_value=100, required=False, label=_('Watermark font size'), min_value=1, max_value=100,
) )
SECURITY_WATERMARK_HEIGHT = serializers.IntegerField( SECURITY_WATERMARK_HEIGHT = serializers.IntegerField(
required=False, label=_('Height'), default=200 required=False, label=_('Watermark height'), default=200
) )
SECURITY_WATERMARK_WIDTH = serializers.IntegerField( SECURITY_WATERMARK_WIDTH = serializers.IntegerField(
required=False, label=_('Width'), default=200 required=False, label=_('Watermark width'), default=200
) )
SECURITY_WATERMARK_ROTATE = serializers.IntegerField( SECURITY_WATERMARK_ROTATE = serializers.IntegerField(
required=False, label=_('Rotate'), default=45 required=False, label=_('Watermark rotate'), default=45
) )
SECURITY_MAX_IDLE_TIME = serializers.IntegerField( SECURITY_MAX_IDLE_TIME = serializers.IntegerField(
min_value=1, max_value=99999, required=False, min_value=1, max_value=99999, required=False,

View File

@@ -36,16 +36,16 @@ class CommandFilter(filters.FilterSet):
date_from = self.form.cleaned_data.get('date_from') date_from = self.form.cleaned_data.get('date_from')
date_to = self.form.cleaned_data.get('date_to') date_to = self.form.cleaned_data.get('date_to')
_filters = {} filters = {}
if date_from: if date_from:
date_from = date_from.timestamp() date_from = date_from.timestamp()
_filters['timestamp__gte'] = date_from filters['timestamp__gte'] = date_from
if date_to: if date_to:
date_to = date_to.timestamp() date_to = date_to.timestamp()
_filters['timestamp__lte'] = date_to filters['timestamp__lte'] = date_to
qs = qs.filter(**_filters) qs = qs.filter(**filters)
return qs return qs
def filter_by_asset_id(self, queryset, name, value): def filter_by_asset_id(self, queryset, name, value):

View File

@@ -41,7 +41,7 @@ class Command(AbstractSessionCommand):
'timestamp': int(d.timestamp()), 'timestamp': int(d.timestamp()),
'org_id': str(org.id) 'org_id': str(org.id)
}) })
for __ in range(count) for i in range(count)
] ]
cls.objects.bulk_create(commands) cls.objects.bulk_create(commands)
print(f'Create {len(commands)} commands of org ({org})') print(f'Create {len(commands)} commands of org ({org})')