Compare commits

...

5 Commits
master ... v4.8

Author SHA1 Message Date
feng
3043b08a00 perf: Login language 2025-03-24 18:56:09 +08:00
feng
245963a6f7 perf: Translate 2025-03-24 16:51:42 +08:00
feng
c1b04e077a perf: Translate 2025-03-24 16:12:56 +08:00
fit2bot
d14e52edb8 perf: update tk create (#15103) 2025-03-24 14:02:56 +08:00
feng
133a216c04 perf: Translate 2025-03-21 14:24:10 +08:00
27 changed files with 2726 additions and 3525 deletions

View File

@@ -129,7 +129,7 @@
</tbody>
</table>
{% else %}
<p class="no-data">{% trans 'No new accounts found' %}</p>
<p class="no-data">{% trans 'No lost accounts found' %}</p>
{% endif %}
</div>
</section>

View File

@@ -35,7 +35,8 @@ from ..models import ConnectionToken, AdminConnectionToken, date_expired_default
from ..serializers import (
ConnectionTokenSerializer, ConnectionTokenSecretSerializer,
SuperConnectionTokenSerializer, ConnectTokenAppletOptionSerializer,
ConnectionTokenReusableSerializer, ConnectTokenVirtualAppOptionSerializer
ConnectionTokenReusableSerializer, ConnectTokenVirtualAppOptionSerializer,
AdminConnectionTokenSerializer,
)
__all__ = ['ConnectionTokenViewSet', 'SuperConnectionTokenViewSet', 'AdminConnectionTokenViewSet']
@@ -436,15 +437,13 @@ class ConnectionTokenViewSet(AuthFaceMixin, ExtraActionApiMixin, RootOrgViewMixi
if ticket or self.need_face_verify:
data['is_active'] = False
if self.face_monitor_token:
FaceMonitorContext.get_or_create_context(self.face_monitor_token,
self.request.user.id)
FaceMonitorContext.get_or_create_context(self.face_monitor_token, self.request.user.id)
data['face_monitor_token'] = self.face_monitor_token
return data
@staticmethod
def get_permed_account(user, asset, account_name, protocol):
from perms.utils.asset_perm import PermAssetDetailUtil
return PermAssetDetailUtil(user, asset).validate_permission(account_name, protocol)
return ConnectionToken.get_user_permed_account(user, asset, account_name, protocol)
def _validate_perm(self, user, asset, account_name, protocol):
account = self.get_permed_account(user, asset, account_name, protocol)
@@ -617,7 +616,7 @@ class SuperConnectionTokenViewSet(ConnectionTokenViewSet):
raise PermissionDenied('Not allow to view secret')
token_id = request.data.get('id') or ''
token = get_object_or_404(ConnectionToken, pk=token_id)
token = ConnectionToken.get_typed_connection_token(token_id)
token.is_valid()
serializer = self.get_serializer(instance=token)
@@ -670,6 +669,9 @@ class SuperConnectionTokenViewSet(ConnectionTokenViewSet):
class AdminConnectionTokenViewSet(ConnectionTokenViewSet):
serializer_classes = {
'default': AdminConnectionTokenSerializer,
}
def check_permissions(self, request):
user = request.user
@@ -677,11 +679,7 @@ class AdminConnectionTokenViewSet(ConnectionTokenViewSet):
self.permission_denied(request)
def get_queryset(self):
return AdminConnectionToken.objects.all()
return AdminConnectionToken.objects.all().filter(user=self.request.user)
def get_permed_account(self, user, asset, account_name, protocol):
with tmp_to_org(asset.org):
account = asset.accounts.all().active().get(name=account_name)
account.actions = ActionChoices.all()
account.date_expired = timezone.now() + timezone.timedelta(days=365)
return account
return AdminConnectionToken.get_user_permed_account(user, asset, account_name, protocol)

View File

@@ -48,6 +48,6 @@ class FaceMonitorActionChoices(TextChoices):
class ConnectionTokenType(TextChoices):
ADMIN = 'admin', 'Admin'
SUPER = 'super', 'Super'
USER = 'user', 'User'
ADMIN = 'admin', 'Admin' # 管理员 Token, 可以访问所有资源
SUPER = 'super', 'Super' # 超级 Token, 可以为不同用户生成的 Token, 遵守用户 Token 的限制
USER = 'user', 'User' # 用户 Token, 只能访问指定资源

View File

@@ -5,8 +5,10 @@ from datetime import timedelta
from django.conf import settings
from django.core.cache import cache
from django.db import models
from django.shortcuts import get_object_or_404
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django.forms.models import model_to_dict
from rest_framework.exceptions import PermissionDenied
from accounts.models import VirtualAccount
@@ -70,9 +72,15 @@ class ConnectionToken(JMSOrgBaseModel):
]
verbose_name = _('Connection token')
def save(self, *args, **kwargs):
self.type = self._meta.model._type
return super().save(*args, **kwargs)
@classmethod
def get_typed_connection_token(cls, token_id):
token = get_object_or_404(cls, id=token_id)
if token.type == ConnectionTokenType.ADMIN.value:
token = AdminConnectionToken.objects.get(id=token_id)
else:
token = ConnectionToken.objects.get(id=token_id)
return token
@property
def is_expired(self):
@@ -87,6 +95,7 @@ class ConnectionToken(JMSOrgBaseModel):
return int(seconds)
def save(self, *args, **kwargs):
self.type = self._type
self.asset_display = pretty_string(self.asset, max_length=128)
self.user_display = pretty_string(self.user, max_length=128)
return super().save(*args, **kwargs)
@@ -112,12 +121,19 @@ class ConnectionToken(JMSOrgBaseModel):
self.date_expired = date_expired_default()
self.save()
@classmethod
def get_user_permed_account(cls, user, asset, account_name, protocol):
from perms.utils import PermAssetDetailUtil
permed_account = PermAssetDetailUtil(user, asset) \
.validate_permission(account_name, protocol)
return permed_account
def get_permed_account(self):
return self.get_user_permed_account(self.user, self.asset, self.account, self.protocol)
@lazyproperty
def permed_account(self):
from perms.utils import PermAssetDetailUtil
permed_account = PermAssetDetailUtil(self.user, self.asset) \
.validate_permission(self.account, self.protocol)
return permed_account
return self.get_permed_account()
@lazyproperty
def actions(self):
@@ -148,7 +164,8 @@ class ConnectionToken(JMSOrgBaseModel):
if timezone.now() - self.date_created < timedelta(seconds=60):
return True, None
if not self.permed_account or not self.permed_account.actions:
permed_account = self.get_permed_account()
if not permed_account or not permed_account.actions:
msg = 'user `{}` not has asset `{}` permission for login `{}`'.format(
self.user, self.asset, self.account
)
@@ -317,4 +334,17 @@ class AdminConnectionToken(ConnectionToken):
return (timezone.now() + timezone.timedelta(days=365)).timestamp()
def is_valid(self):
return True
return super().is_valid()
@classmethod
def get_user_permed_account(cls, user, asset, account_name, protocol):
"""
管理员 token 可以访问所有资产的账号
"""
with tmp_to_org(asset.org_id):
account = asset.accounts.filter(name=account_name).first()
if not account:
return None
account.actions = ActionChoices.all()
account.date_expired = timezone.now() + timezone.timedelta(days=5)
return account

View File

@@ -4,11 +4,11 @@ from rest_framework import serializers
from common.serializers import CommonModelSerializer
from common.serializers.fields import EncryptedField
from perms.serializers.permission import ActionChoicesField
from ..models import ConnectionToken
from ..models import ConnectionToken, AdminConnectionToken
__all__ = [
'ConnectionTokenSerializer', 'SuperConnectionTokenSerializer',
'ConnectionTokenReusableSerializer',
'ConnectionTokenReusableSerializer', 'AdminConnectionTokenSerializer',
]
@@ -74,3 +74,7 @@ class SuperConnectionTokenSerializer(ConnectionTokenSerializer):
def get_user(self, attrs):
return attrs.get('user')
class AdminConnectionTokenSerializer(ConnectionTokenSerializer):
class Meta(ConnectionTokenSerializer.Meta):
model = AdminConnectionToken

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-20 11:52+0800\n"
"POT-Creation-Date: 2025-03-24 15:33+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,12 +20,12 @@ msgstr ""
#: accounts/api/account/account.py:121
#: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:342
#: accounts/serializers/account/account.py:343
msgid "Account already exists"
msgstr ""
#: accounts/api/account/application.py:78
#: authentication/api/connection_token.py:452
#: authentication/api/connection_token.py:451
msgid "Account not found"
msgstr ""
@@ -435,8 +435,8 @@ msgstr ""
#: accounts/models/account.py:85
#: accounts/models/automations/check_account.py:59
#: accounts/models/automations/gather_account.py:17
#: accounts/serializers/account/account.py:226
#: accounts/serializers/account/account.py:274
#: accounts/serializers/account/account.py:227
#: accounts/serializers/account/account.py:275
#: accounts/serializers/automations/change_secret.py:113
#: accounts/serializers/automations/change_secret.py:145
#: accounts/serializers/automations/check_account.py:33
@@ -452,7 +452,7 @@ msgstr ""
#: acls/serializers/base.py:130 assets/models/asset/common.py:102
#: assets/models/asset/common.py:366 assets/models/cmd_filter.py:36
#: audits/models.py:59 audits/models.py:312 audits/serializers.py:228
#: authentication/models/connection_token.py:40
#: authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
#: terminal/models/session/session.py:34 terminal/notifications.py:156
#: terminal/serializers/command.py:17 terminal/serializers/session.py:30
@@ -463,8 +463,8 @@ msgid "Asset"
msgstr ""
#: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:233
#: accounts/serializers/account/account.py:284
#: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:285
#: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:50
msgid "Su from"
@@ -484,7 +484,7 @@ msgstr ""
msgid "Secret reset"
msgstr ""
#: accounts/models/account.py:97 accounts/serializers/account/account.py:228
#: accounts/models/account.py:97 accounts/serializers/account/account.py:229
#: users/models/user/__init__.py:122
msgid "Source"
msgstr ""
@@ -518,7 +518,7 @@ msgstr ""
#: acls/serializers/base.py:131
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:313
#: audits/serializers.py:229 authentication/api/connection_token.py:464
#: audits/serializers.py:229 authentication/api/connection_token.py:463
#: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:36 terminal/serializers/command.py:72
@@ -622,7 +622,7 @@ msgstr ""
#: accounts/models/application.py:24 acls/models/base.py:43
#: assets/models/asset/common.py:178 authentication/models/access_key.py:23
#: authentication/models/connection_token.py:58
#: authentication/models/connection_token.py:60
#: authentication/models/ssh_key.py:13 authentication/serializers/ssh_key.py:23
#: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:28
@@ -762,7 +762,7 @@ msgid "Status"
msgstr ""
#: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:276
#: accounts/serializers/account/account.py:277
#: accounts/templates/accounts/change_secret_failed_info.html:13
#: assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:173
@@ -1171,7 +1171,7 @@ msgstr ""
#: assets/models/platform.py:96 assets/serializers/asset/common.py:146
#: assets/serializers/platform.py:160 assets/serializers/platform.py:172
#: audits/serializers.py:77 audits/serializers.py:194
#: authentication/models/connection_token.py:62
#: authentication/models/connection_token.py:64
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:153
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
#: terminal/models/component/storage.py:58
@@ -1184,30 +1184,30 @@ msgstr ""
msgid "Type"
msgstr ""
#: accounts/serializers/account/account.py:222
#: accounts/serializers/account/account.py:223
msgid "Asset not found"
msgstr ""
#: accounts/serializers/account/account.py:265
#: accounts/serializers/account/account.py:266
msgid "Has secret"
msgstr ""
#: accounts/serializers/account/account.py:275 ops/models/celery.py:84
#: accounts/serializers/account/account.py:276 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State"
msgstr ""
#: accounts/serializers/account/account.py:277
#: accounts/serializers/account/account.py:278
msgid "Changed"
msgstr ""
#: accounts/serializers/account/account.py:287 acls/models/base.py:97
#: accounts/serializers/account/account.py:288 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:9
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:34
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: authentication/api/connection_token.py:462 ops/models/base.py:17
#: ops/models/job.py:155 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
@@ -1215,16 +1215,16 @@ msgstr ""
msgid "Assets"
msgstr ""
#: accounts/serializers/account/account.py:392
#: accounts/serializers/account/account.py:393
#, python-format
msgid "Asset does not support this secret type: %s"
msgstr ""
#: accounts/serializers/account/account.py:424
#: accounts/serializers/account/account.py:425
msgid "Account has exist"
msgstr ""
#: accounts/serializers/account/account.py:461
#: accounts/serializers/account/account.py:462
#: accounts/serializers/account/base.py:86
#: accounts/serializers/account/template.py:66
#: assets/serializers/asset/common.py:421
@@ -1243,7 +1243,7 @@ msgstr ""
#: acls/templates/acls/user_login_reminder.html:8
#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:55
#: audits/models.py:91 audits/models.py:173 audits/models.py:272
#: audits/serializers.py:195 authentication/models/connection_token.py:36
#: audits/serializers.py:195 authentication/models/connection_token.py:38
#: authentication/models/ssh_key.py:22 authentication/models/sso_token.py:16
#: notifications/models/notification.py:12
#: perms/api/user_permission/mixin.py:58 perms/models/asset_permission.py:63
@@ -1682,7 +1682,6 @@ msgstr ""
#: accounts/templates/accounts/change_secret_report.html:94
#: accounts/templates/accounts/change_secret_report.html:134
#: accounts/templates/accounts/gather_account_report.html:92
#: accounts/templates/accounts/gather_account_report.html:132
#: accounts/templates/accounts/push_account_report.html:93
#: accounts/templates/accounts/push_account_report.html:133
msgid "No new accounts found"
@@ -1711,6 +1710,10 @@ msgstr ""
msgid "Lost accounts"
msgstr ""
#: accounts/templates/accounts/gather_account_report.html:132
msgid "No lost accounts found"
msgstr ""
#: accounts/utils.py:54
msgid ""
"If the password starts with {{` and ends with }} `, then the password is not "
@@ -2038,7 +2041,7 @@ msgid ">>> Begin executing batch {index} of tasks"
msgstr ""
#: assets/automations/ping_gateway/manager.py:33
#: authentication/models/connection_token.py:145
#: authentication/models/connection_token.py:161
msgid "No account"
msgstr ""
@@ -2302,7 +2305,7 @@ msgstr ""
msgid "The database to authenticate against"
msgstr ""
#: assets/const/protocol.py:232 authentication/models/connection_token.py:47
#: assets/const/protocol.py:232 authentication/models/connection_token.py:49
msgid "Connect options"
msgstr ""
@@ -2563,7 +2566,7 @@ msgstr ""
#: assets/models/label.py:19 assets/models/node.py:539
#: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18
#: assets/serializers/cagegory.py:24
#: authentication/models/connection_token.py:33
#: authentication/models/connection_token.py:35
#: authentication/serializers/connect_token_secret.py:125
#: common/serializers/common.py:86 labels/models.py:12 settings/models.py:38
#: users/models/preference.py:13
@@ -3410,7 +3413,7 @@ msgstr ""
msgid "%s %s this resource"
msgstr ""
#: audits/serializers.py:196 authentication/models/connection_token.py:51
#: audits/serializers.py:196 authentication/models/connection_token.py:53
#: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80
#: tickets/models/ticket/apply_application.py:31
#: tickets/models/ticket/apply_asset.py:21 users/models/user/__init__.py:101
@@ -3528,39 +3531,39 @@ msgstr ""
msgid "This action require verify your MFA"
msgstr ""
#: authentication/api/connection_token.py:303
#: authentication/api/connection_token.py:304
msgid "Reusable connection token is not allowed, global setting not enabled"
msgstr ""
#: authentication/api/connection_token.py:423
#: authentication/api/connection_token.py:424
msgid "Anonymous account is not supported for this asset"
msgstr ""
#: authentication/api/connection_token.py:455
#: authentication/api/connection_token.py:454
msgid "Permission expired"
msgstr ""
#: authentication/api/connection_token.py:488
#: authentication/api/connection_token.py:487
msgid "ACL action is reject: {}({})"
msgstr ""
#: authentication/api/connection_token.py:492
#: authentication/api/connection_token.py:491
msgid "ACL action is review"
msgstr ""
#: authentication/api/connection_token.py:502
#: authentication/api/connection_token.py:501
msgid "ACL action is face verify"
msgstr ""
#: authentication/api/connection_token.py:507
#: authentication/api/connection_token.py:506
msgid "ACL action not supported for this asset"
msgstr ""
#: authentication/api/connection_token.py:514
#: authentication/api/connection_token.py:513
msgid "ACL action is face online"
msgstr ""
#: authentication/api/connection_token.py:533
#: authentication/api/connection_token.py:532
msgid "No available face feature"
msgstr ""
@@ -3971,21 +3974,21 @@ msgstr ""
msgid "Please change your password"
msgstr ""
#: authentication/models/connection_token.py:42
#: authentication/models/connection_token.py:44
#: terminal/serializers/storage.py:114
msgid "Account name"
msgstr ""
#: authentication/models/connection_token.py:43
#: authentication/models/connection_token.py:45
msgid "Input username"
msgstr ""
#: authentication/models/connection_token.py:44
#: authentication/models/connection_token.py:46
#: authentication/serializers/connection_token.py:18
msgid "Input secret"
msgstr ""
#: authentication/models/connection_token.py:45
#: authentication/models/connection_token.py:47
#: authentication/serializers/connect_token_secret.py:114
#: settings/serializers/msg.py:28 terminal/models/applet/applet.py:43
#: terminal/models/virtualapp/virtualapp.py:24
@@ -3994,69 +3997,69 @@ msgstr ""
msgid "Protocol"
msgstr ""
#: authentication/models/connection_token.py:46
#: authentication/models/connection_token.py:48
msgid "Connect method"
msgstr ""
#: authentication/models/connection_token.py:48
#: authentication/models/connection_token.py:50
msgid "User display"
msgstr ""
#: authentication/models/connection_token.py:49
#: authentication/models/connection_token.py:51
msgid "Asset display"
msgstr ""
#: authentication/models/connection_token.py:50
#: authentication/models/connection_token.py:52
msgid "Reusable"
msgstr ""
#: authentication/models/connection_token.py:55
#: authentication/models/connection_token.py:57
#: perms/models/asset_permission.py:83
msgid "From ticket"
msgstr ""
#: authentication/models/connection_token.py:57
#: authentication/models/connection_token.py:59
msgid "Face monitor token"
msgstr ""
#: authentication/models/connection_token.py:68
#: authentication/models/connection_token.py:70
msgid "Can expire connection token"
msgstr ""
#: authentication/models/connection_token.py:69
#: authentication/models/connection_token.py:71
msgid "Can reuse connection token"
msgstr ""
#: authentication/models/connection_token.py:71
#: authentication/models/connection_token.py:73
msgid "Connection token"
msgstr ""
#: authentication/models/connection_token.py:132
#: authentication/models/connection_token.py:148
msgid "Connection token inactive"
msgstr ""
#: authentication/models/connection_token.py:136
#: authentication/models/connection_token.py:152
msgid "Connection token expired at: {}"
msgstr ""
#: authentication/models/connection_token.py:139
#: authentication/models/connection_token.py:155
#: terminal/serializers/session.py:95
msgid "No user or invalid user"
msgstr ""
#: authentication/models/connection_token.py:142
#: authentication/models/connection_token.py:158
msgid "No asset or inactive asset"
msgstr ""
#: authentication/models/connection_token.py:290
#: authentication/models/connection_token.py:307
msgid "Can view super connection token secret"
msgstr ""
#: authentication/models/connection_token.py:292
#: authentication/models/connection_token.py:309
msgid "Super connection token"
msgstr ""
#: authentication/models/connection_token.py:309
#: authentication/models/connection_token.py:326
msgid "Admin connection token"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-20 11:52+0800\n"
"POT-Creation-Date: 2025-03-24 15:33+0800\n"
"PO-Revision-Date: 2021-05-20 10:54+0800\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n"
@@ -19,12 +19,12 @@ msgstr ""
#: accounts/api/account/account.py:121
#: accounts/serializers/account/account.py:181
#: accounts/serializers/account/account.py:342
#: accounts/serializers/account/account.py:343
msgid "Account already exists"
msgstr "账号已存在"
#: accounts/api/account/application.py:78
#: authentication/api/connection_token.py:452
#: authentication/api/connection_token.py:451
msgid "Account not found"
msgstr "账号未找到"
@@ -437,8 +437,8 @@ msgstr "用户 %s 查看/导出 了密码"
#: accounts/models/account.py:85
#: accounts/models/automations/check_account.py:59
#: accounts/models/automations/gather_account.py:17
#: accounts/serializers/account/account.py:226
#: accounts/serializers/account/account.py:274
#: accounts/serializers/account/account.py:227
#: accounts/serializers/account/account.py:275
#: accounts/serializers/automations/change_secret.py:113
#: accounts/serializers/automations/change_secret.py:145
#: accounts/serializers/automations/check_account.py:33
@@ -454,7 +454,7 @@ msgstr "用户 %s 查看/导出 了密码"
#: acls/serializers/base.py:130 assets/models/asset/common.py:102
#: assets/models/asset/common.py:366 assets/models/cmd_filter.py:36
#: audits/models.py:59 audits/models.py:312 audits/serializers.py:228
#: authentication/models/connection_token.py:40
#: authentication/models/connection_token.py:42
#: perms/models/asset_permission.py:69 terminal/backends/command/models.py:17
#: terminal/models/session/session.py:34 terminal/notifications.py:156
#: terminal/serializers/command.py:17 terminal/serializers/session.py:30
@@ -465,8 +465,8 @@ msgid "Asset"
msgstr "资产"
#: accounts/models/account.py:89 accounts/models/template.py:16
#: accounts/serializers/account/account.py:233
#: accounts/serializers/account/account.py:284
#: accounts/serializers/account/account.py:234
#: accounts/serializers/account/account.py:285
#: accounts/serializers/account/template.py:35
#: authentication/serializers/connect_token_secret.py:50
msgid "Su from"
@@ -486,7 +486,7 @@ msgstr "历史账号"
msgid "Secret reset"
msgstr "可改密"
#: accounts/models/account.py:97 accounts/serializers/account/account.py:228
#: accounts/models/account.py:97 accounts/serializers/account/account.py:229
#: users/models/user/__init__.py:122
msgid "Source"
msgstr "来源"
@@ -520,7 +520,7 @@ msgstr "改密状态"
#: acls/serializers/base.py:131
#: acls/templates/acls/asset_login_reminder.html:10
#: assets/serializers/gateway.py:33 audits/models.py:60 audits/models.py:313
#: audits/serializers.py:229 authentication/api/connection_token.py:464
#: audits/serializers.py:229 authentication/api/connection_token.py:463
#: ops/models/base.py:18 perms/models/asset_permission.py:75
#: settings/serializers/msg.py:33 terminal/backends/command/models.py:18
#: terminal/models/session/session.py:36 terminal/serializers/command.py:72
@@ -624,7 +624,7 @@ msgstr "最后使用日期"
#: accounts/models/application.py:24 acls/models/base.py:43
#: assets/models/asset/common.py:178 authentication/models/access_key.py:23
#: authentication/models/connection_token.py:58
#: authentication/models/connection_token.py:60
#: authentication/models/ssh_key.py:13 authentication/serializers/ssh_key.py:23
#: authentication/templates/authentication/_access_key_modal.html:32
#: perms/models/asset_permission.py:82 terminal/models/component/endpoint.py:28
@@ -764,7 +764,7 @@ msgid "Status"
msgstr "状态"
#: accounts/models/automations/change_secret.py:51
#: accounts/serializers/account/account.py:276
#: accounts/serializers/account/account.py:277
#: accounts/templates/accounts/change_secret_failed_info.html:13
#: assets/const/automation.py:9
#: authentication/templates/authentication/passkey.html:173
@@ -1152,10 +1152,8 @@ msgid "Change password"
msgstr "改密"
#: accounts/risk_handlers.py:127
#, fuzzy
#| msgid "Test connection failed: {}"
msgid "Execution failed: {}"
msgstr "测试连接失败:{}"
msgstr "执行失败:{}"
#: accounts/serializers/account/account.py:31
msgid "Push now"
@@ -1184,7 +1182,7 @@ msgstr "类别"
#: assets/models/platform.py:96 assets/serializers/asset/common.py:146
#: assets/serializers/platform.py:160 assets/serializers/platform.py:172
#: audits/serializers.py:77 audits/serializers.py:194
#: authentication/models/connection_token.py:62
#: authentication/models/connection_token.py:64
#: authentication/serializers/connect_token_secret.py:126 ops/models/job.py:153
#: perms/serializers/user_permission.py:27 terminal/models/applet/applet.py:40
#: terminal/models/component/storage.py:58
@@ -1197,30 +1195,30 @@ msgstr "类别"
msgid "Type"
msgstr "类型"
#: accounts/serializers/account/account.py:222
#: accounts/serializers/account/account.py:223
msgid "Asset not found"
msgstr "资产不存在"
#: accounts/serializers/account/account.py:265
#: accounts/serializers/account/account.py:266
msgid "Has secret"
msgstr "已托管密码"
#: accounts/serializers/account/account.py:275 ops/models/celery.py:84
#: accounts/serializers/account/account.py:276 ops/models/celery.py:84
#: tickets/models/comment.py:13 tickets/models/ticket/general.py:49
#: tickets/models/ticket/general.py:280 tickets/serializers/super_ticket.py:14
msgid "State"
msgstr "状态"
#: accounts/serializers/account/account.py:277
#: accounts/serializers/account/account.py:278
msgid "Changed"
msgstr "已修改"
#: accounts/serializers/account/account.py:287 acls/models/base.py:97
#: accounts/serializers/account/account.py:288 acls/models/base.py:97
#: acls/templates/acls/asset_login_reminder.html:9
#: assets/models/automations/base.py:25
#: assets/serializers/automations/base.py:20 assets/serializers/domain.py:34
#: assets/serializers/platform.py:181 assets/serializers/platform.py:213
#: authentication/api/connection_token.py:463 ops/models/base.py:17
#: authentication/api/connection_token.py:462 ops/models/base.py:17
#: ops/models/job.py:155 ops/serializers/job.py:21
#: perms/serializers/permission.py:57
#: terminal/templates/terminal/_msg_command_execute_alert.html:16
@@ -1228,16 +1226,16 @@ msgstr "已修改"
msgid "Assets"
msgstr "资产"
#: accounts/serializers/account/account.py:392
#: accounts/serializers/account/account.py:393
#, python-format
msgid "Asset does not support this secret type: %s"
msgstr "资产不支持账号类型: %s"
#: accounts/serializers/account/account.py:424
#: accounts/serializers/account/account.py:425
msgid "Account has exist"
msgstr "账号已存在"
#: accounts/serializers/account/account.py:461
#: accounts/serializers/account/account.py:462
#: accounts/serializers/account/base.py:86
#: accounts/serializers/account/template.py:66
#: assets/serializers/asset/common.py:421
@@ -1256,7 +1254,7 @@ msgstr "ID"
#: acls/templates/acls/user_login_reminder.html:8
#: assets/models/cmd_filter.py:24 assets/models/label.py:16 audits/models.py:55
#: audits/models.py:91 audits/models.py:173 audits/models.py:272
#: audits/serializers.py:195 authentication/models/connection_token.py:36
#: audits/serializers.py:195 authentication/models/connection_token.py:38
#: authentication/models/ssh_key.py:22 authentication/models/sso_token.py:16
#: notifications/models/notification.py:12
#: perms/api/user_permission/mixin.py:58 perms/models/asset_permission.py:63
@@ -1713,7 +1711,6 @@ msgstr "否"
#: accounts/templates/accounts/change_secret_report.html:94
#: accounts/templates/accounts/change_secret_report.html:134
#: accounts/templates/accounts/gather_account_report.html:92
#: accounts/templates/accounts/gather_account_report.html:132
#: accounts/templates/accounts/push_account_report.html:93
#: accounts/templates/accounts/push_account_report.html:133
msgid "No new accounts found"
@@ -1742,6 +1739,10 @@ msgstr "新发现的帐户"
msgid "Lost accounts"
msgstr "丢失的账号"
#: accounts/templates/accounts/gather_account_report.html:132
msgid "No lost accounts found"
msgstr "未找到丢失的账号"
#: accounts/utils.py:54
msgid ""
"If the password starts with {{` and ends with }} `, then the password is not "
@@ -2075,7 +2076,7 @@ msgid ">>> Begin executing batch {index} of tasks"
msgstr ">>> 开始执行第 {index} 批任务"
#: assets/automations/ping_gateway/manager.py:33
#: authentication/models/connection_token.py:145
#: authentication/models/connection_token.py:161
msgid "No account"
msgstr "没有账号"
@@ -2343,7 +2344,7 @@ msgstr "认证数据库"
msgid "The database to authenticate against"
msgstr "要进行身份验证的数据库"
#: assets/const/protocol.py:232 authentication/models/connection_token.py:47
#: assets/const/protocol.py:232 authentication/models/connection_token.py:49
msgid "Connect options"
msgstr "连接项"
@@ -2607,7 +2608,7 @@ msgstr "系统"
#: assets/models/label.py:19 assets/models/node.py:539
#: assets/serializers/cagegory.py:11 assets/serializers/cagegory.py:18
#: assets/serializers/cagegory.py:24
#: authentication/models/connection_token.py:33
#: authentication/models/connection_token.py:35
#: authentication/serializers/connect_token_secret.py:125
#: common/serializers/common.py:86 labels/models.py:12 settings/models.py:38
#: users/models/preference.py:13
@@ -3472,7 +3473,7 @@ msgstr "认证方式"
msgid "%s %s this resource"
msgstr "用户 %s %s 了当前资源"
#: audits/serializers.py:196 authentication/models/connection_token.py:51
#: audits/serializers.py:196 authentication/models/connection_token.py:53
#: authentication/models/temp_token.py:13 perms/models/asset_permission.py:80
#: tickets/models/ticket/apply_application.py:31
#: tickets/models/ticket/apply_asset.py:21 users/models/user/__init__.py:101
@@ -3594,39 +3595,39 @@ msgstr "参数中的值必须包含 %s"
msgid "This action require verify your MFA"
msgstr "该操作需要验证您的 MFA, 请先开启并配置"
#: authentication/api/connection_token.py:303
#: authentication/api/connection_token.py:304
msgid "Reusable connection token is not allowed, global setting not enabled"
msgstr "不允许使用可重复使用的连接令牌,未启用全局设置"
#: authentication/api/connection_token.py:423
#: authentication/api/connection_token.py:424
msgid "Anonymous account is not supported for this asset"
msgstr "匿名账号不支持当前资产"
#: authentication/api/connection_token.py:455
#: authentication/api/connection_token.py:454
msgid "Permission expired"
msgstr "授权已过期"
#: authentication/api/connection_token.py:488
#: authentication/api/connection_token.py:487
msgid "ACL action is reject: {}({})"
msgstr "ACL 动作是拒绝: {}({})"
#: authentication/api/connection_token.py:492
#: authentication/api/connection_token.py:491
msgid "ACL action is review"
msgstr "ACL 动作是复核"
#: authentication/api/connection_token.py:502
#: authentication/api/connection_token.py:501
msgid "ACL action is face verify"
msgstr "ACL 动作是人脸验证"
#: authentication/api/connection_token.py:507
#: authentication/api/connection_token.py:506
msgid "ACL action not supported for this asset"
msgstr "资产登录规则不支持当前资产"
#: authentication/api/connection_token.py:514
#: authentication/api/connection_token.py:513
msgid "ACL action is face online"
msgstr "ACL 动作是人脸在线"
#: authentication/api/connection_token.py:533
#: authentication/api/connection_token.py:532
msgid "No available face feature"
msgstr "没有可用的人脸特征"
@@ -4038,21 +4039,21 @@ msgstr "该 MFA ({}) 方式没有启用"
msgid "Please change your password"
msgstr "请修改密码"
#: authentication/models/connection_token.py:42
#: authentication/models/connection_token.py:44
#: terminal/serializers/storage.py:114
msgid "Account name"
msgstr "账号名称"
#: authentication/models/connection_token.py:43
#: authentication/models/connection_token.py:45
msgid "Input username"
msgstr "自定义用户名"
#: authentication/models/connection_token.py:44
#: authentication/models/connection_token.py:46
#: authentication/serializers/connection_token.py:18
msgid "Input secret"
msgstr "自定义密码"
#: authentication/models/connection_token.py:45
#: authentication/models/connection_token.py:47
#: authentication/serializers/connect_token_secret.py:114
#: settings/serializers/msg.py:28 terminal/models/applet/applet.py:43
#: terminal/models/virtualapp/virtualapp.py:24
@@ -4061,69 +4062,69 @@ msgstr "自定义密码"
msgid "Protocol"
msgstr "协议"
#: authentication/models/connection_token.py:46
#: authentication/models/connection_token.py:48
msgid "Connect method"
msgstr "连接方式"
#: authentication/models/connection_token.py:48
#: authentication/models/connection_token.py:50
msgid "User display"
msgstr "用户名称"
#: authentication/models/connection_token.py:49
#: authentication/models/connection_token.py:51
msgid "Asset display"
msgstr "资产名称"
#: authentication/models/connection_token.py:50
#: authentication/models/connection_token.py:52
msgid "Reusable"
msgstr "可以重复使用"
#: authentication/models/connection_token.py:55
#: authentication/models/connection_token.py:57
#: perms/models/asset_permission.py:83
msgid "From ticket"
msgstr "来自工单"
#: authentication/models/connection_token.py:57
#: authentication/models/connection_token.py:59
msgid "Face monitor token"
msgstr "人脸监控令牌"
#: authentication/models/connection_token.py:68
#: authentication/models/connection_token.py:70
msgid "Can expire connection token"
msgstr "可以失效连接令牌"
#: authentication/models/connection_token.py:69
#: authentication/models/connection_token.py:71
msgid "Can reuse connection token"
msgstr "可以复用连接令牌"
#: authentication/models/connection_token.py:71
#: authentication/models/connection_token.py:73
msgid "Connection token"
msgstr "连接令牌"
#: authentication/models/connection_token.py:132
#: authentication/models/connection_token.py:148
msgid "Connection token inactive"
msgstr "连接令牌未激活"
#: authentication/models/connection_token.py:136
#: authentication/models/connection_token.py:152
msgid "Connection token expired at: {}"
msgstr "连接令牌过期: {}"
#: authentication/models/connection_token.py:139
#: authentication/models/connection_token.py:155
#: terminal/serializers/session.py:95
msgid "No user or invalid user"
msgstr "没有用户或用户失效"
#: authentication/models/connection_token.py:142
#: authentication/models/connection_token.py:158
msgid "No asset or inactive asset"
msgstr "没有资产或资产未激活"
#: authentication/models/connection_token.py:290
#: authentication/models/connection_token.py:307
msgid "Can view super connection token secret"
msgstr "可以查看超级连接令牌密文"
#: authentication/models/connection_token.py:292
#: authentication/models/connection_token.py:309
msgid "Super connection token"
msgstr "超级连接令牌"
#: authentication/models/connection_token.py:309
#: authentication/models/connection_token.py:326
msgid "Admin connection token"
msgstr "管理员连接令牌"
@@ -11005,27 +11006,16 @@ msgid "Instance count"
msgstr "实例个数"
#: xpack/plugins/cloud/tasks.py:33
#, fuzzy
#| msgid ""
#| "Execute this task when manually or scheduled cloud synchronization tasks "
#| "are performed"
msgid ""
"Execute this task when manually or scheduled cloud synchronization tasks are "
"performed"
msgstr "手动定时执行云同步任务时执行任务"
msgstr "手动定时云同步任务执行时执行任务"
#: xpack/plugins/cloud/tasks.py:50
msgid "Period clean sync instance task execution"
msgstr "定期清除同步实例任务执行记录"
#: xpack/plugins/cloud/tasks.py:52
#, fuzzy
#| msgid ""
#| "Every day, according to the configuration in \"System Settings - Tasks - "
#| "Regular \n"
#| " clean-up - Cloud sync task history retention days\" the system "
#| "will clean up the execution \n"
#| " records generated by cloud synchronization"
msgid ""
"Every day, according to the configuration in \"System Settings - Tasks - "
"Regular \n"
@@ -11033,7 +11023,7 @@ msgid ""
"clean up the execution \n"
" records generated by cloud synchronization"
msgstr ""
"每天系统会根据“系统设置-任务-”中的配置定期清理云同步任务历史保留天数,对云"
"每天系统会根据“系统设置-任务-”中的配置定期清理云同步任务历史保留天数,对云"
"同步产生的执行记录进行清理"
#: xpack/plugins/interface/api.py:52
@@ -11089,45 +11079,3 @@ msgstr "许可证导入成功"
#: xpack/plugins/license/api.py:53
msgid "Invalid license"
msgstr "许可证无效"
#, fuzzy
#~| msgid "Container name"
#~ msgid "domain_name"
#~ msgstr "容器名称"
#~ msgid "Password error"
#~ msgstr "密码错误"
#~ msgid "No admin account"
#~ msgstr "没有管理账号"
#~ msgid "Others"
#~ msgstr "其它"
#~ msgid "Ok count"
#~ msgstr "成功数"
#~ msgid "No password count"
#~ msgstr "无密码数"
#~ msgid "No weak password"
#~ msgstr "无弱密码"
#~ msgid ""
#~ "The following is a summary of account backup tasks, please review and "
#~ "handle them"
#~ msgstr "以下是账户备份任务的概要,请查阅并处理"
#~ msgid ""
#~ "The following is a summary of account change secret tasks, please read "
#~ "and process"
#~ msgstr "以下是账号更改秘密任务的摘要,请阅读并处理"
#~ msgid ""
#~ "The following is a summary of the account check tasks. Please review and "
#~ "handle them"
#~ msgstr "以下是账号检查任务的汇总,请查阅并处理"
#~ msgid ""
#~ "The following is a summary of account push tasks, please read and process"
#~ msgstr "以下是账号推送任务的汇总,请阅读并处理"

File diff suppressed because it is too large Load Diff

View File

@@ -257,6 +257,7 @@
"CACertificate": "Ca certificate",
"CAS": "CAS",
"CMPP2": "Cmpp v2.0",
"CTYunPrivate": "eCloud Private Cloud",
"CalculationResults": "Error in cron expression",
"CallRecords": "Call Records",
"CanDragSelect": "Select by dragging; Empty means all selected",
@@ -358,6 +359,7 @@
"ConnectMethodACLHelpText": "Connect methods can be filtered to control whether users can use a certain connect method to login to the asset. according to your set rules, some connect methods can be allowed, while others can be prohibited.",
"ConnectMethodACLUpdate": "Update the connect method control",
"ConnectMethodACLs": "Connect method ACLs",
"ConnectMethodAclDetail": "Connect method acl detail",
"ConnectWebSocketError": "Connection to websocket failed",
"Connectable": "Connectable",
"ConnectionDropped": "Connection disconnected",
@@ -397,7 +399,6 @@
"CrontabHelpText": "If both interval and crontab are set, crontab is prioritized",
"CrontabHelpTip": "For example: perform every sunday at 03:05 <5 3 * * 0> <br/> use 5-digit linux crontab expressions <min hour day month weekday> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">online tool</a>) <br/> ",
"CrontabOfCreateUpdatePage": "",
"CTYunPrivate": "eCloud Private Cloud",
"CurrentConnectionUsers": "Online users",
"CurrentConnections": "Current connections",
"CurrentStatus": "Current Status",
@@ -448,6 +449,8 @@
"DefaultValue": "Default value",
"DefaultValueTip": "Save and execute using default values for scheduled tasks. Not filling in the default values may cause the task to fail",
"Delete": "Delete",
"DeleteAccount": "Delete account",
"DeleteBoth": "Delete both",
"DeleteConfirmMessage": "Deletion is irreversible, do you wish to continue?",
"DeleteErrorMsg": "Delete failed",
"DeleteGatherAccountTitle": "Delete gather account",
@@ -1254,6 +1257,7 @@
"StatusYellow": "There have been recent failures",
"Step": "Step",
"Stop": "Stop",
"StopJob": "Stop job",
"StopJobMsg": "Stop job successfully",
"StopLogOutput": "Task Canceled: The current task (currentTaskId) has been manually stopped. Since the progress of each task varies, the following is the final execution result of the task. A failed execution indicates that the task has been successfully stopped.",
"Storage": "Storage",
@@ -1525,9 +1529,5 @@
"disallowSelfUpdateFields": "Not allowed to modify the current fields yourself",
"forceEnableMFAHelpText": "If force enable, user can not disable by themselves",
"removeWarningMsg": "Are you sure you want to remove",
"setVariable": "Set variable",
"StopJob": "Stop job",
"ConnectMethodAclDetail": "Connect method acl detail",
"DeleteAccount": "Delete account",
"DeleteBoth": "Delete both"
}
"setVariable": "Set variable"
}

