mirror of https://github.com/jumpserver/jumpserver
perf: finish this feat (#14079)
* perf: basic finished * perf: finish this feat * perf: add datetime demo --------- Co-authored-by: ibuler <ibuler@qq.com>pull/14106/head^2
parent
cf1dc79c68
commit
763fe778d5
|
@ -31,6 +31,12 @@ __all__ = [
|
||||||
class AssetProtocolsSerializer(serializers.ModelSerializer):
|
class AssetProtocolsSerializer(serializers.ModelSerializer):
|
||||||
port = serializers.IntegerField(required=False, allow_null=True, max_value=65535, min_value=0)
|
port = serializers.IntegerField(required=False, allow_null=True, max_value=65535, min_value=0)
|
||||||
|
|
||||||
|
def get_render_help_text(self):
|
||||||
|
if self.parent and self.parent.many:
|
||||||
|
return _('Protocols, format is ["protocol/port"]')
|
||||||
|
else:
|
||||||
|
return _('Protocol, format is name/port')
|
||||||
|
|
||||||
def to_file_representation(self, data):
|
def to_file_representation(self, data):
|
||||||
return '{name}/{port}'.format(**data)
|
return '{name}/{port}'.format(**data)
|
||||||
|
|
||||||
|
@ -97,6 +103,9 @@ class AssetAccountSerializer(AccountSerializer):
|
||||||
attrs = super().validate(attrs)
|
attrs = super().validate(attrs)
|
||||||
return self.set_secret(attrs)
|
return self.set_secret(attrs)
|
||||||
|
|
||||||
|
def get_render_help_text(self):
|
||||||
|
return _('Accounts, format [{"name": "x", "username": "x", "secret": "x", "secret_type": "password"}]')
|
||||||
|
|
||||||
class Meta(AccountSerializer.Meta):
|
class Meta(AccountSerializer.Meta):
|
||||||
fields = [
|
fields = [
|
||||||
f for f in AccountSerializer.Meta.fields
|
f for f in AccountSerializer.Meta.fields
|
||||||
|
@ -121,12 +130,23 @@ class AccountSecretSerializer(SecretReadableMixin, CommonModelSerializer):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class NodeDisplaySerializer(serializers.ListField):
|
||||||
|
def get_render_help_text(self):
|
||||||
|
return _('Node path, format ["/org_name/node_name"], if node not exist, will create it')
|
||||||
|
|
||||||
|
def to_internal_value(self, data):
|
||||||
|
return data
|
||||||
|
|
||||||
|
def to_representation(self, data):
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class AssetSerializer(BulkOrgResourceModelSerializer, ResourceLabelsMixin, WritableNestedModelSerializer):
|
class AssetSerializer(BulkOrgResourceModelSerializer, ResourceLabelsMixin, WritableNestedModelSerializer):
|
||||||
category = LabeledChoiceField(choices=Category.choices, read_only=True, label=_('Category'))
|
category = LabeledChoiceField(choices=Category.choices, read_only=True, label=_('Category'))
|
||||||
type = LabeledChoiceField(choices=AllTypes.choices(), read_only=True, label=_('Type'))
|
type = LabeledChoiceField(choices=AllTypes.choices(), read_only=True, label=_('Type'))
|
||||||
protocols = AssetProtocolsSerializer(many=True, required=False, label=_('Protocols'), default=())
|
protocols = AssetProtocolsSerializer(many=True, required=False, label=_('Protocols'), default=())
|
||||||
accounts = AssetAccountSerializer(many=True, required=False, allow_null=True, write_only=True, label=_('Accounts'))
|
accounts = AssetAccountSerializer(many=True, required=False, allow_null=True, write_only=True, label=_('Accounts'))
|
||||||
nodes_display = serializers.ListField(read_only=False, required=False, label=_("Node path"))
|
nodes_display = NodeDisplaySerializer(read_only=False, required=False, label=_("Node path"))
|
||||||
_accounts = None
|
_accounts = None
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -38,9 +38,15 @@ class SuggestionMixin:
|
||||||
class RenderToJsonMixin:
|
class RenderToJsonMixin:
|
||||||
@action(methods=[POST, PUT], detail=False, url_path='render-to-json')
|
@action(methods=[POST, PUT], detail=False, url_path='render-to-json')
|
||||||
def render_to_json(self, request: Request, *args, **kwargs):
|
def render_to_json(self, request: Request, *args, **kwargs):
|
||||||
|
rows = request.data
|
||||||
|
if rows and isinstance(rows[0], dict):
|
||||||
|
first = list(rows[0].values())[0]
|
||||||
|
if first.startswith('#Help'):
|
||||||
|
rows.pop(0)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'title': (),
|
'title': (),
|
||||||
'data': request.data,
|
'data': rows,
|
||||||
}
|
}
|
||||||
|
|
||||||
jms_context = getattr(request, 'jms_context', {})
|
jms_context = getattr(request, 'jms_context', {})
|
||||||
|
|
|
@ -119,8 +119,6 @@ class BaseFileParser(BaseParser):
|
||||||
value = field.to_file_internal_value(value)
|
value = field.to_file_internal_value(value)
|
||||||
elif isinstance(field, serializers.BooleanField):
|
elif isinstance(field, serializers.BooleanField):
|
||||||
value = value.lower() in ['true', '1', 'yes']
|
value = value.lower() in ['true', '1', 'yes']
|
||||||
elif isinstance(field, serializers.ChoiceField):
|
|
||||||
value = value
|
|
||||||
elif isinstance(field, ObjectRelatedField):
|
elif isinstance(field, ObjectRelatedField):
|
||||||
if field.many:
|
if field.many:
|
||||||
value = [self.id_name_to_obj(v) for v in value]
|
value = [self.id_name_to_obj(v) for v in value]
|
||||||
|
@ -164,6 +162,15 @@ class BaseFileParser(BaseParser):
|
||||||
data.append(row_data)
|
data.append(row_data)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def pop_help_text_if_need(rows):
|
||||||
|
rows = list(rows)
|
||||||
|
if not rows:
|
||||||
|
return rows
|
||||||
|
if rows[0][0] == '#Help':
|
||||||
|
rows.pop(0)
|
||||||
|
return rows
|
||||||
|
|
||||||
def parse(self, stream, media_type=None, parser_context=None):
|
def parse(self, stream, media_type=None, parser_context=None):
|
||||||
assert parser_context is not None, '`parser_context` should not be `None`'
|
assert parser_context is not None, '`parser_context` should not be `None`'
|
||||||
|
|
||||||
|
@ -192,6 +199,7 @@ class BaseFileParser(BaseParser):
|
||||||
request.jms_context = {}
|
request.jms_context = {}
|
||||||
request.jms_context['column_title_field_pairs'] = column_title_field_pairs
|
request.jms_context['column_title_field_pairs'] = column_title_field_pairs
|
||||||
|
|
||||||
|
rows = self.pop_help_text_if_need(rows)
|
||||||
data = self.generate_data(field_names, rows)
|
data = self.generate_data(field_names, rows)
|
||||||
return data
|
return data
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -5,12 +5,13 @@ from datetime import datetime
|
||||||
|
|
||||||
import pyzipper
|
import pyzipper
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.renderers import BaseRenderer
|
from rest_framework.renderers import BaseRenderer
|
||||||
from rest_framework.utils import encoders, json
|
from rest_framework.utils import encoders, json
|
||||||
|
|
||||||
from common.serializers.fields import ObjectRelatedField, LabeledChoiceField
|
from common.serializers import fields as common_fields
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
|
@ -38,8 +39,10 @@ class BaseFileRenderer(BaseRenderer):
|
||||||
filename_prefix = serializer.Meta.model.__name__.lower()
|
filename_prefix = serializer.Meta.model.__name__.lower()
|
||||||
else:
|
else:
|
||||||
filename_prefix = 'download'
|
filename_prefix = 'download'
|
||||||
now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
suffix = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
||||||
filename = "{}_{}.{}".format(filename_prefix, now, self.format)
|
if self.template == 'import':
|
||||||
|
suffix = 'template'
|
||||||
|
filename = "{}_{}.{}".format(filename_prefix, suffix, self.format)
|
||||||
disposition = 'attachment; filename="{}"'.format(filename)
|
disposition = 'attachment; filename="{}"'.format(filename)
|
||||||
response['Content-Disposition'] = disposition
|
response['Content-Disposition'] = disposition
|
||||||
|
|
||||||
|
@ -105,10 +108,10 @@ class BaseFileRenderer(BaseRenderer):
|
||||||
value = field.to_file_representation(value)
|
value = field.to_file_representation(value)
|
||||||
elif isinstance(value, bool):
|
elif isinstance(value, bool):
|
||||||
value = 'Yes' if value else 'No'
|
value = 'Yes' if value else 'No'
|
||||||
elif isinstance(field, LabeledChoiceField):
|
elif isinstance(field, common_fields.LabeledChoiceField):
|
||||||
value = value or {}
|
value = value or {}
|
||||||
value = '{}({})'.format(value.get('label'), value.get('value'))
|
value = '{}({})'.format(value.get('label'), value.get('value'))
|
||||||
elif isinstance(field, ObjectRelatedField):
|
elif isinstance(field, common_fields.ObjectRelatedField):
|
||||||
if field.many:
|
if field.many:
|
||||||
value = [self.to_id_name(v) for v in value]
|
value = [self.to_id_name(v) for v in value]
|
||||||
else:
|
else:
|
||||||
|
@ -126,6 +129,53 @@ class BaseFileRenderer(BaseRenderer):
|
||||||
value = json.dumps(value, cls=encoders.JSONEncoder, ensure_ascii=False)
|
value = json.dumps(value, cls=encoders.JSONEncoder, ensure_ascii=False)
|
||||||
return str(value)
|
return str(value)
|
||||||
|
|
||||||
|
def get_field_help_text(self, field):
|
||||||
|
text = ''
|
||||||
|
if hasattr(field, 'get_render_help_text'):
|
||||||
|
text = field.get_render_help_text()
|
||||||
|
elif isinstance(field, serializers.BooleanField):
|
||||||
|
text = _('Yes/No')
|
||||||
|
elif isinstance(field, serializers.CharField):
|
||||||
|
if field.max_length:
|
||||||
|
text = _('Text, max length {}').format(field.max_length)
|
||||||
|
else:
|
||||||
|
text = _("Long text, no length limit")
|
||||||
|
elif isinstance(field, serializers.IntegerField):
|
||||||
|
text = _('Number, min {} max {}').format(field.min_value, field.max_value)
|
||||||
|
text = text.replace('min None', '').replace('max None', '')
|
||||||
|
elif isinstance(field, serializers.DateTimeField):
|
||||||
|
text = _('Datetime format {}').format(timezone.now().strftime(settings.REST_FRAMEWORK['DATETIME_FORMAT']))
|
||||||
|
elif isinstance(field, serializers.IPAddressField):
|
||||||
|
text = _('IP')
|
||||||
|
elif isinstance(field, serializers.ChoiceField):
|
||||||
|
choices = [str(v) for v in field.choices.keys()]
|
||||||
|
if isinstance(field, common_fields.LabeledChoiceField):
|
||||||
|
text = _("Choices, format name(value), name is optional for human read,"
|
||||||
|
" value is requisite, options {}").format(','.join(choices))
|
||||||
|
else:
|
||||||
|
text = _("Choices, options {}").format(",".join(choices))
|
||||||
|
elif isinstance(field, common_fields.PhoneField):
|
||||||
|
text = _("Phone number, format +8612345678901")
|
||||||
|
elif isinstance(field, common_fields.LabeledChoiceField):
|
||||||
|
text = _('Label, format ["key:value"]')
|
||||||
|
elif isinstance(field, common_fields.ObjectRelatedField):
|
||||||
|
text = _("Object, format name(id), name is optional for human read, id is requisite")
|
||||||
|
elif isinstance(field, serializers.PrimaryKeyRelatedField):
|
||||||
|
text = _('Object, format id')
|
||||||
|
elif isinstance(field, serializers.ManyRelatedField):
|
||||||
|
child_relation_class_name = field.child_relation.__class__.__name__
|
||||||
|
if child_relation_class_name == "ObjectRelatedField":
|
||||||
|
text = _('Objects, format ["name(id)", ...], name is optional for human read, id is requisite')
|
||||||
|
elif child_relation_class_name == "LabelRelatedField":
|
||||||
|
text = _('Labels, format ["key:value", ...], if label not exists, will create it')
|
||||||
|
else:
|
||||||
|
text = _('Objects, format ["id", ...]')
|
||||||
|
elif isinstance(field, serializers.ListSerializer):
|
||||||
|
child = field.child
|
||||||
|
if hasattr(child, 'get_render_help_text'):
|
||||||
|
text = child.get_render_help_text()
|
||||||
|
return text
|
||||||
|
|
||||||
def generate_rows(self, data, render_fields):
|
def generate_rows(self, data, render_fields):
|
||||||
for item in data:
|
for item in data:
|
||||||
row = []
|
row = []
|
||||||
|
@ -135,6 +185,17 @@ class BaseFileRenderer(BaseRenderer):
|
||||||
row.append(value)
|
row.append(value)
|
||||||
yield row
|
yield row
|
||||||
|
|
||||||
|
def write_help_text_if_need(self):
|
||||||
|
if self.template == 'export':
|
||||||
|
return
|
||||||
|
fields = self.get_rendered_fields()
|
||||||
|
row = []
|
||||||
|
for f in fields:
|
||||||
|
text = self.get_field_help_text(f)
|
||||||
|
row.append(text)
|
||||||
|
row[0] = '#Help ' + str(row[0])
|
||||||
|
self.write_row(row)
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def initial_writer(self):
|
def initial_writer(self):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -184,6 +245,7 @@ class BaseFileRenderer(BaseRenderer):
|
||||||
rows = self.generate_rows(data, rendered_fields)
|
rows = self.generate_rows(data, rendered_fields)
|
||||||
self.initial_writer()
|
self.initial_writer()
|
||||||
self.write_column_titles(column_titles)
|
self.write_column_titles(column_titles)
|
||||||
|
self.write_help_text_if_need()
|
||||||
self.write_rows(rows)
|
self.write_rows(rows)
|
||||||
self.after_render()
|
self.after_render()
|
||||||
value = self.get_rendered_value()
|
value = self.get_rendered_value()
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
import codecs
|
import codecs
|
||||||
|
|
||||||
import unicodecsv
|
import unicodecsv
|
||||||
from six import BytesIO
|
from six import BytesIO
|
||||||
|
|
||||||
from .base import BaseFileRenderer
|
from .base import BaseFileRenderer
|
||||||
from ..const import CSV_FILE_ESCAPE_CHARS
|
from ..const import CSV_FILE_ESCAPE_CHARS
|
||||||
|
|
||||||
class CSVFileRenderer(BaseFileRenderer):
|
|
||||||
|
|
||||||
|
class CSVFileRenderer(BaseFileRenderer):
|
||||||
media_type = 'text/csv'
|
media_type = 'text/csv'
|
||||||
format = 'csv'
|
format = 'csv'
|
||||||
|
|
||||||
writer = None
|
writer = None
|
||||||
buffer = None
|
buffer = None
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-08-30 15:08+0800\n"
|
"POT-Creation-Date: 2024-09-03 15:26+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -655,7 +655,7 @@ msgstr ""
|
||||||
#: audits/models.py:92 audits/serializers.py:84
|
#: audits/models.py:92 audits/serializers.py:84
|
||||||
#: authentication/serializers/connect_token_secret.py:119
|
#: authentication/serializers/connect_token_secret.py:119
|
||||||
#: authentication/templates/authentication/_access_key_modal.html:34
|
#: authentication/templates/authentication/_access_key_modal.html:34
|
||||||
#: perms/serializers/permission.py:41 perms/serializers/permission.py:63
|
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
|
||||||
#: tickets/serializers/ticket/ticket.py:21
|
#: tickets/serializers/ticket/ticket.py:21
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -703,7 +703,7 @@ msgstr ""
|
||||||
#: assets/models/domain.py:19 assets/models/label.py:18
|
#: assets/models/domain.py:19 assets/models/label.py:18
|
||||||
#: assets/models/platform.py:15 assets/models/platform.py:94
|
#: assets/models/platform.py:15 assets/models/platform.py:94
|
||||||
#: assets/serializers/asset/common.py:149 assets/serializers/platform.py:153
|
#: assets/serializers/asset/common.py:149 assets/serializers/platform.py:153
|
||||||
#: assets/serializers/platform.py:273
|
#: assets/serializers/platform.py:282
|
||||||
#: authentication/backends/passkey/models.py:10
|
#: authentication/backends/passkey/models.py:10
|
||||||
#: authentication/models/ssh_key.py:12
|
#: authentication/models/ssh_key.py:12
|
||||||
#: authentication/serializers/connect_token_secret.py:113
|
#: authentication/serializers/connect_token_secret.py:113
|
||||||
|
@ -845,8 +845,8 @@ msgstr ""
|
||||||
|
|
||||||
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
||||||
#: assets/models/platform.py:95 assets/serializers/asset/common.py:125
|
#: assets/models/platform.py:95 assets/serializers/asset/common.py:125
|
||||||
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:177
|
||||||
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
#: assets/serializers/platform.py:283 perms/serializers/user_permission.py:26
|
||||||
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
||||||
#: users/models/preference.py:12
|
#: users/models/preference.py:12
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
|
@ -857,7 +857,7 @@ msgstr ""
|
||||||
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
||||||
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
||||||
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:155
|
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:155
|
||||||
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
#: assets/serializers/platform.py:176 audits/serializers.py:53
|
||||||
#: audits/serializers.py:170
|
#: audits/serializers.py:170
|
||||||
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
||||||
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
|
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
|
||||||
|
@ -897,7 +897,7 @@ msgstr ""
|
||||||
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
||||||
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
||||||
#: ops/models/job.py:152 ops/serializers/job.py:19
|
#: ops/models/job.py:152 ops/serializers/job.py:19
|
||||||
#: perms/serializers/permission.py:35
|
#: perms/serializers/permission.py:46
|
||||||
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
||||||
#: xpack/plugins/cloud/manager.py:83
|
#: xpack/plugins/cloud/manager.py:83
|
||||||
msgid "Assets"
|
msgid "Assets"
|
||||||
|
@ -919,7 +919,7 @@ msgstr ""
|
||||||
#: accounts/serializers/account/account.py:458
|
#: accounts/serializers/account/account.py:458
|
||||||
#: accounts/serializers/account/base.py:93
|
#: accounts/serializers/account/base.py:93
|
||||||
#: accounts/serializers/account/template.py:72
|
#: accounts/serializers/account/template.py:72
|
||||||
#: assets/serializers/asset/common.py:387
|
#: assets/serializers/asset/common.py:407
|
||||||
msgid "Spec info"
|
msgid "Spec info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1048,7 +1048,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: accounts/serializers/automations/base.py:23
|
#: accounts/serializers/automations/base.py:23
|
||||||
#: assets/models/asset/common.py:169 assets/serializers/asset/common.py:152
|
#: assets/models/asset/common.py:164 assets/serializers/asset/common.py:152
|
||||||
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
||||||
msgid "Nodes"
|
msgid "Nodes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1252,15 +1252,15 @@ msgstr ""
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "Active"
|
msgstr "Active"
|
||||||
|
|
||||||
#: acls/models/base.py:81 perms/serializers/permission.py:31
|
#: acls/models/base.py:81 perms/serializers/permission.py:42
|
||||||
#: tickets/models/flow.py:23 users/models/preference.py:16
|
#: tickets/models/flow.py:23 users/models/preference.py:16
|
||||||
#: users/serializers/group.py:21 users/serializers/user.py:424
|
#: users/serializers/group.py:21 users/serializers/user.py:424
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
||||||
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:128
|
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:148
|
||||||
#: assets/serializers/asset/common.py:386 perms/serializers/permission.py:44
|
#: assets/serializers/asset/common.py:406 perms/serializers/permission.py:55
|
||||||
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
||||||
msgid "Accounts"
|
msgid "Accounts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1392,7 +1392,7 @@ msgstr ""
|
||||||
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
||||||
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
||||||
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
||||||
#: xpack/plugins/cloud/models.py:390
|
#: common/drf/renders/base.py:147 xpack/plugins/cloud/models.py:390
|
||||||
msgid "IP"
|
msgid "IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1809,12 +1809,12 @@ msgstr ""
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:150
|
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:170
|
||||||
#: settings/serializers/terminal.py:10
|
#: settings/serializers/terminal.py:10
|
||||||
msgid "Address"
|
msgid "Address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/models/asset/common.py:162 assets/models/platform.py:149
|
#: assets/models/asset/common.py:161 assets/models/platform.py:138
|
||||||
#: authentication/backends/passkey/models.py:12
|
#: authentication/backends/passkey/models.py:12
|
||||||
#: authentication/serializers/connect_token_secret.py:118
|
#: authentication/serializers/connect_token_secret.py:118
|
||||||
#: perms/serializers/user_permission.py:25 xpack/plugins/cloud/models.py:385
|
#: perms/serializers/user_permission.py:25 xpack/plugins/cloud/models.py:385
|
||||||
|
@ -1825,7 +1825,7 @@ msgstr ""
|
||||||
msgid "Zone"
|
msgid "Zone"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/models/asset/common.py:172 assets/serializers/asset/common.py:388
|
#: assets/models/asset/common.py:166 assets/serializers/asset/common.py:388
|
||||||
#: assets/serializers/asset/host.py:11
|
#: assets/serializers/asset/host.py:11
|
||||||
msgid "Gathered info"
|
msgid "Gathered info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2169,38 +2169,58 @@ msgid ""
|
||||||
"type"
|
"type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:127 assets/serializers/platform.py:169
|
#: assets/serializers/asset/common.py:36
|
||||||
|
msgid "Protocols, format is [\"protocol/port\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:38
|
||||||
|
msgid "Protocol, format is name/port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:107
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [{\"name\": \"x\", \"username\": \"x\", \"secret\": \"x\", "
|
||||||
|
"\"secret_type\": \"password\"}]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:135
|
||||||
|
msgid ""
|
||||||
|
"Node path, format [\"/org_name/node_name\"], if node not exist, will create "
|
||||||
|
"it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:147 assets/serializers/platform.py:169
|
||||||
#: authentication/serializers/connect_token_secret.py:30
|
#: authentication/serializers/connect_token_secret.py:30
|
||||||
#: authentication/serializers/connect_token_secret.py:75
|
#: authentication/serializers/connect_token_secret.py:75
|
||||||
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:45
|
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:56
|
||||||
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
||||||
#: xpack/plugins/cloud/serializers/task.py:35
|
#: xpack/plugins/cloud/serializers/task.py:35
|
||||||
msgid "Protocols"
|
msgid "Protocols"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:129
|
#: assets/serializers/asset/common.py:149
|
||||||
#: assets/serializers/asset/common.py:151
|
#: assets/serializers/asset/common.py:171
|
||||||
msgid "Node path"
|
msgid "Node path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:148
|
#: assets/serializers/asset/common.py:168
|
||||||
#: assets/serializers/asset/common.py:389
|
#: assets/serializers/asset/common.py:409
|
||||||
msgid "Auto info"
|
msgid "Auto info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:245
|
#: assets/serializers/asset/common.py:265
|
||||||
msgid "Platform not exist"
|
msgid "Platform not exist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:281
|
#: assets/serializers/asset/common.py:301
|
||||||
msgid "port out of range (0-65535)"
|
msgid "port out of range (0-65535)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:288
|
#: assets/serializers/asset/common.py:308
|
||||||
msgid "Protocol is required: {}"
|
msgid "Protocol is required: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:316
|
#: assets/serializers/asset/common.py:336
|
||||||
msgid "Invalid data"
|
msgid "Invalid data"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2286,7 +2306,7 @@ msgid ""
|
||||||
"the zone, the connection is routed through the gateway."
|
"the zone, the connection is routed through the gateway."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
#: assets/serializers/domain.py:24 assets/serializers/platform.py:186
|
||||||
#: orgs/serializers.py:13 perms/serializers/permission.py:39
|
#: orgs/serializers.py:13 perms/serializers/permission.py:39
|
||||||
msgid "Assets amount"
|
msgid "Assets amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2645,7 +2665,7 @@ msgid "Resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
||||||
#: terminal/serializers/command.py:75
|
#: common/drf/renders/base.py:145 terminal/serializers/command.py:75
|
||||||
msgid "Datetime"
|
msgid "Datetime"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3402,7 +3422,7 @@ msgid "Actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentication/serializers/connection_token.py:42
|
#: authentication/serializers/connection_token.py:42
|
||||||
#: perms/serializers/permission.py:43 perms/serializers/permission.py:64
|
#: perms/serializers/permission.py:54 perms/serializers/permission.py:75
|
||||||
#: users/serializers/user.py:127 users/serializers/user.py:273
|
#: users/serializers/user.py:127 users/serializers/user.py:273
|
||||||
msgid "Is expired"
|
msgid "Is expired"
|
||||||
msgstr "Expired"
|
msgstr "Expired"
|
||||||
|
@ -3444,8 +3464,8 @@ msgstr ""
|
||||||
msgid "Access IP"
|
msgid "Access IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: authentication/serializers/token.py:92 perms/serializers/permission.py:42
|
#: authentication/serializers/token.py:92 perms/serializers/permission.py:53
|
||||||
#: perms/serializers/permission.py:65 users/serializers/user.py:128
|
#: perms/serializers/permission.py:76 users/serializers/user.py:128
|
||||||
#: users/serializers/user.py:270
|
#: users/serializers/user.py:270
|
||||||
msgid "Is valid"
|
msgid "Is valid"
|
||||||
msgstr "Is Valid"
|
msgstr "Is Valid"
|
||||||
|
@ -3953,7 +3973,7 @@ msgstr "Organization ID"
|
||||||
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: common/drf/parsers/base.py:199
|
#: common/drf/parsers/base.py:207
|
||||||
msgid "Parse file error: {}"
|
msgid "Parse file error: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3961,7 +3981,65 @@ msgstr ""
|
||||||
msgid "Invalid excel file"
|
msgid "Invalid excel file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: common/drf/renders/base.py:208
|
#: common/drf/renders/base.py:135
|
||||||
|
msgid "Yes/No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:138
|
||||||
|
msgid "Text, max length {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:140
|
||||||
|
msgid "Long text, no length limit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:142
|
||||||
|
msgid "Number, min {} max {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:153
|
||||||
|
msgid ""
|
||||||
|
"Choices, format name(value), name is optional for human read, value is "
|
||||||
|
"requisite, options {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:156
|
||||||
|
msgid "Choices, options {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:158
|
||||||
|
msgid "Phone number, format +8612345678901"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:160
|
||||||
|
msgid "Label, format [\"key:value\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:162
|
||||||
|
msgid ""
|
||||||
|
"Object, format name(id), name is optional for human read, id is requisite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:164
|
||||||
|
msgid "Object, format id"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:168
|
||||||
|
msgid ""
|
||||||
|
"Objects, format [\"name(id)\", ...], name is optional for human read, id is "
|
||||||
|
"requisite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:170
|
||||||
|
msgid ""
|
||||||
|
"Labels, format [\"key:value\", ...], if label not exists, will create it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:172
|
||||||
|
msgid "Objects, format [\"id\", ...]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:270
|
||||||
msgid ""
|
msgid ""
|
||||||
"{} - The encryption password has not been set - please go to personal "
|
"{} - The encryption password has not been set - please go to personal "
|
||||||
"information -> file encryption password to set the encryption password"
|
"information -> file encryption password to set the encryption password"
|
||||||
|
@ -4776,7 +4854,7 @@ msgstr ""
|
||||||
msgid "Can not delete virtual org"
|
msgid "Can not delete virtual org"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: orgs/serializers.py:10 perms/serializers/permission.py:37
|
#: orgs/serializers.py:10 perms/serializers/permission.py:48
|
||||||
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
||||||
msgid "Users amount"
|
msgid "Users amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -4785,7 +4863,7 @@ msgstr ""
|
||||||
msgid "User groups amount"
|
msgid "User groups amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: orgs/serializers.py:14 perms/serializers/permission.py:40
|
#: orgs/serializers.py:14 perms/serializers/permission.py:51
|
||||||
msgid "Nodes amount"
|
msgid "Nodes amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -4902,11 +4980,21 @@ msgstr ""
|
||||||
msgid "asset permissions of organization {}"
|
msgid "asset permissions of organization {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: perms/serializers/permission.py:33 users/serializers/user.py:257
|
#: perms/serializers/permission.py:32
|
||||||
msgid "Groups"
|
msgid ""
|
||||||
|
"Accounts, format [\"@virtual\", \"root\", \"%template_id\"], virtual "
|
||||||
|
"choices: @ALL, @SPEC, @USER, @ANON, @INPUT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: perms/serializers/permission.py:38
|
#: perms/serializers/permission.py:38
|
||||||
|
msgid "Protocols, format [\"ssh\", \"rdp\", \"vnc\"] or [\"all\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:44 users/serializers/user.py:257
|
||||||
|
msgid "Groups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:49
|
||||||
msgid "Groups amount"
|
msgid "Groups amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5483,9 +5571,9 @@ msgstr ""
|
||||||
#: settings/serializers/auth/ldap.py:91
|
#: settings/serializers/auth/ldap.py:91
|
||||||
msgid ""
|
msgid ""
|
||||||
"Caching the User DN obtained during user login authentication can "
|
"Caching the User DN obtained during user login authentication can "
|
||||||
"effectivelyimprove the speed of user authentication., 0 means no cache<br>If "
|
"effectively improve the speed of user authentication., 0 means no "
|
||||||
"the user OU structure has been adjusted, click Submit to clear the user DN "
|
"cache<br>If the user OU structure has been adjusted, click Submit to clear "
|
||||||
"cache"
|
"the user DN cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: settings/serializers/auth/ldap.py:97
|
#: settings/serializers/auth/ldap.py:97
|
||||||
|
@ -6574,12 +6662,12 @@ msgstr ""
|
||||||
msgid "Authentication success: {}"
|
msgid "Authentication success: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: settings/ws.py:203
|
#: settings/ws.py:195
|
||||||
msgid "No LDAP user was found"
|
msgid "No LDAP user was found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: settings/ws.py:209
|
#: settings/ws.py:201
|
||||||
msgid "Total {}, success {}, failure {}"
|
msgid "Imported total: {} new: {}, failed: {} Organization: {}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/_csv_import_export.html:8
|
#: templates/_csv_import_export.html:8
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-09-06 10:29+0800\n"
|
"POT-Creation-Date: 2024-08-15 14:04+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -655,7 +655,7 @@ msgstr "トリガー方式"
|
||||||
#: audits/models.py:92 audits/serializers.py:84
|
#: audits/models.py:92 audits/serializers.py:84
|
||||||
#: authentication/serializers/connect_token_secret.py:119
|
#: authentication/serializers/connect_token_secret.py:119
|
||||||
#: authentication/templates/authentication/_access_key_modal.html:34
|
#: authentication/templates/authentication/_access_key_modal.html:34
|
||||||
#: perms/serializers/permission.py:41 perms/serializers/permission.py:63
|
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
|
||||||
#: tickets/serializers/ticket/ticket.py:21
|
#: tickets/serializers/ticket/ticket.py:21
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "アクション"
|
msgstr "アクション"
|
||||||
|
@ -702,7 +702,7 @@ msgstr "パスワードルール"
|
||||||
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
|
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
|
||||||
#: assets/models/domain.py:19 assets/models/label.py:18
|
#: assets/models/domain.py:19 assets/models/label.py:18
|
||||||
#: assets/models/platform.py:15 assets/models/platform.py:94
|
#: assets/models/platform.py:15 assets/models/platform.py:94
|
||||||
#: assets/serializers/asset/common.py:149 assets/serializers/platform.py:153
|
#: assets/serializers/asset/common.py:169 assets/serializers/platform.py:153
|
||||||
#: assets/serializers/platform.py:273
|
#: assets/serializers/platform.py:273
|
||||||
#: authentication/backends/passkey/models.py:10
|
#: authentication/backends/passkey/models.py:10
|
||||||
#: authentication/models/ssh_key.py:12
|
#: authentication/models/ssh_key.py:12
|
||||||
|
@ -854,7 +854,7 @@ msgid "Exist policy"
|
||||||
msgstr "アカウントの存在ポリシー"
|
msgstr "アカウントの存在ポリシー"
|
||||||
|
|
||||||
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
||||||
#: assets/models/platform.py:95 assets/serializers/asset/common.py:125
|
#: assets/models/platform.py:95 assets/serializers/asset/common.py:145
|
||||||
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
||||||
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
||||||
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
||||||
|
@ -866,7 +866,7 @@ msgstr "カテゴリ"
|
||||||
#: accounts/serializers/automations/base.py:55 acls/models/command_acl.py:24
|
#: accounts/serializers/automations/base.py:55 acls/models/command_acl.py:24
|
||||||
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
||||||
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
||||||
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:155
|
#: assets/serializers/asset/common.py:146 assets/serializers/platform.py:155
|
||||||
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
||||||
#: audits/serializers.py:170
|
#: audits/serializers.py:170
|
||||||
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
||||||
|
@ -907,7 +907,7 @@ msgstr "編集済み"
|
||||||
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
||||||
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
||||||
#: ops/models/job.py:152 ops/serializers/job.py:19
|
#: ops/models/job.py:152 ops/serializers/job.py:19
|
||||||
#: perms/serializers/permission.py:35
|
#: perms/serializers/permission.py:46
|
||||||
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
||||||
#: xpack/plugins/cloud/manager.py:83
|
#: xpack/plugins/cloud/manager.py:83
|
||||||
msgid "Assets"
|
msgid "Assets"
|
||||||
|
@ -929,7 +929,7 @@ msgstr "アカウントはすでに存在しています"
|
||||||
#: accounts/serializers/account/account.py:458
|
#: accounts/serializers/account/account.py:458
|
||||||
#: accounts/serializers/account/base.py:93
|
#: accounts/serializers/account/base.py:93
|
||||||
#: accounts/serializers/account/template.py:72
|
#: accounts/serializers/account/template.py:72
|
||||||
#: assets/serializers/asset/common.py:387
|
#: assets/serializers/asset/common.py:407
|
||||||
msgid "Spec info"
|
msgid "Spec info"
|
||||||
msgstr "特別情報"
|
msgstr "特別情報"
|
||||||
|
|
||||||
|
@ -1064,7 +1064,7 @@ msgstr ""
|
||||||
"ください。 "
|
"ください。 "
|
||||||
|
|
||||||
#: accounts/serializers/automations/base.py:23
|
#: accounts/serializers/automations/base.py:23
|
||||||
#: assets/models/asset/common.py:169 assets/serializers/asset/common.py:152
|
#: assets/models/asset/common.py:164 assets/serializers/asset/common.py:152
|
||||||
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
||||||
msgid "Nodes"
|
msgid "Nodes"
|
||||||
msgstr "ノード"
|
msgstr "ノード"
|
||||||
|
@ -1278,15 +1278,15 @@ msgstr "レビュー担当者"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "アクティブ"
|
msgstr "アクティブ"
|
||||||
|
|
||||||
#: acls/models/base.py:81 perms/serializers/permission.py:31
|
#: acls/models/base.py:81 perms/serializers/permission.py:42
|
||||||
#: tickets/models/flow.py:23 users/models/preference.py:16
|
#: tickets/models/flow.py:23 users/models/preference.py:16
|
||||||
#: users/serializers/group.py:21 users/serializers/user.py:424
|
#: users/serializers/group.py:21 users/serializers/user.py:424
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "ユーザー"
|
msgstr "ユーザー"
|
||||||
|
|
||||||
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
||||||
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:128
|
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:148
|
||||||
#: assets/serializers/asset/common.py:386 perms/serializers/permission.py:44
|
#: assets/serializers/asset/common.py:406 perms/serializers/permission.py:55
|
||||||
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
||||||
msgid "Accounts"
|
msgid "Accounts"
|
||||||
msgstr "アカウント"
|
msgstr "アカウント"
|
||||||
|
@ -1423,7 +1423,7 @@ msgstr ""
|
||||||
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
||||||
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
||||||
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
||||||
#: xpack/plugins/cloud/models.py:390
|
#: common/drf/renders/base.py:147 xpack/plugins/cloud/models.py:390
|
||||||
msgid "IP"
|
msgid "IP"
|
||||||
msgstr "IP"
|
msgstr "IP"
|
||||||
|
|
||||||
|
@ -1856,7 +1856,7 @@ msgstr "クラウド サービス"
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "ポート"
|
msgstr "ポート"
|
||||||
|
|
||||||
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:150
|
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:170
|
||||||
#: settings/serializers/terminal.py:10
|
#: settings/serializers/terminal.py:10
|
||||||
msgid "Address"
|
msgid "Address"
|
||||||
msgstr "アドレス"
|
msgstr "アドレス"
|
||||||
|
@ -1872,7 +1872,7 @@ msgstr "プラットフォーム"
|
||||||
msgid "Zone"
|
msgid "Zone"
|
||||||
msgstr "ゾーン"
|
msgstr "ゾーン"
|
||||||
|
|
||||||
#: assets/models/asset/common.py:172 assets/serializers/asset/common.py:388
|
#: assets/models/asset/common.py:166 assets/serializers/asset/common.py:388
|
||||||
#: assets/serializers/asset/host.py:11
|
#: assets/serializers/asset/host.py:11
|
||||||
msgid "Gathered info"
|
msgid "Gathered info"
|
||||||
msgstr "資産ハードウェア情報の収集"
|
msgstr "資産ハードウェア情報の収集"
|
||||||
|
@ -2218,38 +2218,58 @@ msgstr ""
|
||||||
"プラットフォームタイプがスキップされた資産に合致しない、資産内の一括更新プ"
|
"プラットフォームタイプがスキップされた資産に合致しない、資産内の一括更新プ"
|
||||||
"ラットフォーム"
|
"ラットフォーム"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:127 assets/serializers/platform.py:169
|
#: assets/serializers/asset/common.py:36
|
||||||
|
msgid "Protocols, format is [\"protocol/port\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:38
|
||||||
|
msgid "Protocol, format is name/port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:107
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [{\"name\": \"x\", \"username\": \"x\", \"secret\": \"x\", "
|
||||||
|
"\"secret_type\": \"password\"}]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:135
|
||||||
|
msgid ""
|
||||||
|
"Node path, format [\"/org_name/node_name\"], if node not exist, will create "
|
||||||
|
"it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:147 assets/serializers/platform.py:169
|
||||||
#: authentication/serializers/connect_token_secret.py:30
|
#: authentication/serializers/connect_token_secret.py:30
|
||||||
#: authentication/serializers/connect_token_secret.py:75
|
#: authentication/serializers/connect_token_secret.py:75
|
||||||
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:45
|
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:56
|
||||||
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
||||||
#: xpack/plugins/cloud/serializers/task.py:35
|
#: xpack/plugins/cloud/serializers/task.py:35
|
||||||
msgid "Protocols"
|
msgid "Protocols"
|
||||||
msgstr "プロトコル"
|
msgstr "プロトコル"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:129
|
#: assets/serializers/asset/common.py:149
|
||||||
#: assets/serializers/asset/common.py:151
|
#: assets/serializers/asset/common.py:171
|
||||||
msgid "Node path"
|
msgid "Node path"
|
||||||
msgstr "ノードパスです"
|
msgstr "ノードパスです"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:148
|
#: assets/serializers/asset/common.py:168
|
||||||
#: assets/serializers/asset/common.py:389
|
#: assets/serializers/asset/common.py:409
|
||||||
msgid "Auto info"
|
msgid "Auto info"
|
||||||
msgstr "自動情報"
|
msgstr "自動情報"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:245
|
#: assets/serializers/asset/common.py:265
|
||||||
msgid "Platform not exist"
|
msgid "Platform not exist"
|
||||||
msgstr "プラットフォームが存在しません"
|
msgstr "プラットフォームが存在しません"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:281
|
#: assets/serializers/asset/common.py:301
|
||||||
msgid "port out of range (0-65535)"
|
msgid "port out of range (0-65535)"
|
||||||
msgstr "ポート番号が範囲外です (0-65535)"
|
msgstr "ポート番号が範囲外です (0-65535)"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:288
|
#: assets/serializers/asset/common.py:308
|
||||||
msgid "Protocol is required: {}"
|
msgid "Protocol is required: {}"
|
||||||
msgstr "プロトコルが必要です: {}"
|
msgstr "プロトコルが必要です: {}"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:316
|
#: assets/serializers/asset/common.py:336
|
||||||
msgid "Invalid data"
|
msgid "Invalid data"
|
||||||
msgstr "無効なデータ"
|
msgstr "無効なデータ"
|
||||||
|
|
||||||
|
@ -2340,7 +2360,7 @@ msgstr ""
|
||||||
"る際には、接続はゲートウェイを通してルーティングされます。"
|
"る際には、接続はゲートウェイを通してルーティングされます。"
|
||||||
|
|
||||||
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
||||||
#: orgs/serializers.py:13 perms/serializers/permission.py:39
|
#: orgs/serializers.py:13 perms/serializers/permission.py:50
|
||||||
msgid "Assets amount"
|
msgid "Assets amount"
|
||||||
msgstr "資産数量"
|
msgstr "資産数量"
|
||||||
|
|
||||||
|
@ -2708,7 +2728,7 @@ msgid "Resource"
|
||||||
msgstr "リソース"
|
msgstr "リソース"
|
||||||
|
|
||||||
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
||||||
#: terminal/serializers/command.py:75
|
#: common/drf/renders/base.py:145 terminal/serializers/command.py:75
|
||||||
msgid "Datetime"
|
msgid "Datetime"
|
||||||
msgstr "時間"
|
msgstr "時間"
|
||||||
|
|
||||||
|
@ -3491,7 +3511,7 @@ msgid "Actions"
|
||||||
msgstr "アクション"
|
msgstr "アクション"
|
||||||
|
|
||||||
#: authentication/serializers/connection_token.py:42
|
#: authentication/serializers/connection_token.py:42
|
||||||
#: perms/serializers/permission.py:43 perms/serializers/permission.py:64
|
#: perms/serializers/permission.py:54 perms/serializers/permission.py:75
|
||||||
#: users/serializers/user.py:127 users/serializers/user.py:273
|
#: users/serializers/user.py:127 users/serializers/user.py:273
|
||||||
msgid "Is expired"
|
msgid "Is expired"
|
||||||
msgstr "期限切れです"
|
msgstr "期限切れです"
|
||||||
|
@ -3535,8 +3555,8 @@ msgstr "有効なssh公開鍵ではありません"
|
||||||
msgid "Access IP"
|
msgid "Access IP"
|
||||||
msgstr "Access IP"
|
msgstr "Access IP"
|
||||||
|
|
||||||
#: authentication/serializers/token.py:92 perms/serializers/permission.py:42
|
#: authentication/serializers/token.py:92 perms/serializers/permission.py:53
|
||||||
#: perms/serializers/permission.py:65 users/serializers/user.py:128
|
#: perms/serializers/permission.py:76 users/serializers/user.py:128
|
||||||
#: users/serializers/user.py:270
|
#: users/serializers/user.py:270
|
||||||
msgid "Is valid"
|
msgid "Is valid"
|
||||||
msgstr "有効です"
|
msgstr "有効です"
|
||||||
|
@ -4063,7 +4083,7 @@ msgstr "組織 ID"
|
||||||
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
||||||
msgstr "ファイルの内容がオーバーフローしました (最大長 '{}' バイト)"
|
msgstr "ファイルの内容がオーバーフローしました (最大長 '{}' バイト)"
|
||||||
|
|
||||||
#: common/drf/parsers/base.py:199
|
#: common/drf/parsers/base.py:207
|
||||||
msgid "Parse file error: {}"
|
msgid "Parse file error: {}"
|
||||||
msgstr "解析ファイルエラー: {}"
|
msgstr "解析ファイルエラー: {}"
|
||||||
|
|
||||||
|
@ -4071,7 +4091,67 @@ msgstr "解析ファイルエラー: {}"
|
||||||
msgid "Invalid excel file"
|
msgid "Invalid excel file"
|
||||||
msgstr "無効 excel 書類"
|
msgstr "無効 excel 書類"
|
||||||
|
|
||||||
#: common/drf/renders/base.py:208
|
#: common/drf/renders/base.py:135
|
||||||
|
msgid "Yes/No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:138
|
||||||
|
msgid "Text, max length {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:140
|
||||||
|
msgid "Long text, no length limit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:142
|
||||||
|
msgid "Number, min {} max {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:153
|
||||||
|
msgid ""
|
||||||
|
"Choices, format name(value), name is optional for human read, value is "
|
||||||
|
"requisite, options {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:156
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Connect options"
|
||||||
|
msgid "Choices, options {}"
|
||||||
|
msgstr "接続アイテム"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:158
|
||||||
|
msgid "Phone number, format +8612345678901"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:160
|
||||||
|
msgid "Label, format [\"key:value\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:162
|
||||||
|
msgid ""
|
||||||
|
"Object, format name(id), name is optional for human read, id is requisite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:164
|
||||||
|
msgid "Object, format id"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:168
|
||||||
|
msgid ""
|
||||||
|
"Objects, format [\"name(id)\", ...], name is optional for human read, id is "
|
||||||
|
"requisite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:170
|
||||||
|
msgid ""
|
||||||
|
"Labels, format [\"key:value\", ...], if label not exists, will create it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:172
|
||||||
|
msgid "Objects, format [\"id\", ...]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:270
|
||||||
msgid ""
|
msgid ""
|
||||||
"{} - The encryption password has not been set - please go to personal "
|
"{} - The encryption password has not been set - please go to personal "
|
||||||
"information -> file encryption password to set the encryption password"
|
"information -> file encryption password to set the encryption password"
|
||||||
|
@ -4906,7 +4986,7 @@ msgstr "参加しているすべての組織を表示できます"
|
||||||
msgid "Can not delete virtual org"
|
msgid "Can not delete virtual org"
|
||||||
msgstr "仮想組織を削除できませんでした"
|
msgstr "仮想組織を削除できませんでした"
|
||||||
|
|
||||||
#: orgs/serializers.py:10 perms/serializers/permission.py:37
|
#: orgs/serializers.py:10 perms/serializers/permission.py:48
|
||||||
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
||||||
msgid "Users amount"
|
msgid "Users amount"
|
||||||
msgstr "ユーザー数"
|
msgstr "ユーザー数"
|
||||||
|
@ -4915,7 +4995,7 @@ msgstr "ユーザー数"
|
||||||
msgid "User groups amount"
|
msgid "User groups amount"
|
||||||
msgstr "ユーザーグループの数"
|
msgstr "ユーザーグループの数"
|
||||||
|
|
||||||
#: orgs/serializers.py:14 perms/serializers/permission.py:40
|
#: orgs/serializers.py:14 perms/serializers/permission.py:51
|
||||||
msgid "Nodes amount"
|
msgid "Nodes amount"
|
||||||
msgstr "ノード数"
|
msgstr "ノード数"
|
||||||
|
|
||||||
|
@ -5032,11 +5112,21 @@ msgstr "資産権限の有効期限が近づいています"
|
||||||
msgid "asset permissions of organization {}"
|
msgid "asset permissions of organization {}"
|
||||||
msgstr "組織 {} の資産権限"
|
msgstr "組織 {} の資産権限"
|
||||||
|
|
||||||
#: perms/serializers/permission.py:33 users/serializers/user.py:257
|
#: perms/serializers/permission.py:32
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [\"@virtual\", \"root\", \"%template_id\"], virtual "
|
||||||
|
"choices: @ALL, @SPEC, @USER, @ANON, @INPUT"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:38
|
||||||
|
msgid "Protocols, format [\"ssh\", \"rdp\", \"vnc\"] or [\"all\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:44 users/serializers/user.py:257
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr "ユーザーグループ"
|
msgstr "ユーザーグループ"
|
||||||
|
|
||||||
#: perms/serializers/permission.py:38
|
#: perms/serializers/permission.py:49
|
||||||
msgid "Groups amount"
|
msgid "Groups amount"
|
||||||
msgstr "ユーザーグループの数"
|
msgstr "ユーザーグループの数"
|
||||||
|
|
||||||
|
@ -5639,9 +5729,9 @@ msgstr "User DN キャッシュの有効期限 (秒)"
|
||||||
#: settings/serializers/auth/ldap.py:91
|
#: settings/serializers/auth/ldap.py:91
|
||||||
msgid ""
|
msgid ""
|
||||||
"Caching the User DN obtained during user login authentication can "
|
"Caching the User DN obtained during user login authentication can "
|
||||||
"effectivelyimprove the speed of user authentication., 0 means no cache<br>If "
|
"effectively improve the speed of user authentication., 0 means no "
|
||||||
"the user OU structure has been adjusted, click Submit to clear the user DN "
|
"cache<br>If the user OU structure has been adjusted, click Submit to clear "
|
||||||
"cache"
|
"the user DN cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ユーザーログイン認証時に取得したユーザー DN をキャッシュすることで、ユーザー"
|
"ユーザーログイン認証時に取得したユーザー DN をキャッシュすることで、ユーザー"
|
||||||
"認証の速度を効果的に向上させることができます<br>ユーザー OU 構造が調整された"
|
"認証の速度を効果的に向上させることができます<br>ユーザー OU 構造が調整された"
|
||||||
|
@ -6827,11 +6917,11 @@ msgstr "認証に失敗しました (不明): {}"
|
||||||
msgid "Authentication success: {}"
|
msgid "Authentication success: {}"
|
||||||
msgstr "認証成功: {}"
|
msgstr "認証成功: {}"
|
||||||
|
|
||||||
#: settings/ws.py:203
|
#: settings/ws.py:198
|
||||||
msgid "No LDAP user was found"
|
msgid "No LDAP user was found"
|
||||||
msgstr "LDAPユーザーが取得されませんでした"
|
msgstr "LDAPユーザーが取得されませんでした"
|
||||||
|
|
||||||
#: settings/ws.py:209
|
#: settings/ws.py:204
|
||||||
msgid "Total {}, success {}, failure {}"
|
msgid "Total {}, success {}, failure {}"
|
||||||
msgstr "合計 {},成功 {},失敗 {}"
|
msgstr "合計 {},成功 {},失敗 {}"
|
||||||
|
|
||||||
|
@ -9977,3 +10067,8 @@ msgstr "エンタープライズプロフェッショナル版"
|
||||||
#: xpack/plugins/license/models.py:86
|
#: xpack/plugins/license/models.py:86
|
||||||
msgid "Ultimate edition"
|
msgid "Ultimate edition"
|
||||||
msgstr "エンタープライズ・フラッグシップ・エディション"
|
msgstr "エンタープライズ・フラッグシップ・エディション"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~| msgid "Help text"
|
||||||
|
#~ msgid "#Help: "
|
||||||
|
#~ msgstr "ヘルプ"
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: JumpServer 0.3.3\n"
|
"Project-Id-Version: JumpServer 0.3.3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-09-06 10:29+0800\n"
|
"POT-Creation-Date: 2024-09-03 15:26+0800\n"
|
||||||
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
||||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||||
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
||||||
|
@ -654,7 +654,7 @@ msgstr "触发方式"
|
||||||
#: audits/models.py:92 audits/serializers.py:84
|
#: audits/models.py:92 audits/serializers.py:84
|
||||||
#: authentication/serializers/connect_token_secret.py:119
|
#: authentication/serializers/connect_token_secret.py:119
|
||||||
#: authentication/templates/authentication/_access_key_modal.html:34
|
#: authentication/templates/authentication/_access_key_modal.html:34
|
||||||
#: perms/serializers/permission.py:41 perms/serializers/permission.py:63
|
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
|
||||||
#: tickets/serializers/ticket/ticket.py:21
|
#: tickets/serializers/ticket/ticket.py:21
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "动作"
|
msgstr "动作"
|
||||||
|
@ -701,7 +701,7 @@ msgstr "密码规则"
|
||||||
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
|
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
|
||||||
#: assets/models/domain.py:19 assets/models/label.py:18
|
#: assets/models/domain.py:19 assets/models/label.py:18
|
||||||
#: assets/models/platform.py:15 assets/models/platform.py:94
|
#: assets/models/platform.py:15 assets/models/platform.py:94
|
||||||
#: assets/serializers/asset/common.py:149 assets/serializers/platform.py:153
|
#: assets/serializers/asset/common.py:169 assets/serializers/platform.py:153
|
||||||
#: assets/serializers/platform.py:273
|
#: assets/serializers/platform.py:273
|
||||||
#: authentication/backends/passkey/models.py:10
|
#: authentication/backends/passkey/models.py:10
|
||||||
#: authentication/models/ssh_key.py:12
|
#: authentication/models/ssh_key.py:12
|
||||||
|
@ -852,7 +852,7 @@ msgid "Exist policy"
|
||||||
msgstr "账号存在策略"
|
msgstr "账号存在策略"
|
||||||
|
|
||||||
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
||||||
#: assets/models/platform.py:95 assets/serializers/asset/common.py:125
|
#: assets/models/platform.py:95 assets/serializers/asset/common.py:145
|
||||||
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
||||||
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
||||||
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
||||||
|
@ -864,7 +864,7 @@ msgstr "类别"
|
||||||
#: accounts/serializers/automations/base.py:55 acls/models/command_acl.py:24
|
#: accounts/serializers/automations/base.py:55 acls/models/command_acl.py:24
|
||||||
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
||||||
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
||||||
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:155
|
#: assets/serializers/asset/common.py:146 assets/serializers/platform.py:155
|
||||||
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
||||||
#: audits/serializers.py:170
|
#: audits/serializers.py:170
|
||||||
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
||||||
|
@ -905,7 +905,7 @@ msgstr "已修改"
|
||||||
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
||||||
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
||||||
#: ops/models/job.py:152 ops/serializers/job.py:19
|
#: ops/models/job.py:152 ops/serializers/job.py:19
|
||||||
#: perms/serializers/permission.py:35
|
#: perms/serializers/permission.py:46
|
||||||
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
||||||
#: xpack/plugins/cloud/manager.py:83
|
#: xpack/plugins/cloud/manager.py:83
|
||||||
msgid "Assets"
|
msgid "Assets"
|
||||||
|
@ -927,7 +927,7 @@ msgstr "账号已存在"
|
||||||
#: accounts/serializers/account/account.py:458
|
#: accounts/serializers/account/account.py:458
|
||||||
#: accounts/serializers/account/base.py:93
|
#: accounts/serializers/account/base.py:93
|
||||||
#: accounts/serializers/account/template.py:72
|
#: accounts/serializers/account/template.py:72
|
||||||
#: assets/serializers/asset/common.py:387
|
#: assets/serializers/asset/common.py:407
|
||||||
msgid "Spec info"
|
msgid "Spec info"
|
||||||
msgstr "特殊信息"
|
msgstr "特殊信息"
|
||||||
|
|
||||||
|
@ -1061,7 +1061,7 @@ msgstr ""
|
||||||
"CACHE_LOGIN_PASSWORD_ENABLED=true,重启服务才能开启"
|
"CACHE_LOGIN_PASSWORD_ENABLED=true,重启服务才能开启"
|
||||||
|
|
||||||
#: accounts/serializers/automations/base.py:23
|
#: accounts/serializers/automations/base.py:23
|
||||||
#: assets/models/asset/common.py:169 assets/serializers/asset/common.py:152
|
#: assets/models/asset/common.py:164 assets/serializers/asset/common.py:152
|
||||||
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
||||||
msgid "Nodes"
|
msgid "Nodes"
|
||||||
msgstr "节点"
|
msgstr "节点"
|
||||||
|
@ -1268,15 +1268,15 @@ msgstr "审批人"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "激活中"
|
msgstr "激活中"
|
||||||
|
|
||||||
#: acls/models/base.py:81 perms/serializers/permission.py:31
|
#: acls/models/base.py:81 perms/serializers/permission.py:42
|
||||||
#: tickets/models/flow.py:23 users/models/preference.py:16
|
#: tickets/models/flow.py:23 users/models/preference.py:16
|
||||||
#: users/serializers/group.py:21 users/serializers/user.py:424
|
#: users/serializers/group.py:21 users/serializers/user.py:424
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "用户"
|
msgstr "用户"
|
||||||
|
|
||||||
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
||||||
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:128
|
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:148
|
||||||
#: assets/serializers/asset/common.py:386 perms/serializers/permission.py:44
|
#: assets/serializers/asset/common.py:406 perms/serializers/permission.py:55
|
||||||
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
||||||
msgid "Accounts"
|
msgid "Accounts"
|
||||||
msgstr "账号"
|
msgstr "账号"
|
||||||
|
@ -1412,7 +1412,7 @@ msgstr ""
|
||||||
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
||||||
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
||||||
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
||||||
#: xpack/plugins/cloud/models.py:390
|
#: common/drf/renders/base.py:147 xpack/plugins/cloud/models.py:390
|
||||||
msgid "IP"
|
msgid "IP"
|
||||||
msgstr "IP"
|
msgstr "IP"
|
||||||
|
|
||||||
|
@ -1838,7 +1838,7 @@ msgstr "云服务"
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "端口"
|
msgstr "端口"
|
||||||
|
|
||||||
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:150
|
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:170
|
||||||
#: settings/serializers/terminal.py:10
|
#: settings/serializers/terminal.py:10
|
||||||
msgid "Address"
|
msgid "Address"
|
||||||
msgstr "地址"
|
msgstr "地址"
|
||||||
|
@ -1854,7 +1854,7 @@ msgstr "平台"
|
||||||
msgid "Zone"
|
msgid "Zone"
|
||||||
msgstr "网域"
|
msgstr "网域"
|
||||||
|
|
||||||
#: assets/models/asset/common.py:172 assets/serializers/asset/common.py:388
|
#: assets/models/asset/common.py:166 assets/serializers/asset/common.py:388
|
||||||
#: assets/serializers/asset/host.py:11
|
#: assets/serializers/asset/host.py:11
|
||||||
msgid "Gathered info"
|
msgid "Gathered info"
|
||||||
msgstr "收集资产硬件信息"
|
msgstr "收集资产硬件信息"
|
||||||
|
@ -2200,38 +2200,60 @@ msgid ""
|
||||||
"type"
|
"type"
|
||||||
msgstr "资产中批量更新平台,不符合平台类型跳过的资产"
|
msgstr "资产中批量更新平台,不符合平台类型跳过的资产"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:127 assets/serializers/platform.py:169
|
#: assets/serializers/asset/common.py:36
|
||||||
|
msgid "Protocols, format is [\"protocol/port\"]"
|
||||||
|
msgstr "协议,格式为 [\"协议/端口\"]"
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:38
|
||||||
|
msgid "Protocol, format is name/port"
|
||||||
|
msgstr "协议,格式为 名称/端口"
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:107
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [{\"name\": \"x\", \"username\": \"x\", \"secret\": \"x\", "
|
||||||
|
"\"secret_type\": \"password\"}]"
|
||||||
|
msgstr ""
|
||||||
|
"账号,格式为 [{\"name\": \"x\", \"username\": \"x\", \"secret\": \"x\", "
|
||||||
|
"\"secret_type\": \"password\"}]"
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:135
|
||||||
|
msgid ""
|
||||||
|
"Node path, format [\"/org_name/node_name\"], if node not exist, will create "
|
||||||
|
"it"
|
||||||
|
msgstr "节点路径,格式为 [\"/组织/节点名\"], 如果节点不存在,将创建它"
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:147 assets/serializers/platform.py:169
|
||||||
#: authentication/serializers/connect_token_secret.py:30
|
#: authentication/serializers/connect_token_secret.py:30
|
||||||
#: authentication/serializers/connect_token_secret.py:75
|
#: authentication/serializers/connect_token_secret.py:75
|
||||||
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:45
|
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:56
|
||||||
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
||||||
#: xpack/plugins/cloud/serializers/task.py:35
|
#: xpack/plugins/cloud/serializers/task.py:35
|
||||||
msgid "Protocols"
|
msgid "Protocols"
|
||||||
msgstr "协议组"
|
msgstr "协议组"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:129
|
#: assets/serializers/asset/common.py:149
|
||||||
#: assets/serializers/asset/common.py:151
|
#: assets/serializers/asset/common.py:171
|
||||||
msgid "Node path"
|
msgid "Node path"
|
||||||
msgstr "节点路径"
|
msgstr "节点路径"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:148
|
#: assets/serializers/asset/common.py:168
|
||||||
#: assets/serializers/asset/common.py:389
|
#: assets/serializers/asset/common.py:409
|
||||||
msgid "Auto info"
|
msgid "Auto info"
|
||||||
msgstr "自动化信息"
|
msgstr "自动化信息"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:245
|
#: assets/serializers/asset/common.py:265
|
||||||
msgid "Platform not exist"
|
msgid "Platform not exist"
|
||||||
msgstr "平台不存在"
|
msgstr "平台不存在"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:281
|
#: assets/serializers/asset/common.py:301
|
||||||
msgid "port out of range (0-65535)"
|
msgid "port out of range (0-65535)"
|
||||||
msgstr "端口超出范围 (0-65535)"
|
msgstr "端口超出范围 (0-65535)"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:288
|
#: assets/serializers/asset/common.py:308
|
||||||
msgid "Protocol is required: {}"
|
msgid "Protocol is required: {}"
|
||||||
msgstr "协议是必填的: {}"
|
msgstr "协议是必填的: {}"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:316
|
#: assets/serializers/asset/common.py:336
|
||||||
msgid "Invalid data"
|
msgid "Invalid data"
|
||||||
msgstr "无效的数据"
|
msgstr "无效的数据"
|
||||||
|
|
||||||
|
@ -2320,7 +2342,7 @@ msgid ""
|
||||||
msgstr "网关是网域的网络代理,当连接网域内的资产时,连接将通过网关进行路由。"
|
msgstr "网关是网域的网络代理,当连接网域内的资产时,连接将通过网关进行路由。"
|
||||||
|
|
||||||
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
||||||
#: orgs/serializers.py:13 perms/serializers/permission.py:39
|
#: orgs/serializers.py:13 perms/serializers/permission.py:50
|
||||||
msgid "Assets amount"
|
msgid "Assets amount"
|
||||||
msgstr "资产数量"
|
msgstr "资产数量"
|
||||||
|
|
||||||
|
@ -2680,7 +2702,7 @@ msgid "Resource"
|
||||||
msgstr "资源"
|
msgstr "资源"
|
||||||
|
|
||||||
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
||||||
#: terminal/serializers/command.py:75
|
#: common/drf/renders/base.py:145 terminal/serializers/command.py:75
|
||||||
msgid "Datetime"
|
msgid "Datetime"
|
||||||
msgstr "日期"
|
msgstr "日期"
|
||||||
|
|
||||||
|
@ -3448,7 +3470,7 @@ msgid "Actions"
|
||||||
msgstr "动作"
|
msgstr "动作"
|
||||||
|
|
||||||
#: authentication/serializers/connection_token.py:42
|
#: authentication/serializers/connection_token.py:42
|
||||||
#: perms/serializers/permission.py:43 perms/serializers/permission.py:64
|
#: perms/serializers/permission.py:54 perms/serializers/permission.py:75
|
||||||
#: users/serializers/user.py:127 users/serializers/user.py:273
|
#: users/serializers/user.py:127 users/serializers/user.py:273
|
||||||
msgid "Is expired"
|
msgid "Is expired"
|
||||||
msgstr "已过期"
|
msgstr "已过期"
|
||||||
|
@ -3490,8 +3512,8 @@ msgstr "SSH密钥不合法"
|
||||||
msgid "Access IP"
|
msgid "Access IP"
|
||||||
msgstr "IP 白名单"
|
msgstr "IP 白名单"
|
||||||
|
|
||||||
#: authentication/serializers/token.py:92 perms/serializers/permission.py:42
|
#: authentication/serializers/token.py:92 perms/serializers/permission.py:53
|
||||||
#: perms/serializers/permission.py:65 users/serializers/user.py:128
|
#: perms/serializers/permission.py:76 users/serializers/user.py:128
|
||||||
#: users/serializers/user.py:270
|
#: users/serializers/user.py:270
|
||||||
msgid "Is valid"
|
msgid "Is valid"
|
||||||
msgstr "是否有效"
|
msgstr "是否有效"
|
||||||
|
@ -4005,7 +4027,7 @@ msgstr "组织 ID"
|
||||||
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
||||||
msgstr "文件内容太大 (最大长度 `{}` 字节)"
|
msgstr "文件内容太大 (最大长度 `{}` 字节)"
|
||||||
|
|
||||||
#: common/drf/parsers/base.py:199
|
#: common/drf/parsers/base.py:207
|
||||||
msgid "Parse file error: {}"
|
msgid "Parse file error: {}"
|
||||||
msgstr "解析文件错误: {}"
|
msgstr "解析文件错误: {}"
|
||||||
|
|
||||||
|
@ -4013,7 +4035,66 @@ msgstr "解析文件错误: {}"
|
||||||
msgid "Invalid excel file"
|
msgid "Invalid excel file"
|
||||||
msgstr "无效的 excel 文件"
|
msgstr "无效的 excel 文件"
|
||||||
|
|
||||||
#: common/drf/renders/base.py:208
|
#: common/drf/renders/base.py:135
|
||||||
|
msgid "Yes/No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:138
|
||||||
|
msgid "Text, max length {}"
|
||||||
|
msgstr "文本,最大长度 {}"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:140
|
||||||
|
msgid "Long text, no length limit"
|
||||||
|
msgstr "长文本,无长度限制"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:142
|
||||||
|
msgid "Number, min {} max {}"
|
||||||
|
msgstr "数字,最小 {} 最大 {}"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:153
|
||||||
|
msgid ""
|
||||||
|
"Choices, format name(value), name is optional for human read, value is "
|
||||||
|
"requisite, options {}"
|
||||||
|
msgstr "选项,格式: 名称(值),名称是可选的,方便阅读,值是必填的,可选项有 {}"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:156
|
||||||
|
msgid "Choices, options {}"
|
||||||
|
msgstr "选项,可选项有 {}"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:158
|
||||||
|
msgid "Phone number, format +8612345678901"
|
||||||
|
msgstr "手机号,格式 +8612345678901"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:160
|
||||||
|
msgid "Label, format [\"key:value\"]"
|
||||||
|
msgstr "标签,格式: [\"键:值\"]"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:162
|
||||||
|
msgid ""
|
||||||
|
"Object, format name(id), name is optional for human read, id is requisite"
|
||||||
|
msgstr "关联项,格式: 名称(id), 名称是可选的,方便阅读,id 是必填的"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:164
|
||||||
|
msgid "Object, format id"
|
||||||
|
msgstr "关联项,格式是 id"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:168
|
||||||
|
msgid ""
|
||||||
|
"Objects, format [\"name(id)\", ...], name is optional for human read, id is "
|
||||||
|
"requisite"
|
||||||
|
msgstr ""
|
||||||
|
"多关联项,格式: [\"名称(id)\", ...], 名称是可选的,方便阅读,id 是必填的"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:170
|
||||||
|
msgid ""
|
||||||
|
"Labels, format [\"key:value\", ...], if label not exists, will create it"
|
||||||
|
msgstr "标签,格式: [\"键:值\", ...], 如果标签不存在,将创建它"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:172
|
||||||
|
msgid "Objects, format [\"id\", ...]"
|
||||||
|
msgstr "多关联项,格式是 [\"id\", ...]"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:270
|
||||||
msgid ""
|
msgid ""
|
||||||
"{} - The encryption password has not been set - please go to personal "
|
"{} - The encryption password has not been set - please go to personal "
|
||||||
"information -> file encryption password to set the encryption password"
|
"information -> file encryption password to set the encryption password"
|
||||||
|
@ -4835,7 +4916,7 @@ msgstr "可以查看所有加入的组织"
|
||||||
msgid "Can not delete virtual org"
|
msgid "Can not delete virtual org"
|
||||||
msgstr "无法删除虚拟组织"
|
msgstr "无法删除虚拟组织"
|
||||||
|
|
||||||
#: orgs/serializers.py:10 perms/serializers/permission.py:37
|
#: orgs/serializers.py:10 perms/serializers/permission.py:48
|
||||||
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
||||||
msgid "Users amount"
|
msgid "Users amount"
|
||||||
msgstr "用户数量"
|
msgstr "用户数量"
|
||||||
|
@ -4844,7 +4925,7 @@ msgstr "用户数量"
|
||||||
msgid "User groups amount"
|
msgid "User groups amount"
|
||||||
msgstr "用户组数量"
|
msgstr "用户组数量"
|
||||||
|
|
||||||
#: orgs/serializers.py:14 perms/serializers/permission.py:40
|
#: orgs/serializers.py:14 perms/serializers/permission.py:51
|
||||||
msgid "Nodes amount"
|
msgid "Nodes amount"
|
||||||
msgstr "节点数量"
|
msgstr "节点数量"
|
||||||
|
|
||||||
|
@ -4961,11 +5042,21 @@ msgstr "资产授权规则将要过期"
|
||||||
msgid "asset permissions of organization {}"
|
msgid "asset permissions of organization {}"
|
||||||
msgstr "组织 ({}) 的资产授权"
|
msgstr "组织 ({}) 的资产授权"
|
||||||
|
|
||||||
#: perms/serializers/permission.py:33 users/serializers/user.py:257
|
#: perms/serializers/permission.py:32
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [\"@virtual\", \"root\", \"%template_id\"], virtual "
|
||||||
|
"choices: @ALL, @SPEC, @USER, @ANON, @INPUT"
|
||||||
|
msgstr "账号,格式 [\"@虚拟账号\", \"root\", \"%模版id\"], 虚拟选项: @ALL, @SPEC, @USER, @ANON, @INPUT"
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:38
|
||||||
|
msgid "Protocols, format [\"ssh\", \"rdp\", \"vnc\"] or [\"all\"]"
|
||||||
|
msgstr "协议,格式为 [\"ssh\", \"rdp\", \"vnc\"] 或 [\"all\"]"
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:44 users/serializers/user.py:257
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr "用户组"
|
msgstr "用户组"
|
||||||
|
|
||||||
#: perms/serializers/permission.py:38
|
#: perms/serializers/permission.py:49
|
||||||
msgid "Groups amount"
|
msgid "Groups amount"
|
||||||
msgstr "用户组数量"
|
msgstr "用户组数量"
|
||||||
|
|
||||||
|
@ -5560,9 +5651,9 @@ msgstr "User DN 缓存超时时间 (秒)"
|
||||||
#: settings/serializers/auth/ldap.py:91
|
#: settings/serializers/auth/ldap.py:91
|
||||||
msgid ""
|
msgid ""
|
||||||
"Caching the User DN obtained during user login authentication can "
|
"Caching the User DN obtained during user login authentication can "
|
||||||
"effectivelyimprove the speed of user authentication., 0 means no cache<br>If "
|
"effectively improve the speed of user authentication., 0 means no "
|
||||||
"the user OU structure has been adjusted, click Submit to clear the user DN "
|
"cache<br>If the user OU structure has been adjusted, click Submit to clear "
|
||||||
"cache"
|
"the user DN cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"对用户登录认证时查询出的 User DN 进行缓存,可以有效提高用户认证的速度<br>如果"
|
"对用户登录认证时查询出的 User DN 进行缓存,可以有效提高用户认证的速度<br>如果"
|
||||||
"用户 OU 架构有调整,点击提交即可清除用户 DN 缓存"
|
"用户 OU 架构有调整,点击提交即可清除用户 DN 缓存"
|
||||||
|
@ -6696,11 +6787,11 @@ msgstr "认证失败: (未知): {}"
|
||||||
msgid "Authentication success: {}"
|
msgid "Authentication success: {}"
|
||||||
msgstr "认证成功: {}"
|
msgstr "认证成功: {}"
|
||||||
|
|
||||||
#: settings/ws.py:203
|
#: settings/ws.py:198
|
||||||
msgid "No LDAP user was found"
|
msgid "No LDAP user was found"
|
||||||
msgstr "没有获取到 LDAP 用户"
|
msgstr "没有获取到 LDAP 用户"
|
||||||
|
|
||||||
#: settings/ws.py:209
|
#: settings/ws.py:204
|
||||||
msgid "Total {}, success {}, failure {}"
|
msgid "Total {}, success {}, failure {}"
|
||||||
msgstr "总共 {},成功 {},失败 {}"
|
msgstr "总共 {},成功 {},失败 {}"
|
||||||
|
|
||||||
|
@ -9792,3 +9883,9 @@ msgstr "企业专业版"
|
||||||
#: xpack/plugins/license/models.py:86
|
#: xpack/plugins/license/models.py:86
|
||||||
msgid "Ultimate edition"
|
msgid "Ultimate edition"
|
||||||
msgstr "企业旗舰版"
|
msgstr "企业旗舰版"
|
||||||
|
|
||||||
|
#~ msgid "None"
|
||||||
|
#~ msgstr "无"
|
||||||
|
|
||||||
|
#~ msgid "Yes,No"
|
||||||
|
#~ msgstr "Yes,No"
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: JumpServer 0.3.3\n"
|
"Project-Id-Version: JumpServer 0.3.3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-09-06 10:29+0800\n"
|
"POT-Creation-Date: 2024-08-15 14:04+0800\n"
|
||||||
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
|
||||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||||
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
"Language-Team: JumpServer team<ibuler@qq.com>\n"
|
||||||
|
@ -656,7 +656,7 @@ msgstr "觸發方式"
|
||||||
#: audits/models.py:92 audits/serializers.py:84
|
#: audits/models.py:92 audits/serializers.py:84
|
||||||
#: authentication/serializers/connect_token_secret.py:119
|
#: authentication/serializers/connect_token_secret.py:119
|
||||||
#: authentication/templates/authentication/_access_key_modal.html:34
|
#: authentication/templates/authentication/_access_key_modal.html:34
|
||||||
#: perms/serializers/permission.py:41 perms/serializers/permission.py:63
|
#: perms/serializers/permission.py:52 perms/serializers/permission.py:74
|
||||||
#: tickets/serializers/ticket/ticket.py:21
|
#: tickets/serializers/ticket/ticket.py:21
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "動作"
|
msgstr "動作"
|
||||||
|
@ -703,7 +703,7 @@ msgstr "密碼規則"
|
||||||
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
|
#: assets/models/asset/common.py:159 assets/models/cmd_filter.py:21
|
||||||
#: assets/models/domain.py:19 assets/models/label.py:18
|
#: assets/models/domain.py:19 assets/models/label.py:18
|
||||||
#: assets/models/platform.py:15 assets/models/platform.py:94
|
#: assets/models/platform.py:15 assets/models/platform.py:94
|
||||||
#: assets/serializers/asset/common.py:149 assets/serializers/platform.py:153
|
#: assets/serializers/asset/common.py:169 assets/serializers/platform.py:153
|
||||||
#: assets/serializers/platform.py:273
|
#: assets/serializers/platform.py:273
|
||||||
#: authentication/backends/passkey/models.py:10
|
#: authentication/backends/passkey/models.py:10
|
||||||
#: authentication/models/ssh_key.py:12
|
#: authentication/models/ssh_key.py:12
|
||||||
|
@ -854,7 +854,7 @@ msgid "Exist policy"
|
||||||
msgstr "帳號存在策略"
|
msgstr "帳號存在策略"
|
||||||
|
|
||||||
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
#: accounts/serializers/account/account.py:206 assets/models/label.py:21
|
||||||
#: assets/models/platform.py:95 assets/serializers/asset/common.py:125
|
#: assets/models/platform.py:95 assets/serializers/asset/common.py:145
|
||||||
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
#: assets/serializers/cagegory.py:12 assets/serializers/platform.py:168
|
||||||
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
#: assets/serializers/platform.py:274 perms/serializers/user_permission.py:26
|
||||||
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
#: settings/models.py:36 tickets/models/ticket/apply_application.py:13
|
||||||
|
@ -866,7 +866,7 @@ msgstr "類別"
|
||||||
#: accounts/serializers/automations/base.py:55 acls/models/command_acl.py:24
|
#: accounts/serializers/automations/base.py:55 acls/models/command_acl.py:24
|
||||||
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
#: acls/serializers/command_acl.py:19 assets/models/automations/base.py:20
|
||||||
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
#: assets/models/cmd_filter.py:74 assets/models/platform.py:96
|
||||||
#: assets/serializers/asset/common.py:126 assets/serializers/platform.py:155
|
#: assets/serializers/asset/common.py:146 assets/serializers/platform.py:155
|
||||||
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
#: assets/serializers/platform.py:167 audits/serializers.py:53
|
||||||
#: audits/serializers.py:170
|
#: audits/serializers.py:170
|
||||||
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:150
|
||||||
|
@ -907,7 +907,7 @@ msgstr "已修改"
|
||||||
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
#: assets/serializers/platform.py:176 assets/serializers/platform.py:208
|
||||||
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
#: authentication/api/connection_token.py:410 ops/models/base.py:17
|
||||||
#: ops/models/job.py:152 ops/serializers/job.py:19
|
#: ops/models/job.py:152 ops/serializers/job.py:19
|
||||||
#: perms/serializers/permission.py:35
|
#: perms/serializers/permission.py:46
|
||||||
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
|
||||||
#: xpack/plugins/cloud/manager.py:83
|
#: xpack/plugins/cloud/manager.py:83
|
||||||
msgid "Assets"
|
msgid "Assets"
|
||||||
|
@ -929,7 +929,7 @@ msgstr "帳號已存在"
|
||||||
#: accounts/serializers/account/account.py:458
|
#: accounts/serializers/account/account.py:458
|
||||||
#: accounts/serializers/account/base.py:93
|
#: accounts/serializers/account/base.py:93
|
||||||
#: accounts/serializers/account/template.py:72
|
#: accounts/serializers/account/template.py:72
|
||||||
#: assets/serializers/asset/common.py:387
|
#: assets/serializers/asset/common.py:407
|
||||||
msgid "Spec info"
|
msgid "Spec info"
|
||||||
msgstr "特殊資訊"
|
msgstr "特殊資訊"
|
||||||
|
|
||||||
|
@ -1063,7 +1063,7 @@ msgstr ""
|
||||||
"CACHE_LOGIN_PASSWORD_ENABLED=true,重啟服務才能開啟"
|
"CACHE_LOGIN_PASSWORD_ENABLED=true,重啟服務才能開啟"
|
||||||
|
|
||||||
#: accounts/serializers/automations/base.py:23
|
#: accounts/serializers/automations/base.py:23
|
||||||
#: assets/models/asset/common.py:169 assets/serializers/asset/common.py:152
|
#: assets/models/asset/common.py:164 assets/serializers/asset/common.py:152
|
||||||
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
#: assets/serializers/automations/base.py:21 perms/serializers/permission.py:36
|
||||||
msgid "Nodes"
|
msgid "Nodes"
|
||||||
msgstr "節點"
|
msgstr "節點"
|
||||||
|
@ -1269,15 +1269,15 @@ msgstr "審批人"
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr "啟用中"
|
msgstr "啟用中"
|
||||||
|
|
||||||
#: acls/models/base.py:81 perms/serializers/permission.py:31
|
#: acls/models/base.py:81 perms/serializers/permission.py:42
|
||||||
#: tickets/models/flow.py:23 users/models/preference.py:16
|
#: tickets/models/flow.py:23 users/models/preference.py:16
|
||||||
#: users/serializers/group.py:21 users/serializers/user.py:424
|
#: users/serializers/group.py:21 users/serializers/user.py:424
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "用戶管理"
|
msgstr "用戶管理"
|
||||||
|
|
||||||
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
#: acls/models/base.py:98 assets/models/automations/base.py:17
|
||||||
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:128
|
#: assets/models/cmd_filter.py:38 assets/serializers/asset/common.py:148
|
||||||
#: assets/serializers/asset/common.py:386 perms/serializers/permission.py:44
|
#: assets/serializers/asset/common.py:406 perms/serializers/permission.py:55
|
||||||
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
#: perms/serializers/user_permission.py:75 rbac/tree.py:35
|
||||||
msgid "Accounts"
|
msgid "Accounts"
|
||||||
msgstr "帳號管理"
|
msgstr "帳號管理"
|
||||||
|
@ -1413,7 +1413,7 @@ msgstr ""
|
||||||
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
#: authentication/templates/authentication/_msg_oauth_bind.html:12
|
||||||
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
#: authentication/templates/authentication/_msg_rest_password_success.html:8
|
||||||
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
#: authentication/templates/authentication/_msg_rest_public_key_success.html:8
|
||||||
#: xpack/plugins/cloud/models.py:390
|
#: common/drf/renders/base.py:147 xpack/plugins/cloud/models.py:390
|
||||||
msgid "IP"
|
msgid "IP"
|
||||||
msgstr "IP"
|
msgstr "IP"
|
||||||
|
|
||||||
|
@ -1839,7 +1839,7 @@ msgstr "雲服務"
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "埠"
|
msgstr "埠"
|
||||||
|
|
||||||
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:150
|
#: assets/models/asset/common.py:160 assets/serializers/asset/common.py:170
|
||||||
#: settings/serializers/terminal.py:10
|
#: settings/serializers/terminal.py:10
|
||||||
msgid "Address"
|
msgid "Address"
|
||||||
msgstr "地址"
|
msgstr "地址"
|
||||||
|
@ -1855,7 +1855,7 @@ msgstr "系統平台"
|
||||||
msgid "Zone"
|
msgid "Zone"
|
||||||
msgstr "網域"
|
msgstr "網域"
|
||||||
|
|
||||||
#: assets/models/asset/common.py:172 assets/serializers/asset/common.py:388
|
#: assets/models/asset/common.py:166 assets/serializers/asset/common.py:388
|
||||||
#: assets/serializers/asset/host.py:11
|
#: assets/serializers/asset/host.py:11
|
||||||
msgid "Gathered info"
|
msgid "Gathered info"
|
||||||
msgstr "收集資產硬體資訊"
|
msgstr "收集資產硬體資訊"
|
||||||
|
@ -2201,38 +2201,58 @@ msgid ""
|
||||||
"type"
|
"type"
|
||||||
msgstr "資產中批次更新平台,不符合平台類型跳過的資產"
|
msgstr "資產中批次更新平台,不符合平台類型跳過的資產"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:127 assets/serializers/platform.py:169
|
#: assets/serializers/asset/common.py:36
|
||||||
|
msgid "Protocols, format is [\"protocol/port\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:38
|
||||||
|
msgid "Protocol, format is name/port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:107
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [{\"name\": \"x\", \"username\": \"x\", \"secret\": \"x\", "
|
||||||
|
"\"secret_type\": \"password\"}]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:135
|
||||||
|
msgid ""
|
||||||
|
"Node path, format [\"/org_name/node_name\"], if node not exist, will create "
|
||||||
|
"it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: assets/serializers/asset/common.py:147 assets/serializers/platform.py:169
|
||||||
#: authentication/serializers/connect_token_secret.py:30
|
#: authentication/serializers/connect_token_secret.py:30
|
||||||
#: authentication/serializers/connect_token_secret.py:75
|
#: authentication/serializers/connect_token_secret.py:75
|
||||||
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:45
|
#: perms/models/asset_permission.py:76 perms/serializers/permission.py:56
|
||||||
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
#: perms/serializers/user_permission.py:74 xpack/plugins/cloud/models.py:388
|
||||||
#: xpack/plugins/cloud/serializers/task.py:35
|
#: xpack/plugins/cloud/serializers/task.py:35
|
||||||
msgid "Protocols"
|
msgid "Protocols"
|
||||||
msgstr "協議組"
|
msgstr "協議組"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:129
|
#: assets/serializers/asset/common.py:149
|
||||||
#: assets/serializers/asset/common.py:151
|
#: assets/serializers/asset/common.py:171
|
||||||
msgid "Node path"
|
msgid "Node path"
|
||||||
msgstr "節點路徑"
|
msgstr "節點路徑"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:148
|
#: assets/serializers/asset/common.py:168
|
||||||
#: assets/serializers/asset/common.py:389
|
#: assets/serializers/asset/common.py:409
|
||||||
msgid "Auto info"
|
msgid "Auto info"
|
||||||
msgstr "自動化資訊"
|
msgstr "自動化資訊"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:245
|
#: assets/serializers/asset/common.py:265
|
||||||
msgid "Platform not exist"
|
msgid "Platform not exist"
|
||||||
msgstr "平台不存在"
|
msgstr "平台不存在"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:281
|
#: assets/serializers/asset/common.py:301
|
||||||
msgid "port out of range (0-65535)"
|
msgid "port out of range (0-65535)"
|
||||||
msgstr "埠超出範圍 (0-65535)"
|
msgstr "埠超出範圍 (0-65535)"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:288
|
#: assets/serializers/asset/common.py:308
|
||||||
msgid "Protocol is required: {}"
|
msgid "Protocol is required: {}"
|
||||||
msgstr "協議是必填的: {}"
|
msgstr "協議是必填的: {}"
|
||||||
|
|
||||||
#: assets/serializers/asset/common.py:316
|
#: assets/serializers/asset/common.py:336
|
||||||
msgid "Invalid data"
|
msgid "Invalid data"
|
||||||
msgstr "無效的數據"
|
msgstr "無效的數據"
|
||||||
|
|
||||||
|
@ -2321,7 +2341,7 @@ msgid ""
|
||||||
msgstr "網關是網域的網路代理,當連接網域內的資產時,連接將由網關進行路由。"
|
msgstr "網關是網域的網路代理,當連接網域內的資產時,連接將由網關進行路由。"
|
||||||
|
|
||||||
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
#: assets/serializers/domain.py:24 assets/serializers/platform.py:177
|
||||||
#: orgs/serializers.py:13 perms/serializers/permission.py:39
|
#: orgs/serializers.py:13 perms/serializers/permission.py:50
|
||||||
msgid "Assets amount"
|
msgid "Assets amount"
|
||||||
msgstr "資產數量"
|
msgstr "資產數量"
|
||||||
|
|
||||||
|
@ -2681,7 +2701,7 @@ msgid "Resource"
|
||||||
msgstr "資源"
|
msgstr "資源"
|
||||||
|
|
||||||
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
#: audits/models.py:101 audits/models.py:147 audits/models.py:177
|
||||||
#: terminal/serializers/command.py:75
|
#: common/drf/renders/base.py:145 terminal/serializers/command.py:75
|
||||||
msgid "Datetime"
|
msgid "Datetime"
|
||||||
msgstr "日期"
|
msgstr "日期"
|
||||||
|
|
||||||
|
@ -3449,7 +3469,7 @@ msgid "Actions"
|
||||||
msgstr "動作"
|
msgstr "動作"
|
||||||
|
|
||||||
#: authentication/serializers/connection_token.py:42
|
#: authentication/serializers/connection_token.py:42
|
||||||
#: perms/serializers/permission.py:43 perms/serializers/permission.py:64
|
#: perms/serializers/permission.py:54 perms/serializers/permission.py:75
|
||||||
#: users/serializers/user.py:127 users/serializers/user.py:273
|
#: users/serializers/user.py:127 users/serializers/user.py:273
|
||||||
msgid "Is expired"
|
msgid "Is expired"
|
||||||
msgstr "已過期"
|
msgstr "已過期"
|
||||||
|
@ -3491,8 +3511,8 @@ msgstr "SSH金鑰不合法"
|
||||||
msgid "Access IP"
|
msgid "Access IP"
|
||||||
msgstr "IP 白名單"
|
msgstr "IP 白名單"
|
||||||
|
|
||||||
#: authentication/serializers/token.py:92 perms/serializers/permission.py:42
|
#: authentication/serializers/token.py:92 perms/serializers/permission.py:53
|
||||||
#: perms/serializers/permission.py:65 users/serializers/user.py:128
|
#: perms/serializers/permission.py:76 users/serializers/user.py:128
|
||||||
#: users/serializers/user.py:270
|
#: users/serializers/user.py:270
|
||||||
msgid "Is valid"
|
msgid "Is valid"
|
||||||
msgstr "是否有效"
|
msgstr "是否有效"
|
||||||
|
@ -4006,7 +4026,7 @@ msgstr "組織 ID"
|
||||||
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
msgid "The file content overflowed (The maximum length `{}` bytes)"
|
||||||
msgstr "文件內容太大 (最大長度 `{}` 位元組)"
|
msgstr "文件內容太大 (最大長度 `{}` 位元組)"
|
||||||
|
|
||||||
#: common/drf/parsers/base.py:199
|
#: common/drf/parsers/base.py:207
|
||||||
msgid "Parse file error: {}"
|
msgid "Parse file error: {}"
|
||||||
msgstr "解析文件錯誤: {}"
|
msgstr "解析文件錯誤: {}"
|
||||||
|
|
||||||
|
@ -4014,7 +4034,67 @@ msgstr "解析文件錯誤: {}"
|
||||||
msgid "Invalid excel file"
|
msgid "Invalid excel file"
|
||||||
msgstr "無效的 excel 文件"
|
msgstr "無效的 excel 文件"
|
||||||
|
|
||||||
#: common/drf/renders/base.py:208
|
#: common/drf/renders/base.py:135
|
||||||
|
msgid "Yes/No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:138
|
||||||
|
msgid "Text, max length {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:140
|
||||||
|
msgid "Long text, no length limit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:142
|
||||||
|
msgid "Number, min {} max {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:153
|
||||||
|
msgid ""
|
||||||
|
"Choices, format name(value), name is optional for human read, value is "
|
||||||
|
"requisite, options {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:156
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Connect options"
|
||||||
|
msgid "Choices, options {}"
|
||||||
|
msgstr "連接項"
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:158
|
||||||
|
msgid "Phone number, format +8612345678901"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:160
|
||||||
|
msgid "Label, format [\"key:value\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:162
|
||||||
|
msgid ""
|
||||||
|
"Object, format name(id), name is optional for human read, id is requisite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:164
|
||||||
|
msgid "Object, format id"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:168
|
||||||
|
msgid ""
|
||||||
|
"Objects, format [\"name(id)\", ...], name is optional for human read, id is "
|
||||||
|
"requisite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:170
|
||||||
|
msgid ""
|
||||||
|
"Labels, format [\"key:value\", ...], if label not exists, will create it"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:172
|
||||||
|
msgid "Objects, format [\"id\", ...]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common/drf/renders/base.py:270
|
||||||
msgid ""
|
msgid ""
|
||||||
"{} - The encryption password has not been set - please go to personal "
|
"{} - The encryption password has not been set - please go to personal "
|
||||||
"information -> file encryption password to set the encryption password"
|
"information -> file encryption password to set the encryption password"
|
||||||
|
@ -4837,7 +4917,7 @@ msgstr "可以查看所有加入的組織"
|
||||||
msgid "Can not delete virtual org"
|
msgid "Can not delete virtual org"
|
||||||
msgstr "無法刪除虛擬組織"
|
msgstr "無法刪除虛擬組織"
|
||||||
|
|
||||||
#: orgs/serializers.py:10 perms/serializers/permission.py:37
|
#: orgs/serializers.py:10 perms/serializers/permission.py:48
|
||||||
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
#: rbac/serializers/role.py:27 users/serializers/group.py:54
|
||||||
msgid "Users amount"
|
msgid "Users amount"
|
||||||
msgstr "用戶數量"
|
msgstr "用戶數量"
|
||||||
|
@ -4846,7 +4926,7 @@ msgstr "用戶數量"
|
||||||
msgid "User groups amount"
|
msgid "User groups amount"
|
||||||
msgstr "用戶組數量"
|
msgstr "用戶組數量"
|
||||||
|
|
||||||
#: orgs/serializers.py:14 perms/serializers/permission.py:40
|
#: orgs/serializers.py:14 perms/serializers/permission.py:51
|
||||||
msgid "Nodes amount"
|
msgid "Nodes amount"
|
||||||
msgstr "節點數量"
|
msgstr "節點數量"
|
||||||
|
|
||||||
|
@ -4963,11 +5043,21 @@ msgstr "資產授權規則將要過期"
|
||||||
msgid "asset permissions of organization {}"
|
msgid "asset permissions of organization {}"
|
||||||
msgstr "組織 ({}) 的資產授權"
|
msgstr "組織 ({}) 的資產授權"
|
||||||
|
|
||||||
#: perms/serializers/permission.py:33 users/serializers/user.py:257
|
#: perms/serializers/permission.py:32
|
||||||
|
msgid ""
|
||||||
|
"Accounts, format [\"@virtual\", \"root\", \"%template_id\"], virtual "
|
||||||
|
"choices: @ALL, @SPEC, @USER, @ANON, @INPUT"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:38
|
||||||
|
msgid "Protocols, format [\"ssh\", \"rdp\", \"vnc\"] or [\"all\"]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: perms/serializers/permission.py:44 users/serializers/user.py:257
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr "使用者群組"
|
msgstr "使用者群組"
|
||||||
|
|
||||||
#: perms/serializers/permission.py:38
|
#: perms/serializers/permission.py:49
|
||||||
msgid "Groups amount"
|
msgid "Groups amount"
|
||||||
msgstr "使用者組數量"
|
msgstr "使用者組數量"
|
||||||
|
|
||||||
|
@ -5562,9 +5652,9 @@ msgstr "快取逾時時間 (秒)"
|
||||||
#: settings/serializers/auth/ldap.py:91
|
#: settings/serializers/auth/ldap.py:91
|
||||||
msgid ""
|
msgid ""
|
||||||
"Caching the User DN obtained during user login authentication can "
|
"Caching the User DN obtained during user login authentication can "
|
||||||
"effectivelyimprove the speed of user authentication., 0 means no cache<br>If "
|
"effectively improve the speed of user authentication., 0 means no "
|
||||||
"the user OU structure has been adjusted, click Submit to clear the user DN "
|
"cache<br>If the user OU structure has been adjusted, click Submit to clear "
|
||||||
"cache"
|
"the user DN cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"對於使用者登錄認證時查詢的使用者 DN 進行快取,可以有效提高使用者認證的速度"
|
"對於使用者登錄認證時查詢的使用者 DN 進行快取,可以有效提高使用者認證的速度"
|
||||||
"<br>如果使用者 OU 架構已調整,請點擊提交以清除使用者 DN 快取"
|
"<br>如果使用者 OU 架構已調整,請點擊提交以清除使用者 DN 快取"
|
||||||
|
@ -6698,11 +6788,11 @@ msgstr "認證失敗: (未知): {}"
|
||||||
msgid "Authentication success: {}"
|
msgid "Authentication success: {}"
|
||||||
msgstr "認證成功: {}"
|
msgstr "認證成功: {}"
|
||||||
|
|
||||||
#: settings/ws.py:203
|
#: settings/ws.py:198
|
||||||
msgid "No LDAP user was found"
|
msgid "No LDAP user was found"
|
||||||
msgstr "沒有取得到 LDAP 用戶"
|
msgstr "沒有取得到 LDAP 用戶"
|
||||||
|
|
||||||
#: settings/ws.py:209
|
#: settings/ws.py:204
|
||||||
msgid "Total {}, success {}, failure {}"
|
msgid "Total {}, success {}, failure {}"
|
||||||
msgstr "總共 {},成功 {},失敗 {}"
|
msgstr "總共 {},成功 {},失敗 {}"
|
||||||
|
|
||||||
|
@ -9807,3 +9897,8 @@ msgstr "企業專業版"
|
||||||
#: xpack/plugins/license/models.py:86
|
#: xpack/plugins/license/models.py:86
|
||||||
msgid "Ultimate edition"
|
msgid "Ultimate edition"
|
||||||
msgstr "企業旗艦版"
|
msgstr "企業旗艦版"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~| msgid "Help text"
|
||||||
|
#~ msgid "#Help: "
|
||||||
|
#~ msgstr "幫助"
|
||||||
|
|
|
@ -23,7 +23,7 @@ class OrgResourceSerializerMixin(serializers.Serializer):
|
||||||
但是coco需要资产的org_id字段,所以修改为CharField类型
|
但是coco需要资产的org_id字段,所以修改为CharField类型
|
||||||
"""
|
"""
|
||||||
org_id = serializers.ReadOnlyField(default=get_current_org_id_for_serializer, label=_("Organization"))
|
org_id = serializers.ReadOnlyField(default=get_current_org_id_for_serializer, label=_("Organization"))
|
||||||
org_name = serializers.ReadOnlyField(label=_("Org name"))
|
org_name = serializers.CharField(label=_("Org name"), read_only=True)
|
||||||
add_org_fields = True
|
add_org_fields = True
|
||||||
|
|
||||||
def get_validators(self):
|
def get_validators(self):
|
||||||
|
|
|
@ -27,6 +27,17 @@ class ActionChoicesField(BitChoicesField):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class PermAccountsSerializer(serializers.ListField):
|
||||||
|
def get_render_help_text(self):
|
||||||
|
return _('Accounts, format ["@virtual", "root", "%template_id"], '
|
||||||
|
'virtual choices: @ALL, @SPEC, @USER, @ANON, @INPUT')
|
||||||
|
|
||||||
|
|
||||||
|
class PermProtocolsSerializer(serializers.ListField):
|
||||||
|
def get_render_help_text(self):
|
||||||
|
return _('Protocols, format ["ssh", "rdp", "vnc"] or ["all"]')
|
||||||
|
|
||||||
|
|
||||||
class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSerializer):
|
class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSerializer):
|
||||||
users = ObjectRelatedField(queryset=User.objects, many=True, required=False, label=_('Users'))
|
users = ObjectRelatedField(queryset=User.objects, many=True, required=False, label=_('Users'))
|
||||||
user_groups = ObjectRelatedField(
|
user_groups = ObjectRelatedField(
|
||||||
|
@ -41,8 +52,8 @@ class AssetPermissionSerializer(ResourceLabelsMixin, BulkOrgResourceModelSeriali
|
||||||
actions = ActionChoicesField(required=False, allow_null=True, label=_("Action"))
|
actions = ActionChoicesField(required=False, allow_null=True, label=_("Action"))
|
||||||
is_valid = serializers.BooleanField(read_only=True, label=_("Is valid"))
|
is_valid = serializers.BooleanField(read_only=True, label=_("Is valid"))
|
||||||
is_expired = serializers.BooleanField(read_only=True, label=_("Is expired"))
|
is_expired = serializers.BooleanField(read_only=True, label=_("Is expired"))
|
||||||
accounts = serializers.ListField(label=_("Accounts"), required=False)
|
accounts = PermAccountsSerializer(label=_("Accounts"), required=False)
|
||||||
protocols = serializers.ListField(label=_("Protocols"), required=False)
|
protocols = PermProtocolsSerializer(label=_("Protocols"), required=False)
|
||||||
|
|
||||||
template_accounts = AccountTemplate.objects.none()
|
template_accounts = AccountTemplate.objects.none()
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ class LDAPSettingSerializer(serializers.Serializer):
|
||||||
default=3600 * 24 * 30,
|
default=3600 * 24 * 30,
|
||||||
required=False, label=_('User DN cache timeout (s)'),
|
required=False, label=_('User DN cache timeout (s)'),
|
||||||
help_text=_(
|
help_text=_(
|
||||||
'Caching the User DN obtained during user login authentication can effectively'
|
'Caching the User DN obtained during user login authentication can effectively '
|
||||||
'improve the speed of user authentication., 0 means no cache<br>'
|
'improve the speed of user authentication., 0 means no cache<br>'
|
||||||
'If the user OU structure has been adjusted, click Submit to clear the user DN cache'
|
'If the user OU structure has been adjusted, click Submit to clear the user DN cache'
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue