perf: 优化英文下树的显示 (#7883)

* perf: 优化英文下树的显示

* perf: 修改翻译

* perf: 修改翻译

Co-authored-by: ibuler <ibuler@qq.com>
pull/7886/head^2
fit2bot 2022-03-16 20:27:38 +08:00 committed by GitHub
parent 8233c69038
commit 3b507dc795
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 62 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-16 17:35+0800\n"
"POT-Creation-Date: 2022-03-16 19:59+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -26,7 +26,7 @@ msgstr "访问控制"
#: assets/models/base.py:175 assets/models/cluster.py:18
#: assets/models/cmd_filter.py:27 assets/models/domain.py:23
#: assets/models/group.py:20 assets/models/label.py:18 ops/mixin.py:24
#: orgs/models.py:12 perms/models/base.py:83 rbac/models/role.py:29
#: orgs/models.py:65 perms/models/base.py:83 rbac/models/role.py:29
#: settings/models.py:29 settings/serializers/sms.py:6
#: terminal/models/storage.py:23 terminal/models/task.py:16
#: terminal/models/terminal.py:100 users/forms/profile.py:32
@ -62,7 +62,7 @@ msgstr "激活中"
#: assets/models/cluster.py:29 assets/models/cmd_filter.py:48
#: assets/models/cmd_filter.py:96 assets/models/domain.py:24
#: assets/models/domain.py:64 assets/models/group.py:23
#: assets/models/label.py:23 ops/models/adhoc.py:38 orgs/models.py:15
#: assets/models/label.py:23 ops/models/adhoc.py:38 orgs/models.py:68
#: perms/models/base.py:93 rbac/models/role.py:37 settings/models.py:34
#: terminal/models/storage.py:26 terminal/models/terminal.py:114
#: tickets/models/comment.py:24 tickets/models/ticket.py:154
@ -89,8 +89,8 @@ msgstr "登录复核"
#: acls/models/login_acl.py:24 acls/models/login_asset_acl.py:20
#: assets/models/cmd_filter.py:30 assets/models/label.py:15 audits/models.py:37
#: audits/models.py:60 audits/models.py:85 audits/serializers.py:100
#: authentication/models.py:50 orgs/models.py:191 perms/models/base.py:84
#: rbac/builtin.py:97 rbac/models/rolebinding.py:33 templates/index.html:78
#: authentication/models.py:50 orgs/models.py:214 perms/models/base.py:84
#: rbac/builtin.py:98 rbac/models/rolebinding.py:39 templates/index.html:78
#: terminal/backends/command/models.py:19
#: terminal/backends/command/serializers.py:12 terminal/models/session.py:42
#: terminal/notifications.py:88 terminal/notifications.py:136
@ -375,7 +375,7 @@ msgstr "类型名称"
#: assets/models/group.py:22 assets/models/label.py:25
#: assets/serializers/account.py:18 common/db/models.py:113
#: common/mixins/models.py:50 ops/models/adhoc.py:39 ops/models/command.py:30
#: orgs/models.py:14 orgs/models.py:194 perms/models/base.py:92
#: orgs/models.py:67 orgs/models.py:217 perms/models/base.py:92
#: users/models/group.py:18 users/models/user.py:827
#: xpack/plugins/cloud/models.py:125
msgid "Date created"
@ -384,7 +384,7 @@ msgstr "创建日期"
#: applications/serializers/application.py:104 assets/models/base.py:182
#: assets/models/gathered_user.py:20 assets/serializers/account.py:21
#: common/db/models.py:114 common/mixins/models.py:51 ops/models/adhoc.py:40
#: orgs/models.py:195
#: orgs/models.py:218
msgid "Date updated"
msgstr "更新日期"
@ -626,8 +626,8 @@ msgstr "标签管理"
#: assets/models/asset.py:229 assets/models/base.py:183
#: assets/models/cluster.py:28 assets/models/cmd_filter.py:52
#: assets/models/cmd_filter.py:99 assets/models/group.py:21
#: common/db/models.py:111 common/mixins/models.py:49 orgs/models.py:13
#: orgs/models.py:196 perms/models/base.py:91 users/models/user.py:619
#: common/db/models.py:111 common/mixins/models.py:49 orgs/models.py:66
#: orgs/models.py:219 perms/models/base.py:91 users/models/user.py:619
#: users/serializers/group.py:33
#: xpack/plugins/change_auth_plan/models/base.py:48
#: xpack/plugins/cloud/models.py:122 xpack/plugins/gathered_user/models.py:30
@ -1255,6 +1255,7 @@ msgid "System user name"
msgstr "系统用户名称"
#: assets/serializers/system_user.py:282 orgs/mixins/serializers.py:26
#: rbac/serializers/rolebinding.py:23
msgid "Org name"
msgstr "组织名称"
@ -1383,7 +1384,7 @@ msgstr "日志审计"
#: audits/models.py:27 audits/models.py:57
#: authentication/templates/authentication/_access_key_modal.html:65
#: rbac/tree.py:161 users/templates/users/user_asset_permission.html:128
#: rbac/tree.py:160 users/templates/users/user_asset_permission.html:128
#: users/templates/users/user_database_app_permission.html:111
msgid "Delete"
msgstr "删除"
@ -1437,11 +1438,11 @@ msgstr "文件管理"
#: audits/models.py:55
#: authentication/templates/authentication/_access_key_modal.html:22
#: rbac/tree.py:158
#: rbac/tree.py:157
msgid "Create"
msgstr "创建"
#: audits/models.py:56 rbac/tree.py:160 templates/_csv_import_export.html:18
#: audits/models.py:56 rbac/tree.py:159 templates/_csv_import_export.html:18
#: templates/_csv_update_modal.html:6
#: users/templates/users/user_asset_permission.html:127
#: users/templates/users/user_database_app_permission.html:110
@ -1565,7 +1566,7 @@ msgstr "运行用户"
msgid "Run as display"
msgstr "运行用户名称"
#: audits/serializers.py:102 rbac/serializers/rolebinding.py:22
#: audits/serializers.py:102 rbac/serializers/rolebinding.py:21
msgid "User display"
msgstr "用户名称"
@ -2878,25 +2879,25 @@ msgstr "当前组织 ({}) 不能被删除"
msgid "The organization have resource ({}) cannot be deleted"
msgstr "组织存在资源 ({}) 不能被删除"
#: orgs/apps.py:7 rbac/tree.py:111
#: orgs/apps.py:7 rbac/tree.py:110
msgid "App organizations"
msgstr "组织管理"
#: orgs/mixins/models.py:46 orgs/mixins/serializers.py:25 orgs/models.py:27
#: orgs/models.py:188 rbac/const.py:7 rbac/models/rolebinding.py:40
#: orgs/mixins/models.py:46 orgs/mixins/serializers.py:25 orgs/models.py:80
#: orgs/models.py:211 rbac/const.py:7 rbac/models/rolebinding.py:46
#: rbac/serializers/rolebinding.py:40 tickets/serializers/ticket/ticket.py:77
msgid "Organization"
msgstr "组织"
#: orgs/models.py:21
#: orgs/models.py:74
msgid "GLOBAL"
msgstr "全局组织"
#: orgs/models.py:29
#: orgs/models.py:82
msgid "Can view root org"
msgstr "可以查看全局组织"
#: orgs/models.py:193 rbac/models/role.py:46 rbac/models/rolebinding.py:36
#: orgs/models.py:216 rbac/models/role.py:46 rbac/models/rolebinding.py:42
#: users/models/user.py:584 users/templates/users/_select_user_modal.html:15
msgid "Role"
msgstr "角色"
@ -3121,7 +3122,7 @@ msgstr "角色已绑定用户,不能删除"
msgid "Internal role, can't be update"
msgstr "内部角色,不能更新"
#: rbac/api/rolebinding.py:46
#: rbac/api/rolebinding.py:52
msgid "{} at least one system role"
msgstr "{} 至少有一个系统角色"
@ -3129,27 +3130,27 @@ msgstr "{} 至少有一个系统角色"
msgid "RBAC"
msgstr "RBAC"
#: rbac/builtin.py:88
#: rbac/builtin.py:89
msgid "SystemAdmin"
msgstr "系统管理员"
#: rbac/builtin.py:91
#: rbac/builtin.py:92
msgid "SystemAuditor"
msgstr "系统审计员"
#: rbac/builtin.py:94
#: rbac/builtin.py:95
msgid "SystemComponent"
msgstr "系统组件"
#: rbac/builtin.py:100
#: rbac/builtin.py:101
msgid "OrgAdmin"
msgstr "组织管理员"
#: rbac/builtin.py:103
#: rbac/builtin.py:104
msgid "OrgAuditor"
msgstr "组织审计员"
#: rbac/builtin.py:106
#: rbac/builtin.py:107
msgid "OrgUser"
msgstr "组织用户"
@ -3181,7 +3182,7 @@ msgstr "文件管理"
msgid "Permission"
msgstr "授权"
#: rbac/models/role.py:31 rbac/models/rolebinding.py:30
#: rbac/models/role.py:31 rbac/models/rolebinding.py:36
msgid "Scope"
msgstr "范围"
@ -3201,21 +3202,21 @@ msgstr "系统角色"
msgid "Organization role"
msgstr "组织角色"
#: rbac/models/rolebinding.py:45
#: rbac/models/rolebinding.py:51
msgid "Role binding"
msgstr "角色绑定"
#: rbac/models/rolebinding.py:111
#: rbac/models/rolebinding.py:123
msgid ""
"User last role in org, can not be delete, you can remove user from org "
"instead"
msgstr "用户最后一个角色,不能删除,你可以将用户从组织移除"
#: rbac/models/rolebinding.py:118
#: rbac/models/rolebinding.py:130
msgid "Organization role binding"
msgstr "组织角色绑定"
#: rbac/models/rolebinding.py:132
#: rbac/models/rolebinding.py:145
msgid "System role binding"
msgstr "系统角色绑定"
@ -3231,7 +3232,7 @@ msgstr "范围名称"
msgid "Display name"
msgstr "显示名称"
#: rbac/serializers/rolebinding.py:23
#: rbac/serializers/rolebinding.py:22
msgid "Role display"
msgstr "角色显示"
@ -3239,87 +3240,87 @@ msgstr "角色显示"
msgid "Has bound this role"
msgstr "已经绑定"
#: rbac/tree.py:17 rbac/tree.py:18
#: rbac/tree.py:16 rbac/tree.py:17
msgid "All permissions"
msgstr "所有权限"
#: rbac/tree.py:24
#: rbac/tree.py:23
msgid "Console view"
msgstr "控制台"
#: rbac/tree.py:25
#: rbac/tree.py:24
msgid "Workspace view"
msgstr "工作台"
#: rbac/tree.py:26
#: rbac/tree.py:25
msgid "Audit view"
msgstr "审计台"
#: rbac/tree.py:27 settings/models.py:140
#: rbac/tree.py:26 settings/models.py:140
msgid "System setting"
msgstr "系统设置"
#: rbac/tree.py:28
#: rbac/tree.py:27
msgid "Other"
msgstr "其它"
#: rbac/tree.py:36
#: rbac/tree.py:35
msgid "Accounts"
msgstr "账号管理"
#: rbac/tree.py:40
#: rbac/tree.py:39
msgid "Session audits"
msgstr "会话审计"
#: rbac/tree.py:50
#: rbac/tree.py:49
msgid "Cloud import"
msgstr "云同步"
#: rbac/tree.py:51
#: rbac/tree.py:50
msgid "Backup account"
msgstr "备份账号"
#: rbac/tree.py:52
#: rbac/tree.py:51
msgid "Gather account"
msgstr "收集账号"
#: rbac/tree.py:53
#: rbac/tree.py:52
msgid "App change auth"
msgstr "应用改密"
#: rbac/tree.py:54
#: rbac/tree.py:53
msgid "Asset change auth"
msgstr "资产改密"
#: rbac/tree.py:55
#: rbac/tree.py:54
msgid "Terminal setting"
msgstr "终端设置"
#: rbac/tree.py:56
#: rbac/tree.py:55
msgid "My assets"
msgstr "我的资产"
#: rbac/tree.py:57
#: rbac/tree.py:56
msgid "My apps"
msgstr "我的应用"
#: rbac/tree.py:112
#: rbac/tree.py:111
msgid "Ticket comment"
msgstr "工单评论"
#: rbac/tree.py:113 tickets/models/ticket.py:163
#: rbac/tree.py:112 tickets/models/ticket.py:163
msgid "Ticket"
msgstr "工单管理"
#: rbac/tree.py:114
#: rbac/tree.py:113
msgid "Common setting"
msgstr "一般设置"
#: rbac/tree.py:115
#: rbac/tree.py:114
msgid "Execute batch command"
msgstr "执行批量命令"
#: rbac/tree.py:159
#: rbac/tree.py:158
msgid "View"
msgstr "查看"
@ -6839,6 +6840,21 @@ msgstr "旗舰版"
msgid "Community edition"
msgstr "社区版"
#, fuzzy
#~| msgid "Create"
#~ msgid "create"
#~ msgstr "创建"
#, fuzzy
#~| msgid "Update"
#~ msgid "update"
#~ msgstr "更新"
#, fuzzy
#~| msgid "Delete"
#~ msgid "delete"
#~ msgstr "删除"
#~ msgid "Can connect my assets"
#~ msgstr "可以连接我的资产"

View File

@ -12,6 +12,7 @@ user_perms = (
('assets', 'systemuser', 'match', 'systemuser'),
('assets', 'node', 'match', 'node'),
('ops', 'commandexecution', 'add', 'commandexecution'),
('authentication', 'connectiontoken', 'add', 'connectiontoken'),
)
auditor_perms = user_perms + (

View File

@ -2,11 +2,10 @@
from collections import defaultdict
from typing import Callable
from django.utils.translation import gettext_lazy as _, gettext
from django.utils.translation import gettext_lazy as _, gettext, get_language
from django.conf import settings
from django.apps import apps
from django.db.models import F, Count
from django.utils.translation import ugettext
from common.tree import TreeNode
from .models import Permission, ContentType
@ -155,10 +154,10 @@ def sort_nodes(node):
class PermissionTreeUtil:
get_permissions: Callable
action_mapper = {
'add': ugettext('Create'),
'view': ugettext('View'),
'change': ugettext('Update'),
'delete': ugettext('Delete')
'add': _('Create'),
'view': _('View'),
'change': _('Update'),
'delete': _('Delete')
}
action_icon = {
'add': 'add',
@ -178,6 +177,7 @@ class PermissionTreeUtil:
self.check_disabled = check_disabled
self.total_counts = defaultdict(int)
self.checked_counts = defaultdict(int)
self.lang = get_language()
@staticmethod
def prefetch_permissions(perms):
@ -288,12 +288,18 @@ class PermissionTreeUtil:
return name, icon
app_model = '%s.%s' % (p.content_type.app_label, resource)
if action in self.action_mapper and app_model in content_types_name_mapper:
if self.lang == 'en':
name = p.name
# 因为默认的权限位是没有翻译的,所以我们要用 action + resource name 去拼
elif action in self.action_mapper and app_model in content_types_name_mapper:
action_name = self.action_mapper[action]
name = action_name + content_types_name_mapper[app_model]
resource_name = content_types_name_mapper[app_model]
sep = ''
name = '{}{}{}'.format(action_name, sep, resource_name)
# 手动创建的 permission
else:
name = gettext(p.name)
name = name.replace('Can ', '').replace('可以', '')
name = name.replace('Can ', '').replace('可以', '').capitalize()
return name, icon
def _create_perms_nodes(self):