View File

@@ -257,6 +257,7 @@
"CACertificate": "Certificado CA",
"CAS": "CAS",
"CMPP2": "CMPP v2.0",
"CTYunPrivate": "eCloud Nube Privada",
"CalculationResults": "Error en la expresión cron",
"CallRecords": "Registro de llamadas",
"CanDragSelect": "Se puede seleccionar el período de tiempo arrastrando el ratón; no seleccionar es igual a seleccionar todo",
@@ -357,6 +358,7 @@
"ConnectMethodACLHelpText": "A través del método de conexión, usted puede controlar si los usuarios pueden acceder al activo usando un determinado método de conexión. Según las reglas que establezca, ciertos métodos de conexión pueden ser permitidos, mientras que otros pueden ser prohibidos.",
"ConnectMethodACLUpdate": "Actualizar control de método de conexión",
"ConnectMethodACLs": "Método de conexión",
"ConnectMethodAclDetail": "Detalles del método de conexión",
"ConnectWebSocketError": "Conexión WebSocket fallida",
"Connectable": "Conectar",
"ConnectionDropped": "Conexión desconectada",
@@ -396,7 +398,6 @@
"CrontabHelpText": "Si se configuran simultáneamente interval y crontab, se prioriza crontab",
"CrontabHelpTip": "Por ejemplo: ejecuta cada domingo a las 03:05 <5 3 * * 0> <br/> utilizando una expresión de crontab de Linux de 5 posiciones <min hora día mes día de la semana> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">herramienta en línea</a>) <br/>",
"CrontabOfCreateUpdatePage": "Por ejemplo: ejecuta cada domingo a las 03:05 <5 3 * * 0> <br/> utilizando una expresión de crontab de Linux de 5 posiciones <min hora día mes día de la semana> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">herramienta en línea</a>) <br/> Si se establecen tanto la ejecución programada como la ejecución cíclica, se dará prioridad a la ejecución programada.",
"CTYunPrivate": "eCloud Nube Privada",
"CurrentConnectionUsers": "Número actual de usuarios en la conversación",
"CurrentConnections": "Número actual de conexiones",
"CurrentStatus": "estado actual",
@@ -447,6 +448,8 @@
"DefaultValue": "Valores predeterminados",
"DefaultValueTip": "Guardar y ejecutar las tareas programadas con valores por defecto puede llevar a fallos en la ejecución si no se completan dichos valores.",
"Delete": "Eliminar",
"DeleteAccount": "Eliminar cuenta",
"DeleteBoth": "Eliminar simultáneamente",
"DeleteConfirmMessage": "Una vez eliminado no se puede recuperar, ¿continuar?",
"DeleteErrorMsg": "Error al eliminar",
"DeleteGatherAccountTitle": "Eliminar la cuenta descubierta",
@@ -1255,6 +1258,7 @@
"StatusYellow": "Recientemente se han producido fallos en la ejecución",
"Step": "Pasos",
"Stop": "Detener",
"StopJob": "Detener trabajo",
"StopJobMsg": "Detención exitosa",
"StopLogOutput": "Tarea cancelada: la tarea actual (currentTaskId) ha sido detenida manualmente, dado que el progreso de ejecución de cada tarea es diferente, a continuación se presenta el resultado final de la ejecución, donde la ejecución fallida indica que se ha detenido con éxito la ejecución de la tarea.",
"Storage": "Almacenamiento",
@@ -1528,4 +1532,4 @@
"forceEnableMFAHelpText": "Si se habilita forzosamente, el usuario no podrá desactivarlo por sí mismo",
"removeWarningMsg": "¿Está seguro de que desea eliminar?",
"setVariable": "configurar parámetros"
}
}

View File

@@ -261,6 +261,7 @@
"CACertificate": "CA 証明書",
"CAS": "CAS",
"CMPP2": "CMPP v2.0",
"CTYunPrivate": "イークラウド・プライベートクラウド",
"CalculationResults": "cron 式のエラー",
"CallRecords": "つうわきろく",
"CanDragSelect": "マウスドラッグで時間帯を選択可能;未選択は全選択と同じです",
@@ -361,6 +362,7 @@
"ConnectMethodACLHelpText": "接続方法のフィルタリングにより、ユーザーが特定の接続方法を使用して資産にログインできるかどうかを制御できます。設定したルールにより、いくつかの接続方法は許可され、他の接続方法は禁止されます。",
"ConnectMethodACLUpdate": "接続方法のコントロールを更新",
"ConnectMethodACLs": "接続方法",
"ConnectMethodAclDetail": "接続方法の詳細",
"ConnectWebSocketError": "WebSocketへの接続に失敗",
"Connectable": " 接続可能",
"ConnectionDropped": "接続が切断された",
@@ -398,9 +400,8 @@
"Crontab": "定時実行タスク",
"CrontabDiffError": "定期実行の間隔が10分以上であることをご確認ください",
"CrontabHelpText": "同時にintervalとcrontabを設定した場合、crontabが優先されます",
"CrontabHelpTip": "例えば日曜日の03:05に実行 <5 3 * * 0> <br/> 5桁のlinux crontab表現を使用<min hour day Month weekday> (<a href=\\\"https://tool.lu /crontab/\\\" target=\\\"_blank\\\">オンラインツール</a>) <br/>",
"CrontabHelpTip": "例えば日曜日の03:05に実行 <5 3 * * 0> <br/> 5桁のlinux crontab表現を使用<min hour day Month weekday> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">オンラインツール</a>) <br/>",
"CrontabOfCreateUpdatePage": "例毎週日曜日の03:05に実行 <5 3 * * 0> <br/> 5桁のLinux crontab表現を使用してください <分 時 日 月 星期> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">オンラインツール</a>) <br/> 定期的な実行と周期的な実行が設定されている場合、定期的な実行が優先されます",
"CTYunPrivate": "イークラウド・プライベートクラウド",
"CurrentConnectionUsers": "現在のセッションユーザー数",
"CurrentConnections": "現在のコネクション数",
"CurrentStatus": "現在の状態",
@@ -452,6 +453,8 @@
"DefaultValue": "デフォルト値",
"DefaultValueTip": "デフォルト値を使用して、保存、実行、定期的なタスクを実行します。デフォルト値を記入しないと、タスクの実行に失敗する可能性があります。",
"Delete": "削除",
"DeleteAccount": "アカウントの削除",
"DeleteBoth": "同時に削除する",
"DeleteConfirmMessage": "一度削除すると復元はできません、続けますか?",
"DeleteErrorMsg": "削除に失敗",
"DeleteGatherAccountTitle": "発見されたアカウントの削除",
@@ -1260,6 +1263,7 @@
"StatusYellow": "最近、実行に失敗があり。",
"Step": "ステップ",
"Stop": "停止",
"StopJob": "作業の停止",
"StopJobMsg": "成功を停止",
"StopLogOutput": "ask Canceled現在のタスクcurrentTaskIdは手動で停止されました。各タスクの進行状況が異なるため、以下はタスクの最終実行結果です。実行が失敗した場合は、タスクが正常に停止されました。",
"Storage": "ストレージ",
@@ -1533,4 +1537,4 @@
"forceEnableMFAHelpText": "強制的に有効化すると、ユーザーは自分で無効化することができません。",
"removeWarningMsg": "削除してもよろしいですか",
"setVariable": "パラメータ設定"
}
}

View File

@@ -258,6 +258,7 @@
"CACertificate": " Certificado CA",
"CAS": "CAS",
"CMPP2": "CMPP v2.0",
"CTYunPrivate": " eCloud Nuvem Privada",
"CalculationResults": "Erro de expressão cron",
"CallRecords": "Registro de chamadas",
"CanDragSelect": "Você pode selecionar o intervalo de tempo arrastando o mouse; não selecionar é equivalente a selecionar tudo",
@@ -358,6 +359,7 @@
"ConnectMethodACLHelpText": "Através do filtro por método de conexão, você pode controlar se os usuários podem usar um determinado método para acessar os recursos. De acordo com as regras que você configura, alguns métodos de conexão podem ser permitidos, enquanto outros podem ser proibidos.",
"ConnectMethodACLUpdate": "Atualizar controle de método de conexão",
"ConnectMethodACLs": "Método de conexão",
"ConnectMethodAclDetail": "Detalhes da forma de conexão",
"ConnectWebSocketError": "Falha ao conectar WebSocket",
"Connectable": " Conexão disponível",
"ConnectionDropped": "Conexão interrompida",
@@ -395,9 +397,8 @@
"Crontab": "Tarefas programadas",
"CrontabDiffError": "Por favor, certifique-se de que o intervalo de tempo para execução regular não seja menor que dez minutos!",
"CrontabHelpText": "Se interval e crontab estiverem configurados ao mesmo tempo, crontab terá prioridade",
"CrontabHelpTip": "Por exemplo: execute todos os domingos às 03:05 <5 3 * * 0> <br/> Use a expressão linux crontab de 5 posições <min hour day month weekday> (<a href=\\\"https://tool.lu/crontab/\\\" target=\\\"_blank\\\">Ferramenta online</a>) <br/>",
"CrontabHelpTip": "Por exemplo: execute todos os domingos às 03:05 <5 3 * * 0> <br/> Use a expressão linux crontab de 5 posições <min hour day month weekday> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">Ferramenta online</a>) <br/>",
"CrontabOfCreateUpdatePage": "Por exemplo: Execute todos os domingos às 03:05 <5 3 * * 0> <br/> Use a expressão crontab Linux de 5 dígitos <Minuto Hora Dia Mês Dia da Semana> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">Ferramenta online</a>) <br/> Se a execução periódica e a execução regular forem definidas ao mesmo tempo, a execução regular terá prioridade",
"CTYunPrivate": " eCloud Nuvem Privada",
"CurrentConnectionUsers": "Número atual de usuários na sessão",
"CurrentConnections": "Número atual de conexões",
"CurrentStatus": "Estado atual",
@@ -448,6 +449,8 @@
"DefaultValue": " Valor padrão",
"DefaultValueTip": " Salvar e executar tarefas agendadas usando valores padrão. Não preencher os valores padrão pode levar à falha na execução da tarefa. ",
"Delete": "Excluir",
"DeleteAccount": "Excluir conta",
"DeleteBoth": "Ao mesmo tempo, excluir os detalhes do método de conexão, interromper o trabalho e apagar a conta.",
"DeleteConfirmMessage": "A exclusão não pode ser revertida, você quer continuar?",
"DeleteErrorMsg": " Falha na exclusão ",
"DeleteGatherAccountTitle": "Excluir conta encontrada",
@@ -1256,6 +1259,7 @@
"StatusYellow": "Recentemente houve falhas na execução",
"Step": "Passos",
"Stop": "Parar",
"StopJob": "Parar trabalho",
"StopJobMsg": "Parada bem-sucedida",
"StopLogOutput": "Ação cancelada: a tarefa atual (currentTaskId) foi interrompida manualmente. Como cada tarefa tem um andamento diferente, abaixo estão os resultados finais, a falha na execução significa que a tarefa foi interrompida com sucesso.",
"Storage": " Armazenamento ",
@@ -1529,4 +1533,4 @@
"forceEnableMFAHelpText": "Se for habilitado forçosamente, o usuário não pode desativar por conta própria",
"removeWarningMsg": "Tem certeza de que deseja remover",
"setVariable": "Parâmetros de configuração"
}
}

View File

@@ -257,6 +257,7 @@
"CACertificate": "CA сертификат",
"CAS": "CAS",
"CMPP2": "CMPP v2.0",
"CTYunPrivate": "eCloud Частное Облако",
"CalculationResults": "Ошибка выражения cron",
"CallRecords": "Запись вызовов",
"CanDragSelect": "Можно перетаскивать мышь для выбора временного диапазона; не выбрано значит, выбрано всё",
@@ -357,6 +358,7 @@
"ConnectMethodACLHelpText": "Фильтруя по способу подключения, вы можете контролировать, может ли пользователь заходить на актив с использованием определенного способа подключения. В зависимости от ваших установленных правил, некоторые способы подключения могут быть разрешены, в то время как другие будут запрещены.",
"ConnectMethodACLUpdate": "Обновить управление способами подключения",
"ConnectMethodACLs": "Способ подключения",
"ConnectMethodAclDetail": "детали способа подключения",
"ConnectWebSocketError": "Ошибка подключения к WebSocket",
"Connectable": "Можно подключиться",
"ConnectionDropped": "Соединение разорвано",
@@ -394,9 +396,8 @@
"Crontab": "Запланированные задачи",
"CrontabDiffError": "Пожалуйста, убедитесь, что интервал выполнения регулярно составляет не менее десяти минут!",
"CrontabHelpText": "Если одновременно установлены интервал и crontab, предпочтение отдается crontab",
"CrontabHelpTip": "например: выполнять каждое воскресенье в 03:05 <5 3 * * 0> <br/> использовать 5-значное выражение crontab Linux <минуты часы день месяц день_недели> (<a href=\\\"https://tool.lu/crontab/\\\" target=\\\"_blank\\\">онлайн инструмент</a>) <br/>",
"CrontabHelpTip": "например: выполнять каждое воскресенье в 03:05 <5 3 * * 0> <br/> использовать 5-значное выражение crontab Linux <минуты часы день месяц день_недели> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">онлайн инструмент</a>) <br/>",
"CrontabOfCreateUpdatePage": "Например: выполнять каждое воскресенье в 03:05 <5 3 * * 0> <br/> Использовать 5-значное выражение crontab Linux <минуты часы день месяц день_недели> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">онлайн инструмент</a>) <br/> Если одновременно установлены периодическое выполнение и циклическое выполнение, приоритет отдается периодическому выполнению",
"CTYunPrivate": "eCloud Частное Облако",
"CurrentConnectionUsers": "Текущее число пользователей в беседе",
"CurrentConnections": "Текущее количество подключений",
"CurrentStatus": "Текущий статус",
@@ -447,6 +448,8 @@
"DefaultValue": "Значение по умолчанию",
"DefaultValueTip": "Сохранить и выполнить, а также запланированные задачи использовать значения по умолчанию. Неполное заполнение значений по умолчанию может привести к сбою выполнения задачи.",
"Delete": "Удалить",
"DeleteAccount": "удалить аккаунт.",
"DeleteBoth": "Одновременно удалить",
"DeleteConfirmMessage": "После удаления восстановить невозможно, продолжить?",
"DeleteErrorMsg": "Удаление не удалось",
"DeleteGatherAccountTitle": "Удалить найденную учетную запись",
@@ -1255,6 +1258,7 @@
"StatusYellow": "В последнее время были неудачные выполнения",
"Step": "Шаги",
"Stop": "Остановить",
"StopJob": "остановить действие",
"StopJobMsg": "Остановка завершена успешно",
"StopLogOutput": "Задача отменена: текущая задача (currentTaskId) была остановлена вручную. Поскольку выполнение каждой задачи идет с разной скоростью, ниже указаны окончательные результаты выполнения задачи. Ошибка выполнения означает, что задача была успешно остановлена.",
"Storage": "Хранилище",
@@ -1528,4 +1532,4 @@
"forceEnableMFAHelpText": "Если принудительно включено, пользователь не сможет отключить самостоятельно",
"removeWarningMsg": "Вы уверены, что хотите удалить",
"setVariable": "Настроить параметры"
}
}

