fix: 修复 acl 一些翻译

pull/5963/head
xinwen 2021-04-14 16:10:20 +08:00 committed by 老广
parent 075cbc497b
commit 73b67da4c0
5 changed files with 236 additions and 196 deletions

View File

@ -1,9 +0,0 @@
from django.utils.translation import ugettext as _
common_help_text = _('Format for comma-delimited string, with * indicating a match all. ')
ip_group_help_text = common_help_text + _(
'Such as: '
'192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 '
)

View File

@ -4,7 +4,6 @@ from common.drf.serializers import BulkModelSerializer
from orgs.utils import current_org from orgs.utils import current_org
from ..models import LoginACL from ..models import LoginACL
from ..utils import is_ip_address, is_ip_network, is_ip_segment from ..utils import is_ip_address, is_ip_network, is_ip_segment
from .. import const
__all__ = ['LoginACLSerializer', ] __all__ = ['LoginACLSerializer', ]
@ -21,8 +20,14 @@ def ip_group_child_validator(ip_group_child):
class LoginACLSerializer(BulkModelSerializer): class LoginACLSerializer(BulkModelSerializer):
ip_group_help_text = _(
'Format for comma-delimited string, with * indicating a match all. '
'Such as: '
'192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 '
)
ip_group = serializers.ListField( ip_group = serializers.ListField(
default=['*'], label=_('IP'), help_text=const.ip_group_help_text, default=['*'], label=_('IP'), help_text=ip_group_help_text,
child=serializers.CharField(max_length=1024, validators=[ip_group_child_validator]) child=serializers.CharField(max_length=1024, validators=[ip_group_child_validator])
) )
user_display = serializers.ReadOnlyField(source='user.name', label=_('User')) user_display = serializers.ReadOnlyField(source='user.name', label=_('User'))

View File

@ -1,45 +1,59 @@
from rest_framework import serializers from rest_framework import serializers
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy as _
from orgs.mixins.serializers import BulkOrgResourceModelSerializer from orgs.mixins.serializers import BulkOrgResourceModelSerializer
from assets.models import SystemUser from assets.models import SystemUser
from acls import models from acls import models
from orgs.models import Organization from orgs.models import Organization
from .. import const
__all__ = ['LoginAssetACLSerializer'] __all__ = ['LoginAssetACLSerializer']
common_help_text = _('Format for comma-delimited string, with * indicating a match all. ')
class LoginAssetACLUsersSerializer(serializers.Serializer): class LoginAssetACLUsersSerializer(serializers.Serializer):
username_group = serializers.ListField( username_group = serializers.ListField(
default=['*'], child=serializers.CharField(max_length=128), label=_('Username'), default=['*'], child=serializers.CharField(max_length=128), label=_('Username'),
help_text=const.common_help_text help_text=common_help_text
) )
class LoginAssetACLAssestsSerializer(serializers.Serializer): class LoginAssetACLAssestsSerializer(serializers.Serializer):
ip_group_help_text = _(
'Format for comma-delimited string, with * indicating a match all. '
'Such as: '
'192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:db8:1a:1110::/64 '
'(Domain name support)'
)
ip_group = serializers.ListField( ip_group = serializers.ListField(
default=['*'], child=serializers.CharField(max_length=1024), label=_('IP'), default=['*'], child=serializers.CharField(max_length=1024), label=_('IP'),
help_text=const.ip_group_help_text + _('(Domain name support)') help_text=ip_group_help_text
) )
hostname_group = serializers.ListField( hostname_group = serializers.ListField(
default=['*'], child=serializers.CharField(max_length=128), label=_('Hostname'), default=['*'], child=serializers.CharField(max_length=128), label=_('Hostname'),
help_text=const.common_help_text help_text=common_help_text
) )
class LoginAssetACLSystemUsersSerializer(serializers.Serializer): class LoginAssetACLSystemUsersSerializer(serializers.Serializer):
protocol_group_help_text = _(
'Format for comma-delimited string, with * indicating a match all. '
'Protocol options: {}'
)
name_group = serializers.ListField( name_group = serializers.ListField(
default=['*'], child=serializers.CharField(max_length=128), label=_('Name'), default=['*'], child=serializers.CharField(max_length=128), label=_('Name'),
help_text=const.common_help_text help_text=common_help_text
) )
username_group = serializers.ListField( username_group = serializers.ListField(
default=['*'], child=serializers.CharField(max_length=128), label=_('Username'), default=['*'], child=serializers.CharField(max_length=128), label=_('Username'),
help_text=const.common_help_text help_text=common_help_text
) )
protocol_group = serializers.ListField( protocol_group = serializers.ListField(
default=['*'], child=serializers.CharField(max_length=16), label=_('Protocol'), default=['*'], child=serializers.CharField(max_length=16), label=_('Protocol'),
help_text=const.common_help_text + _('Protocol options: {}').format( help_text=protocol_group_help_text.format(
', '.join(SystemUser.ASSET_CATEGORY_PROTOCOLS) ', '.join(SystemUser.ASSET_CATEGORY_PROTOCOLS)
) )
) )

Binary file not shown.

View File

@ -8,7 +8,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: 2021-04-07 18:15+0800\n" "POT-Creation-Date: 2021-04-14 16: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: ibuler <ibuler@qq.com>\n" "Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n" "Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -17,26 +17,14 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: acls/const.py:4 #: acls/models/base.py:25 acls/serializers/login_asset_acl.py:47
msgid "Format for comma-delimited string, with * indicating a match all. "
msgstr "格式为逗号分隔的字符串, * 表示匹配所有. "
#: acls/const.py:7
msgid ""
"Such as: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::"
"e13, 2001:db8:1a:1110::/64 "
msgstr ""
"例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, "
"2001:db8:1a:1110::/64"
#: acls/models/base.py:25 acls/serializers/login_asset_acl.py:33
#: applications/models/application.py:11 assets/models/asset.py:142 #: applications/models/application.py:11 assets/models/asset.py:142
#: assets/models/base.py:250 assets/models/cluster.py:18 #: assets/models/base.py:250 assets/models/cluster.py:18
#: assets/models/cmd_filter.py:21 assets/models/domain.py:21 #: assets/models/cmd_filter.py:21 assets/models/domain.py:21
#: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24 #: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24
#: orgs/models.py:23 perms/models/base.py:49 settings/models.py:29 #: orgs/models.py:23 perms/models/base.py:49 settings/models.py:29
#: terminal/models/storage.py:23 terminal/models/storage.py:81 #: terminal/models/storage.py:23 terminal/models/storage.py:90
#: terminal/models/task.py:16 terminal/models/terminal.py:99 #: terminal/models/task.py:16 terminal/models/terminal.py:100
#: users/forms/profile.py:32 users/models/group.py:15 users/models/user.py:530 #: users/forms/profile.py:32 users/models/group.py:15 users/models/user.py:530
#: users/templates/users/_select_user_modal.html:13 #: users/templates/users/_select_user_modal.html:13
#: users/templates/users/user_asset_permission.html:37 #: users/templates/users/user_asset_permission.html:37
@ -82,8 +70,8 @@ msgstr "激活中"
#: assets/models/domain.py:22 assets/models/domain.py:56 #: assets/models/domain.py:22 assets/models/domain.py:56
#: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37
#: orgs/models.py:26 perms/models/base.py:57 settings/models.py:34 #: orgs/models.py:26 perms/models/base.py:57 settings/models.py:34
#: terminal/models/storage.py:29 terminal/models/storage.py:87 #: terminal/models/storage.py:29 terminal/models/storage.py:96
#: terminal/models/terminal.py:113 tickets/models/ticket.py:73 #: terminal/models/terminal.py:114 tickets/models/ticket.py:73
#: users/models/group.py:16 users/models/user.py:563 #: users/models/group.py:16 users/models/user.py:563
#: users/templates/users/user_detail.html:115 #: users/templates/users/user_detail.html:115
#: users/templates/users/user_granted_database_app.html:38 #: users/templates/users/user_granted_database_app.html:38
@ -109,7 +97,7 @@ msgid "Login IP"
msgstr "登录IP" msgstr "登录IP"
#: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:26 #: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:26
#: acls/serializers/login_acl.py:29 acls/serializers/login_asset_acl.py:61 #: acls/serializers/login_acl.py:34 acls/serializers/login_asset_acl.py:75
#: assets/models/cmd_filter.py:56 audits/models.py:57 #: assets/models/cmd_filter.py:56 audits/models.py:57
#: authentication/templates/authentication/_access_key_modal.html:34 #: authentication/templates/authentication/_access_key_modal.html:34
#: tickets/models/ticket.py:43 users/templates/users/_granted_assets.html:29 #: tickets/models/ticket.py:43 users/templates/users/_granted_assets.html:29
@ -123,15 +111,15 @@ msgid "Action"
msgstr "动作" msgstr "动作"
#: acls/models/login_acl.py:28 acls/models/login_asset_acl.py:20 #: acls/models/login_acl.py:28 acls/models/login_asset_acl.py:20
#: acls/serializers/login_acl.py:28 assets/models/label.py:15 #: acls/serializers/login_acl.py:33 assets/models/label.py:15
#: audits/models.py:36 audits/models.py:56 audits/models.py:69 #: audits/models.py:36 audits/models.py:56 audits/models.py:69
#: audits/serializers.py:84 authentication/models.py:44 #: audits/serializers.py:84 authentication/models.py:44
#: authentication/models.py:97 orgs/models.py:18 orgs/models.py:417 #: authentication/models.py:97 orgs/models.py:18 orgs/models.py:418
#: perms/models/base.py:50 templates/index.html:78 #: perms/models/base.py:50 templates/index.html:78
#: terminal/backends/command/models.py:18 #: terminal/backends/command/models.py:18
#: terminal/backends/command/serializers.py:12 terminal/models/session.py:37 #: terminal/backends/command/serializers.py:12 terminal/models/session.py:37
#: tickets/models/comment.py:17 users/models/user.py:159 #: tickets/models/comment.py:17 users/models/user.py:159
#: users/models/user.py:699 users/serializers/group.py:20 #: users/models/user.py:707 users/serializers/group.py:20
#: users/templates/users/user_asset_permission.html:38 #: users/templates/users/user_asset_permission.html:38
#: users/templates/users/user_asset_permission.html:64 #: users/templates/users/user_asset_permission.html:64
#: users/templates/users/user_database_app_permission.html:37 #: users/templates/users/user_database_app_permission.html:37
@ -179,25 +167,38 @@ msgstr "审批人"
msgid "Login asset confirm" msgid "Login asset confirm"
msgstr "登录资产复核" msgstr "登录资产复核"
#: acls/serializers/login_acl.py:19 #: acls/serializers/login_acl.py:18
msgid "IP address invalid: `{}`" msgid "IP address invalid: `{}`"
msgstr "IP 地址无效: `{}`" msgstr "IP 地址无效: `{}`"
#: acls/serializers/login_acl.py:25 acls/serializers/login_asset_acl.py:22 #: acls/serializers/login_acl.py:24
msgid ""
"Format for comma-delimited string, with * indicating a match all. Such as: "
"192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:"
"db8:1a:1110::/64 "
msgstr ""
"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, "
"2001:db8:1a:1110::/64"
#: acls/serializers/login_acl.py:30 acls/serializers/login_asset_acl.py:31
#: applications/serializers/attrs/application_type/mysql_workbench.py:18 #: applications/serializers/attrs/application_type/mysql_workbench.py:18
#: assets/models/asset.py:183 assets/models/domain.py:52 #: assets/models/asset.py:183 assets/models/domain.py:52
#: assets/serializers/asset_user.py:46 settings/serializers/settings.py:108 #: assets/serializers/asset_user.py:46 settings/serializers/settings.py:112
#: users/templates/users/_granted_assets.html:26 #: users/templates/users/_granted_assets.html:26
#: users/templates/users/user_asset_permission.html:156 #: users/templates/users/user_asset_permission.html:156
msgid "IP" msgid "IP"
msgstr "IP" msgstr "IP"
#: acls/serializers/login_acl.py:45 #: acls/serializers/login_acl.py:50
msgid "The user `{}` is not in the current organization: `{}`" msgid "The user `{}` is not in the current organization: `{}`"
msgstr "用户 `{}` 不在当前组织: `{}`" msgstr "用户 `{}` 不在当前组织: `{}`"
#: acls/serializers/login_asset_acl.py:15 #: acls/serializers/login_asset_acl.py:12
#: acls/serializers/login_asset_acl.py:37 msgid "Format for comma-delimited string, with * indicating a match all. "
msgstr "格式为逗号分隔的字符串, * 表示匹配所有. "
#: acls/serializers/login_asset_acl.py:17
#: acls/serializers/login_asset_acl.py:51
#: applications/serializers/attrs/application_type/chrome.py:20 #: applications/serializers/attrs/application_type/chrome.py:20
#: applications/serializers/attrs/application_type/custom.py:21 #: applications/serializers/attrs/application_type/custom.py:21
#: applications/serializers/attrs/application_type/mysql_workbench.py:30 #: applications/serializers/attrs/application_type/mysql_workbench.py:30
@ -215,38 +216,45 @@ msgstr "用户 `{}` 不在当前组织: `{}`"
msgid "Username" msgid "Username"
msgstr "用户名" msgstr "用户名"
#: acls/serializers/login_asset_acl.py:23 #: acls/serializers/login_asset_acl.py:24
msgid "(Domain name support)" msgid ""
msgstr "(支持域名)" "Format for comma-delimited string, with * indicating a match all. Such as: "
"192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, 2001:"
"db8:1a:1110::/64 (Domain name support)"
msgstr ""
"格式为逗号分隔的字符串, * 表示匹配所有。例如: 192.168.10.1, 192.168.1.0/24, 10.1.1.1-10.1.1.20, 2001:db8:2de::e13, "
"2001:db8:1a:1110::/64 (支持网域)"
#: acls/serializers/login_asset_acl.py:26 assets/models/asset.py:184 #: acls/serializers/login_asset_acl.py:35 assets/models/asset.py:184
#: assets/serializers/asset_user.py:45 assets/serializers/gathered_user.py:20 #: assets/serializers/asset_user.py:45 assets/serializers/gathered_user.py:20
#: settings/serializers/settings.py:107 #: settings/serializers/settings.py:111
#: users/templates/users/_granted_assets.html:25 #: users/templates/users/_granted_assets.html:25
#: users/templates/users/user_asset_permission.html:157 #: users/templates/users/user_asset_permission.html:157
msgid "Hostname" msgid "Hostname"
msgstr "主机名" msgstr "主机名"
#: acls/serializers/login_asset_acl.py:41 assets/models/asset.py:187 #: acls/serializers/login_asset_acl.py:42
msgid ""
"Format for comma-delimited string, with * indicating a match all. Protocol "
"options: {}"
msgstr "格式为逗号分隔的字符串, * 表示匹配所有. 可选的协议有: {}"
#: acls/serializers/login_asset_acl.py:55 assets/models/asset.py:187
#: assets/models/domain.py:54 assets/models/user.py:123 #: assets/models/domain.py:54 assets/models/user.py:123
#: terminal/serializers/session.py:29 terminal/serializers/storage.py:69 #: terminal/serializers/session.py:29 terminal/serializers/storage.py:69
msgid "Protocol" msgid "Protocol"
msgstr "协议" msgstr "协议"
#: acls/serializers/login_asset_acl.py:42 #: acls/serializers/login_asset_acl.py:65
msgid "Protocol options: {}"
msgstr "协议选项: {}"
#: acls/serializers/login_asset_acl.py:51
msgid "Unsupported protocols: {}" msgid "Unsupported protocols: {}"
msgstr "不支持的协议: {}" msgstr "不支持的协议: {}"
#: acls/serializers/login_asset_acl.py:80 #: acls/serializers/login_asset_acl.py:94
#: tickets/serializers/ticket/ticket.py:109 #: tickets/serializers/ticket/ticket.py:109
msgid "The organization `{}` does not exist" msgid "The organization `{}` does not exist"
msgstr "组织 `{}` 不存在" msgstr "组织 `{}` 不存在"
#: acls/serializers/login_asset_acl.py:85 #: acls/serializers/login_asset_acl.py:99
msgid "None of the reviewers belong to Organization `{}`" msgid "None of the reviewers belong to Organization `{}`"
msgstr "所有复核人都不属于组织 `{}`" msgstr "所有复核人都不属于组织 `{}`"
@ -279,7 +287,7 @@ msgstr "类别"
#: perms/models/application_permission.py:23 #: perms/models/application_permission.py:23
#: perms/serializers/application/permission.py:17 #: perms/serializers/application/permission.py:17
#: perms/serializers/application/user_permission.py:34 #: perms/serializers/application/user_permission.py:34
#: terminal/models/storage.py:26 terminal/models/storage.py:84 #: terminal/models/storage.py:26 terminal/models/storage.py:93
#: tickets/models/ticket.py:38 #: tickets/models/ticket.py:38
#: tickets/serializers/ticket/meta/ticket_type/apply_application.py:27 #: tickets/serializers/ticket/meta/ticket_type/apply_application.py:27
#: users/templates/users/user_granted_database_app.html:35 #: users/templates/users/user_granted_database_app.html:35
@ -336,7 +344,7 @@ msgstr "目标URL"
#: assets/models/base.py:252 assets/serializers/asset_user.py:71 #: assets/models/base.py:252 assets/serializers/asset_user.py:71
#: audits/signals_handler.py:46 authentication/forms.py:22 #: audits/signals_handler.py:46 authentication/forms.py:22
#: authentication/templates/authentication/login.html:155 #: authentication/templates/authentication/login.html:155
#: settings/serializers/settings.py:89 users/forms/profile.py:21 #: settings/serializers/settings.py:93 users/forms/profile.py:21
#: users/templates/users/user_otp_check_password.html:13 #: users/templates/users/user_otp_check_password.html:13
#: users/templates/users/user_password_update.html:43 #: users/templates/users/user_password_update.html:43
#: users/templates/users/user_password_verify.html:18 #: users/templates/users/user_password_verify.html:18
@ -404,7 +412,7 @@ msgid "Internal"
msgstr "内部的" msgstr "内部的"
#: assets/models/asset.py:166 assets/models/asset.py:190 #: assets/models/asset.py:166 assets/models/asset.py:190
#: assets/serializers/asset.py:66 #: assets/serializers/asset.py:66 perms/serializers/asset/user_permission.py:43
msgid "Platform" msgid "Platform"
msgstr "系统平台" msgstr "系统平台"
@ -504,7 +512,7 @@ msgstr "标签管理"
#: assets/models/cluster.py:28 assets/models/cmd_filter.py:26 #: assets/models/cluster.py:28 assets/models/cmd_filter.py:26
#: assets/models/cmd_filter.py:60 assets/models/group.py:21 #: assets/models/cmd_filter.py:60 assets/models/group.py:21
#: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:24 #: common/db/models.py:70 common/mixins/models.py:49 orgs/models.py:24
#: orgs/models.py:421 perms/models/base.py:55 users/models/user.py:571 #: orgs/models.py:422 perms/models/base.py:55 users/models/user.py:571
#: users/serializers/group.py:35 users/templates/users/user_detail.html:97 #: users/serializers/group.py:35 users/templates/users/user_detail.html:97
#: xpack/plugins/change_auth_plan/models.py:81 #: xpack/plugins/change_auth_plan/models.py:81
#: xpack/plugins/cloud/models.py:104 xpack/plugins/gathered_user/models.py:30 #: xpack/plugins/cloud/models.py:104 xpack/plugins/gathered_user/models.py:30
@ -518,7 +526,7 @@ msgstr "创建者"
#: assets/models/gathered_user.py:19 assets/models/group.py:22 #: assets/models/gathered_user.py:19 assets/models/group.py:22
#: assets/models/label.py:25 common/db/models.py:72 common/mixins/models.py:50 #: assets/models/label.py:25 common/db/models.py:72 common/mixins/models.py:50
#: ops/models/adhoc.py:38 ops/models/command.py:29 orgs/models.py:25 #: ops/models/adhoc.py:38 ops/models/command.py:29 orgs/models.py:25
#: orgs/models.py:419 perms/models/base.py:56 users/models/group.py:18 #: orgs/models.py:420 perms/models/base.py:56 users/models/group.py:18
#: users/templates/users/user_group_detail.html:58 #: users/templates/users/user_group_detail.html:58
#: xpack/plugins/cloud/models.py:107 #: xpack/plugins/cloud/models.py:107
msgid "Date created" msgid "Date created"
@ -554,7 +562,7 @@ msgstr "SSH公钥"
#: assets/models/base.py:257 assets/models/gathered_user.py:20 #: assets/models/base.py:257 assets/models/gathered_user.py:20
#: common/db/models.py:73 common/mixins/models.py:51 ops/models/adhoc.py:39 #: common/db/models.py:73 common/mixins/models.py:51 ops/models/adhoc.py:39
#: orgs/models.py:420 #: orgs/models.py:421
msgid "Date updated" msgid "Date updated"
msgstr "更新日期" msgstr "更新日期"
@ -593,7 +601,7 @@ msgid "Default"
msgstr "默认" msgstr "默认"
#: assets/models/cluster.py:36 assets/models/label.py:14 #: assets/models/cluster.py:36 assets/models/label.py:14
#: users/models/user.py:711 #: users/models/user.py:719
msgid "System" msgid "System"
msgstr "系统" msgstr "系统"
@ -666,7 +674,7 @@ msgstr "资产组"
msgid "Default asset group" msgid "Default asset group"
msgstr "默认资产组" msgstr "默认资产组"
#: assets/models/label.py:19 assets/models/node.py:538 settings/models.py:30 #: assets/models/label.py:19 assets/models/node.py:547 settings/models.py:30
msgid "Value" msgid "Value"
msgstr "值" msgstr "值"
@ -674,23 +682,23 @@ msgstr "值"
msgid "New node" msgid "New node"
msgstr "新节点" msgstr "新节点"
#: assets/models/node.py:466 users/templates/users/_granted_assets.html:130 #: assets/models/node.py:475 users/templates/users/_granted_assets.html:130
msgid "empty" msgid "empty"
msgstr "空" msgstr "空"
#: assets/models/node.py:537 perms/models/asset_permission.py:156 #: assets/models/node.py:546 perms/models/asset_permission.py:156
msgid "Key" msgid "Key"
msgstr "键" msgstr "键"
#: assets/models/node.py:539 #: assets/models/node.py:548
msgid "Full value" msgid "Full value"
msgstr "全称" msgstr "全称"
#: assets/models/node.py:542 perms/models/asset_permission.py:157 #: assets/models/node.py:551 perms/models/asset_permission.py:157
msgid "Parent key" msgid "Parent key"
msgstr "ssh私钥" msgstr "ssh私钥"
#: assets/models/node.py:551 assets/serializers/system_user.py:191 #: assets/models/node.py:560 assets/serializers/system_user.py:191
#: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:41
#: users/templates/users/user_asset_permission.html:73 #: users/templates/users/user_asset_permission.html:73
#: users/templates/users/user_asset_permission.html:158 #: users/templates/users/user_asset_permission.html:158
@ -716,7 +724,7 @@ msgid "Assets"
msgstr "资产" msgstr "资产"
#: assets/models/user.py:120 templates/_nav.html:17 #: assets/models/user.py:120 templates/_nav.html:17
#: users/views/profile/password.py:42 users/views/profile/pubkey.py:36 #: users/views/profile/password.py:43 users/views/profile/pubkey.py:37
msgid "Users" msgid "Users"
msgstr "用户管理" msgstr "用户管理"
@ -1240,6 +1248,10 @@ msgstr "用户(显示名称)"
msgid "SSH Key" msgid "SSH Key"
msgstr "SSH 密钥" msgstr "SSH 密钥"
#: audits/signals_handler.py:47
msgid "SSO"
msgstr ""
#: authentication/api/mfa.py:60 #: authentication/api/mfa.py:60
msgid "Code is invalid" msgid "Code is invalid"
msgstr "Code无效" msgstr "Code无效"
@ -1295,38 +1307,42 @@ msgstr ""
msgid "Invalid token or cache refreshed." msgid "Invalid token or cache refreshed."
msgstr "" msgstr ""
#: authentication/errors.py:25 #: authentication/errors.py:24
msgid "Username/password check failed" msgid "Username/password check failed"
msgstr "用户名/密码 校验失败" msgstr "用户名/密码 校验失败"
#: authentication/errors.py:26 #: authentication/errors.py:25
msgid "Password decrypt failed" msgid "Password decrypt failed"
msgstr "密码解密失败" msgstr "密码解密失败"
#: authentication/errors.py:27 #: authentication/errors.py:26
msgid "MFA failed" msgid "MFA failed"
msgstr "多因子认证失败" msgstr "多因子认证失败"
#: authentication/errors.py:28 #: authentication/errors.py:27
msgid "MFA unset" msgid "MFA unset"
msgstr "多因子认证没有设定" msgstr "多因子认证没有设定"
#: authentication/errors.py:29 #: authentication/errors.py:28
msgid "Username does not exist" msgid "Username does not exist"
msgstr "用户名不存在" msgstr "用户名不存在"
#: authentication/errors.py:30 #: authentication/errors.py:29
msgid "Password expired" msgid "Password expired"
msgstr "密码已过期" msgstr "密码已过期"
#: authentication/errors.py:31 #: authentication/errors.py:30
msgid "Disabled or expired" msgid "Disabled or expired"
msgstr "禁用或失效" msgstr "禁用或失效"
#: authentication/errors.py:32 #: authentication/errors.py:31
msgid "This account is inactive." msgid "This account is inactive."
msgstr "此账户已禁用" msgstr "此账户已禁用"
#: authentication/errors.py:32
msgid "This account is expired"
msgstr "此账户已过期"
#: authentication/errors.py:33 #: authentication/errors.py:33
msgid "Auth backend not match" msgid "Auth backend not match"
msgstr "没有匹配到认证后端" msgstr "没有匹配到认证后端"
@ -1349,50 +1365,53 @@ msgstr ""
"您输入的用户名或密码不正确,请重新输入。 您还可以尝试 {times_try} 次(账号将" "您输入的用户名或密码不正确,请重新输入。 您还可以尝试 {times_try} 次(账号将"
"被临时 锁定 {block_time} 分钟)" "被临时 锁定 {block_time} 分钟)"
#: authentication/errors.py:52 #: authentication/errors.py:52 authentication/errors.py:56
msgid "" msgid ""
"The account has been locked (please contact admin to unlock it or try again " "The account has been locked (please contact admin to unlock it or try again "
"after {} minutes)" "after {} minutes)"
msgstr "账号已被锁定(请联系管理员解锁 或 {}分钟后重试)" msgstr "账号已被锁定(请联系管理员解锁 或 {}分钟后重试)"
#: authentication/errors.py:55 users/views/profile/otp.py:107 #: authentication/errors.py:60
#: users/views/profile/otp.py:146 users/views/profile/otp.py:166 msgid ""
msgid "MFA code invalid, or ntp sync server time" "MFA code invalid, or ntp sync server time, You can also try {times_try} "
msgstr "MFA验证码不正确或者服务器端时间不对" "times (The account will be temporarily locked for {block_time} minutes)"
msgstr ""
"MFA验证码不正确或者服务器端时间不对。 您还可以尝试 {times_try} 次(账号将"
"被临时 锁定 {block_time} 分钟)"
#: authentication/errors.py:57 #: authentication/errors.py:65
msgid "MFA required" msgid "MFA required"
msgstr "需要多因子认证" msgstr "需要多因子认证"
#: authentication/errors.py:58 #: authentication/errors.py:66
msgid "MFA not set, please set it first" msgid "MFA not set, please set it first"
msgstr "多因子认证没有设置,请先完成设置" msgstr "多因子认证没有设置,请先完成设置"
#: authentication/errors.py:59 #: authentication/errors.py:67
msgid "Login confirm required" msgid "Login confirm required"
msgstr "需要登录复核" msgstr "需要登录复核"
#: authentication/errors.py:60 #: authentication/errors.py:68
msgid "Wait login confirm ticket for accept" msgid "Wait login confirm ticket for accept"
msgstr "等待登录复核处理" msgstr "等待登录复核处理"
#: authentication/errors.py:61 #: authentication/errors.py:69
msgid "Login confirm ticket was {}" msgid "Login confirm ticket was {}"
msgstr "登录复核 {}" msgstr "登录复核 {}"
#: authentication/errors.py:206 #: authentication/errors.py:233
msgid "IP is not allowed" msgid "IP is not allowed"
msgstr "来源 IP 不被允许登录" msgstr "来源 IP 不被允许登录"
#: authentication/errors.py:239 #: authentication/errors.py:266
msgid "SSO auth closed" msgid "SSO auth closed"
msgstr "SSO 认证关闭了" msgstr "SSO 认证关闭了"
#: authentication/errors.py:244 authentication/views/login.py:235 #: authentication/errors.py:271 authentication/views/login.py:236
msgid "Your password is too simple, please change it for security" msgid "Your password is too simple, please change it for security"
msgstr "你的密码过于简单,为了安全,请修改" msgstr "你的密码过于简单,为了安全,请修改"
#: authentication/errors.py:253 authentication/views/login.py:250 #: authentication/errors.py:280 authentication/views/login.py:251
msgid "Your password has expired, please reset before logging in" msgid "Your password has expired, please reset before logging in"
msgstr "您的密码已过期,先修改再登录" msgstr "您的密码已过期,先修改再登录"
@ -1566,7 +1585,7 @@ msgstr "复制成功"
msgid "Please enable cookies and try again." msgid "Please enable cookies and try again."
msgstr "设置你的浏览器支持cookie" msgstr "设置你的浏览器支持cookie"
#: authentication/views/login.py:181 #: authentication/views/login.py:182
msgid "" msgid ""
"Wait for <b>{}</b> confirm, You also can copy link to her/him <br/>\n" "Wait for <b>{}</b> confirm, You also can copy link to her/him <br/>\n"
" Don't close this page" " Don't close this page"
@ -1574,19 +1593,19 @@ msgstr ""
"等待 <b>{}</b> 确认, 你也可以复制链接发给他/她 <br/>\n" "等待 <b>{}</b> 确认, 你也可以复制链接发给他/她 <br/>\n"
" 不要关闭本页面" " 不要关闭本页面"
#: authentication/views/login.py:186 #: authentication/views/login.py:187
msgid "No ticket found" msgid "No ticket found"
msgstr "没有发现工单" msgstr "没有发现工单"
#: authentication/views/login.py:218 #: authentication/views/login.py:219
msgid "Logout success" msgid "Logout success"
msgstr "退出登录成功" msgstr "退出登录成功"
#: authentication/views/login.py:219 #: authentication/views/login.py:220
msgid "Logout success, return login page" msgid "Logout success, return login page"
msgstr "退出登录成功,返回到登录页面" msgstr "退出登录成功,返回到登录页面"
#: authentication/views/login.py:234 authentication/views/login.py:249 #: authentication/views/login.py:235 authentication/views/login.py:250
msgid "Please change your password" msgid "Please change your password"
msgstr "请修改密码" msgstr "请修改密码"
@ -1710,11 +1729,11 @@ msgstr ""
"<div>Luna是单独部署的一个程序你需要部署lunakoko, </div><div>如果你看到了" "<div>Luna是单独部署的一个程序你需要部署lunakoko, </div><div>如果你看到了"
"这个页面证明你访问的不是nginx监听的端口祝你好运</div>" "这个页面证明你访问的不是nginx监听的端口祝你好运</div>"
#: jumpserver/views/other.py:78 #: jumpserver/views/other.py:71
msgid "Websocket server run on port: {}, you should proxy it on nginx" msgid "Websocket server run on port: {}, you should proxy it on nginx"
msgstr "Websocket 服务运行在端口: {}, 请检查nginx是否代理是否设置" msgstr "Websocket 服务运行在端口: {}, 请检查nginx是否代理是否设置"
#: jumpserver/views/other.py:92 #: jumpserver/views/other.py:85
msgid "" msgid ""
"<div>Koko is a separately deployed program, you need to deploy Koko, " "<div>Koko is a separately deployed program, you need to deploy Koko, "
"configure nginx for url distribution,</div> </div>If you see this page, " "configure nginx for url distribution,</div> </div>If you see this page, "
@ -1893,7 +1912,7 @@ msgid "The current organization cannot be deleted"
msgstr "当前组织不能被删除" msgstr "当前组织不能被删除"
#: orgs/mixins/models.py:45 orgs/mixins/serializers.py:25 orgs/models.py:36 #: orgs/mixins/models.py:45 orgs/mixins/serializers.py:25 orgs/models.py:36
#: orgs/models.py:416 orgs/serializers.py:101 #: orgs/models.py:417 orgs/serializers.py:101
#: tickets/serializers/ticket/ticket.py:81 #: tickets/serializers/ticket/ticket.py:81
msgid "Organization" msgid "Organization"
msgstr "组织" msgstr "组织"
@ -1910,7 +1929,7 @@ msgstr "组织审计员"
msgid "GLOBAL" msgid "GLOBAL"
msgstr "全局组织" msgstr "全局组织"
#: orgs/models.py:418 users/models/user.py:540 #: orgs/models.py:419 users/models/user.py:540
#: users/templates/users/_select_user_modal.html:15 #: users/templates/users/_select_user_modal.html:15
#: users/templates/users/user_detail.html:73 #: users/templates/users/user_detail.html:73
#: users/templates/users/user_list.html:16 #: users/templates/users/user_list.html:16
@ -1934,7 +1953,7 @@ msgstr "应用程序"
msgid "Application permission" msgid "Application permission"
msgstr "应用管理" msgstr "应用管理"
#: perms/models/asset_permission.py:37 settings/serializers/settings.py:112 #: perms/models/asset_permission.py:37 settings/serializers/settings.py:116
msgid "All" msgid "All"
msgstr "全部" msgstr "全部"
@ -2077,14 +2096,6 @@ msgstr "用户第一次登录修改profile后重定向到地址, 可以是 wi
msgid "Forgot password url" msgid "Forgot password url"
msgstr "忘记密码URL" msgstr "忘记密码URL"
#: settings/serializers/settings.py:23
msgid "Global organization name"
msgstr "全局组织名"
#: settings/serializers/settings.py:23
msgid "The name of global organization to display"
msgstr "全局组织的显示名称,默认为 全局组织"
#: settings/serializers/settings.py:24 #: settings/serializers/settings.py:24
msgid "" msgid ""
"The forgot password url on login page, If you use ldap or cas external " "The forgot password url on login page, If you use ldap or cas external "
@ -2093,130 +2104,138 @@ msgstr ""
"登录页面忘记密码URL, 如果使用了 LDAP, OPENID 等外部认证系统,可以自定义用户重" "登录页面忘记密码URL, 如果使用了 LDAP, OPENID 等外部认证系统,可以自定义用户重"
"置密码访问的地址" "置密码访问的地址"
#: settings/serializers/settings.py:32 #: settings/serializers/settings.py:28
msgid "Global organization name"
msgstr "全局组织名"
#: settings/serializers/settings.py:29
msgid "The name of global organization to display"
msgstr "全局组织的显示名称,默认为 全局组织"
#: settings/serializers/settings.py:36
msgid "SMTP host" msgid "SMTP host"
msgstr "SMTP 主机" msgstr "SMTP 主机"
#: settings/serializers/settings.py:33 #: settings/serializers/settings.py:37
msgid "SMTP port" msgid "SMTP port"
msgstr "SMTP 端口" msgstr "SMTP 端口"
#: settings/serializers/settings.py:34 #: settings/serializers/settings.py:38
msgid "SMTP account" msgid "SMTP account"
msgstr "SMTP 账号" msgstr "SMTP 账号"
#: settings/serializers/settings.py:36 #: settings/serializers/settings.py:40
msgid "SMTP password" msgid "SMTP password"
msgstr "SMTP 密码" msgstr "SMTP 密码"
#: settings/serializers/settings.py:37 #: settings/serializers/settings.py:41
msgid "Tips: Some provider use token except password" msgid "Tips: Some provider use token except password"
msgstr "提示:一些邮件提供商需要输入的是授权码" msgstr "提示:一些邮件提供商需要输入的是授权码"
#: settings/serializers/settings.py:40 #: settings/serializers/settings.py:44
msgid "Send user" msgid "Send user"
msgstr "发件人" msgstr "发件人"
#: settings/serializers/settings.py:41 #: settings/serializers/settings.py:45
msgid "Tips: Send mail account, default SMTP account as the send account" msgid "Tips: Send mail account, default SMTP account as the send account"
msgstr "提示:发送邮件账号,默认使用 SMTP 账号作为发送账号" msgstr "提示:发送邮件账号,默认使用 SMTP 账号作为发送账号"
#: settings/serializers/settings.py:44 #: settings/serializers/settings.py:48
msgid "Test recipient" msgid "Test recipient"
msgstr "测试收件人" msgstr "测试收件人"
#: settings/serializers/settings.py:45 #: settings/serializers/settings.py:49
msgid "Tips: Used only as a test mail recipient" msgid "Tips: Used only as a test mail recipient"
msgstr "提示:仅用来作为测试邮件收件人" msgstr "提示:仅用来作为测试邮件收件人"
#: settings/serializers/settings.py:48 #: settings/serializers/settings.py:52
msgid "Use SSL" msgid "Use SSL"
msgstr "使用 SSL" msgstr "使用 SSL"
#: settings/serializers/settings.py:49 #: settings/serializers/settings.py:53
msgid "If SMTP port is 465, may be select" msgid "If SMTP port is 465, may be select"
msgstr "如果SMTP端口是465通常需要启用 SSL" msgstr "如果SMTP端口是465通常需要启用 SSL"
#: settings/serializers/settings.py:52 #: settings/serializers/settings.py:56
msgid "Use TLS" msgid "Use TLS"
msgstr "使用 TLS" msgstr "使用 TLS"
#: settings/serializers/settings.py:53 #: settings/serializers/settings.py:57
msgid "If SMTP port is 587, may be select" msgid "If SMTP port is 587, may be select"
msgstr "如果SMTP端口是587通常需要启用 TLS" msgstr "如果SMTP端口是587通常需要启用 TLS"
#: settings/serializers/settings.py:56 #: settings/serializers/settings.py:60
msgid "Subject prefix" msgid "Subject prefix"
msgstr "主题前缀" msgstr "主题前缀"
#: settings/serializers/settings.py:63 #: settings/serializers/settings.py:67
msgid "Create user email subject" msgid "Create user email subject"
msgstr "邮件主题" msgstr "邮件主题"
#: settings/serializers/settings.py:64 #: settings/serializers/settings.py:68
msgid "" msgid ""
"Tips: When creating a user, send the subject of the email (eg:Create account " "Tips: When creating a user, send the subject of the email (eg:Create account "
"successfully)" "successfully)"
msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)"
#: settings/serializers/settings.py:68 #: settings/serializers/settings.py:72
msgid "Create user honorific" msgid "Create user honorific"
msgstr "邮件的敬语" msgstr "邮件的敬语"
#: settings/serializers/settings.py:69 #: settings/serializers/settings.py:73
msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)"
msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)" msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 您好)"
#: settings/serializers/settings.py:73 #: settings/serializers/settings.py:77
msgid "Create user email content" msgid "Create user email content"
msgstr "邮件的内容" msgstr "邮件的内容"
#: settings/serializers/settings.py:74 #: settings/serializers/settings.py:78
msgid "Tips:When creating a user, send the content of the email" msgid "Tips:When creating a user, send the content of the email"
msgstr "提示: 创建用户时,发送设置密码邮件的内容" msgstr "提示: 创建用户时,发送设置密码邮件的内容"
#: settings/serializers/settings.py:77 #: settings/serializers/settings.py:81
msgid "Signature" msgid "Signature"
msgstr "署名" msgstr "署名"
#: settings/serializers/settings.py:78 #: settings/serializers/settings.py:82
msgid "Tips: Email signature (eg:jumpserver)" msgid "Tips: Email signature (eg:jumpserver)"
msgstr "邮件署名 (如:jumpserver)" msgstr "邮件署名 (如:jumpserver)"
#: settings/serializers/settings.py:86 #: settings/serializers/settings.py:90
msgid "LDAP server" msgid "LDAP server"
msgstr "LDAP 地址" msgstr "LDAP 地址"
#: settings/serializers/settings.py:86 #: settings/serializers/settings.py:90
msgid "eg: ldap://localhost:389" msgid "eg: ldap://localhost:389"
msgstr "" msgstr ""
#: settings/serializers/settings.py:88 #: settings/serializers/settings.py:92
msgid "Bind DN" msgid "Bind DN"
msgstr "绑定 DN" msgstr "绑定 DN"
#: settings/serializers/settings.py:91 #: settings/serializers/settings.py:95
msgid "User OU" msgid "User OU"
msgstr "用户 OU" msgstr "用户 OU"
#: settings/serializers/settings.py:92 #: settings/serializers/settings.py:96
msgid "Use | split multi OUs" msgid "Use | split multi OUs"
msgstr "多个 OU 使用 | 分割" msgstr "多个 OU 使用 | 分割"
#: settings/serializers/settings.py:95 #: settings/serializers/settings.py:99
msgid "User search filter" msgid "User search filter"
msgstr "用户过滤器" msgstr "用户过滤器"
#: settings/serializers/settings.py:96 #: settings/serializers/settings.py:100
#, python-format #, python-format
msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)"
msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)" msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)"
#: settings/serializers/settings.py:99 #: settings/serializers/settings.py:103
msgid "User attr map" msgid "User attr map"
msgstr "用户属性映射" msgstr "用户属性映射"
#: settings/serializers/settings.py:100 #: settings/serializers/settings.py:104
msgid "" msgid ""
"User attr map present how to map LDAP user attr to jumpserver, username,name," "User attr map present how to map LDAP user attr to jumpserver, username,name,"
"email is jumpserver attr" "email is jumpserver attr"
@ -2224,35 +2243,35 @@ msgstr ""
"用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上username, name," "用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上username, name,"
"email 是jumpserver的用户需要属性" "email 是jumpserver的用户需要属性"
#: settings/serializers/settings.py:102 #: settings/serializers/settings.py:106
msgid "Enable LDAP auth" msgid "Enable LDAP auth"
msgstr "启用 LDAP 认证" msgstr "启用 LDAP 认证"
#: settings/serializers/settings.py:113 #: settings/serializers/settings.py:117
msgid "Auto" msgid "Auto"
msgstr "自动" msgstr "自动"
#: settings/serializers/settings.py:119 #: settings/serializers/settings.py:123
msgid "Password auth" msgid "Password auth"
msgstr "密码认证" msgstr "密码认证"
#: settings/serializers/settings.py:120 #: settings/serializers/settings.py:124
msgid "Public key auth" msgid "Public key auth"
msgstr "密钥认证" msgstr "密钥认证"
#: settings/serializers/settings.py:121 #: settings/serializers/settings.py:125
msgid "List sort by" msgid "List sort by"
msgstr "资产列表排序" msgstr "资产列表排序"
#: settings/serializers/settings.py:122 #: settings/serializers/settings.py:126
msgid "List page size" msgid "List page size"
msgstr "资产列表每页数量" msgstr "资产列表每页数量"
#: settings/serializers/settings.py:124 #: settings/serializers/settings.py:128
msgid "Session keep duration" msgid "Session keep duration"
msgstr "会话日志保存时间" msgstr "会话日志保存时间"
#: settings/serializers/settings.py:125 #: settings/serializers/settings.py:129
msgid "" msgid ""
"Units: days, Session, record, command will be delete if more than duration, " "Units: days, Session, record, command will be delete if more than duration, "
"only in database" "only in database"
@ -2260,64 +2279,64 @@ msgstr ""
"单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不" "单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不"
"受影响)" "受影响)"
#: settings/serializers/settings.py:127 #: settings/serializers/settings.py:131
msgid "Telnet login regex" msgid "Telnet login regex"
msgstr "Telnet 成功正则表达式" msgstr "Telnet 成功正则表达式"
#: settings/serializers/settings.py:132 #: settings/serializers/settings.py:136
msgid "Global MFA auth" msgid "Global MFA auth"
msgstr "全局启用 MFA 认证" msgstr "全局启用 MFA 认证"
#: settings/serializers/settings.py:133 #: settings/serializers/settings.py:137
msgid "All user enable MFA" msgid "All user enable MFA"
msgstr "强制所有用户启用多因子认证" msgstr "强制所有用户启用多因子认证"
#: settings/serializers/settings.py:136 #: settings/serializers/settings.py:140
msgid "Batch command execution" msgid "Batch command execution"
msgstr "批量命令执行" msgstr "批量命令执行"
#: settings/serializers/settings.py:137 #: settings/serializers/settings.py:141
msgid "Allow user run batch command or not using ansible" msgid "Allow user run batch command or not using ansible"
msgstr "是否允许用户使用 ansible 执行批量命令" msgstr "是否允许用户使用 ansible 执行批量命令"
#: settings/serializers/settings.py:140 #: settings/serializers/settings.py:144
msgid "Enable terminal register" msgid "Enable terminal register"
msgstr "终端注册" msgstr "终端注册"
#: settings/serializers/settings.py:141 #: settings/serializers/settings.py:145
msgid "" msgid ""
"Allow terminal register, after all terminal setup, you should disable this " "Allow terminal register, after all terminal setup, you should disable this "
"for security" "for security"
msgstr "是否允许终端注册,当所有终端启动后,为了安全应该关闭" msgstr "是否允许终端注册,当所有终端启动后,为了安全应该关闭"
#: settings/serializers/settings.py:145 #: settings/serializers/settings.py:149
msgid "Limit the number of login failures" msgid "Limit the number of login failures"
msgstr "限制登录失败次数" msgstr "限制登录失败次数"
#: settings/serializers/settings.py:149 #: settings/serializers/settings.py:153
msgid "Block logon interval" msgid "Block logon interval"
msgstr "禁止登录时间间隔" msgstr "禁止登录时间间隔"
#: settings/serializers/settings.py:150 #: settings/serializers/settings.py:154
msgid "" msgid ""
"Tip: (unit/minute) if the user has failed to log in for a limited number of " "Tip: (unit/minute) if the user has failed to log in for a limited number of "
"times, no login is allowed during this time interval." "times, no login is allowed during this time interval."
msgstr "" msgstr ""
"提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" "提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录"
#: settings/serializers/settings.py:154 #: settings/serializers/settings.py:158
msgid "Connection max idle time" msgid "Connection max idle time"
msgstr "连接最大空闲时间" msgstr "连接最大空闲时间"
#: settings/serializers/settings.py:155 #: settings/serializers/settings.py:159
msgid "If idle time more than it, disconnect connection Unit: minute" msgid "If idle time more than it, disconnect connection Unit: minute"
msgstr "提示:如果超过该配置没有操作,连接会被断开 (单位:分)" msgstr "提示:如果超过该配置没有操作,连接会被断开 (单位:分)"
#: settings/serializers/settings.py:159 #: settings/serializers/settings.py:163
msgid "User password expiration" msgid "User password expiration"
msgstr "用户密码过期时间" msgstr "用户密码过期时间"
#: settings/serializers/settings.py:160 #: settings/serializers/settings.py:164
msgid "" msgid ""
"Tip: (unit: day) If the user does not update the password during the time, " "Tip: (unit: day) If the user does not update the password during the time, "
"the user password will expire failure;The password expiration reminder mail " "the user password will expire failure;The password expiration reminder mail "
@ -2327,35 +2346,35 @@ msgstr ""
"提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期" "提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期"
"提醒邮件将在密码过期前5天内由系统每天自动发送给用户" "提醒邮件将在密码过期前5天内由系统每天自动发送给用户"
#: settings/serializers/settings.py:164 #: settings/serializers/settings.py:168
msgid "Password minimum length" msgid "Password minimum length"
msgstr "密码最小长度" msgstr "密码最小长度"
#: settings/serializers/settings.py:167 #: settings/serializers/settings.py:171
msgid "Must contain capital" msgid "Must contain capital"
msgstr "必须包含大写字符" msgstr "必须包含大写字符"
#: settings/serializers/settings.py:169 #: settings/serializers/settings.py:173
msgid "Must contain lowercase" msgid "Must contain lowercase"
msgstr "必须包含小写字符" msgstr "必须包含小写字符"
#: settings/serializers/settings.py:170 #: settings/serializers/settings.py:174
msgid "Must contain numeric" msgid "Must contain numeric"
msgstr "必须包含数字" msgstr "必须包含数字"
#: settings/serializers/settings.py:171 #: settings/serializers/settings.py:175
msgid "Must contain special" msgid "Must contain special"
msgstr "必须包含特殊字符" msgstr "必须包含特殊字符"
#: settings/serializers/settings.py:172 #: settings/serializers/settings.py:176
msgid "Insecure command alert" msgid "Insecure command alert"
msgstr "危险命令告警" msgstr "危险命令告警"
#: settings/serializers/settings.py:174 #: settings/serializers/settings.py:178
msgid "Email recipient" msgid "Email recipient"
msgstr "邮件收件人" msgstr "邮件收件人"
#: settings/serializers/settings.py:175 #: settings/serializers/settings.py:179
msgid "Multiple user using , split" msgid "Multiple user using , split"
msgstr "多个用户,使用 , 分割" msgstr "多个用户,使用 , 分割"
@ -3064,27 +3083,27 @@ msgstr "运行时间"
msgid "Args" msgid "Args"
msgstr "参数" msgstr "参数"
#: terminal/models/terminal.py:102 #: terminal/models/terminal.py:103
msgid "type" msgid "type"
msgstr "类型" msgstr "类型"
#: terminal/models/terminal.py:104 #: terminal/models/terminal.py:105
msgid "Remote Address" msgid "Remote Address"
msgstr "远端地址" msgstr "远端地址"
#: terminal/models/terminal.py:105 #: terminal/models/terminal.py:106
msgid "SSH Port" msgid "SSH Port"
msgstr "SSH端口" msgstr "SSH端口"
#: terminal/models/terminal.py:106 #: terminal/models/terminal.py:107
msgid "HTTP Port" msgid "HTTP Port"
msgstr "HTTP端口" msgstr "HTTP端口"
#: terminal/models/terminal.py:107 #: terminal/models/terminal.py:108
msgid "Command storage" msgid "Command storage"
msgstr "命令存储" msgstr "命令存储"
#: terminal/models/terminal.py:108 #: terminal/models/terminal.py:109
msgid "Replay storage" msgid "Replay storage"
msgstr "录像存储" msgstr "录像存储"
@ -3583,7 +3602,7 @@ msgstr "工单已处理 - {} ({})"
msgid "Your ticket has been processed, processor - {}" msgid "Your ticket has been processed, processor - {}"
msgstr "你的工单已被处理, 处理人 - {}" msgstr "你的工单已被处理, 处理人 - {}"
#: users/api/user.py:212 #: users/api/user.py:215
msgid "Could not reset self otp, use profile reset instead" msgid "Could not reset self otp, use profile reset instead"
msgstr "不能在该页面重置多因子认证, 请去个人信息页面重置" msgstr "不能在该页面重置多因子认证, 请去个人信息页面重置"
@ -3702,11 +3721,11 @@ msgstr "用户来源"
msgid "Date password last updated" msgid "Date password last updated"
msgstr "最后更新密码日期" msgstr "最后更新密码日期"
#: users/models/user.py:707 #: users/models/user.py:715
msgid "Administrator" msgid "Administrator"
msgstr "管理员" msgstr "管理员"
#: users/models/user.py:710 #: users/models/user.py:718
msgid "Administrator is the super user of system" msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员" msgstr "Administrator是初始的超级管理员"
@ -4304,7 +4323,7 @@ msgstr "新的公钥已设置成功,请下载对应的私钥"
msgid "Update user" msgid "Update user"
msgstr "更新用户" msgstr "更新用户"
#: users/templates/users/user_update.html:22 users/views/profile/reset.py:119 #: users/templates/users/user_update.html:22 users/views/profile/reset.py:120
msgid "User auth from {}, go there change password" msgid "User auth from {}, go there change password"
msgstr "用户认证源来自 {}, 请去相应系统修改密码" msgstr "用户认证源来自 {}, 请去相应系统修改密码"
@ -4412,7 +4431,7 @@ msgstr ""
" <br>\n" " <br>\n"
" " " "
#: users/utils.py:116 users/views/profile/reset.py:79 #: users/utils.py:116 users/views/profile/reset.py:80
msgid "Reset password success" msgid "Reset password success"
msgstr "重置密码成功" msgstr "重置密码成功"
@ -4616,6 +4635,11 @@ msgstr ""
" <br>\n" " <br>\n"
" " " "
#: users/views/profile/otp.py:107 users/views/profile/otp.py:146
#: users/views/profile/otp.py:166
msgid "MFA code invalid, or ntp sync server time"
msgstr "MFA验证码不正确或者服务器端时间不对"
#: users/views/profile/otp.py:190 #: users/views/profile/otp.py:190
msgid "MFA enable success" msgid "MFA enable success"
msgstr "多因子认证启用成功" msgstr "多因子认证启用成功"
@ -4632,46 +4656,46 @@ msgstr "多因子认证禁用成功"
msgid "MFA disable success, return login page" msgid "MFA disable success, return login page"
msgstr "多因子认证禁用成功,返回登录页面" msgstr "多因子认证禁用成功,返回登录页面"
#: users/views/profile/password.py:43 #: users/views/profile/password.py:44
msgid "Password update" msgid "Password update"
msgstr "密码更新" msgstr "密码更新"
#: users/views/profile/password.py:59 users/views/profile/reset.py:126 #: users/views/profile/password.py:60 users/views/profile/reset.py:127
msgid "* Your password does not meet the requirements" msgid "* Your password does not meet the requirements"
msgstr "* 您的密码不符合要求" msgstr "* 您的密码不符合要求"
#: users/views/profile/password.py:74 #: users/views/profile/password.py:75
msgid "Password invalid" msgid "Password invalid"
msgstr "用户名或密码无效" msgstr "用户名或密码无效"
#: users/views/profile/pubkey.py:37 #: users/views/profile/pubkey.py:38
msgid "Public key update" msgid "Public key update"
msgstr "密钥更新" msgstr "密钥更新"
#: users/views/profile/reset.py:45 #: users/views/profile/reset.py:46
msgid "Email address invalid, please input again" msgid "Email address invalid, please input again"
msgstr "邮箱地址错误,重新输入" msgstr "邮箱地址错误,重新输入"
#: users/views/profile/reset.py:51 #: users/views/profile/reset.py:52
msgid "" msgid ""
"The user is from {}, please go to the corresponding system to change the " "The user is from {}, please go to the corresponding system to change the "
"password" "password"
msgstr "用户来自 {} 请去相应系统修改密码" msgstr "用户来自 {} 请去相应系统修改密码"
#: users/views/profile/reset.py:65 #: users/views/profile/reset.py:66
msgid "Send reset password message" msgid "Send reset password message"
msgstr "发送重置密码邮件" msgstr "发送重置密码邮件"
#: users/views/profile/reset.py:66 #: users/views/profile/reset.py:67
msgid "Send reset password mail success, login your mail box and follow it " msgid "Send reset password mail success, login your mail box and follow it "
msgstr "" msgstr ""
"发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)" "发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)"
#: users/views/profile/reset.py:80 #: users/views/profile/reset.py:81
msgid "Reset password success, return to login page" msgid "Reset password success, return to login page"
msgstr "重置密码成功,返回到登录页面" msgstr "重置密码成功,返回到登录页面"
#: users/views/profile/reset.py:104 users/views/profile/reset.py:114 #: users/views/profile/reset.py:105 users/views/profile/reset.py:115
msgid "Token invalid or expired" msgid "Token invalid or expired"
msgstr "Token错误或失效" msgstr "Token错误或失效"
@ -5151,6 +5175,12 @@ msgstr "旗舰版"
msgid "Community edition" msgid "Community edition"
msgstr "社区版" msgstr "社区版"
#~ msgid "(Domain name support)"
#~ msgstr "(支持域名)"
#~ msgid "Protocol options: {}"
#~ msgstr "协议选项: {}"
#~ msgid "CPU Usage" #~ msgid "CPU Usage"
#~ msgstr "CPU使用" #~ msgstr "CPU使用"