mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-12-15 08:32:48 +00:00
Compare commits
12 Commits
revert-162
...
ibuler-pat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4be20515ca | ||
|
|
a1b5eb1cd8 | ||
|
|
24ac642c5e | ||
|
|
e4f5e21219 | ||
|
|
a2aae9db47 | ||
|
|
206c43cf75 | ||
|
|
019a657ec3 | ||
|
|
fad60ee40f | ||
|
|
1728412793 | ||
|
|
3e93034fbc | ||
|
|
f4b3a7d73a | ||
|
|
3781c40179 |
26
.github/.github/issue-spam-config.json
vendored
Normal file
26
.github/.github/issue-spam-config.json
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
from django.db import transaction
|
||||
from django.shortcuts import get_object_or_404
|
||||
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.generics import ListAPIView, CreateAPIView
|
||||
from rest_framework.response import Response
|
||||
@@ -184,12 +185,56 @@ class AssetAccountBulkCreateApi(CreateAPIView):
|
||||
'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):
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
data = serializer.create(serializer.validated_data)
|
||||
serializer = serializers.AssetAccountBulkSerializerResultSerializer(data, many=True)
|
||||
return Response(data=serializer.data, status=HTTP_200_OK)
|
||||
if hasattr(request.data, "copy"):
|
||||
base_payload = request.data.copy()
|
||||
else:
|
||||
base_payload = dict(request.data)
|
||||
|
||||
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):
|
||||
|
||||
@@ -14,7 +14,7 @@ from accounts.models import Account, AccountTemplate, GatheredAccount
|
||||
from accounts.tasks import push_accounts_to_assets_task
|
||||
from assets.const import Category, AllTypes
|
||||
from assets.models import Asset
|
||||
from common.serializers import SecretReadableMixin
|
||||
from common.serializers import SecretReadableMixin, CommonBulkModelSerializer
|
||||
from common.serializers.fields import ObjectRelatedField, LabeledChoiceField
|
||||
from common.utils import get_logger
|
||||
from .base import BaseAccountSerializer, AuthValidateMixin
|
||||
@@ -292,27 +292,27 @@ class AccountDetailSerializer(AccountSerializer):
|
||||
|
||||
class AssetAccountBulkSerializerResultSerializer(serializers.Serializer):
|
||||
asset = serializers.CharField(read_only=True, label=_('Asset'))
|
||||
account = serializers.CharField(read_only=True, label=_('Account'))
|
||||
state = serializers.CharField(read_only=True, label=_('State'))
|
||||
error = serializers.CharField(read_only=True, label=_('Error'))
|
||||
changed = serializers.BooleanField(read_only=True, label=_('Changed'))
|
||||
|
||||
|
||||
class AssetAccountBulkSerializer(
|
||||
AccountCreateUpdateSerializerMixin, AuthValidateMixin, serializers.ModelSerializer
|
||||
AccountCreateUpdateSerializerMixin, AuthValidateMixin, CommonBulkModelSerializer
|
||||
):
|
||||
su_from_username = serializers.CharField(
|
||||
max_length=128, required=False, write_only=True, allow_null=True, label=_("Su from"),
|
||||
allow_blank=True,
|
||||
)
|
||||
assets = serializers.PrimaryKeyRelatedField(queryset=Asset.objects, many=True, label=_('Assets'))
|
||||
|
||||
class Meta:
|
||||
model = Account
|
||||
fields = [
|
||||
'name', 'username', 'secret', 'secret_type', 'secret_reset',
|
||||
'passphrase', 'privileged', 'is_active', 'comment', 'template',
|
||||
'on_invalid', 'push_now', 'params', 'assets', 'su_from_username',
|
||||
'source', 'source_id',
|
||||
'on_invalid', 'push_now', 'params',
|
||||
'su_from_username', 'source', 'source_id',
|
||||
]
|
||||
extra_kwargs = {
|
||||
'name': {'required': False},
|
||||
@@ -393,8 +393,7 @@ class AssetAccountBulkSerializer(
|
||||
handler = self._handle_err_create
|
||||
return handler
|
||||
|
||||
def perform_bulk_create(self, vd):
|
||||
assets = vd.pop('assets')
|
||||
def perform_bulk_create(self, vd, assets):
|
||||
on_invalid = vd.pop('on_invalid', 'skip')
|
||||
secret_type = vd.get('secret_type', 'password')
|
||||
|
||||
@@ -402,8 +401,7 @@ class AssetAccountBulkSerializer(
|
||||
vd['name'] = vd.get('username')
|
||||
|
||||
create_handler = self.get_create_handler(on_invalid)
|
||||
asset_ids = [asset.id for asset in assets]
|
||||
secret_type_supports = Asset.get_secret_type_assets(asset_ids, secret_type)
|
||||
secret_type_supports = Asset.get_secret_type_assets(assets, secret_type)
|
||||
|
||||
_results = {}
|
||||
for asset in assets:
|
||||
@@ -411,6 +409,7 @@ class AssetAccountBulkSerializer(
|
||||
_results[asset] = {
|
||||
'error': _('Asset does not support this secret type: %s') % secret_type,
|
||||
'state': 'error',
|
||||
'account': vd['name'],
|
||||
}
|
||||
continue
|
||||
|
||||
@@ -420,13 +419,13 @@ class AssetAccountBulkSerializer(
|
||||
self.clean_auth_fields(vd)
|
||||
instance, changed, state = self.perform_create(vd, create_handler)
|
||||
_results[asset] = {
|
||||
'changed': changed, 'instance': instance.id, 'state': state
|
||||
'changed': changed, 'instance': instance.id, 'state': state, 'account': vd['name']
|
||||
}
|
||||
except serializers.ValidationError as e:
|
||||
_results[asset] = {'error': e.detail[0], 'state': 'error'}
|
||||
_results[asset] = {'error': e.detail[0], 'state': 'error', 'account': vd['name']}
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
_results[asset] = {'error': str(e), 'state': 'error'}
|
||||
_results[asset] = {'error': str(e), 'state': 'error', 'account': vd['name']}
|
||||
|
||||
results = [{'asset': asset, **result} for asset, result in _results.items()]
|
||||
state_score = {'created': 3, 'updated': 2, 'skipped': 1, 'error': 0}
|
||||
@@ -443,7 +442,8 @@ class AssetAccountBulkSerializer(
|
||||
errors.append({
|
||||
'error': _('Account has exist'),
|
||||
'state': 'error',
|
||||
'asset': str(result['asset'])
|
||||
'asset': str(result['asset']),
|
||||
'account': result.get('account'),
|
||||
})
|
||||
if errors:
|
||||
raise serializers.ValidationError(errors)
|
||||
@@ -462,10 +462,16 @@ class AssetAccountBulkSerializer(
|
||||
account_ids = [str(_id) for _id in accounts.values_list('id', flat=True)]
|
||||
push_accounts_to_assets_task.delay(account_ids, params)
|
||||
|
||||
def create(self, validated_data):
|
||||
def bulk_create(self, validated_data, assets):
|
||||
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)
|
||||
push_now = validated_data.pop('push_now', False)
|
||||
results = self.perform_bulk_create(validated_data)
|
||||
results = self.perform_bulk_create(validated_data, assets)
|
||||
self.push_accounts_if_need(results, push_now, params)
|
||||
for res in results:
|
||||
res['asset'] = str(res['asset'])
|
||||
|
||||
@@ -408,8 +408,7 @@ class Asset(NodesRelationMixin, LabeledMixin, AbsConnectivity, JSONFilterMixin,
|
||||
return tree_node
|
||||
|
||||
@staticmethod
|
||||
def get_secret_type_assets(asset_ids, secret_type):
|
||||
assets = Asset.objects.filter(id__in=asset_ids)
|
||||
def get_secret_type_assets(assets, secret_type):
|
||||
asset_protocol = assets.prefetch_related('protocols').values_list('id', 'protocols__name')
|
||||
protocol_secret_types_map = const.Protocol.protocol_secret_types()
|
||||
asset_secret_types_mapp = defaultdict(set)
|
||||
|
||||
@@ -23,6 +23,8 @@ logger = get_logger(__name__)
|
||||
|
||||
class OperatorLogHandler(metaclass=Singleton):
|
||||
CACHE_KEY = 'OPERATOR_LOG_CACHE_KEY'
|
||||
SYSTEM_OBJECTS = frozenset({"Role"})
|
||||
PREFER_CURRENT_ELSE_USER = frozenset({"SSOToken"})
|
||||
|
||||
def __init__(self):
|
||||
self.log_client = self.get_storage_client()
|
||||
@@ -142,13 +144,21 @@ class OperatorLogHandler(metaclass=Singleton):
|
||||
after = self.__data_processing(after)
|
||||
return before, after
|
||||
|
||||
@staticmethod
|
||||
def get_org_id(object_name):
|
||||
system_obj = ('Role',)
|
||||
org_id = get_current_org_id()
|
||||
if object_name in system_obj:
|
||||
org_id = Organization.SYSTEM_ID
|
||||
return org_id
|
||||
def get_org_id(self, user, object_name):
|
||||
if object_name in self.SYSTEM_OBJECTS:
|
||||
return Organization.SYSTEM_ID
|
||||
|
||||
current = get_current_org_id()
|
||||
current_id = str(current) if current else None
|
||||
|
||||
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(
|
||||
self, action, resource_type, resource=None, resource_display=None,
|
||||
@@ -168,7 +178,7 @@ class OperatorLogHandler(metaclass=Singleton):
|
||||
# 前后都没变化,没必要生成日志,除非手动强制保存
|
||||
return
|
||||
|
||||
org_id = self.get_org_id(object_name)
|
||||
org_id = self.get_org_id(user, object_name)
|
||||
data = {
|
||||
'id': log_id, "user": str(user), 'action': action,
|
||||
'resource_type': str(resource_type), 'org_id': org_id,
|
||||
|
||||
@@ -603,7 +603,7 @@ class JSONManyToManyField(models.JSONField):
|
||||
return None
|
||||
if isinstance(value, RelatedManager):
|
||||
value = value.value
|
||||
return value
|
||||
return json.dumps(value)
|
||||
|
||||
def validate(self, value, model_instance):
|
||||
super().validate(value, model_instance)
|
||||
|
||||
@@ -162,6 +162,7 @@ class FeiShu(RequestMixin):
|
||||
except Exception as e:
|
||||
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)
|
||||
default_detail = self.default_user_detail(data, user_id)
|
||||
detail = map_attributes(default_detail, info, self.attributes)
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,14 +18,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr ""
|
||||
|
||||
@@ -456,7 +456,7 @@ msgstr ""
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -518,13 +518,14 @@ msgstr ""
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -614,7 +615,7 @@ msgstr ""
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -784,7 +785,7 @@ msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1008,7 +1009,7 @@ msgid "Verify asset account"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1228,54 +1229,46 @@ msgstr ""
|
||||
msgid "Has secret"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1299,7 +1292,7 @@ msgstr ""
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1718,7 +1711,7 @@ msgstr ""
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
@@ -1839,6 +1832,18 @@ msgstr ""
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2581,19 +2586,19 @@ msgstr ""
|
||||
msgid "Custom info"
|
||||
msgstr ""
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr ""
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr ""
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr ""
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr ""
|
||||
|
||||
@@ -3456,7 +3461,7 @@ msgstr ""
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
@@ -3735,35 +3740,35 @@ msgstr ""
|
||||
msgid "Reusable connection token is not allowed, global setting not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr ""
|
||||
|
||||
@@ -3837,7 +3842,7 @@ msgstr ""
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr ""
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr ""
|
||||
|
||||
@@ -4056,16 +4061,16 @@ msgstr ""
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr ""
|
||||
|
||||
@@ -4182,21 +4187,28 @@ msgstr ""
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
msgstr ""
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr ""
|
||||
|
||||
@@ -4678,22 +4690,22 @@ msgstr ""
|
||||
msgid "LAN"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr ""
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr ""
|
||||
@@ -4830,7 +4842,7 @@ msgstr ""
|
||||
msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr ""
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr ""
|
||||
|
||||
@@ -5343,7 +5355,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "Labels"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
@@ -7268,39 +7280,39 @@ msgid "Period clean"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgid "Login log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgid "Task log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgid "Password change log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgid "job execution retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgid "Session log retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
@@ -7310,7 +7322,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
@@ -7771,28 +7783,32 @@ msgid "Watermark"
|
||||
msgstr ""
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgstr ""
|
||||
msgid "Session content"
|
||||
msgstr "Custom content for session"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgstr ""
|
||||
msgid "Console content"
|
||||
msgstr "Custom content on the management page"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "Font color"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr ""
|
||||
msgid "Font size"
|
||||
msgstr "Font size (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr ""
|
||||
msgid "Height"
|
||||
msgstr "Height (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr ""
|
||||
msgid "Width"
|
||||
msgstr "Height (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr ""
|
||||
msgid "Rotate"
|
||||
msgstr "Rotate (degree)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8084,15 +8100,15 @@ msgstr ""
|
||||
msgid "Authentication success: {}"
|
||||
msgstr ""
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr ""
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr ""
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,14 +18,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "La cuenta ya existe"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr "Cuenta no encontrada"
|
||||
|
||||
@@ -484,7 +484,7 @@ msgstr ""
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -546,13 +546,14 @@ msgstr "Estado de cambio de contraseña"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -645,7 +646,7 @@ msgstr "Ícono"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -818,7 +819,7 @@ msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1049,7 +1050,7 @@ msgid "Verify asset account"
|
||||
msgstr "Verificación de cuentas"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1286,54 +1287,46 @@ msgstr "La cuenta ya existe. El campo: {fields} debe ser único."
|
||||
msgid "Has secret"
|
||||
msgstr "Contraseña ya gestionada"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "Estado"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "Modificado"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "Tipo de cuenta de activos no soportado: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "La cuenta ya existe"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "Información especial"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1358,7 +1351,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1824,7 +1817,7 @@ msgstr "Cuenta exitosa"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "No"
|
||||
|
||||
@@ -1950,6 +1943,18 @@ msgstr "Persona aprobadora"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2730,19 +2735,19 @@ msgstr "Recopilar información sobre hardware de activos"
|
||||
msgid "Custom info"
|
||||
msgstr "Atributos personalizados"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "Se puede actualizar la información del hardware de activos"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "Se puede probar la conectividad de los activos"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "Se pueden emparejar activos"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "Se pueden modificar nodos de activos"
|
||||
|
||||
@@ -3651,7 +3656,7 @@ msgstr "Tarea"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "Es"
|
||||
|
||||
@@ -3949,37 +3954,37 @@ msgstr ""
|
||||
"No se permite el uso de tokens de conexión reutilizables, no se han "
|
||||
"habilitado configuraciones globales."
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "Las cuentas anónimas no son compatibles con los activos actuales."
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "La autorización ha expirado."
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "La acción de ACL es rechazar: {}({})"
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "La acción de ACL es revisar."
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "La acción de ACL es verificación facial."
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr ""
|
||||
"La regla de inicio de sesión del activo no es compatible con los activos "
|
||||
"actuales."
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "La acción de ACL es verificación facial en línea."
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "No hay características faciales disponibles."
|
||||
|
||||
@@ -4061,7 +4066,7 @@ msgstr ""
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "El token de actualización o la caché son inválidos."
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "Error de OpenID"
|
||||
|
||||
@@ -4292,18 +4297,18 @@ msgstr "Tu contraseña es inválida"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "Por favor, inténtalo de nuevo en %s segundos"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr ""
|
||||
"Tu contraseña es demasiado simple, por razones de seguridad, modifícala"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr ""
|
||||
"Antes de completar el inicio de sesión, por favor, modifique su contraseña."
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr "Su contraseña ha expirado; modifíquela antes de iniciar sesión."
|
||||
|
||||
@@ -4430,11 +4435,20 @@ msgstr ""
|
||||
"Error de autenticación (fallo en la verificación antes de iniciar sesión): "
|
||||
"{}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "Usuario no válido"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
@@ -4443,11 +4457,11 @@ msgstr ""
|
||||
"usuario'; la fuente actual del usuario es {}, por favor contacte al "
|
||||
"administrador."
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "El método MFA ({}) no está habilitado"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "Por favor, modifica la contraseña"
|
||||
|
||||
@@ -4966,24 +4980,24 @@ msgstr "¿Reintentar?"
|
||||
msgid "LAN"
|
||||
msgstr "Red local"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr ""
|
||||
"Si tienes alguna duda o necesidad, por favor contacta al administrador del "
|
||||
"sistema"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "Error al consultar el usuario %s"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%s ya está vinculado a otro usuario"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "Vinculación de %s exitosa"
|
||||
@@ -5126,7 +5140,7 @@ msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr ""
|
||||
"Por favor inicie sesión con su contraseña y luego vincule WeChat empresarial"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr ""
|
||||
"Formato de archivo subido incorrecto o archivo de otro tipo de recurso"
|
||||
@@ -5690,7 +5704,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "Gestión de etiquetas"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "Color"
|
||||
|
||||
@@ -7816,40 +7830,40 @@ msgid "Period clean"
|
||||
msgstr "Limpieza programada"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "Registro de inicio de sesión (días)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "Días de retención de los registros de inicio de sesión"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "Registro de tareas (días)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "Días de retención de los registros de tareas"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "Registro de acciones (días)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "Días de retención de los registros de acción"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "Registro de cambios de contraseña"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "Días de retención de los registros de cambio de contraseña de usuario"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "Subidas y descargas (días)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "Días de retención de los registros de subida y descarga"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "Sincronización de registros en la nube (días)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "Días de retención de los registros de sincronización en la nube"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "Historial de ejecución del centro de tareas (días)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "Días de retención del historial de ejecución de trabajos"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "Registro de actividades (días)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "Días de retención de los registros de actividades"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "Registro de sesiones (días)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "Días de retención de los registros de sesiones"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7861,8 +7875,10 @@ msgstr ""
|
||||
"etc.)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "Días de conservación de los registros de cambio de contraseña (días)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr ""
|
||||
"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
|
||||
msgid "Subject"
|
||||
@@ -8418,29 +8434,32 @@ msgid "Watermark"
|
||||
msgstr "Activar marca de agua"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgstr "Contenido de personalización de la marca de agua de la sesión"
|
||||
msgid "Session content"
|
||||
msgstr "Contenido personalizado de marca de agua de sesión"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgstr ""
|
||||
"Contenido de personalización de la marca de agua en la página de gestión"
|
||||
msgid "Console content"
|
||||
msgstr "Contenido personalizado de marca de agua de página de gestión"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "Color de fuente"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "Tamaño y tipo de fuente"
|
||||
msgid "Font size"
|
||||
msgstr "Tamaño de fuente (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "Altura de la marca de agua individual"
|
||||
msgid "Height"
|
||||
msgstr "Altura (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "Ancho de la marca de agua individual"
|
||||
msgid "Width"
|
||||
msgstr "Ancho (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "Ángulo de rotación de la marca de agua"
|
||||
msgid "Rotate"
|
||||
msgstr "Rotación (grados)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8774,15 +8793,15 @@ msgstr "Error de autenticación: (desconocido): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "Autenticación exitosa: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "No se obtuvo ningún usuario LDAP"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "Total: {}, Éxitos: {}, Fracasos: {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ", deshabilitar {}"
|
||||
|
||||
@@ -12231,28 +12250,3 @@ msgstr "Importación de licencia exitosa"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
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"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,14 +18,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "アカウントはすでに存在しています"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr "アカウントが見つかりません"
|
||||
|
||||
@@ -459,7 +459,7 @@ msgstr "Vault 操作に失敗しました。再試行するか、Vault のアカ
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -536,13 +536,14 @@ msgstr "変更状態"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -635,7 +636,7 @@ msgstr "アイコン"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -808,7 +809,7 @@ msgid "Status"
|
||||
msgstr "ステータス"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1032,7 +1033,7 @@ msgid "Verify asset account"
|
||||
msgstr "アカウントの確認"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1255,54 +1256,46 @@ msgstr "アカウントは既に存在します。フィールド:{fields}は
|
||||
msgid "Has secret"
|
||||
msgstr "エスクローされたパスワード"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "状態"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "編集済み"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "アセットはアカウント タイプをサポートしていません: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "アカウントはすでに存在しています"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "特別情報"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1327,7 +1320,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "ユーザー"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1741,7 +1734,7 @@ msgstr "成功したアカウント"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
@@ -1863,6 +1856,18 @@ msgstr "レビュー担当者"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2614,19 +2619,19 @@ msgstr "資産ハードウェア情報の収集"
|
||||
msgid "Custom info"
|
||||
msgstr "カスタム属性"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "資産ハードウェア情報を更新できます"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "資産接続をテストできます"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "アセットを一致させることができます"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "資産ノードを変更できます"
|
||||
|
||||
@@ -3500,7 +3505,7 @@ msgstr "タスク"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
@@ -3779,35 +3784,35 @@ msgstr "この操作には、MFAを検証する必要があります"
|
||||
msgid "Reusable connection token is not allowed, global setting not enabled"
|
||||
msgstr "再使用可能な接続トークンの使用は許可されていません。グローバル設定は有効になっていません"
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "匿名アカウントはこのプロパティではサポートされていません"
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "承認の有効期限が切れています"
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "ACL アクションは拒否です: {}({})"
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "ACL アクションはレビューです"
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "ACL Action は顔認証です"
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr "資産ログインルールは現在の資産をサポートしていません"
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "ACL Action は顔オンラインです"
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "利用可能な顔の特徴はありません"
|
||||
|
||||
@@ -3882,7 +3887,7 @@ msgstr "無効なトークンヘッダー。署名文字列に無効な文字を
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "無効なトークンまたはキャッシュの更新。"
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "OpenID エラー"
|
||||
|
||||
@@ -4101,16 +4106,16 @@ msgstr "パスワードが無効です"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "%s 秒後に再試行してください"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr "パスワードがシンプルすぎるので、セキュリティのために変更してください"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr "ログインする前にパスワードを変更する必要があります"
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr "パスワードの有効期限が切れました。ログインする前にリセットしてください。"
|
||||
|
||||
@@ -4227,21 +4232,27 @@ msgstr "無効にする電話番号をクリアする"
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr "認証に失敗しました (ログインチェックが失敗する前): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "無効なユーザーです"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
msgstr "管理者は「ユーザーソースからのみログインを許可」をオンにしており、現在のユーザーソースは {} です。管理者に連絡してください。"
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "MFAタイプ ({}) が有効になっていない"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "パスワードを変更してください"
|
||||
|
||||
@@ -4725,22 +4736,22 @@ msgstr "再試行しますか?"
|
||||
msgid "LAN"
|
||||
msgstr "ローカルエリアネットワーク"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr "質問があったら、管理者に連絡して下さい"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "%sユーザーのクエリに失敗しました"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%sが別のユーザーにバインドされています。"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "バインド%s成功"
|
||||
@@ -4879,7 +4890,7 @@ msgstr "企業の微信からユーザーを取得できませんでした"
|
||||
msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr "パスワードでログインしてからWeComをバインドしてください"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr "リクエストファイルの形式が間違っている可能性があります"
|
||||
|
||||
@@ -5396,7 +5407,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "ラベル"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "色"
|
||||
|
||||
@@ -7356,40 +7367,40 @@ msgid "Period clean"
|
||||
msgstr "定時清掃"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "ログインログは日数を保持します(天)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "ログインログ保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "タスクログは日数を保持します(天)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "タスクログ保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "ログ管理日を操作する(天)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "アクションログ保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "パスワード変更ログ(天)"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "ユーザー変更パスワードログ保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "タスクログは日数を保持します(天)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "アップロードダウンロード記録保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "タスクログは日数を保持します(天)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "クラウド同期記録保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "ジョブセンターの実行履歴 (天) "
|
||||
msgid "job execution retention days"
|
||||
msgstr "作業実行履歴保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "活動ログは日数を保持します(天)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "活動記録保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "ログインログは日数を保持します(天)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "セッションログ保持日数"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7399,8 +7410,8 @@ msgstr ""
|
||||
"この期間を超えるセッション、録音、およびコマンド レコードは削除されます (データベースのバックアップに影響し、OSS などには影響しません)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "パスワード変更プッシュ記録を保持する日数 (日)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr "アカウント変更パスワードプッシュ記録保持日数"
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
msgid "Subject"
|
||||
@@ -7872,28 +7883,32 @@ msgid "Watermark"
|
||||
msgstr "透かしの有効化"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgstr "セッションウォーターマークカスタム内容"
|
||||
msgid "Session content"
|
||||
msgstr "セッションウォーターマークのカスタム内容"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgstr "管理ページのウォーターマークカスタム内容"
|
||||
msgid "Console content"
|
||||
msgstr "管理ページウォーターマークのカスタム内容"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "フォントカラー"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "フォントサイズ"
|
||||
msgid "Font size"
|
||||
msgstr "フォントサイズ (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "単一ウォーターマークの高さ"
|
||||
msgid "Height"
|
||||
msgstr "高さ (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "単一ウォーターマークの幅"
|
||||
msgid "Width"
|
||||
msgstr "幅 (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "ウォーターマークの回転角度"
|
||||
msgid "Rotate"
|
||||
msgstr "回転 (度)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8195,15 +8210,15 @@ msgstr "認証に失敗しました (不明): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "認証成功: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "LDAPユーザーが取得されませんでした"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "合計 {},成功 {},失敗 {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr "無効 {}"
|
||||
|
||||
@@ -11471,3 +11486,18 @@ msgstr "ライセンスのインポートに成功"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
msgstr "ライセンスが無効です"
|
||||
|
||||
#~ msgid "Watermark console content"
|
||||
#~ msgstr "管理ページのウォーターマークカスタム内容"
|
||||
|
||||
#~ msgid "Watermark font size"
|
||||
#~ msgstr "フォントサイズ"
|
||||
|
||||
#~ msgid "Watermark height"
|
||||
#~ msgstr "単一ウォーターマークの高さ"
|
||||
|
||||
#~ msgid "Watermark width"
|
||||
#~ msgstr "単一ウォーターマークの幅"
|
||||
|
||||
#~ msgid "Watermark rotate"
|
||||
#~ msgstr "ウォーターマークの回転角度"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,14 +18,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "계정이 이미 존재합니다"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr "계정을 찾을 수 없습니다"
|
||||
|
||||
@@ -459,7 +459,7 @@ msgstr "Vault 작업이 실패했습니다. 다시 시도하거나 Vault의 계
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -521,13 +521,14 @@ msgstr "비밀번호 변경 상태"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -620,7 +621,7 @@ msgstr "아이콘"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -793,7 +794,7 @@ msgid "Status"
|
||||
msgstr "상태"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1017,7 +1018,7 @@ msgid "Verify asset account"
|
||||
msgstr "계정 검증"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1241,54 +1242,46 @@ msgstr "계정이 이미 존재합니다. 필드: {fields}는 고유해야 합
|
||||
msgid "Has secret"
|
||||
msgstr "이미 관리된 비밀번호"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "상태"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "수정됨"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "자산이 지원하지 않는 계정 유형: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "계정이 이미 존재합니다"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "특별 정보"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1313,7 +1306,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "사용자"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1731,7 +1724,7 @@ msgstr "성공한 계정"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "아니요"
|
||||
|
||||
@@ -1853,6 +1846,18 @@ msgstr "승인자"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2606,19 +2611,19 @@ msgstr "자산 하드웨어 정보 수집"
|
||||
msgid "Custom info"
|
||||
msgstr "사용자 정의 속성"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "자산 하드웨어 정보를 업데이트할 수 있습니다"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "자산 연결성을 테스트할 수 있습니다."
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "자산을 매칭할 수 있습니다."
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "자산 노드를 수정할 수 있습니다."
|
||||
|
||||
@@ -3491,7 +3496,7 @@ msgstr "업무"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "입니다"
|
||||
|
||||
@@ -3769,35 +3774,35 @@ msgstr "이 작업은 귀하의 MFA를 확인해야 하므로, 먼저 활성화
|
||||
msgid "Reusable connection token is not allowed, global setting not enabled"
|
||||
msgstr "재사용 가능한 연결 토큰은 허용되지 않으며, 글로벌 설정이 활성화되지 않았습니다."
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "익명 계정은 현재 자산을 지원하지 않습니다."
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "권한이 만료되었습니다."
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "ACL Action은 거부: {}({})입니다."
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "ACL Action은 재검토입니다."
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "ACL Action은 얼굴 인식입니다."
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr "자산 로그인 규칙은 현재 자산을 지원하지 않습니다."
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "ACL Action은 온라인 얼굴 인식입니다."
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "사용 가능한 얼굴 특징이 없습니다."
|
||||
|
||||
@@ -3879,7 +3884,7 @@ msgstr "유효하지 않은 토큰 헤더입니다. 기호 문자열에는 유
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "새로 고침된 토큰 또는 캐시가 유효하지 않습니다."
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "OpenID 오류"
|
||||
|
||||
@@ -4100,16 +4105,16 @@ msgstr "귀하의 비밀번호가 유효하지 않습니다"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "%s 초 후에 다시 시도해주세요."
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr "비밀번호가 너무 간단합니다. 보안을 위해 수정해주세요."
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr "로그인 완료 전에 비밀번호를 먼저 수정해주세요."
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr "당신의 비밀번호가 만료되었습니다. 수정 후 로그인해주세요."
|
||||
|
||||
@@ -4226,21 +4231,27 @@ msgstr "전화번호 삭제로 비활성화"
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr "인증 실패 (로그인 전 검사 실패): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "무효한 사용자"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
msgstr "관리자가 '사용자 출처에서만 로그인 허용'을 활성화하였습니다. 현재 사용자 출처는 {}이며 관리자를 연락하십시오."
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "해당 MFA ({}) 방식이 활성화되지 않았습니다."
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "비밀번호를 수정하십시오."
|
||||
|
||||
@@ -4726,22 +4737,22 @@ msgstr "재시도 하시겠습니까?"
|
||||
msgid "LAN"
|
||||
msgstr "지역 네트워크"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr "질문이나 요구 사항이 있는 경우 시스템 관리자에게 문의해 주세요"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "%s 사용자 조회 실패"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%s 다른 사용자에 이미 바인딩되었습니다."
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "%s 바인딩 성공"
|
||||
@@ -4880,7 +4891,7 @@ msgstr "기업 WeChat에서 사용자 정보를 가져오지 못했습니다."
|
||||
msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr "密码로 로그인한 후 기업 WeChat을 연결해 주시기 바랍니다."
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr "업로드한 파일 형식이 잘못되었거나 다른 유형의 리소스 파일입니다."
|
||||
|
||||
@@ -5398,7 +5409,7 @@ msgstr "태그 관리"
|
||||
msgid "App Labels"
|
||||
msgstr "색상"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "색상"
|
||||
|
||||
@@ -7398,40 +7409,40 @@ msgid "Period clean"
|
||||
msgstr "정기 청소"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "로그인 로그 (일)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "로그인 로그 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "작업 로그 (일)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "작업 로그 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "액션 로그 (일)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "액션 로그 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "비밀번호 변경 로그"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "사용자 비밀번호 변경 로그 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "업로드 및 다운로드 (일)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "업로드 다운로드 기록 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "클라우드 동기화 기록 (일)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "클라우드 동기화 기록 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "작업 센터 실행 이력 (일)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "작업 실행 이력 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "활동 기록 (일)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "활동 기록 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "세션 로그 (일)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "세션 로그 보존 일수"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7441,8 +7452,8 @@ msgstr ""
|
||||
"세션, 녹화 및 명령 기록은 해당 시간을 초과하면 삭제됩니다 (데이터베이스 저장소에 영향, OSS 등은 영향을 받지 않습니다)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "비밀번호 변경 푸시 기록 보존 일수 (일)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr "계정 비밀번호 변경 푸시 기록 보존 일수"
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
msgid "Subject"
|
||||
@@ -7935,28 +7946,32 @@ msgid "Watermark"
|
||||
msgstr "워터마크 활성화"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgid "Session content"
|
||||
msgstr "세션 워터마크 사용자 정의 내용"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgid "Console content"
|
||||
msgstr "관리 페이지 워터마크 사용자 정의 내용"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "글꼴 색상"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "글꼴 크기"
|
||||
msgid "Font size"
|
||||
msgstr "글꼴 크기 (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "단일 워터마크 높이"
|
||||
msgid "Height"
|
||||
msgstr "높이 (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "단일 워터마크 너비"
|
||||
msgid "Width"
|
||||
msgstr "너비 (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "워터마크 회전 각도"
|
||||
msgid "Rotate"
|
||||
msgstr "회전 (도)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8259,15 +8274,15 @@ msgstr "인증 실패: (알 수 없음): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "인증 성공: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "LDAP 사용자를 획득하지 못함"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "총 {}명, 성공 {}명, 실패 {}명"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr "비활성화 {}"
|
||||
|
||||
@@ -11563,25 +11578,3 @@ msgstr "라이센스 가져오기 성공"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
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"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,14 +18,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "Conta já existente"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
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:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -524,13 +524,14 @@ msgstr "Status da Alteração de Senha"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -623,7 +624,7 @@ msgstr "Ícone"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -796,7 +797,7 @@ msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1040,7 +1041,7 @@ msgid "Verify asset account"
|
||||
msgstr "Conta verificada"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1274,54 +1275,46 @@ msgstr "Conta já existe. O campo: {fields} deve ser único."
|
||||
msgid "Has secret"
|
||||
msgstr "Senha já gerenciada"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "Estado"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "Modificado"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "Bens não suportam o tipo de conta: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "Conta já existente"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "Informações especiais"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1346,7 +1339,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "Usuário"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1801,7 +1794,7 @@ msgstr "Contas bem-sucedidas"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "Não"
|
||||
|
||||
@@ -1926,6 +1919,18 @@ msgstr "Aprovador"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2699,19 +2704,19 @@ msgstr "Coletar informações do hardware do ativo"
|
||||
msgid "Custom info"
|
||||
msgstr "Propriedades personalizadas"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "Pode atualizar as informações do hardware do ativo"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "Pode testar a conectividade do ativo"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "Pode correspondências de ativos"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "Pode modificar o nó do ativo"
|
||||
|
||||
@@ -3614,7 +3619,7 @@ msgstr "Tarefas"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "Sim"
|
||||
|
||||
@@ -3903,35 +3908,35 @@ msgstr ""
|
||||
"Não é permitido o uso de tokens de conexão reutilizáveis, as configurações "
|
||||
"globais não estão ativadas"
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "Contas anônimas não suportam o ativo atual"
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "A autorização expirou"
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "Ação do ACL é rejeitar: {} ({})."
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "Ação ACL é para revisão"
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "Ação ACL é verificação facial"
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr "As regras de login de ativos não suportam o ativo atual"
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "Ação ACL é facial online"
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "Não há características faciais disponíveis"
|
||||
|
||||
@@ -4013,7 +4018,7 @@ msgstr ""
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "O token de atualização ou o cache é inválido."
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "Erro OpenID"
|
||||
|
||||
@@ -4240,16 +4245,16 @@ msgstr "Sua senha é inválida"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "Por favor, tente novamente após %s segundos"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr "Sua senha é muito simples, por segurança, favor alterar"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr "Antes de finalizar o login, favor alterar a senha"
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr "Sua senha expirou, modifique antes de fazer login"
|
||||
|
||||
@@ -4370,11 +4375,20 @@ msgstr "Desativar limpeza de número de telefone"
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr "Falha de autenticação (verificação pré-login falhou): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "Usuário inválido"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
@@ -4382,11 +4396,11 @@ msgstr ""
|
||||
"O administrador ativou 'Apenas login a partir da fonte do usuário', a origem"
|
||||
" do usuário atual é {}, por favor, contate o administrador."
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "Este método MFA ({}) não está ativado"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "Por favor, altere sua senha."
|
||||
|
||||
@@ -4903,24 +4917,24 @@ msgstr "Deseja tentar novamente?"
|
||||
msgid "LAN"
|
||||
msgstr "Rede Local"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr ""
|
||||
"Em caso de dúvidas ou necessidades, por favor, entre em contato com o "
|
||||
"administrador do sistema"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "%s Falha ao consultar o usuário"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%s já está vinculado a outro usuário"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "Vinculação com %s bem sucedida"
|
||||
@@ -5063,7 +5077,7 @@ msgstr "Falha ao obter o usuário do WeChat Corporativo"
|
||||
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"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr "Formato de arquivo enviado errado ou outro tipo de recurso do arquivo"
|
||||
|
||||
@@ -5604,7 +5618,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "Gerenciar tags"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "Cor"
|
||||
|
||||
@@ -7657,40 +7671,40 @@ msgid "Period clean"
|
||||
msgstr "Limpeza Programada"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "Logins (dias)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "Número de dias para retenção de logs de login"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "Log de tarefas (dias)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "Número de dias para retenção de logs de tarefas"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "Registro de Operações (dias)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "Número de dias para retenção de logs de Ação"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "Registro de Alteração de Senha"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "Número de dias para retenção de logs de alteração de senha do usuário"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "Upload/Download (dias)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "Número de dias para retenção de registros de upload e download"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "Registros de Sincronização em Nuvem (dias)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "Número de dias para retenção de registros de sincronização na nuvem"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "Histórico de Execuções do Centro de Trabalhos (dias)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "Número de dias para retenção do histórico de execução de tarefas"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "Registros de Atividades (dias)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "Número de dias para retenção de registros de atividades"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "Registros de Sessão (dias)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "Número de dias para retenção de logs de sessão"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7701,8 +7715,10 @@ msgstr ""
|
||||
" (afeta o armazenamento do banco de dados, OSS, etc não são afetados)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "Registro de Notificações de Alteração de Senha (dias)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr ""
|
||||
"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
|
||||
msgid "Subject"
|
||||
@@ -8228,28 +8244,32 @@ msgid "Watermark"
|
||||
msgstr "Ativar marca d'água"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgid "Session content"
|
||||
msgstr "Conteúdo personalizado da marca d'água da sessão"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgstr "Página de gerenciamento, conteúdo personalizado de marca d'água"
|
||||
msgid "Console content"
|
||||
msgstr "Conteúdo personalizado da marca d'água da página"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "Cor da fonte"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "Tamanho da fonte"
|
||||
msgid "Font size"
|
||||
msgstr "Tamanho da fonte (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "Altura da marca d'água única"
|
||||
msgid "Height"
|
||||
msgstr "Altura (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "Largura da marca d'água única"
|
||||
msgid "Width"
|
||||
msgstr "Largura (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "Ângulo de rotação da marca d'água"
|
||||
msgid "Rotate"
|
||||
msgstr "Rotação (graus)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8581,15 +8601,15 @@ msgstr "Falha na autenticação: (desconhecido): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "Autenticação bem sucedida: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "Não foi possível obter usuário LDAP"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "Total de {}, sucesso {}, falha {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ", desativar {}"
|
||||
|
||||
@@ -11982,27 +12002,3 @@ msgstr "Importação de licença bem-sucedida"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
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"
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
# 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 ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: jumpserver\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"PO-Revision-Date: 2025-09-26 11:16\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: 2025-11-01 11:01\n"
|
||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||
"Language-Team: Russian\n"
|
||||
"Language: ru_RU\n"
|
||||
@@ -19,14 +24,14 @@ msgstr ""
|
||||
"X-Crowdin-Project-ID: 832018\n"
|
||||
"X-Generator: Poedit 2.4.3\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "Учетная запись уже существует"
|
||||
msgstr "Учетная запись уже существует."
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr "Учетная запись не найдена"
|
||||
|
||||
@@ -464,7 +469,7 @@ msgstr ""
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
|
||||
@@ -479,7 +484,7 @@ msgstr "Актив"
|
||||
|
||||
#: accounts/models/account.py:89 accounts/models/template.py:16
|
||||
#: accounts/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -526,13 +531,14 @@ msgstr "Статус изменения секрета"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -625,7 +631,7 @@ msgstr "Иконка"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -798,7 +804,7 @@ msgid "Status"
|
||||
msgstr "Статус"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1027,7 +1033,7 @@ msgid "Verify asset account"
|
||||
msgstr "Проверка УЗ актива"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1266,54 +1272,46 @@ msgstr ""
|
||||
msgid "Has secret"
|
||||
msgstr "Секрет добавлен"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "Состояние"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "Изменено"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "Актив не поддерживает этот тип секрета: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "Учетная запись уже существует"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "Специальная информация"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1338,7 +1336,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "Пользователь"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1784,7 +1782,7 @@ msgstr "Успешные УЗ"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "Нет"
|
||||
|
||||
@@ -1907,6 +1905,18 @@ msgstr "Утверждающий"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -1966,7 +1976,7 @@ msgstr "Правила метода подключения"
|
||||
|
||||
#: acls/models/data_masking.py:13
|
||||
msgid "Fixed Character Replacement"
|
||||
msgstr "Фиксированная замена символов"
|
||||
msgstr "Замена на фиксированные символы"
|
||||
|
||||
#: acls/models/data_masking.py:14
|
||||
msgid "Hide Middle Characters"
|
||||
@@ -1974,19 +1984,19 @@ msgstr "Скрыть средние символы"
|
||||
|
||||
#: acls/models/data_masking.py:15
|
||||
msgid "Keep Prefix Only"
|
||||
msgstr "Сохранить префикс"
|
||||
msgstr "Сохранить только префикс"
|
||||
|
||||
#: acls/models/data_masking.py:16
|
||||
msgid "Keep Suffix Only"
|
||||
msgstr "Сохранить суффикс"
|
||||
msgstr "Сохранить только суффикс"
|
||||
|
||||
#: acls/models/data_masking.py:21
|
||||
msgid "Fields pattern"
|
||||
msgstr "Скрыть имя столбца"
|
||||
msgstr "Маскировать столбцы"
|
||||
|
||||
#: acls/models/data_masking.py:27 acls/serializers/data_masking.py:14
|
||||
msgid "Masking Method"
|
||||
msgstr "Метод маскировки"
|
||||
msgstr "Метод маскирования"
|
||||
|
||||
#: acls/models/data_masking.py:31
|
||||
msgid "Mask Pattern"
|
||||
@@ -2677,19 +2687,19 @@ msgstr "Собранные данные"
|
||||
msgid "Custom info"
|
||||
msgstr "Пользовательские атрибуты"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "Обновление информации об оборудовании актива"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "Проверка доступности актива"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "Сопоставление актива"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "Изменение папки актива"
|
||||
|
||||
@@ -3600,7 +3610,7 @@ msgstr "Задача"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "Да"
|
||||
|
||||
@@ -3887,35 +3897,35 @@ msgstr ""
|
||||
"Повторное использование токена не допускается, глобальная настройка не "
|
||||
"включена"
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "Анонимная учетная запись не поддерживается для этого актива"
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "Разрешение истекло"
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "Действие правила — запрет: {}({})"
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "Действие правила — проверка"
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "Действие правила — идентификация по лицу"
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr "Правило входа в актив не поддерживает текущий актив"
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "Действие правила — онлайн распознавание лица."
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "Нет доступных характеристик лица"
|
||||
|
||||
@@ -3955,7 +3965,7 @@ msgstr "Забыли пароль"
|
||||
|
||||
#: authentication/api/password.py:70 authentication/mfa/email.py:42
|
||||
msgid "The validity period of the verification code is {} minute"
|
||||
msgstr "Срок действия кода проверки составляет {} минут."
|
||||
msgstr "Срок действия кода проверки: {} мин"
|
||||
|
||||
#: authentication/apps.py:7
|
||||
msgid "App Authentication"
|
||||
@@ -3996,7 +4006,7 @@ msgstr ""
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "Обновлённый токен или кэш недействителен."
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "Ошибка OpenID"
|
||||
|
||||
@@ -4224,16 +4234,16 @@ msgstr "Ваш пароль недействителен"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "Пожалуйста, подождите %s секунд перед повторной попыткой"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr "Ваш пароль слишком простой, измените его в целях безопасности"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr "Вам необходимо сменить пароль перед входом в систему"
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr ""
|
||||
"Срок действия вашего пароля истек, пожалуйста, сбросьте его перед входом в "
|
||||
@@ -4354,11 +4364,20 @@ msgstr "Удалите номер телефона для отключения"
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr "Ошибка аутентификации (сбой до проверки входа): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "Недействительный пользователь"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
@@ -4366,11 +4385,11 @@ msgstr ""
|
||||
"Администратор включил «Разрешить вход только из источника пользователя».\n"
|
||||
" Текущий источник пользователя — {}. Обратитесь к администратору."
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "Способ МФА ({}) не включен"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "Пожалуйста, измените свой пароль"
|
||||
|
||||
@@ -4890,22 +4909,22 @@ msgstr "Хотите попробовать снова?"
|
||||
msgid "LAN"
|
||||
msgstr "Локальная сеть"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr "Если у вас есть вопросы, пожалуйста, свяжитесь с администратором"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "Ошибка при запросе пользователя %s"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%s уже привязан к другому пользователю"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "Привязка %s выполнена успешно"
|
||||
@@ -5048,7 +5067,7 @@ msgstr "Не удалось получить пользователя WeCom"
|
||||
msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr "Пожалуйста, войдите с паролем, а затем привяжите WeCom"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr "Неверный формат загружаемого файла или файл другого типа ресурсов"
|
||||
|
||||
@@ -5589,7 +5608,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "Управление тегами"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "Цвет"
|
||||
|
||||
@@ -6779,11 +6798,11 @@ msgstr "Панель смены пароля УЗ"
|
||||
|
||||
#: reports/views.py:181
|
||||
msgid "Failed to send email: "
|
||||
msgstr "Не удалось отправить письмо"
|
||||
msgstr "Не удалось отправить письмо "
|
||||
|
||||
#: reports/views.py:182
|
||||
msgid "Email sent successfully to "
|
||||
msgstr "Успешно отправлено письмо."
|
||||
msgstr "Письмо успешно отправлено "
|
||||
|
||||
#: settings/api/chat.py:41
|
||||
msgid "Chat AI is not enabled"
|
||||
@@ -7637,40 +7656,40 @@ msgid "Period clean"
|
||||
msgstr "Периодическая очистка"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "Журнал входа (дни)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "Время хранения журнала входа"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "Журнал задач (дни)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "Время хранения журнала задач"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "Журнал операций (дни)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "Время хранения журнала действий"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "Журнал смены пароля (дни)"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "Время хранения журнала изменения пароля пользователя"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "Журнал загрузки/скачивания FTP (дни)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "Время хранения записей загрузки и скачивания"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "Журнал синхронизации с облаком (дни)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "Время хранения записей облачной синхронизации"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "История выполнения заданий (дни)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "Время хранения истории выполнения заданий"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "Журнал действий (дни)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "Время хранения 기록 активности"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "Журнал сессий (дни)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "Время хранения журнала сеансов"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7681,8 +7700,8 @@ msgstr ""
|
||||
" удалены (влияет на хранение базы данных, но на OSS не влияет)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "Срок хранения записей смены и публикации паролей (дни)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr "Время хранения записей уведомлений о смене пароля аккаунта"
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
msgid "Subject"
|
||||
@@ -8200,28 +8219,32 @@ msgid "Watermark"
|
||||
msgstr "Водяной знак"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgstr "Водяной знак в сессиях"
|
||||
msgid "Session content"
|
||||
msgstr "Настраиваемое содержание водяного знака сессии"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgstr "Водяной знак в Консоли"
|
||||
msgid "Console content"
|
||||
msgstr "Настраиваемое содержание водяного знака страницы"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "Цвет шрифта"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "Размер шрифта водяного знака"
|
||||
msgid "Font size"
|
||||
msgstr "Размер шрифта (пиксели)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "Высота водяного знака"
|
||||
msgid "Height"
|
||||
msgstr "Высота (пиксели)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "Ширина водяного знака"
|
||||
msgid "Width"
|
||||
msgstr "Ширина (пиксели)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "Угол поворота водяного знака"
|
||||
msgid "Rotate"
|
||||
msgstr "Поворот (градусы)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8549,15 +8572,15 @@ msgstr "Ошибка аутентификации: (неизвестная): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "Успешная аутентификация: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "Не удалось получить пользователей из LDAP"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "Всего {} , успешно {} , неудачно {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ", отключено {}"
|
||||
|
||||
@@ -11943,3 +11966,21 @@ msgstr "Лицензия успешно импортирована"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
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 "域名称"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,14 +18,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "Tài khoản đã tồn tại"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
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:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -525,13 +525,14 @@ msgstr "Trạng thái đổi mật khẩu"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -624,7 +625,7 @@ msgstr "Biểu tượng"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -797,7 +798,7 @@ msgid "Status"
|
||||
msgstr "Trạng thái"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1029,7 +1030,7 @@ msgid "Verify asset account"
|
||||
msgstr "Xác thực tài khoản"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1274,54 +1275,46 @@ msgstr "Tài khoản đã tồn tại. Trường :{fields} phải là duy nhất
|
||||
msgid "Has secret"
|
||||
msgstr "Đã quản lý mật khẩu"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "Trạng thái"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "Đã sửa đổi"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
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"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "Tài khoản đã tồn tại"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "Thông tin đặc biệt"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1346,7 +1339,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "Người dùng"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1796,7 +1789,7 @@ msgstr "Tài khoản thành công"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "Không"
|
||||
|
||||
@@ -1922,6 +1915,18 @@ msgstr "Người phê duyệt"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2701,19 +2706,19 @@ msgstr "Thu thập thông tin phần cứng tài sản"
|
||||
msgid "Custom info"
|
||||
msgstr "Thuộc tính tùy chỉnh"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "Có thể cập nhật thông tin phần cứng tài sản"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "Có thể kiểm tra tính kết nối của tài sản"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "Có thể khớp tài sản"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "Có thể sửa đổi nút tài sản"
|
||||
|
||||
@@ -3643,7 +3648,7 @@ msgstr "Nhiệm vụ"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "Là"
|
||||
|
||||
@@ -3929,35 +3934,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 "
|
||||
"hoạt cài đặt toàn cầu"
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
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"
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "Quyền truy cập đã hết hạn"
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "Hành động ACL là từ chối: {}({})"
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "Hành động ACL là xem xét"
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "Hành động ACL là xác thực khuôn mặt"
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
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."
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "Hành động ACL là nhận diện khuôn mặt trực tuyến"
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "Không có đặc điểm khuôn mặt khả dụng"
|
||||
|
||||
@@ -4038,7 +4043,7 @@ msgstr ""
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "Token làm mới hoặc bộ nhớ cache không hợp lệ."
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "Lỗi OpenID."
|
||||
|
||||
@@ -4266,16 +4271,16 @@ msgstr "Mật khẩu của bạn không hợp lệ"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "Vui lòng thử lại sau %s giây"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
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"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
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"
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
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"
|
||||
|
||||
@@ -4395,11 +4400,20 @@ msgstr "Xóa số điện thoại để vô hiệu hóa."
|
||||
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): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "Người dùng không hợp lệ"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
@@ -4407,11 +4421,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 "
|
||||
"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:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "Phương thức MFA ({}) này chưa được kích hoạt"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "Vui lòng thay đổi mật khẩu"
|
||||
|
||||
@@ -4926,24 +4940,24 @@ msgstr "Có muốn thử lại không?"
|
||||
msgid "LAN"
|
||||
msgstr "Mạng nội bộ"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
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ị "
|
||||
"viên hệ thống"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "%s truy vấn người dùng không thành công"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
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"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "Liên kết %s thành công"
|
||||
@@ -5085,7 +5099,7 @@ msgid "Please login with a password and then bind the WeCom"
|
||||
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"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
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."
|
||||
|
||||
@@ -5633,7 +5647,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "Labels"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "Màu sắc"
|
||||
|
||||
@@ -7685,40 +7699,40 @@ msgid "Period clean"
|
||||
msgstr "Dọn dẹp định kỳ"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "Nhật ký đăng nhập (ngày)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký đăng nhập"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "Nhật ký tác vụ (ngày)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký nhiệm vụ"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "Nhật ký hành động (ngày)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký hành động"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "Nhật ký thay đổi mật khẩu"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký thay đổi mật khẩu người dùng"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "Tải lên và tải xuống (ngày)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký tải lên và tải xuống"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "Hồ sơ đồng bộ đám mây (ngày)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký đồng bộ đám mây"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "Lịch sử thực hiện trung tâm công việc (ngày)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "Ngày lưu giữ lịch sử thực hiện công việc"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "Hồ sơ hoạt động (ngày)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký hoạt động"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "Nhật ký phiên (ngày)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký phiên làm việc"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7729,8 +7743,8 @@ msgstr ""
|
||||
"tới lưu trữ cơ sở dữ liệu, không ảnh hưởng tới OSS)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "Số ngày lưu giữ nhật ký đẩy thay đổi mật khẩu (ngày)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr "Ngày lưu giữ nhật ký thông báo thay đổi mật khẩu tài khoản."
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
msgid "Subject"
|
||||
@@ -8247,28 +8261,32 @@ msgid "Watermark"
|
||||
msgstr "Bật hình mờ"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgstr "Nội dung hình mờ cuộc trò chuyện tùy chỉnh"
|
||||
msgid "Session content"
|
||||
msgstr "Nội dung tùy chỉnh cho watermark phiên họp"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgstr "Nội dung hình mờ trang quản trị tùy chỉnh"
|
||||
msgid "Console content"
|
||||
msgstr "Nội dung tùy chỉnh cho watermark trang quản lý"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "Màu sắc phông chữ"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "Font chữ và cỡ chữ"
|
||||
msgid "Font size"
|
||||
msgstr "Kích thước phông chữ (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "Chiều cao hình mờ đơn lẻ"
|
||||
msgid "Height"
|
||||
msgstr "Chiều cao (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "Chiều rộng hình mờ đơn lẻ"
|
||||
msgid "Width"
|
||||
msgstr "Chiều rộng (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "Góc xoay hình mờ"
|
||||
msgid "Rotate"
|
||||
msgstr "Góc xoay (độ)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8591,15 +8609,15 @@ msgstr "Xác thực thất bại: (không xác định): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "Xác thực thành công: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "Không lấy được người dùng LDAP"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "Tổng cộng {} , thành công {} , thất bại {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ", đã vô hiệu hóa {}"
|
||||
|
||||
@@ -12021,24 +12039,3 @@ msgstr "Nhập giấy phép thành công"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
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."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: JumpServer 0.3.3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-05 18:33+0800\n"
|
||||
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
||||
@@ -17,14 +17,14 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.4.3\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "账号已存在"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr "账号未找到"
|
||||
|
||||
@@ -458,7 +458,7 @@ msgstr "Vault 操作失败,请重试,或者检查 Vault 上的账号信息
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -520,13 +520,14 @@ msgstr "改密状态"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -616,7 +617,7 @@ msgstr "图标"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -786,7 +787,7 @@ msgid "Status"
|
||||
msgstr "状态"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1010,7 +1011,7 @@ msgid "Verify asset account"
|
||||
msgstr "账号验证"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1239,54 +1240,46 @@ msgstr "帐号已存在。字段:{fields} 必须是唯一的。"
|
||||
msgid "Has secret"
|
||||
msgstr "已托管密码"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "状态"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "已修改"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "资产不支持账号类型: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "账号已存在"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "特殊信息"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1310,7 +1303,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "用户"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1747,7 +1740,7 @@ msgstr "成功账号"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
@@ -1868,6 +1861,18 @@ msgstr "审批人"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2621,19 +2626,19 @@ msgstr "收集资产硬件信息"
|
||||
msgid "Custom info"
|
||||
msgstr "自定义属性"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "可以更新资产硬件信息"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "可以测试资产连接性"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "可以匹配资产"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "可以修改资产节点"
|
||||
|
||||
@@ -3518,7 +3523,7 @@ msgstr "任务"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
@@ -3801,35 +3806,35 @@ msgstr "该操作需要验证您的 MFA, 请先开启并配置"
|
||||
msgid "Reusable connection token is not allowed, global setting not enabled"
|
||||
msgstr "不允许使用可重复使用的连接令牌,未启用全局设置"
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "匿名账号不支持当前资产"
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "授权已过期"
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "ACL 动作是拒绝: {}({})"
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "ACL 动作是复核"
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "ACL 动作是人脸验证"
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr "资产登录规则不支持当前资产"
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "ACL 动作是人脸在线"
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "没有可用的人脸特征"
|
||||
|
||||
@@ -3905,7 +3910,7 @@ msgstr "无效的令牌头。符号字符串不应包含无效字符。"
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "刷新的令牌或缓存无效。"
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "OpenID 错误"
|
||||
|
||||
@@ -4125,16 +4130,16 @@ msgstr "您的密码无效"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "请在 %s 秒后重试"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr "你的密码过于简单,为了安全,请修改"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr "登录完成前,请先修改密码"
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr "您的密码已过期,先修改再登录"
|
||||
|
||||
@@ -4251,21 +4256,29 @@ msgstr "清空手机号码禁用"
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr "认证失败 (登录前检查失败): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "无效的用户"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
msgstr "管理员已开启'仅允许从用户来源登录',当前用户来源为{},请联系管理员。"
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "该 MFA ({}) 方式没有启用"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "请修改密码"
|
||||
|
||||
@@ -4750,22 +4763,22 @@ msgstr "是否重试 ?"
|
||||
msgid "LAN"
|
||||
msgstr "局域网"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr "如果有疑问或需求,请联系系统管理员"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "%s 查询用户失败"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%s 已绑定到另一个用户"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "绑定 %s 成功"
|
||||
@@ -4905,7 +4918,7 @@ msgstr "从企业微信获取用户失败"
|
||||
msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr "请使用密码登录,然后绑定企业微信"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr "上传的文件格式错误 或 其它类型资源的文件"
|
||||
|
||||
@@ -5429,7 +5442,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "标签管理"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "颜色"
|
||||
|
||||
@@ -7407,40 +7420,40 @@ msgid "Period clean"
|
||||
msgstr "定時清掃"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "登录日志 (天)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "登录日志保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "任务日志 (天)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "任务日志保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "操作日志 (天)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "操作日志保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "改密日志"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "用户改密日志保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "上传下载 (天)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "上传下载记录保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "云同步记录 (天)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "云同步记录保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "作业中心执行历史 (天)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "作业执行历史保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "活动记录 (天)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "活动记录保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "会话日志 (天)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "会话日志保留天数"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7450,8 +7463,8 @@ msgstr ""
|
||||
"会话、录像,命令记录超过该时长将会被清除 (影响数据库存储,OSS 等不受影响)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "改密推送记录保留天数 (天)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr "账号改密推送记录保留天数"
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
msgid "Subject"
|
||||
@@ -7933,28 +7946,32 @@ msgid "Watermark"
|
||||
msgstr "开启水印"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgid "Session content"
|
||||
msgstr "会话水印自定义内容"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgid "Console content"
|
||||
msgstr "管理页面水印自定义内容"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "字体颜色"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "字体字号"
|
||||
msgid "Font size"
|
||||
msgstr "字体大小 (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "单个水印高度"
|
||||
msgid "Height"
|
||||
msgstr "高度 (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "单个水印宽度"
|
||||
msgid "Width"
|
||||
msgstr "宽度 (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "水印旋转角度"
|
||||
msgid "Rotate"
|
||||
msgstr "旋转 (度)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8259,15 +8276,15 @@ msgstr "认证失败: (未知): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "认证成功: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "没有获取到 LDAP 用户"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "总共 {},成功 {},失败 {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ", 禁用 {}"
|
||||
|
||||
@@ -11568,6 +11585,3 @@ msgstr "许可证导入成功"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
msgstr "许可证无效"
|
||||
|
||||
#~ msgid "domain_name"
|
||||
#~ msgstr "域名称"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: JumpServer 0.3.3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-10-16 14:10+0800\n"
|
||||
"POT-Creation-Date: 2025-11-06 15:37+0800\n"
|
||||
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
||||
"Last-Translator: ibuler <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-ZhConverter: 繁化姬 dict-74c8d060-r1048 @ 2024/04/07 18:19:20 | https://zhconvert.org\n"
|
||||
|
||||
#: accounts/api/account/account.py:141
|
||||
#: accounts/api/account/account.py:142
|
||||
#: accounts/serializers/account/account.py:181
|
||||
#: accounts/serializers/account/account.py:362
|
||||
msgid "Account already exists"
|
||||
msgstr "帳號已存在"
|
||||
|
||||
#: accounts/api/account/application.py:77
|
||||
#: authentication/api/connection_token.py:452
|
||||
#: authentication/api/connection_token.py:453
|
||||
msgid "Account not found"
|
||||
msgstr "帳號未找到"
|
||||
|
||||
@@ -459,7 +459,7 @@ msgstr "Vault 操作失敗,請重試,或檢查 Vault 上的帳號信息。"
|
||||
#: accounts/templates/accounts/push_account_report.html:78
|
||||
#: accounts/templates/accounts/push_account_report.html:118
|
||||
#: acls/notifications.py:70 acls/serializers/base.py:111
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:428
|
||||
#: assets/models/asset/common.py:102 assets/models/asset/common.py:427
|
||||
#: assets/models/cmd_filter.py:36 audits/models.py:59 audits/models.py:336
|
||||
#: audits/serializers.py:230 authentication/models/connection_token.py:42
|
||||
#: 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/serializers/account/account.py:234
|
||||
#: accounts/serializers/account/account.py:304
|
||||
#: accounts/serializers/account/account.py:305
|
||||
#: accounts/serializers/account/template.py:35
|
||||
#: authentication/serializers/connect_token_secret.py:51
|
||||
msgid "Su from"
|
||||
@@ -521,13 +521,14 @@ msgstr "改密狀態"
|
||||
|
||||
#: accounts/models/account.py:107
|
||||
#: accounts/models/automations/check_account.py:64
|
||||
#: accounts/serializers/account/account.py:295
|
||||
#: accounts/serializers/account/service.py:13
|
||||
#: accounts/serializers/automations/change_secret.py:117
|
||||
#: accounts/serializers/automations/change_secret.py:148
|
||||
#: acls/serializers/base.py:112
|
||||
#: acls/templates/acls/asset_login_reminder.html:11
|
||||
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:337
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:464
|
||||
#: audits/serializers.py:231 authentication/api/connection_token.py:465
|
||||
#: ops/models/base.py:18 perms/models/asset_permission.py:75
|
||||
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
|
||||
#: terminal/models/session/session.py:31 terminal/notifications.py:291
|
||||
@@ -620,7 +621,7 @@ msgstr "圖示"
|
||||
|
||||
#: accounts/models/application.py:20 accounts/models/base.py:39
|
||||
#: accounts/models/mixins/vault.py:49
|
||||
#: accounts/serializers/account/account.py:492
|
||||
#: accounts/serializers/account/account.py:498
|
||||
#: accounts/serializers/account/base.py:20
|
||||
#: authentication/models/temp_token.py:11
|
||||
#: authentication/templates/authentication/_access_key_modal.html:31
|
||||
@@ -793,7 +794,7 @@ msgid "Status"
|
||||
msgstr "狀態"
|
||||
|
||||
#: accounts/models/automations/change_secret.py:51
|
||||
#: accounts/serializers/account/account.py:296 assets/const/automation.py:9
|
||||
#: accounts/serializers/account/account.py:297 assets/const/automation.py:9
|
||||
#: authentication/templates/authentication/passkey.html:177
|
||||
#: authentication/views/base.py:42 authentication/views/base.py:43
|
||||
#: authentication/views/base.py:44 common/const/choices.py:67
|
||||
@@ -1017,7 +1018,7 @@ msgid "Verify asset account"
|
||||
msgstr "帳號驗證"
|
||||
|
||||
#: accounts/models/base.py:37 accounts/models/base.py:66
|
||||
#: accounts/serializers/account/account.py:491
|
||||
#: accounts/serializers/account/account.py:497
|
||||
#: accounts/serializers/account/base.py:17
|
||||
#: accounts/serializers/automations/change_secret.py:50
|
||||
#: authentication/serializers/connect_token_secret.py:42
|
||||
@@ -1241,54 +1242,46 @@ msgstr "帳號已存在。字段:{fields} 必須是唯一的。"
|
||||
msgid "Has secret"
|
||||
msgstr "已託管密碼"
|
||||
|
||||
#: accounts/serializers/account/account.py:295 ops/models/celery.py:84
|
||||
#: accounts/serializers/account/account.py:296 ops/models/celery.py:84
|
||||
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
|
||||
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
|
||||
msgid "State"
|
||||
msgstr "狀態"
|
||||
|
||||
#: accounts/serializers/account/account.py:297
|
||||
#: accounts/serializers/account/account.py:298
|
||||
msgid "Changed"
|
||||
msgstr "已修改"
|
||||
|
||||
#: 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
|
||||
#: accounts/serializers/account/account.py:410
|
||||
#, python-format
|
||||
msgid "Asset does not support this secret type: %s"
|
||||
msgstr "資產不支持帳號類型: %s"
|
||||
|
||||
#: accounts/serializers/account/account.py:444
|
||||
#: accounts/serializers/account/account.py:443
|
||||
msgid "Account has exist"
|
||||
msgstr "帳號已存在"
|
||||
|
||||
#: accounts/serializers/account/account.py:476
|
||||
#: accounts/serializers/account/account.py:483
|
||||
#: accounts/serializers/account/account.py:468
|
||||
#: accounts/serializers/account/account.py:469
|
||||
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:88
|
||||
#: assets/serializers/asset/common.py:425
|
||||
msgid "Spec info"
|
||||
msgstr "特殊資訊"
|
||||
|
||||
#: accounts/serializers/account/account.py:493
|
||||
#: accounts/serializers/account/account.py:499
|
||||
#: authentication/serializers/connect_token_secret.py:173
|
||||
#: authentication/templates/authentication/_access_key_modal.html:30
|
||||
#: perms/models/perm_node.py:21 users/serializers/group.py:33
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#: accounts/serializers/account/account.py:503 acls/notifications.py:18
|
||||
#: accounts/serializers/account/account.py:509 acls/notifications.py:18
|
||||
#: acls/notifications.py:68 acls/serializers/base.py:104
|
||||
#: acls/templates/acls/asset_login_reminder.html:8
|
||||
#: acls/templates/acls/user_login_reminder.html:8
|
||||
@@ -1313,7 +1306,7 @@ msgstr "ID"
|
||||
msgid "User"
|
||||
msgstr "用戶"
|
||||
|
||||
#: accounts/serializers/account/account.py:504
|
||||
#: accounts/serializers/account/account.py:510
|
||||
#: authentication/templates/authentication/_access_key_modal.html:33
|
||||
#: terminal/notifications.py:165 terminal/notifications.py:225
|
||||
msgid "Date"
|
||||
@@ -1723,7 +1716,7 @@ msgstr "成功帳號"
|
||||
#: accounts/templates/accounts/change_secret_report.html:118
|
||||
#: accounts/templates/accounts/push_account_report.html:77
|
||||
#: accounts/templates/accounts/push_account_report.html:117
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "No"
|
||||
msgstr "否"
|
||||
|
||||
@@ -1845,6 +1838,18 @@ msgstr "審批人"
|
||||
msgid "Users"
|
||||
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
|
||||
#: ops/serializers/job.py:92 terminal/const.py:88
|
||||
#: terminal/models/session/session.py:40 terminal/serializers/command.py:18
|
||||
@@ -2594,19 +2599,19 @@ msgstr "收集資產硬體資訊"
|
||||
msgid "Custom info"
|
||||
msgstr "自訂屬性"
|
||||
|
||||
#: assets/models/asset/common.py:431
|
||||
#: assets/models/asset/common.py:430
|
||||
msgid "Can refresh asset hardware info"
|
||||
msgstr "可以更新資產硬體資訊"
|
||||
|
||||
#: assets/models/asset/common.py:432
|
||||
#: assets/models/asset/common.py:431
|
||||
msgid "Can test asset connectivity"
|
||||
msgstr "可以測試資產連接性"
|
||||
|
||||
#: assets/models/asset/common.py:433
|
||||
#: assets/models/asset/common.py:432
|
||||
msgid "Can match asset"
|
||||
msgstr "可以匹配資產"
|
||||
|
||||
#: assets/models/asset/common.py:434
|
||||
#: assets/models/asset/common.py:433
|
||||
msgid "Can change asset nodes"
|
||||
msgstr "可以修改資產節點"
|
||||
|
||||
@@ -3479,7 +3484,7 @@ msgstr "任務"
|
||||
msgid "-"
|
||||
msgstr "-"
|
||||
|
||||
#: audits/handler.py:128
|
||||
#: audits/handler.py:130
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
@@ -3757,35 +3762,35 @@ msgstr "該操作需要驗證您的 MFA, 請先開啟並配置"
|
||||
msgid "Reusable connection token is not allowed, global setting not enabled"
|
||||
msgstr "不允許使用可重複使用的連接令牌,未啟用全局設置"
|
||||
|
||||
#: authentication/api/connection_token.py:425
|
||||
#: authentication/api/connection_token.py:426
|
||||
msgid "Anonymous account is not supported for this asset"
|
||||
msgstr "匿名帳號不支持當前資產"
|
||||
|
||||
#: authentication/api/connection_token.py:455
|
||||
#: authentication/api/connection_token.py:456
|
||||
msgid "Permission expired"
|
||||
msgstr "授權已過期"
|
||||
|
||||
#: authentication/api/connection_token.py:488
|
||||
#: authentication/api/connection_token.py:489
|
||||
msgid "ACL action is reject: {}({})"
|
||||
msgstr "ACL 動作是拒絕: {}({})"
|
||||
|
||||
#: authentication/api/connection_token.py:492
|
||||
#: authentication/api/connection_token.py:493
|
||||
msgid "ACL action is review"
|
||||
msgstr "ACL 動作是覆核"
|
||||
|
||||
#: authentication/api/connection_token.py:502
|
||||
#: authentication/api/connection_token.py:503
|
||||
msgid "ACL action is face verify"
|
||||
msgstr "ACL Action 係人臉驗證"
|
||||
|
||||
#: authentication/api/connection_token.py:507
|
||||
#: authentication/api/connection_token.py:508
|
||||
msgid "ACL action not supported for this asset"
|
||||
msgstr "資產登錄規則不支持當前資產"
|
||||
|
||||
#: authentication/api/connection_token.py:514
|
||||
#: authentication/api/connection_token.py:515
|
||||
msgid "ACL action is face online"
|
||||
msgstr "ACL Action 係人臉在線"
|
||||
|
||||
#: authentication/api/connection_token.py:539
|
||||
#: authentication/api/connection_token.py:540
|
||||
msgid "No available face feature"
|
||||
msgstr "沒有可用的人臉特徵"
|
||||
|
||||
@@ -3859,7 +3864,7 @@ msgstr "無效的令牌頭。符號字串不應包含無效字元。"
|
||||
msgid "Invalid token or cache refreshed."
|
||||
msgstr "刷新的令牌或快取無效。"
|
||||
|
||||
#: authentication/backends/oidc/views.py:175
|
||||
#: authentication/backends/oidc/views.py:137
|
||||
msgid "OpenID Error"
|
||||
msgstr "OpenID 錯誤"
|
||||
|
||||
@@ -4077,16 +4082,16 @@ msgstr "您的密碼無效"
|
||||
msgid "Please wait for %s seconds before retry"
|
||||
msgstr "請在 %s 秒後重試"
|
||||
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:332
|
||||
#: authentication/errors/redirect.py:85 authentication/mixins.py:365
|
||||
#: users/views/profile/reset.py:224
|
||||
msgid "Your password is too simple, please change it for security"
|
||||
msgstr "你的密碼過於簡單,為了安全,請修改"
|
||||
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:341
|
||||
#: authentication/errors/redirect.py:93 authentication/mixins.py:374
|
||||
msgid "You should to change your password before login"
|
||||
msgstr "登錄完成前,請先修改密碼"
|
||||
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:350
|
||||
#: authentication/errors/redirect.py:101 authentication/mixins.py:383
|
||||
msgid "Your password has expired, please reset before logging in"
|
||||
msgstr "您的密碼已過期,先修改再登錄"
|
||||
|
||||
@@ -4203,21 +4208,27 @@ msgstr "清空手機號碼禁用"
|
||||
msgid "Authentication failed (before login check failed): {}"
|
||||
msgstr "認證失敗 (登錄前檢查失敗): {}"
|
||||
|
||||
#: authentication/mixins.py:84
|
||||
#: authentication/mixins.py:105
|
||||
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"
|
||||
msgstr "無效的用戶"
|
||||
|
||||
#: authentication/mixins.py:99
|
||||
#: authentication/mixins.py:132
|
||||
msgid ""
|
||||
"The administrator has enabled 'Only allow login from user source'. \n"
|
||||
" The current user source is {}. Please contact the administrator."
|
||||
msgstr "管理員已開啟'僅允許從用戶來源登錄',當前用戶來源為{},請聯絡管理員。"
|
||||
|
||||
#: authentication/mixins.py:278
|
||||
#: authentication/mixins.py:311
|
||||
msgid "The MFA type ({}) is not enabled"
|
||||
msgstr "該 MFA ({}) 方式沒有啟用"
|
||||
|
||||
#: authentication/mixins.py:320
|
||||
#: authentication/mixins.py:353
|
||||
msgid "Please change your password"
|
||||
msgstr "請修改密碼"
|
||||
|
||||
@@ -4701,22 +4712,22 @@ msgstr "是否重試 ?"
|
||||
msgid "LAN"
|
||||
msgstr "區域網路"
|
||||
|
||||
#: authentication/views/base.py:71
|
||||
#: authentication/views/base.py:70
|
||||
#: perms/templates/perms/_msg_permed_items_expire.html:18
|
||||
msgid "If you have any question, please contact the administrator"
|
||||
msgstr "如果有疑問或需求,請聯絡系統管理員"
|
||||
|
||||
#: authentication/views/base.py:144
|
||||
#: authentication/views/base.py:143
|
||||
#, python-format
|
||||
msgid "%s query user failed"
|
||||
msgstr "%s 查詢用戶失敗"
|
||||
|
||||
#: authentication/views/base.py:152
|
||||
#: authentication/views/base.py:151
|
||||
#, python-format
|
||||
msgid "The %s is already bound to another user"
|
||||
msgstr "%s 已綁定到另一個用戶"
|
||||
|
||||
#: authentication/views/base.py:159
|
||||
#: authentication/views/base.py:158
|
||||
#, python-format
|
||||
msgid "Binding %s successfully"
|
||||
msgstr "綁定 %s 成功"
|
||||
@@ -4855,7 +4866,7 @@ msgstr "從企業微信獲取用戶失敗"
|
||||
msgid "Please login with a password and then bind the WeCom"
|
||||
msgstr "請使用密碼登錄,然後綁定企業微信"
|
||||
|
||||
#: common/api/action.py:68
|
||||
#: common/api/action.py:80
|
||||
msgid "Request file format may be wrong"
|
||||
msgstr "上傳的檔案格式錯誤 或 其它類型資源的文件"
|
||||
|
||||
@@ -5372,7 +5383,7 @@ msgstr ""
|
||||
msgid "App Labels"
|
||||
msgstr "標籤管理"
|
||||
|
||||
#: labels/models.py:15 settings/serializers/security.py:211
|
||||
#: labels/models.py:15
|
||||
msgid "Color"
|
||||
msgstr "顏色"
|
||||
|
||||
@@ -7314,40 +7325,40 @@ msgid "Period clean"
|
||||
msgstr "定時清掃"
|
||||
|
||||
#: settings/serializers/cleaning.py:15
|
||||
msgid "Login log retention days (day)"
|
||||
msgstr "登入記錄 (天)"
|
||||
msgid "Login log retention days"
|
||||
msgstr "登入日誌保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:19
|
||||
msgid "Task log retention days (day)"
|
||||
msgstr "工作紀錄 (天)"
|
||||
msgid "Task log retention days"
|
||||
msgstr "任務日誌保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:23
|
||||
msgid "Operate log retention days (day)"
|
||||
msgstr "Action日誌 (天)"
|
||||
msgid "Operate log retention days"
|
||||
msgstr "操作日誌保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:27
|
||||
msgid "password change log keep days (day)"
|
||||
msgstr "改密日誌 (天)"
|
||||
msgid "Password change log retention days"
|
||||
msgstr "用戶改密日誌保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:31
|
||||
msgid "FTP log retention days (day)"
|
||||
msgstr "上傳下載 (天)"
|
||||
msgid "FTP log retention days"
|
||||
msgstr "上傳下載記錄保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:35
|
||||
msgid "Cloud sync task history retention days (day)"
|
||||
msgstr "雲端同步紀錄 (天)"
|
||||
msgid "Cloud sync task history retention days"
|
||||
msgstr "雲同步記錄保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:39
|
||||
msgid "job execution retention days (day)"
|
||||
msgstr "作業中心執行歷史 (天)"
|
||||
msgid "job execution retention days"
|
||||
msgstr "作業執行歷史保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:43
|
||||
msgid "Activity log retention days (day)"
|
||||
msgstr "活動紀錄 (天)"
|
||||
msgid "Activity log retention days"
|
||||
msgstr "活動記錄保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:46
|
||||
msgid "Session log retention days (day)"
|
||||
msgstr "會話日誌 (天)"
|
||||
msgid "Session log retention days"
|
||||
msgstr "會話日誌保留天數"
|
||||
|
||||
#: settings/serializers/cleaning.py:48
|
||||
msgid ""
|
||||
@@ -7356,8 +7367,8 @@ msgid ""
|
||||
msgstr "會話、錄影,命令記錄超過該時長將會被清除 (影響資料庫儲存,OSS 等不受影響)"
|
||||
|
||||
#: settings/serializers/cleaning.py:53
|
||||
msgid "Change secret and push record retention days (day)"
|
||||
msgstr "改密推送記錄保留天數 (天)"
|
||||
msgid "Change secret and push record retention days"
|
||||
msgstr "帳號改密推送記錄保留天數"
|
||||
|
||||
#: settings/serializers/feature.py:23 settings/serializers/msg.py:69
|
||||
msgid "Subject"
|
||||
@@ -7820,28 +7831,32 @@ msgid "Watermark"
|
||||
msgstr "開啟浮水印"
|
||||
|
||||
#: settings/serializers/security.py:205
|
||||
msgid "Watermark session content"
|
||||
msgid "Session content"
|
||||
msgstr "會話水印自訂內容"
|
||||
|
||||
#: settings/serializers/security.py:208
|
||||
msgid "Watermark console content"
|
||||
msgid "Console content"
|
||||
msgstr "管理頁面水印自訂內容"
|
||||
|
||||
#: settings/serializers/security.py:211
|
||||
msgid "Font color"
|
||||
msgstr "字體顏色"
|
||||
|
||||
#: settings/serializers/security.py:214
|
||||
msgid "Watermark font size"
|
||||
msgstr "字體字號"
|
||||
msgid "Font size"
|
||||
msgstr "字體大小 (px)"
|
||||
|
||||
#: settings/serializers/security.py:217
|
||||
msgid "Watermark height"
|
||||
msgstr "單個水印高度"
|
||||
msgid "Height"
|
||||
msgstr "高度 (px)"
|
||||
|
||||
#: settings/serializers/security.py:220
|
||||
msgid "Watermark width"
|
||||
msgstr "單個水印寬度"
|
||||
msgid "Width"
|
||||
msgstr "寬度 (px)"
|
||||
|
||||
#: settings/serializers/security.py:223
|
||||
msgid "Watermark rotate"
|
||||
msgstr "水印旋轉角度"
|
||||
msgid "Rotate"
|
||||
msgstr "旋轉 (度)"
|
||||
|
||||
#: settings/serializers/security.py:227
|
||||
msgid "Max idle time (minute)"
|
||||
@@ -8135,15 +8150,15 @@ msgstr "認證失敗: (未知): {}"
|
||||
msgid "Authentication success: {}"
|
||||
msgstr "認證成功: {}"
|
||||
|
||||
#: settings/ws.py:226
|
||||
#: settings/ws.py:228
|
||||
msgid "No LDAP user was found"
|
||||
msgstr "沒有取得到 LDAP 用戶"
|
||||
|
||||
#: settings/ws.py:235
|
||||
#: settings/ws.py:237
|
||||
msgid "Total {}, success {}, failure {}"
|
||||
msgstr "總共 {},成功 {},失敗 {}"
|
||||
|
||||
#: settings/ws.py:239
|
||||
#: settings/ws.py:241
|
||||
msgid ", disabled {}"
|
||||
msgstr ",禁用 {}"
|
||||
|
||||
@@ -11397,25 +11412,3 @@ msgstr "許可證匯入成功"
|
||||
#: xpack/plugins/license/api.py:53
|
||||
msgid "Invalid license"
|
||||
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"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"ActionPerm": "Разрешения на действия",
|
||||
"Address": "Адрес",
|
||||
"AlreadyExistsPleaseRename": "Файл уже существует, пожалуйста, переименуйте его",
|
||||
"Announcement: ": "Объявление:",
|
||||
"Announcement: ": "Объявление: ",
|
||||
"Authentication failed": "Ошибка аутентификации: неверное имя пользователя или пароль",
|
||||
"AvailableShortcutKey": "Доступные горячие клавиши",
|
||||
"Back": "Назад",
|
||||
|
||||
@@ -1627,5 +1627,6 @@
|
||||
"removeWarningMsg": "Are you sure you want to remove",
|
||||
"setVariable": "Set variable",
|
||||
"userId": "User ID",
|
||||
"userName": "User name"
|
||||
"userName": "User name",
|
||||
"LeakPasswordList": "Leaked password list"
|
||||
}
|
||||
@@ -122,7 +122,7 @@
|
||||
"AppletHelpText": "В процессе загрузки, если приложение отсутствует, оно будет создано; если уже существует, будет выполнено обновление.",
|
||||
"AppletHostCreate": "Добавить сервер RemoteApp",
|
||||
"AppletHostDetail": "Подробности о хосте RemoteApp",
|
||||
"AppletHostSelectHelpMessage": "При подключении к активу выбор машины публикации приложения происходит случайным образом (но предпочтение отдается последней использованной). Если вы хотите назначить активу определенную машину, вы можете использовать следующие теги: [publishing machine: имя машины публикации] или [AppletHost: имя машины публикации]; <br>при выборе учетной записи для машины публикации в следующих ситуациях будет выбрана собственная <b>учетная запись пользователя с тем же именем или собственная учетная запись (начинающаяся с js)</b>, в противном случае будет использоваться публичная учетная запись (начинающаяся с jms):<br> 1. И машина публикации, и приложение поддерживают одновременные подключения; <br> 2. Машина публикации поддерживает одновременные подключения, а приложение — нет, и текущее приложение не использует специализированную учетную запись; <br> 3. Машина публикации не поддерживает одновременные подключения, а приложение может как поддерживать, так и не поддерживать одновременные подключения, и ни одно приложение не использует специализированную учетную запись; <br> Примечание: поддержка одновременных подключений со стороны приложения определяется разработчиком, а поддержка одновременных подключений со стороны хоста определяется настройкой «один пользователь — одна сессия» в конфигурации машины публикации.",
|
||||
"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а поддержка одновременных подключений со стороны хоста определяется настройкой «один пользователь — одна сессия» в настройках сервера публикации.",
|
||||
"AppletHostUpdate": "Обновить машину публикации RemoteApp",
|
||||
"AppletHostZoneHelpText": "Эта зона принадлежит Системной организации",
|
||||
"AppletHosts": "Хост RemoteApp",
|
||||
@@ -447,10 +447,10 @@
|
||||
"DangerCommand": "Опасная команда",
|
||||
"DangerousCommandNum": "Всего опасных команд",
|
||||
"Dashboard": "Панель инструментов",
|
||||
"DataMasking": "Демаскировка данных",
|
||||
"DataMaskingFieldsPatternHelpTip": "Поддержка нескольких имен полей, разделенных запятой, поддержка подстановочных знаков *\nНапример:\nОдно имя поля: password означает, что будет проведено действие по хранению в тайне поля password.\nНесколько имен полей: password, secret означает сохранение в тайне полей password и secret.\nПодстановочный знак *: password* означает, что действие будет применено к полям, содержащим префикс password.\nПодстановочный знак *: .*password означает, что действие будет применено к полям, содержащим суффикс password.",
|
||||
"DataMaskingRuleHelpHelpMsg": "При подключении к базе данных активов результаты запроса могут быть обработаны в соответствии с этим правилом для обеспечения безопасности данных.",
|
||||
"DataMaskingRuleHelpHelpText": "При подключении к базе данных активов можно обезопасить результаты запроса в соответствии с данным правилом.",
|
||||
"DataMasking": "Маскирование данных",
|
||||
"DataMaskingFieldsPatternHelpTip": "Поддерживается нескольких имён полей, разделённых запятыми, а также использование подстановочного знака *.\nПримеры:\nОдно имя поля: password — выполняется маскирование только поля password.\nНесколько имён полей: password,secret — выполняется маскирование полей password и secret.\nПодстановочный знак *: password* — выполняется маскирование всех полей, имя которых начинается с password.\nПодстановочный знак .*: .*password — выполняется маскирование всех полей, имя которых оканчивается на password",
|
||||
"DataMaskingRuleHelpHelpMsg": "При подключении к активу базы данных результаты запросов могут быть подвергнуты маскированию в соответствии с этим правилом",
|
||||
"DataMaskingRuleHelpHelpText": "При подключении к активу базы данных можно выполнять маскирование результатов запросов в соответствии с этим правилом",
|
||||
"Database": "База данных",
|
||||
"DatabaseCreate": "Создать актив - база данных",
|
||||
"DatabasePort": "Порт протокола базы данных",
|
||||
@@ -1045,7 +1045,7 @@
|
||||
"PrivilegedOnly": "Только привилегированные",
|
||||
"PrivilegedTemplate": "Привилегированные",
|
||||
"Processing": "В процессе",
|
||||
"ProcessingMessage": "Задача в процессе, пожалуйста, подождите ⏳",
|
||||
"ProcessingMessage": "Задача выполняется, пожалуйста, подождите ⏳",
|
||||
"Product": "Продукт",
|
||||
"ProfileSetting": "Данные профиля",
|
||||
"Project": "Название проекта",
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
"Expand all asset": "Развернуть все активы в папке",
|
||||
"Expire time": "Срок действия",
|
||||
"ExpiredTime": "Срок действия",
|
||||
"Face Verify": "Проверка лица",
|
||||
"Face Verify": "Проверка по лицу",
|
||||
"Face online required": "Для входа требуется верификация по лицу и мониторинг. Продолжить?",
|
||||
"Face verify": "Распознавание лица",
|
||||
"Face verify required": "Для входа требуется верификация по лицу. Продолжить?",
|
||||
@@ -107,7 +107,7 @@
|
||||
"GUI": "Графический интерфейс",
|
||||
"General": "Основные настройки",
|
||||
"Go to Settings": "Перейти в настройки",
|
||||
"Go to profile": "Перейти к личной информации",
|
||||
"Go to profile": "Перейти в профиль",
|
||||
"Help": "Помощь",
|
||||
"Help or download": "Помощь → Скачать",
|
||||
"Help text": "Описание",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from collections import defaultdict
|
||||
|
||||
from django.db.models import Count, Max, F, CharField
|
||||
from django.db.models import Count, Max, F, CharField, Q
|
||||
from django.db.models.functions import Cast
|
||||
from django.http.response import JsonResponse
|
||||
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 ops.const import JobStatus
|
||||
from orgs.caches import OrgResourceStatisticsCache
|
||||
from orgs.utils import current_org
|
||||
from terminal.const import RiskLevelChoices
|
||||
from orgs.utils import current_org, filter_org_queryset
|
||||
from terminal.const import RiskLevelChoices, CommandStorageType
|
||||
from terminal.models import Session, CommandStorage
|
||||
|
||||
__all__ = ['IndexApi']
|
||||
@@ -123,15 +123,18 @@ class DateTimeMixin:
|
||||
return self.get_logs_queryset_filter(qs, 'date_start')
|
||||
|
||||
@lazyproperty
|
||||
def command_queryset_list(self):
|
||||
def command_type_queryset_list(self):
|
||||
qs_list = []
|
||||
for storage in CommandStorage.objects.all():
|
||||
for storage in CommandStorage.objects.exclude(name='null'):
|
||||
if not storage.is_valid():
|
||||
continue
|
||||
|
||||
qs = storage.get_command_queryset()
|
||||
qs_list.append(self.get_logs_queryset_filter(
|
||||
qs = filter_org_queryset(qs)
|
||||
qs = self.get_logs_queryset_filter(
|
||||
qs, 'timestamp', is_timestamp=True
|
||||
))
|
||||
)
|
||||
qs_list.append((storage.type, qs))
|
||||
return qs_list
|
||||
|
||||
@lazyproperty
|
||||
@@ -143,7 +146,7 @@ class DateTimeMixin:
|
||||
class DatesLoginMetricMixin:
|
||||
dates_list: list
|
||||
date_start_end: tuple
|
||||
command_queryset_list: list
|
||||
command_type_queryset_list: list
|
||||
sessions_queryset: Session.objects
|
||||
ftp_logs_queryset: FTPLog.objects
|
||||
job_logs_queryset: JobLog.objects
|
||||
@@ -261,11 +264,25 @@ class DatesLoginMetricMixin:
|
||||
|
||||
@lazyproperty
|
||||
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
|
||||
danger_amount = 0
|
||||
for qs in self.command_queryset_list:
|
||||
total_amount += qs.count()
|
||||
danger_amount += qs.filter(risk_level=RiskLevelChoices.reject).count()
|
||||
for tp, qs in self.command_type_queryset_list:
|
||||
t, d = _count_pair(tp, qs)
|
||||
total_amount += t
|
||||
danger_amount += d
|
||||
return total_amount, danger_amount
|
||||
|
||||
@lazyproperty
|
||||
|
||||
@@ -160,6 +160,19 @@ class SSHClient:
|
||||
try:
|
||||
self.client.connect(**self.connect_params)
|
||||
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.switch_user()
|
||||
except Exception as error:
|
||||
@@ -186,16 +199,40 @@ class SSHClient:
|
||||
def _get_match_recv(self, answer_reg=DEFAULT_RE):
|
||||
buffer_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
|
||||
while True:
|
||||
if self.channel.recv_ready():
|
||||
chunk = self.channel.recv(self.buffer_size).decode('utf-8', 'replace')
|
||||
buffer_str += chunk
|
||||
if chunk:
|
||||
buffer_str += chunk
|
||||
last_change_ts = time.time()
|
||||
|
||||
if buffer_str and buffer_str != prev_str:
|
||||
if self.__match(check_reg, buffer_str):
|
||||
if use_regex_match:
|
||||
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
|
||||
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
|
||||
time.sleep(0.01)
|
||||
|
||||
|
||||
@@ -76,7 +76,8 @@ class JMSInventory:
|
||||
proxy_command_list.extend(["-W", "%h:%p", "-q"])
|
||||
|
||||
if gateway.password:
|
||||
proxy_command_list.insert(0, f"sshpass -p {gateway.password}")
|
||||
password = gateway.password.replace("%", "%%")
|
||||
proxy_command_list.insert(0, f"sshpass -p '{password}'")
|
||||
|
||||
if gateway.private_key:
|
||||
proxy_command_list.append(f"-i {gateway.get_private_key_path(path_dir)}")
|
||||
|
||||
@@ -6,6 +6,7 @@ from rest_framework.generics import ListAPIView, CreateAPIView
|
||||
from rest_framework.views import Response
|
||||
from rest_framework_bulk.generics import BulkModelViewSet
|
||||
|
||||
from common.api.action import RenderToJsonMixin
|
||||
from common.drf.filters import IDSpmFilterBackend
|
||||
from users.utils import LoginIpBlockUtil
|
||||
from ..models import LeakPasswords
|
||||
@@ -61,7 +62,7 @@ class UnlockIPSecurityAPI(CreateAPIView):
|
||||
return Response(status=200)
|
||||
|
||||
|
||||
class LeakPasswordViewSet(BulkModelViewSet):
|
||||
class LeakPasswordViewSet(BulkModelViewSet, RenderToJsonMixin):
|
||||
serializer_class = LeakPasswordPSerializer
|
||||
model = LeakPasswords
|
||||
rbac_perms = {
|
||||
@@ -70,6 +71,12 @@ class LeakPasswordViewSet(BulkModelViewSet):
|
||||
queryset = LeakPasswords.objects.none()
|
||||
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):
|
||||
return LeakPasswords.objects.using('sqlite').all()
|
||||
|
||||
|
||||
@@ -12,43 +12,43 @@ class CleaningSerializer(serializers.Serializer):
|
||||
|
||||
LOGIN_LOG_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("Login log retention days (day)"),
|
||||
label=_("Login log retention days"),
|
||||
)
|
||||
TASK_LOG_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("Task log retention days (day)"),
|
||||
label=_("Task log retention days"),
|
||||
)
|
||||
OPERATE_LOG_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("Operate log retention days (day)"),
|
||||
label=_("Operate log retention days"),
|
||||
)
|
||||
PASSWORD_CHANGE_LOG_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("password change log keep days (day)"),
|
||||
label=_("Password change log retention days"),
|
||||
)
|
||||
FTP_LOG_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("FTP log retention days (day)"),
|
||||
label=_("FTP log retention days"),
|
||||
)
|
||||
CLOUD_SYNC_TASK_EXECUTION_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("Cloud sync task history retention days (day)"),
|
||||
label=_("Cloud sync task history retention days"),
|
||||
)
|
||||
JOB_EXECUTION_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("job execution retention days (day)"),
|
||||
label=_("job execution retention days"),
|
||||
)
|
||||
ACTIVITY_LOG_KEEP_DAYS = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("Activity log retention days (day)"),
|
||||
label=_("Activity log retention days"),
|
||||
)
|
||||
TERMINAL_SESSION_KEEP_DURATION = serializers.IntegerField(
|
||||
min_value=MIN_VALUE, max_value=99999, required=True, label=_('Session log retention days (day)'),
|
||||
min_value=MIN_VALUE, max_value=99999, required=True, label=_('Session log retention days'),
|
||||
help_text=_(
|
||||
'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(
|
||||
min_value=MIN_VALUE, max_value=9999,
|
||||
label=_("Change secret and push record retention days (day)"),
|
||||
label=_("Change secret and push record retention days"),
|
||||
)
|
||||
|
||||
@@ -202,25 +202,25 @@ class SecuritySessionSerializer(serializers.Serializer):
|
||||
required=True, label=_('Watermark'),
|
||||
)
|
||||
SECURITY_WATERMARK_SESSION_CONTENT = serializers.CharField(
|
||||
required=False, label=_('Watermark session content'),
|
||||
required=False, label=_('Session content'),
|
||||
)
|
||||
SECURITY_WATERMARK_CONSOLE_CONTENT = serializers.CharField(
|
||||
required=False, label=_("Watermark console content")
|
||||
required=False, label=_("Console content")
|
||||
)
|
||||
SECURITY_WATERMARK_COLOR = serializers.CharField(
|
||||
max_length=32, default="", label=_("Color")
|
||||
max_length=32, default="", label=_("Font color")
|
||||
)
|
||||
SECURITY_WATERMARK_FONT_SIZE = serializers.IntegerField(
|
||||
required=False, label=_('Watermark font size'), min_value=1, max_value=100,
|
||||
required=False, label=_('Font size'), min_value=1, max_value=100,
|
||||
)
|
||||
SECURITY_WATERMARK_HEIGHT = serializers.IntegerField(
|
||||
required=False, label=_('Watermark height'), default=200
|
||||
required=False, label=_('Height'), default=200
|
||||
)
|
||||
SECURITY_WATERMARK_WIDTH = serializers.IntegerField(
|
||||
required=False, label=_('Watermark width'), default=200
|
||||
required=False, label=_('Width'), default=200
|
||||
)
|
||||
SECURITY_WATERMARK_ROTATE = serializers.IntegerField(
|
||||
required=False, label=_('Watermark rotate'), default=45
|
||||
required=False, label=_('Rotate'), default=45
|
||||
)
|
||||
SECURITY_MAX_IDLE_TIME = serializers.IntegerField(
|
||||
min_value=1, max_value=99999, required=False,
|
||||
|
||||
@@ -36,16 +36,16 @@ class CommandFilter(filters.FilterSet):
|
||||
date_from = self.form.cleaned_data.get('date_from')
|
||||
date_to = self.form.cleaned_data.get('date_to')
|
||||
|
||||
filters = {}
|
||||
_filters = {}
|
||||
if date_from:
|
||||
date_from = date_from.timestamp()
|
||||
filters['timestamp__gte'] = date_from
|
||||
_filters['timestamp__gte'] = date_from
|
||||
|
||||
if date_to:
|
||||
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
|
||||
|
||||
def filter_by_asset_id(self, queryset, name, value):
|
||||
|
||||
@@ -41,7 +41,7 @@ class Command(AbstractSessionCommand):
|
||||
'timestamp': int(d.timestamp()),
|
||||
'org_id': str(org.id)
|
||||
})
|
||||
for i in range(count)
|
||||
for __ in range(count)
|
||||
]
|
||||
cls.objects.bulk_create(commands)
|
||||
print(f'Create {len(commands)} commands of org ({org})')
|
||||
|
||||
@@ -68,14 +68,14 @@ dependencies = [
|
||||
'ipip-ipdb==1.6.1',
|
||||
'pywinrm==0.4.3',
|
||||
'python-nmap==0.7.1',
|
||||
'django==4.2.24',
|
||||
'django==4.1.13',
|
||||
'django-bootstrap3==23.4',
|
||||
'django-filter==23.2',
|
||||
'django-formtools==2.5.1',
|
||||
'django-ranged-response==0.2.0',
|
||||
'django-simple-captcha==0.5.18',
|
||||
'django-timezone-field==5.1',
|
||||
'djangorestframework==3.16.1',
|
||||
'djangorestframework==3.14.0',
|
||||
'djangorestframework-bulk==0.2.1',
|
||||
'django-simple-history==3.6.0',
|
||||
'django-private-storage==3.1',
|
||||
|
||||
Reference in New Issue
Block a user