View File

@@ -26,7 +26,7 @@
"AccountDiscoverTaskCreate": "创建发现帐户任务",
"AccountDiscoverTaskUpdate": "更新发现帐户任务",
"AccountExportTips": "导出信息中包含账号密文涉及敏感信息导出的格式为一个加密的zip文件若没有设置加密密码请前往个人信息中设置文件加密密码。",
"AccountList": "账号",
"AccountList": "账号管理",
"AccountPolicy": "账号策略",
"AccountPolicyHelpText": "创建时对于不符合要求的账号,如:密钥类型不合规,唯一键约束,可选择以上策略。",
"AccountPushCreate": "创建账号推送",
@@ -257,6 +257,7 @@
"CACertificate": "CA 证书",
"CAS": "CAS",
"CMPP2": "CMPP v2.0",
"CTYunPrivate": "天翼私有云",
"CalculationResults": "cron 表达式错误",
"CallRecords": "调用记录",
"CanDragSelect": "可拖动鼠标选择时间段;未选择等同全选",
@@ -357,6 +358,7 @@
"ConnectMethodACLHelpText": "通过连接方式过滤,您可以控制用户是否可以使用某种连接方式登录到资产上。根据您设定的规则,某些连接方式可以被放行,而另一些连接方式则被禁止。",
"ConnectMethodACLUpdate": "更新连接方式控制",
"ConnectMethodACLs": "连接方式",
"ConnectMethodAclDetail": "连接方式详情",
"ConnectWebSocketError": "连接 WebSocket 失败",
"Connectable": "可连接",
"ConnectionDropped": "连接已断开",
@@ -394,9 +396,8 @@
"Crontab": "定时任务",
"CrontabDiffError": "请确保定期执行的时间间隔不少于十分钟!",
"CrontabHelpText": "如果同时设置了 interval 和 crontab则优先考虑 crontab",
"CrontabHelpTip": "例如:每周日 03:05 执行 <5 3 * * 0> <br/> 使用 5 位 linux crontab 表达式 <min hour day Month weekday> (<a href=\\\"https://tool.lu /crontab/\\\" target=\\\"_blank\\\">在线工具</a>) <br/>",
"CrontabHelpTip": "例如:每周日 03:05 执行 <5 3 * * 0> <br/> 使用 5 位 linux crontab 表达式 <min hour day Month weekday> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">在线工具</a>) <br/>",
"CrontabOfCreateUpdatePage": "例如:每周日 03:05 执行 <5 3 * * 0> <br/> 使用5位 Linux crontab 表达式 <分 时 日 月 星期> <a href=\"https://tool.lu/crontab/\" target=\"_blank\">在线工具</a> <br/> 如果同时设置了定期执行和周期执行,优先使用定期执行",
"CTYunPrivate": "天翼私有云",
"CurrentConnectionUsers": "当前会话用户数",
"CurrentConnections": "当前连接数",
"CurrentStatus": "当前状态",
@@ -447,6 +448,8 @@
"DefaultValue": "默认值",
"DefaultValueTip": "保存并执行和定时任务使用默认值执行,不填写默认值可能会导致任务执行失败",
"Delete": "删除",
"DeleteAccount": "删除账号",
"DeleteBoth": "同时删除",
"DeleteConfirmMessage": "删除后无法恢复,是否继续?",
"DeleteErrorMsg": "删除失败",
"DeleteGatherAccountTitle": "删除发现的账号",
@@ -1255,6 +1258,7 @@
"StatusYellow": "近期存在在执行失败",
"Step": "步骤",
"Stop": "停止",
"StopJob": "停止作业",
"StopJobMsg": "停止成功",
"StopLogOutput": "Task Canceled当前任务(currentTaskId)已手动停止,由于每个任务的执行进度不一样,下面是任务最终的执行结果,执行失败表示已成功停止任务执行。",
"Storage": "存储",
@@ -1527,9 +1531,5 @@
"disallowSelfUpdateFields": "不允许自己修改当前字段",
"forceEnableMFAHelpText": "如果强制启用,用户无法自行禁用",
"removeWarningMsg": "你确定要移除",
"setVariable": "设置参数",
"StopJob": "停止作业",
"ConnectMethodAclDetail": "连接方式详情",
"DeleteAccount": "删除账号",
"DeleteBoth": "同时删除"
}
"setVariable": "设置参数"
}

View File

@@ -261,6 +261,7 @@
"CACertificate": "CA 證書",
"CAS": "CAS",
"CMPP2": "CMPP v2.0",
"CTYunPrivate": "天翼私有雲",
"CalculationResults": "呼叫記錄",
"CallRecords": "調用記錄",
"CanDragSelect": "可拖動滑鼠選擇時間段;未選擇等同全選",
@@ -361,6 +362,7 @@
"ConnectMethodACLHelpText": "您可以透過篩選連接方式,控制使用者能否使用特定方式登入到資產上。根據您設定的規則,有些連接方式可被允許,而其他連接方式則被禁止。",
"ConnectMethodACLUpdate": "更新連接方式控制",
"ConnectMethodACLs": "連接方式",
"ConnectMethodAclDetail": "連接方式詳情",
"ConnectWebSocketError": "連接 WebSocket 失敗",
"Connectable": "可連接",
"ConnectionDropped": "連接已斷開",
@@ -398,9 +400,8 @@
"Crontab": "定時任務",
"CrontabDiffError": "請確保定期執行的時間間隔不少於十分鐘!",
"CrontabHelpText": "如果同時設定了 interval 和 crontab則優先考慮 crontab",
"CrontabHelpTip": "例如:每週日 03:05 執行 <5 3 * * 0> <br/> 使用 5 位 linux crontab 表達式 <min hour day Month weekday> (<a href=\\\"https://tool.lu /crontab/\\\" target=\\\"_blank\\\">線上工具</a>) <br/>",
"CrontabHelpTip": "例如:每週日 03:05 執行 <5 3 * * 0> <br/> 使用 5 位 linux crontab 表達式 <min hour day Month weekday> (<a href=\"https://tool.lu/crontab/\" target=\"_blank\">線上工具</a>) <br/>",
"CrontabOfCreateUpdatePage": "例如:每週日 03:05 執行 <5 3 * * 0> <br/> 使用5位 Linux crontab 表達式 <分 時 日 月 星期> <a href=\"https://tool.lu/crontab/\" target=\"_blank\">線上工具</a> <br/> 如果同時設置了定期執行和週期執行,優先使用定期執行",
"CTYunPrivate": "天翼私有雲",
"CurrentConnectionUsers": "當前會話用戶數",
"CurrentConnections": "當前連接數",
"CurrentStatus": "當前狀態",
@@ -452,6 +453,8 @@
"DefaultValue": "預設值",
"DefaultValueTip": "保存並執行及定時任務使用默認值執行,未填寫默認值可能會導致任務執行失敗",
"Delete": "刪除",
"DeleteAccount": "刪除帳號",
"DeleteBoth": "同時刪除",
"DeleteConfirmMessage": "刪除後無法恢復,是否繼續?",
"DeleteErrorMsg": "刪除失敗",
"DeleteGatherAccountTitle": "刪除發現的帳號",
@@ -1260,6 +1263,7 @@
"StatusYellow": "近期存在在執行失敗",
"Step": "步驟",
"Stop": "停止",
"StopJob": "停止作業",
"StopJobMsg": "停止成功",
"StopLogOutput": "任務已取消當前任務currentTaskId已被手動停止。由於每個任務的執行進度不同以下是任務的最終執行結果。執行失敗表示任務已成功停止。",
"Storage": "儲存設置",
@@ -1533,4 +1537,4 @@
"forceEnableMFAHelpText": "如果強制啟用,用戶無法自行禁用",
"removeWarningMsg": "你確定要移除",
"setVariable": "設置參數"
}
}

View File

@@ -46,6 +46,7 @@
"Connect checked": "Connect checked",
"Connect command line": "Connect command line",
"Connect method": "Connect method",
"ConnectionTime": "Connection time",
"Copied": "Copied",
"Copy link": "Copy link",
"Current online": "Current online",
@@ -171,6 +172,7 @@
"Select account": "Select account",
"Send command": "Send command",
"Send text to all ssh terminals": "Send text to all ssh terminals",
"Session": "Session",
"SessionIsBeingMonitored": "session is being monitored",
"Set reusable": "Set reusable",
"Setting": "Setting",
@@ -203,6 +205,7 @@
"Token expired": "Token has expired",
"Tool download": "Tool download",
"Turkey keyboard layout": "Turkish-Q (Qwerty)",
"TurnOffReminders": "Turn off reminders",
"Type tree": "Type tree",
"UK English keyboard layout": "UK English (Qwerty)",
"US English keyboard layout": "US English (Qwerty)",

View File

@@ -45,6 +45,7 @@
"Connect checked": "Conexión seleccionada",
"Connect command line": "Conectar a la línea de comandos",
"Connect method": "Modo de conexión",
"ConnectionTime": "Tiempo de conexión",
"Copied": "Copiado",
"Copy link": "Copiar enlace",
"Current online": "Actualmente en línea",
@@ -169,6 +170,7 @@
"Select account": "Seleccionar cuenta",
"Send command": "Enviar comando",
"Send text to all ssh terminals": "Enviar texto a todos los terminales SSH",
"Session": "Sesión",
"SessionIsBeingMonitored": "La sesión está siendo monitoreada",
"Set reusable": "Activar reutilización",
"Setting": "Configuración",
@@ -201,6 +203,7 @@
"Token expired": "Token ha expirado, por favor reconéctese",
"Tool download": "Descarga de herramientas",
"Turkey keyboard layout": "Turco-Q (Qwerty)",
"TurnOffReminders": "¿Está seguro de que desea cerrar la conexión actual?",
"Type tree": "Tipo de árbol",
"UK English keyboard layout": "Inglés del Reino Unido (Qwerty)",
"US English keyboard layout": "Inglés estadounidense (Qwerty)",

View File

@@ -45,6 +45,7 @@
"Connect checked": "接続済み",
"Connect command line": "接続コマンドライン",
"Connect method": "接続方法",
"ConnectionTime": "接続時間",
"Copied": "複製済み",
"Copy link": "リンクをコピーする",
"Current online": "現在オンライン",
@@ -169,6 +170,7 @@
"Select account": "システムユーザーの選択",
"Send command": "コマンドを送信",
"Send text to all ssh terminals": "すべてのssh端末にテキストを送信します",
"Session": "セッション",
"SessionIsBeingMonitored": "会話が監視されています。",
"Set reusable": "再利用可能な",
"Setting": "設定",
@@ -201,6 +203,7 @@
"Token expired": "トークンの有効期限が切れました",
"Tool download": "ツールダウンロード",
"Turkey keyboard layout": "Turkish-Q (Qwerty)",
"TurnOffReminders": "現在の接続を閉じますか?",
"Type tree": "タイプツリー",
"UK English keyboard layout": "UK English (Qwerty)",
"US English keyboard layout": "US English (Qwerty)",

View File

@@ -45,6 +45,7 @@
"Connect checked": "Conecte selecionado",
"Connect command line": "Conectar linha de comando",
"Connect method": "Forma de conexão",
"ConnectionTime": "Tempo de conexão",
"Copied": "Copiado",
"Copy link": "Copiar link",
"Current online": "Online Atual",
@@ -169,6 +170,7 @@
"Select account": "Selecionar conta",
"Send command": "Enviar comando",
"Send text to all ssh terminals": "Enviar texto para todos os terminais ssh",
"Session": "Sessão",
"SessionIsBeingMonitored": "A conversa está sendo monitorada.",
"Set reusable": "Iniciar reutilização",
"Setting": "Configurações",
@@ -201,6 +203,7 @@
"Token expired": "Token Expirou, Por Favor Reconecte",
"Tool download": "Download da ferramenta",
"Turkey keyboard layout": "Turkish-Q (Qwerty)",
"TurnOffReminders": "Você tem certeza de que deseja fechar a conexão atual?",
"Type tree": "Tipo de árvore",
"UK English keyboard layout": "Ingles do Reino Unido (Qwerty)",
"US English keyboard layout": "Inglês dos EUA (Qwerty)",

View File

@@ -45,6 +45,7 @@
"Connect checked": "Подключение выбрано",
"Connect command line": "Подключение к командной строке",
"Connect method": "Способ подключения",
"ConnectionTime": "Время соединения",
"Copied": "Скопировано",
"Copy link": "Копировать ссылку",
"Current online": "Текущий онлайн",
@@ -169,6 +170,7 @@
"Select account": "Выбрать аккаунт",
"Send command": "Отправить команду",
"Send text to all ssh terminals": "Отправить текст на все ssh терминалы",
"Session": "Сессия",
"SessionIsBeingMonitored": "Сессия находится под наблюдением",
"Set reusable": "Включить повторное использование",
"Setting": "Настройки",
@@ -201,6 +203,7 @@
"Token expired": "Токен истёк, пожалуйста, переподключитесь",
"Tool download": "Скачать инструменты",
"Turkey keyboard layout": "Турецкий-Q (Qwerty)",
"TurnOffReminders": "Вы уверены, что хотите закрыть текущее соединение?",
"Type tree": "Типовая структура",
"UK English keyboard layout": "Английский (Великобритания) (Qwerty)",
"US English keyboard layout": "US English (Qwerty)",

View File

@@ -45,6 +45,7 @@
"Connect checked": "连接选中",
"Connect command line": "连接命令行",
"Connect method": "连接方式",
"ConnectionTime": "连接时间",
"Copied": "已复制",
"Copy link": "复制链接",
"Current online": "当前在线",
@@ -169,6 +170,7 @@
"Select account": "选择账号",
"Send command": "发送命令",
"Send text to all ssh terminals": "发送文本到所有ssh终端",
"Session": "会话",
"SessionIsBeingMonitored": "会话正在被监控",
"Set reusable": "开启复用",
"Setting": "设置",
@@ -201,6 +203,7 @@
"Token expired": "Token 已过期, 请重新连接",
"Tool download": "工具下载",
"Turkey keyboard layout": "Turkish-Q (Qwerty)",
"TurnOffReminders": "确定要关闭当前连接吗",
"Type tree": "类型树",
"UK English keyboard layout": "UK English (Qwerty)",
"US English keyboard layout": "US English (Qwerty)",

View File

@@ -45,6 +45,7 @@
"Connect checked": "連接選中",
"Connect command line": "連接命令行",
"Connect method": "連線方式",
"ConnectionTime": "連接時間",
"Copied": "已複製",
"Copy link": "複製連結",
"Current online": "當前在線",
@@ -169,6 +170,7 @@
"Select account": "選擇帳號",
"Send command": "發送命令",
"Send text to all ssh terminals": "發送文本到所有ssh終端",
"Session": "會話",
"SessionIsBeingMonitored": "對話正在被監控。",
"Set reusable": "開啟復用",
"Setting": "設置",
@@ -201,6 +203,7 @@
"Token expired": "Token 已過期, 請重新連接",
"Tool download": "工具下載",
"Turkey keyboard layout": "Turkish-Q (Qwerty)",
"TurnOffReminders": "確定要關閉當前連接嗎",
"Type tree": "類型樹",
"UK English keyboard layout": "UK English (Qwerty)",
"US English keyboard layout": "US English (Qwerty)",

View File

@@ -10,7 +10,7 @@
<!-- scripts -->
<script src="{% static 'js/jquery-3.6.1.min.js' %}"></script>
<script src="{% url 'javascript-catalog' %}"></script>
{#<script src="{% static 'js/bootstrap.min.js' %}"></script>#}
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<style>
:root {
--primary-color: #1ab394;