diff --git a/apps/assets/migrations/0095_auto_20220407_1726.py b/apps/assets/migrations/0095_auto_20220407_1726.py index c11517a35..9d9baf42c 100644 --- a/apps/assets/migrations/0095_auto_20220407_1726.py +++ b/apps/assets/migrations/0095_auto_20220407_1726.py @@ -12,7 +12,6 @@ def migrate_platform_type_to_lower(apps, *args): class Migration(migrations.Migration): - dependencies = [ ('assets', '0094_auto_20220402_1736'), ] @@ -51,7 +50,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='platform', name='su_method', - field=models.CharField(blank=True, max_length=32, null=True, verbose_name='SU method'), + field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Su method'), ), migrations.RunPython(migrate_platform_type_to_lower) ] diff --git a/apps/assets/models/platform.py b/apps/assets/models/platform.py index 64aeb2da3..a4e4ac26b 100644 --- a/apps/assets/models/platform.py +++ b/apps/assets/models/platform.py @@ -2,9 +2,8 @@ from django.db import models from django.utils.translation import gettext_lazy as _ from assets.const import AllTypes -from common.db.fields import JsonDictTextField - from assets.const import Protocol +from common.db.fields import JsonDictTextField __all__ = ['Platform', 'PlatformProtocol', 'PlatformAutomation'] @@ -83,7 +82,7 @@ class Platform(models.Model): protocols_enabled = models.BooleanField(default=True, verbose_name=_("Protocols enabled")) # 账号有关的 su_enabled = models.BooleanField(default=False, verbose_name=_("Su enabled")) - su_method = models.CharField(max_length=32, blank=True, null=True, verbose_name=_("SU method")) + su_method = models.CharField(max_length=32, blank=True, null=True, verbose_name=_("Su method")) automation = models.OneToOneField(PlatformAutomation, on_delete=models.CASCADE, related_name='platform', blank=True, null=True, verbose_name=_("Automation")) diff --git a/apps/assets/serializers/platform.py b/apps/assets/serializers/platform.py index ccb536bb2..6f7458543 100644 --- a/apps/assets/serializers/platform.py +++ b/apps/assets/serializers/platform.py @@ -25,7 +25,7 @@ class ProtocolSettingSerializer(serializers.Serializer): sftp_home = serializers.CharField(default="/tmp", label=_("SFTP home")) # HTTP - auto_fill = serializers.BooleanField(default=False, label=_("Auto fill")) + autofile = serializers.BooleanField(default=False, label=_("Autofill")) username_selector = serializers.CharField( default="", allow_blank=True, label=_("Username selector") ) @@ -38,7 +38,6 @@ class ProtocolSettingSerializer(serializers.Serializer): class PlatformAutomationSerializer(serializers.ModelSerializer): - class Meta: model = PlatformAutomation fields = [ diff --git a/apps/assets/signal_handlers/node_assets_mapping.py b/apps/assets/signal_handlers/node_assets_mapping.py index b242f3be8..27640fc76 100644 --- a/apps/assets/signal_handlers/node_assets_mapping.py +++ b/apps/assets/signal_handlers/node_assets_mapping.py @@ -20,13 +20,9 @@ logger = get_logger(__file__) # ------------------------------------ -def get_node_assets_mapping_for_memory_pub_sub(): - return RedisPubSub('fm.node_all_asset_ids_memory_mapping') - - class NodeAssetsMappingForMemoryPubSub(LazyObject): def _setup(self): - self._wrapped = get_node_assets_mapping_for_memory_pub_sub() + self._wrapped = RedisPubSub('fm.node_all_asset_ids_memory_mapping') node_assets_mapping_for_memory_pub_sub = NodeAssetsMappingForMemoryPubSub() diff --git a/apps/authentication/api/connection_token.py b/apps/authentication/api/connection_token.py index 97ef3b5ff..60528066e 100644 --- a/apps/authentication/api/connection_token.py +++ b/apps/authentication/api/connection_token.py @@ -19,12 +19,12 @@ from common.utils import random_string from common.utils.django import get_request_os from orgs.mixins.api import RootOrgViewMixin from perms.models import ActionChoices -from terminal.const import NativeClient, TerminalType +from terminal.connect_methods import NativeClient, ConnectMethodUtil from terminal.models import EndpointRule, Applet from ..models import ConnectionToken from ..serializers import ( ConnectionTokenSerializer, ConnectionTokenSecretSerializer, - SuperConnectionTokenSerializer, + SuperConnectionTokenSerializer, ConnectTokenAppletOptionSerializer ) __all__ = ['ConnectionTokenViewSet', 'SuperConnectionTokenViewSet'] @@ -115,7 +115,8 @@ class RDPFileClientProtocolURLMixin: rdp_options['audiomode:i'] = self.parse_env_bool('JUMPSERVER_DISABLE_AUDIO', 'false', '2', '0') # 设置远程应用 - self.set_applet_info(token, rdp_options) + remote_app_options = token.get_remote_app_option() + rdp_options.update(remote_app_options) # 文件名 name = token.asset.name @@ -145,7 +146,7 @@ class RDPFileClientProtocolURLMixin: _os = get_request_os(self.request) connect_method_name = token.connect_method - connect_method_dict = TerminalType.get_connect_method( + connect_method_dict = ConnectMethodUtil.get_connect_method( token.connect_method, token.protocol, _os ) if connect_method_dict is None: @@ -227,38 +228,16 @@ class ConnectionTokenViewSet(ExtraActionApiMixin, RootOrgViewMixin, JMSModelView search_fields = filterset_fields serializer_classes = { 'default': ConnectionTokenSerializer, - 'get_secret_detail': ConnectionTokenSecretSerializer, } rbac_perms = { 'list': 'authentication.view_connectiontoken', 'retrieve': 'authentication.view_connectiontoken', 'create': 'authentication.add_connectiontoken', 'expire': 'authentication.add_connectiontoken', - 'get_secret_detail': 'authentication.view_connectiontokensecret', 'get_rdp_file': 'authentication.add_connectiontoken', 'get_client_protocol_url': 'authentication.add_connectiontoken', } - @action(methods=['POST'], detail=False, url_path='secret') - def get_secret_detail(self, request, *args, **kwargs): - """ 非常重要的 api, 在逻辑层再判断一下 rbac 权限, 双重保险 """ - rbac_perm = 'authentication.view_connectiontokensecret' - if not request.user.has_perm(rbac_perm): - raise PermissionDenied('Not allow to view secret') - - token_id = request.data.get('id') or '' - token = get_object_or_404(ConnectionToken, pk=token_id) - if token.is_expired: - raise ValidationError({'id': 'Token is expired'}) - - token.is_valid() - serializer = self.get_serializer(instance=token) - expire_now = request.data.get('expire_now', True) - if expire_now: - token.expire() - - return Response(serializer.data, status=status.HTTP_200_OK) - def get_queryset(self): queryset = ConnectionToken.objects \ .filter(user=self.request.user) \ @@ -305,10 +284,14 @@ class ConnectionTokenViewSet(ExtraActionApiMixin, RootOrgViewMixin, JMSModelView class SuperConnectionTokenViewSet(ConnectionTokenViewSet): serializer_classes = { 'default': SuperConnectionTokenSerializer, + 'get_secret_detail': ConnectionTokenSecretSerializer, } rbac_perms = { 'create': 'authentication.add_superconnectiontoken', - 'renewal': 'authentication.add_superconnectiontoken' + 'renewal': 'authentication.add_superconnectiontoken', + 'get_secret_detail': 'authentication.view_connectiontokensecret', + 'get_applet_info': 'authentication.view_superconnectiontoken', + 'release_applet_account': 'authentication.view_superconnectiontoken', } def get_queryset(self): @@ -332,3 +315,38 @@ class SuperConnectionTokenViewSet(ConnectionTokenViewSet): 'msg': f'Token is renewed, date expired: {date_expired}' } return Response(data=data, status=status.HTTP_200_OK) + + @action(methods=['POST'], detail=False, url_path='secret') + def get_secret_detail(self, request, *args, **kwargs): + """ 非常重要的 api, 在逻辑层再判断一下 rbac 权限, 双重保险 """ + rbac_perm = 'authentication.view_connectiontokensecret' + if not request.user.has_perm(rbac_perm): + raise PermissionDenied('Not allow to view secret') + + token_id = request.data.get('id') or '' + token = get_object_or_404(ConnectionToken, pk=token_id) + if token.is_expired: + raise ValidationError({'id': 'Token is expired'}) + + token.is_valid() + serializer = self.get_serializer(instance=token) + expire_now = request.data.get('expire_now', True) + if expire_now: + token.expire() + return Response(serializer.data, status=status.HTTP_200_OK) + + @action(methods=['POST'], detail=False, url_path='applet-option') + def get_applet_info(self, *args, **kwargs): + token_id = self.request.data.get('id') + token = get_object_or_404(ConnectionToken, pk=token_id) + if token.is_expired: + return Response({'error': 'Token expired'}, status=status.HTTP_400_BAD_REQUEST) + data = token.get_applet_option() + serializer = ConnectTokenAppletOptionSerializer(data) + return Response(serializer.data) + + @action(methods=['DELETE', 'POST'], detail=False, url_path='applet-account/release') + def release_applet_account(self, *args, **kwargs): + account_id = self.request.data.get('id') + msg = ConnectionToken.release_applet_account(account_id) + return Response({'msg': msg}) diff --git a/apps/authentication/models/connection_token.py b/apps/authentication/models/connection_token.py index 4a23d18b8..421ec0969 100644 --- a/apps/authentication/models/connection_token.py +++ b/apps/authentication/models/connection_token.py @@ -1,6 +1,9 @@ +import base64 +import json from datetime import timedelta from django.conf import settings +from django.core.cache import cache from django.db import models from django.utils import timezone from django.utils.translation import ugettext_lazy as _ @@ -9,9 +12,10 @@ from rest_framework.exceptions import PermissionDenied from assets.const import Protocol from common.db.fields import EncryptCharField from common.db.models import JMSBaseModel -from common.utils import lazyproperty, pretty_string +from common.utils import lazyproperty, pretty_string, bulk_get from common.utils.timezone import as_current_tz from orgs.mixins.models import OrgModelMixin +from terminal.models import Applet def date_expired_default(): @@ -101,6 +105,9 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel): error = _('No account') raise PermissionDenied(error) + if timezone.now() - self.date_created < timedelta(seconds=60): + return True, None + if not self.permed_account or not self.permed_account.actions: msg = 'user `{}` not has asset `{}` permission for login `{}`'.format( self.user, self.asset, self.account @@ -115,6 +122,75 @@ class ConnectionToken(OrgModelMixin, JMSBaseModel): def platform(self): return self.asset.platform + @lazyproperty + def connect_method_object(self): + from common.utils import get_request_os + from jumpserver.utils import get_current_request + from terminal.connect_methods import ConnectMethodUtil + + request = get_current_request() + os = get_request_os(request) if request else 'windows' + method = ConnectMethodUtil.get_connect_method( + self.connect_method, protocol=self.protocol, os=os + ) + return method + + def get_remote_app_option(self): + cmdline = { + 'app_name': self.connect_method, + 'user_id': str(self.user.id), + 'asset_id': str(self.asset.id), + 'token_id': str(self.id) + } + cmdline_b64 = base64.b64encode(json.dumps(cmdline).encode()).decode() + app = '||tinker' + options = { + 'remoteapplicationmode:i': '1', + 'remoteapplicationprogram:s': app, + 'remoteapplicationname:s': app, + 'alternate shell:s': app, + 'remoteapplicationcmdline:s': cmdline_b64, + } + return options + + def get_applet_option(self): + method = self.connect_method_object + if not method or method.get('type') != 'applet' or method.get('disabled', False): + return None + + applet = Applet.objects.filter(name=method.get('value')).first() + if not applet: + return None + + host_account = applet.select_host_account() + if not host_account: + return None + + host, account, lock_key, ttl = bulk_get(host_account, ('host', 'account', 'lock_key', 'ttl')) + gateway = host.gateway.select_gateway() if host.domain else None + + data = { + 'id': account.id, + 'applet': applet, + 'host': host, + 'gateway': gateway, + 'account': account, + 'remote_app_option': self.get_remote_app_option() + } + token_account_relate_key = f'token_account_relate_{account.id}' + cache.set(token_account_relate_key, lock_key, ttl) + return data + + @staticmethod + def release_applet_account(account_id): + token_account_relate_key = f'token_account_relate_{account_id}' + lock_key = cache.get(token_account_relate_key) + if lock_key: + cache.delete(lock_key) + cache.delete(token_account_relate_key) + return 'released' + return 'not found or expired' + @lazyproperty def account_object(self): from assets.models import Account diff --git a/apps/authentication/serializers/connect_token_secret.py b/apps/authentication/serializers/connect_token_secret.py index f24f3e9c6..e4fd20be0 100644 --- a/apps/authentication/serializers/connect_token_secret.py +++ b/apps/authentication/serializers/connect_token_secret.py @@ -1,19 +1,17 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers -from common.drf.fields import ObjectRelatedField from acls.models import CommandGroup, CommandFilterACL from assets.models import Asset, Account, Platform, Gateway, Domain from assets.serializers import PlatformSerializer, AssetProtocolsSerializer -from users.models import User -from perms.serializers.permission import ActionChoicesField +from common.drf.fields import ObjectRelatedField from orgs.mixins.serializers import OrgResourceModelSerializerMixin - +from perms.serializers.permission import ActionChoicesField +from users.models import User from ..models import ConnectionToken - __all__ = [ - 'ConnectionTokenSecretSerializer', + 'ConnectionTokenSecretSerializer', 'ConnectTokenAppletOptionSerializer' ] @@ -96,6 +94,24 @@ class _ConnectionTokenPlatformSerializer(PlatformSerializer): return names +class _ConnectionTokenConnectMethodSerializer(serializers.Serializer): + name = serializers.CharField(label=_('Name')) + protocol = serializers.CharField(label=_('Protocol')) + os = serializers.CharField(label=_('OS')) + is_builtin = serializers.BooleanField(label=_('Is builtin')) + is_active = serializers.BooleanField(label=_('Is active')) + platform = _ConnectionTokenPlatformSerializer(label=_('Platform')) + action = ActionChoicesField(label=_('Action')) + options = serializers.JSONField(label=_('Options')) + + +class _ConnectTokenConnectMethodSerializer(serializers.Serializer): + label = serializers.CharField(label=_('Label')) + value = serializers.CharField(label=_('Value')) + type = serializers.CharField(label=_('Type')) + component = serializers.CharField(label=_('Component')) + + class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin): user = _ConnectionTokenUserSerializer(read_only=True) asset = _ConnectionTokenAssetSerializer(read_only=True) @@ -104,30 +120,28 @@ class ConnectionTokenSecretSerializer(OrgResourceModelSerializerMixin): platform = _ConnectionTokenPlatformSerializer(read_only=True) domain = ObjectRelatedField(queryset=Domain.objects, required=False, label=_('Domain')) command_filter_acls = _ConnectionTokenCommandFilterACLSerializer(read_only=True, many=True) + expire_now = serializers.BooleanField(label=_('Expired now'), write_only=True, default=True) + connect_method = _ConnectTokenConnectMethodSerializer(read_only=True, source='connect_method_object') actions = ActionChoicesField() expire_at = serializers.IntegerField() - expire_now = serializers.BooleanField(label=_('Expired now'), write_only=True, default=True) - connect_method = serializers.SerializerMethodField(label=_('Connect method')) class Meta: model = ConnectionToken fields = [ 'id', 'value', 'user', 'asset', 'account', 'platform', 'command_filter_acls', 'protocol', - 'domain', 'gateway', 'actions', 'expire_at', 'expire_now', - 'connect_method' + 'domain', 'gateway', 'actions', 'expire_at', + 'expire_now', 'connect_method', ] extra_kwargs = { 'value': {'read_only': True}, } - def get_connect_method(self, obj): - from terminal.const import TerminalType - from common.utils import get_request_os - request = self.context.get('request') - if request: - os = get_request_os(request) - else: - os = 'windows' - method = TerminalType.get_connect_method(obj.connect_method, protocol=obj.protocol, os=os) - return method + +class ConnectTokenAppletOptionSerializer(serializers.Serializer): + id = serializers.CharField(label=_('ID')) + applet = ObjectRelatedField(read_only=True) + host = _ConnectionTokenAssetSerializer(read_only=True) + account = _ConnectionTokenAccountSerializer(read_only=True) + gateway = _ConnectionTokenGatewaySerializer(read_only=True) + remote_app_option = serializers.JSONField(read_only=True) diff --git a/apps/authentication/serializers/connection_token.py b/apps/authentication/serializers/connection_token.py index 2b5b156e8..e45037853 100644 --- a/apps/authentication/serializers/connection_token.py +++ b/apps/authentication/serializers/connection_token.py @@ -2,7 +2,6 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers from orgs.mixins.serializers import OrgResourceModelSerializerMixin - from ..models import ConnectionToken __all__ = [ diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index aaedd2ddc..3b19bb16e 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -3,7 +3,6 @@ import platform from redis.sentinel import SentinelManagedSSLConnection - if platform.system() == 'Darwin' and platform.machine() == 'arm64': import pymysql @@ -308,17 +307,22 @@ else: REDIS_SENTINEL_SOCKET_TIMEOUT = None # Cache config + REDIS_OPTIONS = { "REDIS_CLIENT_KWARGS": { "health_check_interval": 30 }, "CONNECTION_POOL_KWARGS": { + 'max_connections': 100, + } +} +if REDIS_USE_SSL: + REDIS_OPTIONS['CONNECTION_POOL_KWARGS'].update({ 'ssl_cert_reqs': REDIS_SSL_REQUIRED, "ssl_keyfile": REDIS_SSL_KEY, "ssl_certfile": REDIS_SSL_CERT, "ssl_ca_certs": REDIS_SSL_CA - } if REDIS_USE_SSL else {} -} + }) if REDIS_SENTINEL_SERVICE_NAME and REDIS_SENTINELS: REDIS_LOCATION_NO_DB = "%(protocol)s://%(service_name)s/{}" % { @@ -348,7 +352,6 @@ else: 'host': CONFIG.REDIS_HOST, 'port': CONFIG.REDIS_PORT, } - REDIS_CACHE_DEFAULT = { 'BACKEND': 'redis_lock.django_cache.RedisCache', 'LOCATION': REDIS_LOCATION_NO_DB.format(CONFIG.REDIS_DB_CACHE), diff --git a/apps/locale/ja/LC_MESSAGES/django.mo b/apps/locale/ja/LC_MESSAGES/django.mo index 315c546b7..8622a74d1 100644 --- a/apps/locale/ja/LC_MESSAGES/django.mo +++ b/apps/locale/ja/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cc8f923c01a87b106a54f8a7c53abdb98683b1c4b4f975f9a3ae8af5fae73c8 -size 373 +oid sha256:03b1fcb75dae7e070f662f2ad554774d51311d2561367f5d28addc3b14899195 +size 119767 diff --git a/apps/locale/ja/LC_MESSAGES/django.po b/apps/locale/ja/LC_MESSAGES/django.po index a892b45d6..ca196b2f7 100644 --- a/apps/locale/ja/LC_MESSAGES/django.po +++ b/apps/locale/ja/LC_MESSAGES/django.po @@ -20,20 +20,22 @@ msgstr "" #: acls/apps.py:7 msgid "Acls" -msgstr "" +msgstr "Acls" #: acls/models/base.py:20 tickets/const.py:45 #: tickets/templates/tickets/approve_check_password.html:49 msgid "Reject" -msgstr "" +msgstr "拒否" #: acls/models/base.py:21 +#, fuzzy msgid "Accept" -msgstr "" +msgstr "受け入れられる" #: acls/models/base.py:22 +#, fuzzy msgid "Review" -msgstr "" +msgstr "レビュー担当者" #: acls/models/base.py:71 acls/models/command_acl.py:22 #: acls/serializers/base.py:34 applications/models.py:10 @@ -54,36 +56,36 @@ msgstr "" #: users/models/group.py:15 users/models/user.py:675 #: xpack/plugins/cloud/models.py:30 msgid "Name" -msgstr "" +msgstr "名前" #: acls/models/base.py:73 assets/models/_user.py:47 #: assets/models/cmd_filter.py:81 terminal/models/component/endpoint.py:89 msgid "Priority" -msgstr "" +msgstr "優先順位" #: acls/models/base.py:74 assets/models/_user.py:47 #: assets/models/cmd_filter.py:81 terminal/models/component/endpoint.py:90 msgid "1-100, the lower the value will be match first" -msgstr "" +msgstr "1-100、低い値は最初に一致します" #: acls/models/base.py:77 acls/serializers/base.py:63 #: assets/models/cmd_filter.py:86 audits/models.py:51 audits/serializers.py:75 #: authentication/templates/authentication/_access_key_modal.html:34 msgid "Action" -msgstr "" +msgstr "アクション" #: acls/models/base.py:78 acls/serializers/base.py:59 #: acls/serializers/login_acl.py:23 assets/models/cmd_filter.py:91 #: authentication/serializers/connect_token_secret.py:79 msgid "Reviewers" -msgstr "" +msgstr "レビュー担当者" #: acls/models/base.py:79 authentication/models/access_key.py:17 #: authentication/templates/authentication/_access_key_modal.html:32 #: perms/models/asset_permission.py:72 terminal/models/session/sharing.py:28 #: tickets/const.py:37 msgid "Active" -msgstr "" +msgstr "アクティブ" #: acls/models/base.py:80 acls/models/command_acl.py:29 #: applications/models.py:19 assets/models/_user.py:40 @@ -105,7 +107,7 @@ msgstr "" #: xpack/plugins/cloud/models.py:37 xpack/plugins/cloud/models.py:121 #: xpack/plugins/gathered_user/models.py:26 msgid "Comment" -msgstr "" +msgstr "コメント" #: acls/models/base.py:92 acls/models/login_acl.py:13 #: acls/serializers/base.py:55 acls/serializers/login_acl.py:21 @@ -123,7 +125,7 @@ msgstr "" #: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:907 #: users/models/user.py:938 users/serializers/group.py:19 msgid "User" -msgstr "" +msgstr "ユーザー" #: acls/models/base.py:94 acls/serializers/base.py:56 #: assets/models/account.py:51 assets/models/asset/common.py:83 @@ -142,7 +144,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:172 #: xpack/plugins/cloud/models.py:222 msgid "Asset" -msgstr "" +msgstr "資産" #: acls/models/base.py:96 acls/serializers/base.py:57 #: assets/models/account.py:61 @@ -152,7 +154,7 @@ msgstr "" #: terminal/models/session/session.py:34 xpack/plugins/cloud/models.py:87 #: xpack/plugins/cloud/serializers/task.py:71 msgid "Account" -msgstr "" +msgstr "アカウント" #: acls/models/command_acl.py:17 assets/models/cmd_filter.py:65 #: terminal/backends/command/serializers.py:15 @@ -160,11 +162,11 @@ msgstr "" #: terminal/templates/terminal/_msg_command_alert.html:12 #: terminal/templates/terminal/_msg_command_execute_alert.html:10 msgid "Command" -msgstr "" +msgstr "コマンド" #: acls/models/command_acl.py:18 assets/models/cmd_filter.py:64 msgid "Regex" -msgstr "" +msgstr "正規情報" #: acls/models/command_acl.py:25 acls/serializers/command_acl.py:14 #: applications/models.py:15 assets/models/_user.py:46 @@ -182,65 +184,68 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/app.py:27 #: xpack/plugins/change_auth_plan/models/app.py:152 msgid "Type" -msgstr "" +msgstr "タイプ" #: acls/models/command_acl.py:27 assets/models/cmd_filter.py:84 #: settings/serializers/basic.py:10 xpack/plugins/license/models.py:29 msgid "Content" -msgstr "" +msgstr "コンテンツ" #: acls/models/command_acl.py:27 assets/models/cmd_filter.py:84 msgid "One line one command" -msgstr "" +msgstr "1行1コマンド" #: acls/models/command_acl.py:28 assets/models/cmd_filter.py:85 msgid "Ignore case" -msgstr "" +msgstr "家を無視する" #: acls/models/command_acl.py:35 acls/serializers/command_acl.py:24 #: authentication/serializers/connect_token_secret.py:76 +#, fuzzy msgid "Command group" -msgstr "" +msgstr "コマンドレコード" #: acls/models/command_acl.py:88 msgid "The generated regular expression is incorrect: {}" -msgstr "" +msgstr "生成された正規表現が正しくありません: {}" #: acls/models/command_acl.py:98 +#, fuzzy msgid "Commands" -msgstr "" +msgstr "コマンド" #: acls/models/command_acl.py:102 +#, fuzzy msgid "Command acl" -msgstr "" +msgstr "コマンド" #: acls/models/command_acl.py:111 tickets/const.py:11 msgid "Command confirm" -msgstr "" +msgstr "コマンドの確認" #: acls/models/login_acl.py:16 msgid "Rule" -msgstr "" +msgstr "ルール" #: acls/models/login_acl.py:19 msgid "Login acl" -msgstr "" +msgstr "ログインacl" #: acls/models/login_acl.py:54 tickets/const.py:10 msgid "Login confirm" -msgstr "" +msgstr "ログイン確認" #: acls/models/login_asset_acl.py:10 msgid "Login asset acl" -msgstr "" +msgstr "ログインasset acl" #: acls/models/login_asset_acl.py:20 tickets/const.py:12 msgid "Login asset confirm" -msgstr "" +msgstr "ログイン資産の確認" #: acls/serializers/base.py:10 acls/serializers/login_acl.py:16 msgid "Format for comma-delimited string, with * indicating a match all. " -msgstr "" +msgstr "コンマ区切り文字列の形式。* はすべて一致することを示します。" #: acls/serializers/base.py:18 acls/serializers/base.py:49 #: assets/models/_user.py:34 assets/models/base.py:65 @@ -255,7 +260,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/asset.py:196 #: xpack/plugins/cloud/serializers/account_attrs.py:26 msgid "Username" -msgstr "" +msgstr "ユーザー名" #: acls/serializers/base.py:25 msgid "" @@ -263,23 +268,27 @@ msgid "" "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/base.py:40 assets/serializers/asset/host.py:40 +#, fuzzy msgid "IP/Host" -msgstr "" +msgstr "ホスト" #: acls/serializers/base.py:90 tickets/serializers/ticket/ticket.py:79 msgid "The organization `{}` does not exist" -msgstr "" +msgstr "組織 '{}'は存在しません" #: acls/serializers/base.py:96 msgid "None of the reviewers belong to Organization `{}`" -msgstr "" +msgstr "いずれのレビューアも組織 '{}' に属していません" #: acls/serializers/rules/rules.py:20 #: xpack/plugins/cloud/serializers/task.py:23 msgid "IP address invalid: `{}`" -msgstr "" +msgstr "IPアドレスが無効: '{}'" #: acls/serializers/rules/rules.py:25 msgid "" @@ -287,6 +296,9 @@ msgid "" "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/rules/rules.py:33 assets/models/asset/common.py:92 #: authentication/templates/authentication/_msg_oauth_bind.html:12 @@ -294,15 +306,15 @@ msgstr "" #: authentication/templates/authentication/_msg_rest_public_key_success.html:8 #: settings/serializers/terminal.py:10 terminal/serializers/endpoint.py:54 msgid "IP" -msgstr "" +msgstr "IP" #: acls/serializers/rules/rules.py:35 msgid "Time Period" -msgstr "" +msgstr "期間" #: applications/apps.py:9 msgid "Applications" -msgstr "" +msgstr "アプリケーション" #: applications/models.py:12 assets/models/label.py:20 #: assets/models/platform.py:73 assets/serializers/asset/common.py:62 @@ -311,72 +323,75 @@ msgstr "" #: settings/models.py:35 tickets/models/ticket/apply_application.py:13 #: xpack/plugins/change_auth_plan/models/app.py:24 msgid "Category" -msgstr "" +msgstr "カテゴリ" #: applications/models.py:17 xpack/plugins/cloud/models.py:35 #: xpack/plugins/cloud/serializers/account.py:64 msgid "Attrs" -msgstr "" +msgstr "ツールバーの" #: applications/models.py:23 xpack/plugins/change_auth_plan/models/app.py:31 msgid "Application" -msgstr "" +msgstr "アプリケーション" #: applications/models.py:27 msgid "Can match application" -msgstr "" +msgstr "アプリケーションを一致させることができます" #: applications/serializers/attrs/application_type/clickhouse.py:11 #: assets/models/asset/common.py:82 assets/models/platform.py:22 #: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:68 #: xpack/plugins/cloud/serializers/account_attrs.py:73 msgid "Port" -msgstr "" +msgstr "ポート" #: applications/serializers/attrs/application_type/clickhouse.py:13 msgid "" "Typically, the port is 9000,the HTTP interface and the native interface use " "different ports" msgstr "" +"デフォルトポートは9000で、HTTPインタフェースとネイティブインタフェースは異な" +"るポートを使用する" #: assets/api/automations/base.py:76 #: xpack/plugins/change_auth_plan/api/asset.py:94 msgid "The parameter 'action' must be [{}]" -msgstr "" +msgstr "パラメータ 'action' は [{}] でなければなりません。" #: assets/api/domain.py:56 msgid "Number required" -msgstr "" +msgstr "必要な数" #: assets/api/node.py:62 msgid "You can't update the root node name" -msgstr "" +msgstr "ルートノード名を更新できません" #: assets/api/node.py:69 msgid "You can't delete the root node ({})" -msgstr "" +msgstr "ルートノード ({}) を削除できません。" #: assets/api/node.py:72 msgid "Deletion failed and the node contains assets" -msgstr "" +msgstr "削除に失敗し、ノードにアセットが含まれています。" #: assets/apps.py:9 msgid "App assets" -msgstr "" +msgstr "アプリ資産" #: assets/automations/base/manager.py:123 +#, fuzzy msgid "{} disabled" -msgstr "" +msgstr "無効" #: assets/const/account.py:6 audits/const.py:6 audits/const.py:64 #: common/utils/ip/geoip/utils.py:31 common/utils/ip/geoip/utils.py:37 #: common/utils/ip/utils.py:84 msgid "Unknown" -msgstr "" +msgstr "不明" #: assets/const/account.py:7 msgid "Ok" -msgstr "" +msgstr "OK" #: assets/const/account.py:8 #: assets/serializers/automations/change_secret.py:118 @@ -385,7 +400,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:190 #: xpack/plugins/cloud/const.py:41 msgid "Failed" -msgstr "" +msgstr "失敗しました" #: assets/const/account.py:12 assets/models/_user.py:35 #: audits/signal_handlers.py:49 authentication/confirm/password.py:9 @@ -402,44 +417,50 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/base.py:73 #: xpack/plugins/cloud/serializers/account_attrs.py:28 msgid "Password" -msgstr "" +msgstr "パスワード" #: assets/const/account.py:13 +#, fuzzy msgid "SSH key" -msgstr "" +msgstr "SSHキー" #: assets/const/account.py:14 authentication/models/access_key.py:33 msgid "Access key" -msgstr "" +msgstr "アクセスキー" #: assets/const/account.py:15 assets/models/_user.py:38 #: authentication/models/sso_token.py:14 msgid "Token" -msgstr "" +msgstr "トークン" #: assets/const/automation.py:13 msgid "Ping" msgstr "" #: assets/const/automation.py:14 +#, fuzzy msgid "Gather facts" -msgstr "" +msgstr "アカウントを集める" #: assets/const/automation.py:15 +#, fuzzy msgid "Create account" -msgstr "" +msgstr "アカウントを集める" #: assets/const/automation.py:16 +#, fuzzy msgid "Change secret" -msgstr "" +msgstr "秘密を改める" #: assets/const/automation.py:17 +#, fuzzy msgid "Verify account" -msgstr "" +msgstr "パスワード/キーの確認" #: assets/const/automation.py:18 +#, fuzzy msgid "Gather accounts" -msgstr "" +msgstr "アカウントを集める" #: assets/const/automation.py:38 assets/serializers/account/base.py:26 msgid "Specific" @@ -448,34 +469,34 @@ msgstr "" #: assets/const/automation.py:39 ops/const.py:20 #: xpack/plugins/change_auth_plan/models/base.py:28 msgid "All assets use the same random password" -msgstr "" +msgstr "すべての資産は同じランダムパスワードを使用します" #: assets/const/automation.py:40 ops/const.py:21 #: xpack/plugins/change_auth_plan/models/base.py:29 msgid "All assets use different random password" -msgstr "" +msgstr "すべての資産は異なるランダムパスワードを使用します" #: assets/const/automation.py:44 ops/const.py:13 #: xpack/plugins/change_auth_plan/models/asset.py:30 msgid "Append SSH KEY" -msgstr "" +msgstr "追加" #: assets/const/automation.py:45 ops/const.py:14 #: xpack/plugins/change_auth_plan/models/asset.py:31 msgid "Empty and append SSH KEY" -msgstr "" +msgstr "すべてクリアして追加" #: assets/const/automation.py:46 ops/const.py:15 #: xpack/plugins/change_auth_plan/models/asset.py:32 msgid "Replace (The key generated by JumpServer) " -msgstr "" +msgstr "置換(JumpServerによって生成された鍵)" #: assets/const/category.py:11 settings/serializers/auth/radius.py:16 #: settings/serializers/auth/sms.py:67 terminal/models/applet/applet.py:59 #: terminal/models/component/endpoint.py:13 #: xpack/plugins/cloud/serializers/account_attrs.py:72 msgid "Host" -msgstr "" +msgstr "ホスト" #: assets/const/category.py:12 msgid "Device" @@ -484,11 +505,12 @@ msgstr "" #: assets/const/category.py:13 assets/models/asset/database.py:8 #: assets/models/asset/database.py:34 msgid "Database" -msgstr "" +msgstr "データベース" #: assets/const/category.py:14 +#, fuzzy msgid "Cloud service" -msgstr "" +msgstr "クラウドセンター" #: assets/const/category.py:15 audits/const.py:62 #: terminal/models/applet/applet.py:18 @@ -498,11 +520,12 @@ msgstr "" #: assets/const/device.py:7 terminal/models/applet/applet.py:17 #: tickets/const.py:8 msgid "General" -msgstr "" +msgstr "一般" #: assets/const/device.py:8 +#, fuzzy msgid "Switch" -msgstr "" +msgstr "から切り替え" #: assets/const/device.py:9 msgid "Router" @@ -513,36 +536,37 @@ msgid "Firewall" msgstr "" #: assets/const/web.py:7 +#, fuzzy msgid "Website" -msgstr "" +msgstr "ウェブサイトのアイコン" #: assets/models/_user.py:24 msgid "Automatic managed" -msgstr "" +msgstr "自動管理" #: assets/models/_user.py:25 msgid "Manually input" -msgstr "" +msgstr "手動入力" #: assets/models/_user.py:29 msgid "Common user" -msgstr "" +msgstr "共通ユーザー" #: assets/models/_user.py:30 msgid "Admin user" -msgstr "" +msgstr "管理ユーザー" #: assets/models/_user.py:36 xpack/plugins/change_auth_plan/models/asset.py:54 #: xpack/plugins/change_auth_plan/models/asset.py:131 #: xpack/plugins/change_auth_plan/models/asset.py:207 msgid "SSH private key" -msgstr "" +msgstr "SSH秘密鍵" #: assets/models/_user.py:37 xpack/plugins/change_auth_plan/models/asset.py:57 #: xpack/plugins/change_auth_plan/models/asset.py:127 #: xpack/plugins/change_auth_plan/models/asset.py:203 msgid "SSH public key" -msgstr "" +msgstr "SSHパブリックキー" #: assets/models/_user.py:41 assets/models/automations/base.py:92 #: assets/models/cmd_filter.py:46 assets/models/domain.py:23 @@ -552,13 +576,13 @@ msgstr "" #: users/models/group.py:18 users/models/user.py:939 #: xpack/plugins/change_auth_plan/models/base.py:45 msgid "Date created" -msgstr "" +msgstr "作成された日付" #: assets/models/_user.py:42 assets/models/cmd_filter.py:47 #: assets/models/gathered_user.py:20 common/db/models.py:78 #: common/mixins/models.py:51 xpack/plugins/change_auth_plan/models/base.py:46 msgid "Date updated" -msgstr "" +msgstr "更新日" #: assets/models/_user.py:43 assets/models/base.py:73 #: assets/models/cmd_filter.py:49 assets/models/cmd_filter.py:96 @@ -567,128 +591,131 @@ msgstr "" #: users/models/user.py:722 users/serializers/group.py:33 #: xpack/plugins/change_auth_plan/models/base.py:48 msgid "Created by" -msgstr "" +msgstr "によって作成された" #: assets/models/_user.py:45 msgid "Username same with user" -msgstr "" +msgstr "ユーザーと同じユーザー名" #: assets/models/_user.py:48 authentication/models/connection_token.py:34 #: perms/models/perm_token.py:16 terminal/models/applet/applet.py:26 #: terminal/serializers/session.py:18 terminal/serializers/session.py:32 #: terminal/serializers/storage.py:68 msgid "Protocol" -msgstr "" +msgstr "プロトコル" #: assets/models/_user.py:49 msgid "Auto push" -msgstr "" +msgstr "オートプッシュ" #: assets/models/_user.py:50 msgid "Sudo" -msgstr "" +msgstr "すど" #: assets/models/_user.py:51 ops/models/adhoc.py:17 ops/models/job.py:30 msgid "Shell" -msgstr "" +msgstr "シェル" #: assets/models/_user.py:52 msgid "Login mode" -msgstr "" +msgstr "ログインモード" #: assets/models/_user.py:53 msgid "SFTP Root" -msgstr "" +msgstr "SFTPルート" #: assets/models/_user.py:54 msgid "Home" -msgstr "" +msgstr "ホーム" #: assets/models/_user.py:55 msgid "System groups" -msgstr "" +msgstr "システムグループ" #: assets/models/_user.py:58 msgid "User switch" -msgstr "" +msgstr "ユーザースイッチ" #: assets/models/_user.py:59 msgid "Switch from" -msgstr "" +msgstr "から切り替え" #: assets/models/_user.py:65 audits/models.py:35 #: xpack/plugins/change_auth_plan/models/app.py:35 #: xpack/plugins/change_auth_plan/models/app.py:146 msgid "System user" -msgstr "" +msgstr "システムユーザー" #: assets/models/_user.py:67 msgid "Can match system user" -msgstr "" +msgstr "システムユーザーに一致できます" #: assets/models/account.py:45 common/db/fields.py:232 #: settings/serializers/terminal.py:14 msgid "All" -msgstr "" +msgstr "すべて" #: assets/models/account.py:46 msgid "Manual input" -msgstr "" +msgstr "手動入力" #: assets/models/account.py:47 msgid "Dynamic user" -msgstr "" +msgstr "動的コード" #: assets/models/account.py:55 #: authentication/serializers/connect_token_secret.py:47 msgid "Su from" -msgstr "" +msgstr "から切り替え" #: assets/models/account.py:57 settings/serializers/auth/cas.py:20 #: terminal/models/applet/applet.py:22 msgid "Version" -msgstr "" +msgstr "バージョン" #: assets/models/account.py:67 msgid "Can view asset account secret" -msgstr "" +msgstr "資産アカウントの秘密を表示できます" #: assets/models/account.py:68 msgid "Can change asset account secret" -msgstr "" +msgstr "資産口座の秘密を変更できます" #: assets/models/account.py:69 msgid "Can view asset history account" -msgstr "" +msgstr "資産履歴アカウントを表示できます" #: assets/models/account.py:70 msgid "Can view asset history account secret" -msgstr "" +msgstr "資産履歴アカウントパスワードを表示できます" #: assets/models/account.py:93 assets/serializers/account/account.py:15 +#, fuzzy msgid "Account template" -msgstr "" +msgstr "アカウント名" #: assets/models/account.py:98 +#, fuzzy msgid "Can view asset account template secret" -msgstr "" +msgstr "資産アカウントの秘密を表示できます" #: assets/models/account.py:99 +#, fuzzy msgid "Can change asset account template secret" -msgstr "" +msgstr "資産口座の秘密を変更できます" #: assets/models/asset/common.py:93 assets/models/platform.py:110 #: assets/serializers/asset/common.py:65 #: perms/serializers/user_permission.py:21 #: xpack/plugins/cloud/serializers/account_attrs.py:179 msgid "Platform" -msgstr "" +msgstr "プラットフォーム" #: assets/models/asset/common.py:95 assets/models/domain.py:26 #: assets/serializers/asset/common.py:64 #: authentication/serializers/connect_token_secret.py:105 msgid "Domain" -msgstr "" +msgstr "ドメイン" #: assets/models/asset/common.py:97 assets/models/automations/base.py:18 #: assets/models/cmd_filter.py:37 assets/serializers/asset/common.py:66 @@ -697,88 +724,95 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/asset.py:44 #: xpack/plugins/gathered_user/models.py:24 msgid "Nodes" -msgstr "" +msgstr "ノード" #: assets/models/asset/common.py:98 assets/models/automations/base.py:21 #: assets/models/base.py:71 assets/models/cmd_filter.py:44 #: assets/models/label.py:21 terminal/models/applet/applet.py:25 #: users/serializers/user.py:202 msgid "Is active" -msgstr "" +msgstr "アクティブです。" #: assets/models/asset/common.py:99 assets/serializers/asset/common.py:67 msgid "Labels" -msgstr "" +msgstr "ラベル" #: assets/models/asset/common.py:215 msgid "Can refresh asset hardware info" -msgstr "" +msgstr "資産ハードウェア情報を更新できます" #: assets/models/asset/common.py:216 msgid "Can test asset connectivity" -msgstr "" +msgstr "資産接続をテストできます" #: assets/models/asset/common.py:217 +#, fuzzy msgid "Can push account to asset" -msgstr "" +msgstr "システムユーザーを資産にプッシュできます" #: assets/models/asset/common.py:218 msgid "Can match asset" -msgstr "" +msgstr "アセットを一致させることができます" #: assets/models/asset/common.py:219 msgid "Add asset to node" -msgstr "" +msgstr "ノードにアセットを追加する" #: assets/models/asset/common.py:220 msgid "Move asset to node" -msgstr "" +msgstr "アセットをノードに移動する" #: assets/models/asset/database.py:9 settings/serializers/email.py:37 msgid "Use SSL" -msgstr "" +msgstr "SSLの使用" #: assets/models/asset/database.py:10 +#, fuzzy msgid "CA cert" -msgstr "" +msgstr "SP 証明書" #: assets/models/asset/database.py:11 +#, fuzzy msgid "Client cert" -msgstr "" +msgstr "クライアント秘密" #: assets/models/asset/database.py:12 +#, fuzzy msgid "Client key" -msgstr "" +msgstr "クライアント" #: assets/models/asset/database.py:13 msgid "Allow invalid cert" -msgstr "" +msgstr "証明書チェックを無視" #: assets/models/asset/web.py:9 audits/const.py:68 #: terminal/serializers/applet_host.py:25 msgid "Disabled" -msgstr "" +msgstr "無効" #: assets/models/asset/web.py:10 settings/serializers/auth/base.py:10 #: settings/serializers/basic.py:27 msgid "Basic" -msgstr "" +msgstr "基本" #: assets/models/asset/web.py:11 assets/models/asset/web.py:17 msgid "Script" msgstr "" #: assets/models/asset/web.py:13 +#, fuzzy msgid "Autofill" -msgstr "" +msgstr "自動" #: assets/models/asset/web.py:14 assets/serializers/platform.py:30 +#, fuzzy msgid "Username selector" -msgstr "" +msgstr "ユーザー名のプロパティ" #: assets/models/asset/web.py:15 assets/serializers/platform.py:33 +#, fuzzy msgid "Password selector" -msgstr "" +msgstr "パスワードルール" #: assets/models/asset/web.py:16 assets/serializers/platform.py:36 msgid "Submit selector" @@ -788,7 +822,7 @@ msgstr "" #: assets/serializers/asset/common.py:69 perms/models/asset_permission.py:65 #: perms/serializers/permission.py:32 rbac/tree.py:37 msgid "Accounts" -msgstr "" +msgstr "アカウント" #: assets/models/automations/base.py:19 #: assets/serializers/automations/base.py:20 ops/models/base.py:17 @@ -796,11 +830,12 @@ msgstr "" #: terminal/templates/terminal/_msg_command_execute_alert.html:16 #: xpack/plugins/change_auth_plan/models/asset.py:40 msgid "Assets" -msgstr "" +msgstr "資産" #: assets/models/automations/base.py:82 assets/models/automations/base.py:89 +#, fuzzy msgid "Automation task" -msgstr "" +msgstr "自動管理" #: assets/models/automations/base.py:91 audits/models.py:129 #: audits/serializers.py:41 ops/models/base.py:49 ops/models/job.py:102 @@ -809,7 +844,7 @@ msgstr "" #: tickets/models/ticket/general.py:282 tickets/serializers/ticket/ticket.py:20 #: xpack/plugins/cloud/models.py:174 xpack/plugins/cloud/models.py:226 msgid "Status" -msgstr "" +msgstr "ステータス" #: assets/models/automations/base.py:93 assets/models/backup.py:76 #: audits/models.py:41 ops/models/base.py:55 ops/models/celery.py:59 @@ -821,19 +856,20 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:199 #: xpack/plugins/gathered_user/models.py:71 msgid "Date start" -msgstr "" +msgstr "開始日" #: assets/models/automations/base.py:94 #: assets/models/automations/change_secret.py:59 ops/models/base.py:56 #: ops/models/celery.py:60 ops/models/job.py:110 #: terminal/models/applet/host.py:106 msgid "Date finished" -msgstr "" +msgstr "終了日" #: assets/models/automations/base.py:96 #: assets/serializers/automations/base.py:39 +#, fuzzy msgid "Automation snapshot" -msgstr "" +msgstr "製造オーダスナップショット" #: assets/models/automations/base.py:100 assets/models/backup.py:87 #: assets/serializers/account/backup.py:37 @@ -841,22 +877,25 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:121 #: xpack/plugins/change_auth_plan/serializers/base.py:78 msgid "Trigger mode" -msgstr "" +msgstr "トリガーモード" #: assets/models/automations/base.py:104 #: assets/serializers/automations/change_secret.py:103 +#, fuzzy msgid "Automation task execution" -msgstr "" +msgstr "インスタンスタスクの同期実行" #: assets/models/automations/change_secret.py:15 assets/models/base.py:67 #: assets/serializers/account/account.py:97 assets/serializers/base.py:13 +#, fuzzy msgid "Secret type" -msgstr "" +msgstr "秘密キー" #: assets/models/automations/change_secret.py:19 #: assets/serializers/automations/change_secret.py:25 +#, fuzzy msgid "Secret strategy" -msgstr "" +msgstr "秘密キー" #: assets/models/automations/change_secret.py:21 #: assets/models/automations/change_secret.py:57 assets/models/base.py:69 @@ -864,16 +903,17 @@ msgstr "" #: authentication/templates/authentication/_access_key_modal.html:31 #: perms/models/perm_token.py:15 settings/serializers/auth/radius.py:19 msgid "Secret" -msgstr "" +msgstr "ひみつ" #: assets/models/automations/change_secret.py:22 #: xpack/plugins/change_auth_plan/models/base.py:39 msgid "Password rules" -msgstr "" +msgstr "パスワードルール" #: assets/models/automations/change_secret.py:25 +#, fuzzy msgid "SSH key change strategy" -msgstr "" +msgstr "SSHキー戦略" #: assets/models/automations/change_secret.py:27 assets/models/backup.py:27 #: assets/serializers/account/backup.py:30 @@ -882,27 +922,32 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/asset.py:63 #: xpack/plugins/change_auth_plan/serializers/base.py:45 msgid "Recipient" -msgstr "" +msgstr "受信者" #: assets/models/automations/change_secret.py:34 +#, fuzzy msgid "Change secret automation" -msgstr "" +msgstr "セキュリティ設定を変更できます" #: assets/models/automations/change_secret.py:56 +#, fuzzy msgid "Old secret" -msgstr "" +msgstr "OTP 秘密" #: assets/models/automations/change_secret.py:58 +#, fuzzy msgid "Date started" -msgstr "" +msgstr "開始日" #: assets/models/automations/change_secret.py:61 common/const/choices.py:20 +#, fuzzy msgid "Error" -msgstr "" +msgstr "企業微信エラー" #: assets/models/automations/change_secret.py:64 +#, fuzzy msgid "Change secret record" -msgstr "" +msgstr "パスワードの変更" #: assets/models/automations/discovery_account.py:8 msgid "Discovery account automation" @@ -910,28 +955,33 @@ msgstr "" #: assets/models/automations/gather_accounts.py:15 #: assets/tasks/gather_accounts.py:28 +#, fuzzy msgid "Gather asset accounts" -msgstr "" +msgstr "アカウントを集める" #: assets/models/automations/gather_facts.py:15 +#, fuzzy msgid "Gather asset facts" -msgstr "" +msgstr "資産ユーザーの収集" #: assets/models/automations/ping.py:15 +#, fuzzy msgid "Ping asset" -msgstr "" +msgstr "ログイン資産" #: assets/models/automations/push_account.py:16 +#, fuzzy msgid "Push asset account" -msgstr "" +msgstr "サービスアカウントです" #: assets/models/automations/verify_account.py:15 +#, fuzzy msgid "Verify asset account" -msgstr "" +msgstr "パスワード/キーの確認" #: assets/models/backup.py:37 assets/models/backup.py:95 msgid "Account backup plan" -msgstr "" +msgstr "アカウントバックアップ計画" #: assets/models/backup.py:79 #: authentication/templates/authentication/_msg_oauth_bind.html:11 @@ -940,11 +990,11 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:200 #: xpack/plugins/gathered_user/models.py:74 msgid "Time" -msgstr "" +msgstr "時間" #: assets/models/backup.py:83 msgid "Account backup snapshot" -msgstr "" +msgstr "アカウントのバックアップスナップショット" #: assets/models/backup.py:90 audits/models.py:124 #: terminal/models/session/sharing.py:108 @@ -952,7 +1002,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:171 #: xpack/plugins/cloud/models.py:178 msgid "Reason" -msgstr "" +msgstr "理由" #: assets/models/backup.py:92 #: assets/serializers/automations/change_secret.py:99 @@ -961,19 +1011,19 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:198 #: xpack/plugins/change_auth_plan/serializers/asset.py:173 msgid "Is success" -msgstr "" +msgstr "成功は" #: assets/models/backup.py:99 msgid "Account backup execution" -msgstr "" +msgstr "アカウントバックアップの実行" #: assets/models/base.py:26 msgid "Connectivity" -msgstr "" +msgstr "接続性" #: assets/models/base.py:28 authentication/models/temp_token.py:12 msgid "Date verified" -msgstr "" +msgstr "確認済みの日付" #: assets/models/base.py:70 msgid "Privileged" @@ -982,229 +1032,245 @@ msgstr "" #: assets/models/cmd_filter.py:33 perms/models/asset_permission.py:56 #: users/models/group.py:31 users/models/user.py:681 msgid "User group" -msgstr "" +msgstr "ユーザーグループ" #: assets/models/cmd_filter.py:57 msgid "Command filter" -msgstr "" +msgstr "コマンドフィルター" #: assets/models/cmd_filter.py:71 msgid "Deny" -msgstr "" +msgstr "拒否" #: assets/models/cmd_filter.py:72 msgid "Allow" -msgstr "" +msgstr "許可" #: assets/models/cmd_filter.py:73 msgid "Reconfirm" -msgstr "" +msgstr "再確認" #: assets/models/cmd_filter.py:77 msgid "Filter" -msgstr "" +msgstr "フィルター" #: assets/models/cmd_filter.py:100 msgid "Command filter rule" -msgstr "" +msgstr "コマンドフィルタルール" #: assets/models/gateway.py:61 authentication/models/connection_token.py:101 +#, fuzzy msgid "No account" -msgstr "" +msgstr "アカウント" #: assets/models/gateway.py:83 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Unable to connect to port {port} on {address}" -msgstr "" +msgstr "{ip} でポート {port} に接続できません" #: assets/models/gateway.py:86 authentication/middleware.py:76 #: xpack/plugins/cloud/providers/fc.py:48 msgid "Authentication failed" -msgstr "" +msgstr "認証に失敗しました" #: assets/models/gateway.py:88 assets/models/gateway.py:115 msgid "Connect failed" -msgstr "" +msgstr "接続に失敗しました" #: assets/models/gathered_user.py:16 msgid "Present" -msgstr "" +msgstr "プレゼント" #: assets/models/gathered_user.py:17 msgid "Date last login" -msgstr "" +msgstr "最終ログイン日" #: assets/models/gathered_user.py:18 msgid "IP last login" -msgstr "" +msgstr "IP最終ログイン" #: assets/models/gathered_user.py:31 msgid "GatherUser" -msgstr "" +msgstr "収集ユーザー" #: assets/models/group.py:30 msgid "Asset group" -msgstr "" +msgstr "資産グループ" #: assets/models/group.py:34 assets/models/platform.py:19 #: xpack/plugins/cloud/providers/nutanix.py:30 msgid "Default" -msgstr "" +msgstr "デフォルト" #: assets/models/group.py:34 msgid "Default asset group" -msgstr "" +msgstr "デフォルトアセットグループ" #: assets/models/label.py:14 rbac/const.py:6 users/models/user.py:924 msgid "System" -msgstr "" +msgstr "システム" #: assets/models/label.py:18 assets/models/node.py:553 #: assets/serializers/cagegory.py:7 assets/serializers/cagegory.py:14 #: authentication/models/connection_token.py:22 #: common/drf/serializers/common.py:82 settings/models.py:34 msgid "Value" -msgstr "" +msgstr "値" #: assets/models/label.py:36 assets/serializers/cagegory.py:6 #: assets/serializers/cagegory.py:13 common/drf/serializers/common.py:81 #: settings/serializers/sms.py:7 msgid "Label" -msgstr "" +msgstr "ラベル" #: assets/models/node.py:158 msgid "New node" -msgstr "" +msgstr "新しいノード" #: assets/models/node.py:481 msgid "empty" -msgstr "" +msgstr "空" #: assets/models/node.py:552 perms/models/perm_node.py:21 msgid "Key" -msgstr "" +msgstr "キー" #: assets/models/node.py:554 assets/serializers/node.py:20 msgid "Full value" -msgstr "" +msgstr "フルバリュー" #: assets/models/node.py:558 perms/models/perm_node.py:22 msgid "Parent key" -msgstr "" +msgstr "親キー" #: assets/models/node.py:567 xpack/plugins/cloud/models.py:98 #: xpack/plugins/cloud/serializers/task.py:74 msgid "Node" -msgstr "" +msgstr "ノード" #: assets/models/node.py:570 msgid "Can match node" -msgstr "" +msgstr "ノードを一致させることができます" #: assets/models/platform.py:20 +#, fuzzy msgid "Required" -msgstr "" +msgstr "MFAが必要" #: assets/models/platform.py:23 settings/serializers/settings.py:61 #: users/templates/users/reset_password.html:29 msgid "Setting" -msgstr "" +msgstr "設定" #: assets/models/platform.py:42 audits/const.py:69 settings/models.py:37 #: terminal/serializers/applet_host.py:26 msgid "Enabled" -msgstr "" +msgstr "有効化" #: assets/models/platform.py:43 msgid "Ansible config" msgstr "" #: assets/models/platform.py:44 +#, fuzzy msgid "Ping enabled" -msgstr "" +msgstr "MFA有効化" #: assets/models/platform.py:45 msgid "Ping method" msgstr "" #: assets/models/platform.py:46 assets/models/platform.py:56 +#, fuzzy msgid "Gather facts enabled" -msgstr "" +msgstr "資産ユーザーの収集" #: assets/models/platform.py:47 assets/models/platform.py:58 +#, fuzzy msgid "Gather facts method" -msgstr "" +msgstr "資産ユーザーの収集" #: assets/models/platform.py:48 +#, fuzzy msgid "Push account enabled" -msgstr "" +msgstr "MFAが有効化されていません" #: assets/models/platform.py:49 msgid "Push account method" msgstr "" #: assets/models/platform.py:50 +#, fuzzy msgid "Change password enabled" -msgstr "" +msgstr "パスワードの変更" #: assets/models/platform.py:52 +#, fuzzy msgid "Change password method" -msgstr "" +msgstr "パスワードの変更" #: assets/models/platform.py:53 +#, fuzzy msgid "Verify account enabled" -msgstr "" +msgstr "サービスアカウントキー" #: assets/models/platform.py:55 +#, fuzzy msgid "Verify account method" -msgstr "" +msgstr "パスワード/キーの確認" #: assets/models/platform.py:75 tickets/models/ticket/general.py:299 msgid "Meta" -msgstr "" +msgstr "メタ" #: assets/models/platform.py:76 msgid "Internal" -msgstr "" +msgstr "内部" #: assets/models/platform.py:80 assets/serializers/platform.py:97 msgid "Charset" -msgstr "" +msgstr "シャーセット" #: assets/models/platform.py:82 +#, fuzzy msgid "Domain enabled" -msgstr "" +msgstr "ドメイン名" #: assets/models/platform.py:83 +#, fuzzy msgid "Protocols enabled" -msgstr "" +msgstr "プロトコル" #: assets/models/platform.py:85 +#, fuzzy msgid "Su enabled" -msgstr "" +msgstr "MFA有効化" #: assets/models/platform.py:86 msgid "SU method" msgstr "" #: assets/models/platform.py:88 assets/serializers/platform.py:104 +#, fuzzy msgid "Automation" -msgstr "" +msgstr "自動管理" #: assets/models/utils.py:19 #, python-format msgid "%(value)s is not an even number" -msgstr "" +msgstr "%(value)s は偶数ではありません" #: assets/notifications.py:8 msgid "Notification of account backup route task results" -msgstr "" +msgstr "アカウントバックアップルートタスクの結果の通知" #: assets/notifications.py:18 msgid "" "{} - The account backup passage task has been completed. See the attachment " "for details" msgstr "" +"{} -アカウントバックアップの通過タスクが完了しました。詳細は添付ファイルをご" +"覧ください" #: assets/notifications.py:20 msgid "" @@ -1212,17 +1278,20 @@ msgid "" "password has not been set - please go to personal information -> file " "encryption password to set the encryption password" msgstr "" +"{} -アカウントのバックアップ通過タスクが完了しました: 暗号化パスワードが設定" +"されていません-個人情報にアクセスしてください-> ファイル暗号化パスワードを設" +"定してください暗号化パスワード" #: assets/notifications.py:31 xpack/plugins/change_auth_plan/notifications.py:8 msgid "Notification of implementation result of encryption change plan" -msgstr "" +msgstr "暗号化変更プランの実装結果の通知" #: assets/notifications.py:41 #: xpack/plugins/change_auth_plan/notifications.py:18 msgid "" "{} - The encryption change task has been completed. See the attachment for " "details" -msgstr "" +msgstr "{} -暗号化変更タスクが完了しました。詳細は添付ファイルをご覧ください" #: assets/notifications.py:42 #: xpack/plugins/change_auth_plan/notifications.py:19 @@ -1231,14 +1300,17 @@ msgid "" "has not been set - please go to personal information -> file encryption " "password to set the encryption password" msgstr "" +"{} -暗号化変更タスクが完了しました: 暗号化パスワードが設定されていません-個人" +"情報にアクセスしてください-> ファイル暗号化パスワードを設定してください" #: assets/serializers/account/account.py:18 msgid "Push now" msgstr "" #: assets/serializers/account/account.py:20 +#, fuzzy msgid "Has secret" -msgstr "" +msgstr "ひみつ" #: assets/serializers/account/account.py:27 msgid "Account template not found" @@ -1249,13 +1321,13 @@ msgstr "" #: settings/serializers/auth/ldap.py:66 #: xpack/plugins/change_auth_plan/serializers/base.py:43 msgid "Periodic perform" -msgstr "" +msgstr "定期的なパフォーマンス" #: assets/serializers/account/backup.py:31 #: assets/serializers/automations/change_secret.py:41 #: xpack/plugins/change_auth_plan/serializers/base.py:46 msgid "Currently only mail sending is supported" -msgstr "" +msgstr "現在、メール送信のみがサポートされています" #: assets/serializers/asset/common.py:68 assets/serializers/platform.py:102 #: authentication/serializers/connect_token_secret.py:27 @@ -1263,95 +1335,97 @@ msgstr "" #: perms/serializers/user_permission.py:22 xpack/plugins/cloud/models.py:109 #: xpack/plugins/cloud/serializers/task.py:43 msgid "Protocols" -msgstr "" +msgstr "プロトコル" #: assets/serializers/asset/common.py:88 msgid "Address" -msgstr "" +msgstr "アドレス" #: assets/serializers/asset/common.py:156 +#, fuzzy msgid "Platform not exist" -msgstr "" +msgstr "アプリが存在しません" #: assets/serializers/asset/common.py:172 +#, fuzzy msgid "Protocol is required: {}" -msgstr "" +msgstr "プロトコル重複: {}" #: assets/serializers/asset/host.py:12 msgid "Vendor" -msgstr "" +msgstr "ベンダー" #: assets/serializers/asset/host.py:13 msgid "Model" -msgstr "" +msgstr "モデル" #: assets/serializers/asset/host.py:14 tickets/models/ticket/general.py:298 msgid "Serial number" -msgstr "" +msgstr "シリアル番号" #: assets/serializers/asset/host.py:16 msgid "CPU model" -msgstr "" +msgstr "CPU モデル" #: assets/serializers/asset/host.py:17 msgid "CPU count" -msgstr "" +msgstr "CPU カウント" #: assets/serializers/asset/host.py:18 msgid "CPU cores" -msgstr "" +msgstr "CPU カラー" #: assets/serializers/asset/host.py:19 msgid "CPU vcpus" -msgstr "" +msgstr "CPU 合計" #: assets/serializers/asset/host.py:20 msgid "Memory" -msgstr "" +msgstr "メモリ" #: assets/serializers/asset/host.py:21 msgid "Disk total" -msgstr "" +msgstr "ディスクの合計" #: assets/serializers/asset/host.py:22 msgid "Disk info" -msgstr "" +msgstr "ディスク情報" #: assets/serializers/asset/host.py:24 msgid "OS" -msgstr "" +msgstr "OS" #: assets/serializers/asset/host.py:25 msgid "OS version" -msgstr "" +msgstr "システムバージョン" #: assets/serializers/asset/host.py:26 msgid "OS arch" -msgstr "" +msgstr "システムアーキテクチャ" #: assets/serializers/asset/host.py:27 msgid "Hostname raw" -msgstr "" +msgstr "ホスト名生" #: assets/serializers/asset/host.py:28 msgid "Asset number" -msgstr "" +msgstr "資産番号" #: assets/serializers/automations/change_secret.py:28 #: xpack/plugins/change_auth_plan/models/asset.py:50 #: xpack/plugins/change_auth_plan/serializers/asset.py:33 msgid "SSH Key strategy" -msgstr "" +msgstr "SSHキー戦略" #: assets/serializers/automations/change_secret.py:70 #: xpack/plugins/change_auth_plan/serializers/base.py:58 msgid "* Please enter the correct password length" -msgstr "" +msgstr "* 正しいパスワードの長さを入力してください" #: assets/serializers/automations/change_secret.py:73 #: xpack/plugins/change_auth_plan/serializers/base.py:61 msgid "* Password length range 6-30 bits" -msgstr "" +msgstr "* パスワードの長さの範囲6-30ビット" #: assets/serializers/automations/change_secret.py:117 #: assets/serializers/automations/change_secret.py:145 audits/const.py:74 @@ -1359,63 +1433,68 @@ msgstr "" #: terminal/models/session/sharing.py:104 tickets/views/approve.py:114 #: xpack/plugins/change_auth_plan/serializers/asset.py:189 msgid "Success" -msgstr "" +msgstr "成功" #: assets/serializers/automations/gather_accounts.py:23 +#, fuzzy msgid "Executed amount" -msgstr "" +msgstr "実行時間" #: assets/serializers/base.py:21 msgid "Key password" -msgstr "" +msgstr "キーパスワード" #: assets/serializers/cagegory.py:9 msgid "Constraints" msgstr "" #: assets/serializers/cagegory.py:15 +#, fuzzy msgid "Types" -msgstr "" +msgstr "タイプ" #: assets/serializers/domain.py:16 msgid "Gateway" -msgstr "" +msgstr "ゲートウェイ" #: assets/serializers/gathered_user.py:24 settings/serializers/terminal.py:9 msgid "Hostname" -msgstr "" +msgstr "ホスト名" #: assets/serializers/label.py:12 msgid "Assets amount" -msgstr "" +msgstr "資産額" #: assets/serializers/label.py:13 msgid "Category display" -msgstr "" +msgstr "カテゴリ表示" #: assets/serializers/node.py:17 msgid "value" -msgstr "" +msgstr "値" #: assets/serializers/node.py:31 msgid "Can't contains: /" -msgstr "" +msgstr "含まれない:/" #: assets/serializers/node.py:41 msgid "The same level node name cannot be the same" -msgstr "" +msgstr "同じレベルのノード名を同じにすることはできません。" #: assets/serializers/platform.py:24 +#, fuzzy msgid "SFTP enabled" -msgstr "" +msgstr "MFA有効化" #: assets/serializers/platform.py:25 +#, fuzzy msgid "SFTP home" -msgstr "" +msgstr "SFTPルート" #: assets/serializers/platform.py:28 +#, fuzzy msgid "Auto fill" -msgstr "" +msgstr "自動" #: assets/serializers/platform.py:79 msgid "Primary" @@ -1423,43 +1502,47 @@ msgstr "" #: assets/serializers/utils.py:13 msgid "Password can not contains `{{` " -msgstr "" +msgstr "パスワードには '{{' を含まない" #: assets/serializers/utils.py:16 msgid "Password can not contains `'` " -msgstr "" +msgstr "パスワードには `'` を含まない" #: assets/serializers/utils.py:18 msgid "Password can not contains `\"` " -msgstr "" +msgstr "パスワードには `\"` を含まない" #: assets/serializers/utils.py:24 msgid "private key invalid or passphrase error" -msgstr "" +msgstr "秘密鍵が無効またはpassphraseエラー" #: assets/tasks/automation.py:11 +#, fuzzy msgid "Execute automation" -msgstr "" +msgstr "バッチ実行コマンド" #: assets/tasks/backup.py:13 +#, fuzzy msgid "Execute account backup plan" -msgstr "" +msgstr "アカウントバックアップ計画" #: assets/tasks/gather_accounts.py:31 +#, fuzzy msgid "Gather assets accounts" -msgstr "" +msgstr "資産ユーザーの収集" #: assets/tasks/gather_facts.py:26 msgid "Update some assets hardware info. " -msgstr "" +msgstr "一部の資産ハードウェア情報を更新します。" #: assets/tasks/gather_facts.py:44 +#, fuzzy msgid "Manually update the hardware information of assets" -msgstr "" +msgstr "ノード資産のハードウェア情報を更新します。" #: assets/tasks/gather_facts.py:49 msgid "Update assets hardware info: " -msgstr "" +msgstr "資産のハードウェア情報を更新する:" #: assets/tasks/gather_facts.py:53 msgid "Manually update the hardware information of assets under a node" @@ -1467,7 +1550,7 @@ msgstr "" #: assets/tasks/gather_facts.py:59 msgid "Update node asset hardware information: " -msgstr "" +msgstr "ノード資産のハードウェア情報を更新します。" #: assets/tasks/nodes_amount.py:16 msgid "Check the amount of assets under the node" @@ -1477,269 +1560,278 @@ msgstr "" msgid "" "The task of self-checking is already running and cannot be started repeatedly" msgstr "" +"セルフチェックのタスクはすでに実行されており、繰り返し開始することはできませ" +"ん" #: assets/tasks/nodes_amount.py:34 msgid "Periodic check the amount of assets under the node" msgstr "" #: assets/tasks/ping.py:21 assets/tasks/ping.py:39 +#, fuzzy msgid "Test assets connectivity " -msgstr "" +msgstr "資産の接続性をテストします。" #: assets/tasks/ping.py:33 +#, fuzzy msgid "Manually test the connectivity of a asset" -msgstr "" +msgstr "資産接続をテストできます" #: assets/tasks/ping.py:43 msgid "Manually test the connectivity of assets under a node" msgstr "" #: assets/tasks/ping.py:49 +#, fuzzy msgid "Test if the assets under the node are connectable " -msgstr "" +msgstr "ノードの下のアセットが接続可能かどうかをテストします。" #: assets/tasks/push_account.py:17 assets/tasks/push_account.py:34 +#, fuzzy msgid "Push accounts to assets" -msgstr "" +msgstr "システムユーザーを資産にプッシュする:" #: assets/tasks/utils.py:17 msgid "Asset has been disabled, skipped: {}" -msgstr "" +msgstr "資産が無効化されました。スキップ: {}" #: assets/tasks/utils.py:21 msgid "Asset may not be support ansible, skipped: {}" -msgstr "" +msgstr "資産はサポートできない場合があります。スキップ: {}" #: assets/tasks/utils.py:39 msgid "For security, do not push user {}" -msgstr "" +msgstr "セキュリティのために、ユーザー {} をプッシュしないでください" #: assets/tasks/utils.py:55 msgid "No assets matched, stop task" -msgstr "" +msgstr "一致する資産がない、タスクを停止" #: assets/tasks/verify_account.py:30 msgid "Verify asset account availability" msgstr "" #: assets/tasks/verify_account.py:37 +#, fuzzy msgid "Verify accounts connectivity" -msgstr "" +msgstr "テストアカウント接続:" #: audits/apps.py:9 msgid "Audits" -msgstr "" +msgstr "監査" #: audits/backends/db.py:12 msgid "The text content is too long. Use Elasticsearch to store operation logs" -msgstr "" +msgstr "文章の内容が長すぎる。Elasticsearchで操作履歴を保存する" #: audits/backends/db.py:24 audits/backends/db.py:26 msgid "Tips" -msgstr "" +msgstr "謎々" #: audits/const.py:45 msgid "Mkdir" -msgstr "" +msgstr "Mkdir" #: audits/const.py:46 msgid "Rmdir" -msgstr "" +msgstr "Rmdir" #: audits/const.py:47 audits/const.py:57 #: authentication/templates/authentication/_access_key_modal.html:65 #: rbac/tree.py:226 msgid "Delete" -msgstr "" +msgstr "削除" #: audits/const.py:48 perms/const.py:13 msgid "Upload" -msgstr "" +msgstr "アップロード" #: audits/const.py:49 msgid "Rename" -msgstr "" +msgstr "名前の変更" #: audits/const.py:50 msgid "Symlink" -msgstr "" +msgstr "Symlink" #: audits/const.py:51 perms/const.py:14 msgid "Download" -msgstr "" +msgstr "ダウンロード" #: audits/const.py:55 rbac/tree.py:224 msgid "View" -msgstr "" +msgstr "表示" #: audits/const.py:56 rbac/tree.py:225 templates/_csv_import_export.html:18 #: templates/_csv_update_modal.html:6 msgid "Update" -msgstr "" +msgstr "更新" #: audits/const.py:58 #: authentication/templates/authentication/_access_key_modal.html:22 #: rbac/tree.py:223 msgid "Create" -msgstr "" +msgstr "作成" #: audits/const.py:63 settings/serializers/terminal.py:6 #: terminal/models/applet/host.py:24 terminal/models/component/terminal.py:159 msgid "Terminal" -msgstr "" +msgstr "ターミナル" #: audits/const.py:70 msgid "-" -msgstr "" +msgstr "-" #: audits/handler.py:134 msgid "Yes" -msgstr "" +msgstr "是" #: audits/handler.py:134 msgid "No" -msgstr "" +msgstr "否" #: audits/models.py:32 audits/models.py:55 audits/models.py:96 #: terminal/models/session/session.py:37 terminal/models/session/sharing.py:96 msgid "Remote addr" -msgstr "" +msgstr "リモートaddr" #: audits/models.py:37 audits/serializers.py:19 msgid "Operate" -msgstr "" +msgstr "操作" #: audits/models.py:39 msgid "Filename" -msgstr "" +msgstr "ファイル名" #: audits/models.py:44 msgid "File transfer log" -msgstr "" +msgstr "ファイル転送ログ" #: audits/models.py:53 audits/serializers.py:91 msgid "Resource Type" -msgstr "" +msgstr "リソースタイプ" #: audits/models.py:54 msgid "Resource" -msgstr "" +msgstr "リソース" #: audits/models.py:56 audits/models.py:98 #: terminal/backends/command/serializers.py:41 msgid "Datetime" -msgstr "" +msgstr "時間" #: audits/models.py:88 msgid "Operate log" -msgstr "" +msgstr "ログの操作" #: audits/models.py:94 msgid "Change by" -msgstr "" +msgstr "による変更" #: audits/models.py:104 msgid "Password change log" -msgstr "" +msgstr "パスワード変更ログ" #: audits/models.py:111 msgid "Login type" -msgstr "" +msgstr "ログインタイプ" #: audits/models.py:113 tickets/models/ticket/login_confirm.py:10 msgid "Login ip" -msgstr "" +msgstr "ログインIP" #: audits/models.py:115 #: authentication/templates/authentication/_msg_different_city.html:11 #: tickets/models/ticket/login_confirm.py:11 msgid "Login city" -msgstr "" +msgstr "ログイン都市" #: audits/models.py:118 audits/serializers.py:62 msgid "User agent" -msgstr "" +msgstr "ユーザーエージェント" #: audits/models.py:121 audits/serializers.py:39 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: users/forms/profile.py:65 users/models/user.py:698 #: users/serializers/profile.py:126 msgid "MFA" -msgstr "" +msgstr "MFA" #: audits/models.py:131 msgid "Date login" -msgstr "" +msgstr "日付ログイン" #: audits/models.py:133 audits/serializers.py:64 msgid "Authentication backend" -msgstr "" +msgstr "認証バックエンド" #: audits/models.py:174 msgid "User login log" -msgstr "" +msgstr "ユーザーログインログ" #: audits/serializers.py:63 msgid "Reason display" -msgstr "" +msgstr "理由表示" #: audits/signal_handlers.py:48 msgid "SSH Key" -msgstr "" +msgstr "SSHキー" #: audits/signal_handlers.py:50 settings/serializers/auth/sso.py:10 msgid "SSO" -msgstr "" +msgstr "SSO" #: audits/signal_handlers.py:51 msgid "Auth Token" -msgstr "" +msgstr "認証トークン" #: audits/signal_handlers.py:52 authentication/notifications.py:73 #: authentication/views/login.py:73 authentication/views/wecom.py:178 #: notifications/backends/__init__.py:11 settings/serializers/auth/wecom.py:10 #: users/models/user.py:736 msgid "WeCom" -msgstr "" +msgstr "企業微信" #: audits/signal_handlers.py:53 authentication/views/feishu.py:145 #: authentication/views/login.py:85 notifications/backends/__init__.py:14 #: settings/serializers/auth/feishu.py:10 users/models/user.py:738 msgid "FeiShu" -msgstr "" +msgstr "本を飛ばす" #: audits/signal_handlers.py:54 authentication/views/dingtalk.py:180 #: authentication/views/login.py:79 notifications/backends/__init__.py:12 #: settings/serializers/auth/dingtalk.py:10 users/models/user.py:737 msgid "DingTalk" -msgstr "" +msgstr "DingTalk" #: audits/signal_handlers.py:55 authentication/models/temp_token.py:16 msgid "Temporary token" -msgstr "" +msgstr "仮パスワード" #: authentication/api/confirm.py:40 msgid "This action require verify your MFA" -msgstr "" +msgstr "この操作には、MFAを検証する必要があります" #: authentication/api/mfa.py:59 msgid "Current user not support mfa type: {}" -msgstr "" +msgstr "現在のユーザーはmfaタイプをサポートしていません: {}" #: authentication/api/password.py:31 terminal/api/session/session.py:225 #: users/views/profile/reset.py:44 msgid "User does not exist: {}" -msgstr "" +msgstr "ユーザーが存在しない: {}" #: authentication/api/password.py:31 users/views/profile/reset.py:127 msgid "No user matched" -msgstr "" +msgstr "ユーザーにマッチしなかった" #: authentication/api/password.py:35 msgid "" "The user is from {}, please go to the corresponding system to change the " "password" msgstr "" +"ユーザーは {}からです。対応するシステムにアクセスしてパスワードを変更してくだ" +"さい。" #: authentication/api/password.py:59 #: authentication/templates/authentication/login.html:256 @@ -1748,7 +1840,7 @@ msgstr "" #: users/templates/users/forgot_password_previewing.html:13 #: users/templates/users/forgot_password_previewing.html:14 msgid "Forgot password" -msgstr "" +msgstr "パスワードを忘れた" #: authentication/apps.py:7 settings/serializers/auth/base.py:10 #: settings/serializers/auth/cas.py:10 settings/serializers/auth/dingtalk.py:10 @@ -1757,123 +1849,125 @@ msgstr "" #: settings/serializers/auth/radius.py:13 settings/serializers/auth/saml2.py:11 #: settings/serializers/auth/sso.py:10 settings/serializers/auth/wecom.py:10 msgid "Authentication" -msgstr "" +msgstr "認証" #: authentication/backends/custom.py:58 #: authentication/backends/oauth2/backends.py:158 msgid "User invalid, disabled or expired" -msgstr "" +msgstr "ユーザーが無効、無効、または期限切れです" #: authentication/backends/drf.py:56 msgid "Invalid signature header. No credentials provided." -msgstr "" +msgstr "署名ヘッダーが無効です。資格情報は提供されていません。" #: authentication/backends/drf.py:59 msgid "Invalid signature header. Signature string should not contain spaces." -msgstr "" +msgstr "署名ヘッダーが無効です。署名文字列にはスペースを含まないでください。" #: authentication/backends/drf.py:66 msgid "Invalid signature header. Format like AccessKeyId:Signature" -msgstr "" +msgstr "署名ヘッダーが無効です。AccessKeyIdのような形式: Signature" #: authentication/backends/drf.py:70 msgid "" "Invalid signature header. Signature string should not contain invalid " "characters." msgstr "" +"署名ヘッダーが無効です。署名文字列に無効な文字を含めることはできません。" #: authentication/backends/drf.py:90 authentication/backends/drf.py:106 msgid "Invalid signature." -msgstr "" +msgstr "署名が無効です。" #: authentication/backends/drf.py:97 msgid "HTTP header: Date not provide or not %a, %d %b %Y %H:%M:%S GMT" -msgstr "" +msgstr "HTTP header: Date not provide or not" #: authentication/backends/drf.py:102 msgid "Expired, more than 15 minutes" -msgstr "" +msgstr "期限切れ、15分以上" #: authentication/backends/drf.py:109 msgid "User disabled." -msgstr "" +msgstr "ユーザーが無効になりました。" #: authentication/backends/drf.py:127 msgid "Invalid token header. No credentials provided." -msgstr "" +msgstr "無効なトークンヘッダー。資格情報は提供されていません。" #: authentication/backends/drf.py:130 msgid "Invalid token header. Sign string should not contain spaces." -msgstr "" +msgstr "無効なトークンヘッダー。記号文字列にはスペースを含めないでください。" #: authentication/backends/drf.py:137 msgid "" "Invalid token header. Sign string should not contain invalid characters." msgstr "" +"無効なトークンヘッダー。署名文字列に無効な文字を含めることはできません。" #: authentication/backends/drf.py:148 msgid "Invalid token or cache refreshed." -msgstr "" +msgstr "無効なトークンまたはキャッシュの更新。" #: authentication/confirm/password.py:16 msgid "Authentication failed password incorrect" -msgstr "" +msgstr "認証に失敗しました (ユーザー名またはパスワードが正しくありません)" #: authentication/confirm/relogin.py:10 msgid "Login time has exceeded {} minutes, please login again" -msgstr "" +msgstr "ログイン時間が {} 分を超えました。もう一度ログインしてください" #: authentication/errors/const.py:18 msgid "Username/password check failed" -msgstr "" +msgstr "ユーザー名/パスワードのチェックに失敗しました" #: authentication/errors/const.py:19 msgid "Password decrypt failed" -msgstr "" +msgstr "パスワードの復号化に失敗しました" #: authentication/errors/const.py:20 msgid "MFA failed" -msgstr "" +msgstr "MFAに失敗しました" #: authentication/errors/const.py:21 msgid "MFA unset" -msgstr "" +msgstr "MFAセットなし" #: authentication/errors/const.py:22 msgid "Username does not exist" -msgstr "" +msgstr "ユーザー名が存在しません" #: authentication/errors/const.py:23 msgid "Password expired" -msgstr "" +msgstr "パスワード期限切れ" #: authentication/errors/const.py:24 msgid "Disabled or expired" -msgstr "" +msgstr "無効または期限切れ" #: authentication/errors/const.py:25 msgid "This account is inactive." -msgstr "" +msgstr "このアカウントは非アクティブです。" #: authentication/errors/const.py:26 msgid "This account is expired" -msgstr "" +msgstr "このアカウントは期限切れです" #: authentication/errors/const.py:27 msgid "Auth backend not match" -msgstr "" +msgstr "Authバックエンドが一致しない" #: authentication/errors/const.py:28 msgid "ACL is not allowed" -msgstr "" +msgstr "ログイン アクセス制御は許可されません" #: authentication/errors/const.py:29 msgid "Only local users are allowed" -msgstr "" +msgstr "ローカルユーザーのみが許可されています" #: authentication/errors/const.py:39 msgid "No session found, check your cookie" -msgstr "" +msgstr "セッションが見つかりませんでした。クッキーを確認してください" #: authentication/errors/const.py:41 #, python-brace-format @@ -1882,18 +1976,26 @@ msgid "" "You can also try {times_try} times (The account will be temporarily locked " "for {block_time} minutes)" msgstr "" +"入力したユーザー名またはパスワードが正しくありません。再度入力してください。 " +"{times_try} 回試すこともできます (アカウントは {block_time} 分の間一時的に" +"ロックされます)" #: authentication/errors/const.py:47 authentication/errors/const.py:55 msgid "" "The account has been locked (please contact admin to unlock it or try again " "after {} minutes)" msgstr "" +"アカウントがロックされています (管理者に連絡してロックを解除するか、 {} 分後" +"にもう一度お試しください)" #: authentication/errors/const.py:51 +#, fuzzy msgid "" "The address has been locked (please contact admin to unlock it or try again " "after {} minutes)" msgstr "" +"IPがロックされています (管理者に連絡してロックを解除するか、 {} 分後にもう一" +"度お試しください)" #: authentication/errors/const.py:59 #, python-brace-format @@ -1901,153 +2003,157 @@ msgid "" "{error}, You can also try {times_try} times (The account will be temporarily " "locked for {block_time} minutes)" msgstr "" +"{error},{times_try} 回も試すことができます (アカウントは {block_time} 分の間" +"一時的にロックされます)" #: authentication/errors/const.py:63 msgid "MFA required" -msgstr "" +msgstr "MFAが必要" #: authentication/errors/const.py:64 msgid "MFA not set, please set it first" -msgstr "" +msgstr "MFAをセットしない、最初にセットしてください" #: authentication/errors/const.py:65 msgid "Login confirm required" -msgstr "" +msgstr "ログイン確認が必要" #: authentication/errors/const.py:66 msgid "Wait login confirm ticket for accept" -msgstr "" +msgstr "受け入れのためのログイン確認チケットを待つ" #: authentication/errors/const.py:67 msgid "Login confirm ticket was {}" -msgstr "" +msgstr "ログイン確認チケットは {} でした" #: authentication/errors/failed.py:146 msgid "Current IP and Time period is not allowed" -msgstr "" +msgstr "現在の IP と期間はログインを許可されていません" #: authentication/errors/failed.py:151 msgid "Please enter MFA code" -msgstr "" +msgstr "MFAコードを入力してください" #: authentication/errors/failed.py:156 msgid "Please enter SMS code" -msgstr "" +msgstr "SMSコードを入力してください" #: authentication/errors/failed.py:161 users/exceptions.py:15 msgid "Phone not set" -msgstr "" +msgstr "電話が設定されていない" #: authentication/errors/mfa.py:8 msgid "SSO auth closed" -msgstr "" +msgstr "SSO authは閉鎖されました" #: authentication/errors/mfa.py:18 authentication/views/wecom.py:80 msgid "WeCom is already bound" -msgstr "" +msgstr "企業の微信はすでにバインドされています" #: authentication/errors/mfa.py:23 authentication/views/wecom.py:237 #: authentication/views/wecom.py:291 msgid "WeCom is not bound" -msgstr "" +msgstr "企業の微信をバインドしていません" #: authentication/errors/mfa.py:28 authentication/views/dingtalk.py:243 #: authentication/views/dingtalk.py:297 msgid "DingTalk is not bound" -msgstr "" +msgstr "DingTalkはバインドされていません" #: authentication/errors/mfa.py:33 authentication/views/feishu.py:204 msgid "FeiShu is not bound" -msgstr "" +msgstr "本を飛ばすは拘束されていません" #: authentication/errors/mfa.py:38 msgid "Your password is invalid" -msgstr "" +msgstr "パスワードが無効です" #: authentication/errors/redirect.py:85 authentication/mixins.py:306 msgid "Your password is too simple, please change it for security" -msgstr "" +msgstr "パスワードがシンプルすぎるので、セキュリティのために変更してください" #: authentication/errors/redirect.py:93 authentication/mixins.py:313 msgid "You should to change your password before login" -msgstr "" +msgstr "ログインする前にパスワードを変更する必要があります" #: authentication/errors/redirect.py:101 authentication/mixins.py:320 msgid "Your password has expired, please reset before logging in" msgstr "" +"パスワードの有効期限が切れました。ログインする前にリセットしてください。" #: authentication/forms.py:45 msgid "{} days auto login" -msgstr "" +msgstr "{} 日自動ログイン" #: authentication/forms.py:56 msgid "MFA Code" -msgstr "" +msgstr "MFAコード" #: authentication/forms.py:57 msgid "MFA type" -msgstr "" +msgstr "MFAタイプ" #: authentication/forms.py:65 #: authentication/templates/authentication/_captcha_field.html:15 msgid "Captcha" -msgstr "" +msgstr "キャプチャ" #: authentication/forms.py:70 users/forms/profile.py:28 msgid "MFA code" -msgstr "" +msgstr "MFAコード" #: authentication/forms.py:72 msgid "Dynamic code" -msgstr "" +msgstr "動的コード" #: authentication/mfa/base.py:7 msgid "Please input security code" -msgstr "" +msgstr "セキュリティコードを入力してください" #: authentication/mfa/custom.py:20 msgid "MFA Custom code invalid" -msgstr "" +msgstr "カスタム MFA 検証コードの検証に失敗しました" #: authentication/mfa/custom.py:26 msgid "MFA custom verification code" -msgstr "" +msgstr "カスタム MFA 検証コード" #: authentication/mfa/custom.py:56 msgid "MFA custom global enabled, cannot disable" msgstr "" +"カスタム MFA はグローバルに有効になっており、無効にすることはできません" #: authentication/mfa/otp.py:7 msgid "OTP code invalid, or server time error" -msgstr "" +msgstr "OTPコードが無効、またはサーバー時間エラー" #: authentication/mfa/otp.py:12 msgid "OTP" -msgstr "" +msgstr "OTP" #: authentication/mfa/otp.py:13 msgid "OTP verification code" -msgstr "" +msgstr "OTP検証コード" #: authentication/mfa/otp.py:48 msgid "Virtual OTP based MFA" -msgstr "" +msgstr "仮想OTPベースのMFA" #: authentication/mfa/radius.py:7 msgid "Radius verify code invalid" -msgstr "" +msgstr "Radius verifyコードが無効" #: authentication/mfa/radius.py:13 msgid "Radius verification code" -msgstr "" +msgstr "半径確認コード" #: authentication/mfa/radius.py:44 msgid "Radius global enabled, cannot disable" -msgstr "" +msgstr "Radius globalが有効になり、無効にできません" #: authentication/mfa/sms.py:7 msgid "SMS verify code invalid" -msgstr "" +msgstr "メッセージ検証コードが無効" #: authentication/mfa/sms.py:12 authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 @@ -2055,122 +2161,127 @@ msgstr "" #: users/forms/profile.py:106 users/templates/users/forgot_password.html:111 #: users/views/profile/reset.py:79 msgid "SMS" -msgstr "" +msgstr "メッセージ" #: authentication/mfa/sms.py:13 msgid "SMS verification code" -msgstr "" +msgstr "SMS確認コード" #: authentication/mfa/sms.py:57 msgid "Set phone number to enable" -msgstr "" +msgstr "電話番号を設定して有効にする" #: authentication/mfa/sms.py:61 msgid "Clear phone number to disable" -msgstr "" +msgstr "無効にする電話番号をクリアする" #: authentication/middleware.py:77 settings/utils/ldap.py:652 msgid "Authentication failed (before login check failed): {}" -msgstr "" +msgstr "認証に失敗しました (ログインチェックが失敗する前): {}" #: authentication/mixins.py:256 msgid "The MFA type ({}) is not enabled" -msgstr "" +msgstr "MFAタイプ ({}) が有効になっていない" #: authentication/mixins.py:296 msgid "Please change your password" -msgstr "" +msgstr "パスワードを変更してください" #: authentication/models/connection_token.py:31 #: terminal/serializers/storage.py:111 msgid "Account name" -msgstr "" +msgstr "アカウント名" #: authentication/models/connection_token.py:32 +#, fuzzy msgid "Input username" -msgstr "" +msgstr "カスタムユーザー名" #: authentication/models/connection_token.py:33 +#, fuzzy msgid "Input secret" -msgstr "" +msgstr "クライアント秘密" #: authentication/models/connection_token.py:35 #: authentication/serializers/connect_token_secret.py:110 #: perms/models/perm_token.py:17 +#, fuzzy msgid "Connect method" -msgstr "" +msgstr "接続タイムアウト" #: authentication/models/connection_token.py:36 #: rbac/serializers/rolebinding.py:21 msgid "User display" -msgstr "" +msgstr "ユーザー表示" #: authentication/models/connection_token.py:37 msgid "Asset display" -msgstr "" +msgstr "アセット名" #: authentication/models/connection_token.py:38 #: authentication/models/temp_token.py:13 perms/models/asset_permission.py:69 #: tickets/models/ticket/apply_application.py:31 #: tickets/models/ticket/apply_asset.py:20 users/models/user.py:719 msgid "Date expired" -msgstr "" +msgstr "期限切れの日付" #: authentication/models/connection_token.py:42 msgid "Connection token" -msgstr "" +msgstr "接続トークン" #: authentication/models/connection_token.py:44 msgid "Can view connection token secret" -msgstr "" +msgstr "接続トークンの秘密を表示できます" #: authentication/models/connection_token.py:91 msgid "Connection token expired at: {}" -msgstr "" +msgstr "接続トークンの有効期限: {}" #: authentication/models/connection_token.py:94 msgid "No user or invalid user" msgstr "" #: authentication/models/connection_token.py:98 +#, fuzzy msgid "No asset or inactive asset" -msgstr "" +msgstr "アセットがアクティブ化されていません" #: authentication/models/connection_token.py:173 msgid "Super connection token" -msgstr "" +msgstr "スーパー接続トークン" #: authentication/models/private_token.py:9 msgid "Private Token" -msgstr "" +msgstr "プライベートトークン" #: authentication/models/sso_token.py:15 msgid "Expired" -msgstr "" +msgstr "期限切れ" #: authentication/models/sso_token.py:20 msgid "SSO token" -msgstr "" +msgstr "SSO token" #: authentication/models/temp_token.py:11 msgid "Verified" -msgstr "" +msgstr "確認済み" #: authentication/notifications.py:19 msgid "Different city login reminder" -msgstr "" +msgstr "異なる都市ログインのリマインダー" #: authentication/notifications.py:52 msgid "binding reminder" -msgstr "" +msgstr "バインディングリマインダー" #: authentication/serializers/connect_token_secret.py:109 +#, fuzzy msgid "Expired now" -msgstr "" +msgstr "期限切れ" #: authentication/serializers/connection_token.py:14 msgid "Expired time" -msgstr "" +msgstr "期限切れ時間" #: authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 @@ -2180,90 +2291,90 @@ msgstr "" #: users/templates/users/forgot_password.html:116 #: users/views/profile/reset.py:73 msgid "Email" -msgstr "" +msgstr "メール" #: authentication/serializers/password_mfa.py:29 #: users/templates/users/forgot_password.html:107 msgid "The {} cannot be empty" -msgstr "" +msgstr "{} 空にしてはならない" #: authentication/serializers/token.py:79 perms/serializers/permission.py:30 #: perms/serializers/permission.py:61 users/serializers/user.py:203 msgid "Is valid" -msgstr "" +msgstr "有効です" #: authentication/templates/authentication/_access_key_modal.html:6 msgid "API key list" -msgstr "" +msgstr "APIキーリスト" #: authentication/templates/authentication/_access_key_modal.html:18 msgid "Using api key sign api header, every requests header difference" -msgstr "" +msgstr "APIキー記号APIヘッダーを使用すると、すべてのリクエストヘッダーの違い" #: authentication/templates/authentication/_access_key_modal.html:19 msgid "docs" -msgstr "" +msgstr "ドキュメント" #: authentication/templates/authentication/_access_key_modal.html:30 #: users/serializers/group.py:35 msgid "ID" -msgstr "" +msgstr "ID" #: authentication/templates/authentication/_access_key_modal.html:33 #: terminal/notifications.py:96 terminal/notifications.py:144 msgid "Date" -msgstr "" +msgstr "日付" #: authentication/templates/authentication/_access_key_modal.html:48 msgid "Show" -msgstr "" +msgstr "表示" #: authentication/templates/authentication/_access_key_modal.html:66 #: settings/serializers/security.py:39 users/models/user.py:559 #: users/serializers/profile.py:116 users/templates/users/mfa_setting.html:61 #: users/templates/users/user_verify_mfa.html:36 msgid "Disable" -msgstr "" +msgstr "無効化" #: authentication/templates/authentication/_access_key_modal.html:67 #: users/models/user.py:560 users/serializers/profile.py:117 #: users/templates/users/mfa_setting.html:26 #: users/templates/users/mfa_setting.html:68 msgid "Enable" -msgstr "" +msgstr "有効化" #: authentication/templates/authentication/_access_key_modal.html:147 msgid "Delete success" -msgstr "" +msgstr "削除成功" #: authentication/templates/authentication/_access_key_modal.html:155 #: authentication/templates/authentication/_mfa_confirm_modal.html:53 #: templates/_modal.html:22 tickets/const.py:44 msgid "Close" -msgstr "" +msgstr "閉じる" #: authentication/templates/authentication/_captcha_field.html:8 msgid "Play CAPTCHA as audio file" -msgstr "" +msgstr "CAPTCHAをオーディオファイルとして再生する" #: authentication/templates/authentication/_mfa_confirm_modal.html:5 msgid "MFA confirm" -msgstr "" +msgstr "MFA確認" #: authentication/templates/authentication/_mfa_confirm_modal.html:17 msgid "Need MFA for view auth" -msgstr "" +msgstr "ビューオートのためにMFAが必要" #: authentication/templates/authentication/_mfa_confirm_modal.html:20 #: authentication/templates/authentication/auth_fail_flash_message_standalone.html:37 #: templates/_modal.html:23 templates/flash_message_standalone.html:37 #: users/templates/users/user_password_verify.html:20 msgid "Confirm" -msgstr "" +msgstr "確認" #: authentication/templates/authentication/_mfa_confirm_modal.html:25 msgid "Code error" -msgstr "" +msgstr "コードエラー" #: authentication/templates/authentication/_msg_different_city.html:3 #: authentication/templates/authentication/_msg_oauth_bind.html:3 @@ -2280,116 +2391,125 @@ msgstr "" #: users/templates/users/_msg_reset_mfa.html:4 #: users/templates/users/_msg_reset_ssh_key.html:4 msgid "Hello" -msgstr "" +msgstr "こんにちは" #: authentication/templates/authentication/_msg_different_city.html:6 msgid "Your account has remote login behavior, please pay attention" -msgstr "" +msgstr "アカウントにリモートログイン動作があります。注意してください" #: authentication/templates/authentication/_msg_different_city.html:10 msgid "Login time" -msgstr "" +msgstr "ログイン時間" #: authentication/templates/authentication/_msg_different_city.html:16 msgid "" "If you suspect that the login behavior is abnormal, please modify the " "account password in time." msgstr "" +"ログイン動作が異常であると疑われる場合は、時間内にアカウントのパスワードを変" +"更してください。" #: authentication/templates/authentication/_msg_oauth_bind.html:6 msgid "Your account has just been bound to" -msgstr "" +msgstr "アカウントはにバインドされています" #: authentication/templates/authentication/_msg_oauth_bind.html:17 msgid "If the operation is not your own, unbind and change the password." -msgstr "" +msgstr "操作が独自のものでない場合は、パスワードをバインド解除して変更します。" #: authentication/templates/authentication/_msg_reset_password.html:6 msgid "" "Please click the link below to reset your password, if not your request, " "concern your account security" msgstr "" +"下のリンクをクリックしてパスワードをリセットしてください。リクエストがない場" +"合は、アカウントのセキュリティに関係します。" #: authentication/templates/authentication/_msg_reset_password.html:10 msgid "Click here reset password" -msgstr "" +msgstr "ここをクリックしてパスワードをリセット" #: authentication/templates/authentication/_msg_reset_password.html:16 #: users/templates/users/_msg_user_created.html:22 msgid "This link is valid for 1 hour. After it expires" -msgstr "" +msgstr "このリンクは1時間有効です。有効期限が切れた後" #: authentication/templates/authentication/_msg_reset_password.html:17 #: users/templates/users/_msg_user_created.html:23 msgid "request new one" -msgstr "" +msgstr "新しいものを要求する" #: authentication/templates/authentication/_msg_reset_password_code.html:12 #: terminal/models/session/sharing.py:26 terminal/models/session/sharing.py:80 #: users/forms/profile.py:104 users/templates/users/forgot_password.html:65 msgid "Verify code" -msgstr "" +msgstr "コードの確認" #: authentication/templates/authentication/_msg_reset_password_code.html:15 msgid "" "Copy the verification code to the Reset Password page to reset the password." -msgstr "" +msgstr "パスワードリセットページにcaptchaをコピーし、パスワードをリセットする" #: authentication/templates/authentication/_msg_reset_password_code.html:18 msgid "The validity period of the verification code is one minute" -msgstr "" +msgstr "認証コードの有効時間は 1 分" #: authentication/templates/authentication/_msg_rest_password_success.html:5 msgid "Your password has just been successfully updated" -msgstr "" +msgstr "パスワードが正常に更新されました" #: authentication/templates/authentication/_msg_rest_password_success.html:9 #: authentication/templates/authentication/_msg_rest_public_key_success.html:9 msgid "Browser" -msgstr "" +msgstr "ブラウザ" #: authentication/templates/authentication/_msg_rest_password_success.html:13 msgid "" "If the password update was not initiated by you, your account may have " "security issues" msgstr "" +"パスワードの更新が開始されなかった場合、アカウントにセキュリティ上の問題があ" +"る可能性があります" #: authentication/templates/authentication/_msg_rest_password_success.html:14 #: authentication/templates/authentication/_msg_rest_public_key_success.html:14 msgid "If you have any questions, you can contact the administrator" -msgstr "" +msgstr "質問があれば、管理者に連絡できます" #: authentication/templates/authentication/_msg_rest_public_key_success.html:5 msgid "Your public key has just been successfully updated" -msgstr "" +msgstr "公開鍵が正常に更新されました" #: authentication/templates/authentication/_msg_rest_public_key_success.html:13 msgid "" "If the public key update was not initiated by you, your account may have " "security issues" msgstr "" +"公開鍵の更新が開始されなかった場合、アカウントにセキュリティ上の問題がある可" +"能性があります" #: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28 #: templates/flash_message_standalone.html:28 tickets/const.py:17 msgid "Cancel" -msgstr "" +msgstr "キャンセル" #: authentication/templates/authentication/login.html:221 msgid "Welcome back, please enter username and password to login" msgstr "" +"おかえりなさい、ログインするためにユーザー名とパスワードを入力してください" #: authentication/templates/authentication/login.html:264 #: templates/_header_bar.html:89 msgid "Login" -msgstr "" +msgstr "ログイン" #: authentication/templates/authentication/login.html:271 msgid "More login options" -msgstr "" +msgstr "その他のログインオプション" #: authentication/templates/authentication/login_mfa.html:6 msgid "MFA Auth" -msgstr "" +msgstr "MFA マルチファクタ認証" #: authentication/templates/authentication/login_mfa.html:19 #: users/templates/users/user_otp_check_password.html:12 @@ -2397,234 +2517,237 @@ msgstr "" #: users/templates/users/user_otp_enable_install_app.html:29 #: users/templates/users/user_verify_mfa.html:30 msgid "Next" -msgstr "" +msgstr "次へ" #: authentication/templates/authentication/login_mfa.html:22 msgid "Can't provide security? Please contact the administrator!" -msgstr "" +msgstr "セキュリティを提供できませんか? 管理者に連絡してください!" #: authentication/templates/authentication/login_wait_confirm.html:41 msgid "Refresh" -msgstr "" +msgstr "リフレッシュ" #: authentication/templates/authentication/login_wait_confirm.html:46 msgid "Copy link" -msgstr "" +msgstr "リンクのコピー" #: authentication/templates/authentication/login_wait_confirm.html:51 msgid "Return" -msgstr "" +msgstr "返品" #: authentication/templates/authentication/login_wait_confirm.html:116 msgid "Copy success" -msgstr "" +msgstr "コピー成功" #: authentication/utils.py:28 common/utils/ip/geoip/utils.py:24 #: xpack/plugins/cloud/const.py:27 msgid "LAN" -msgstr "" +msgstr "ローカルエリアネットワーク" #: authentication/views/dingtalk.py:42 msgid "DingTalk Error, Please contact your system administrator" -msgstr "" +msgstr "DingTalkエラー、システム管理者に連絡してください" #: authentication/views/dingtalk.py:45 msgid "DingTalk Error" -msgstr "" +msgstr "DingTalkエラー" #: authentication/views/dingtalk.py:57 authentication/views/feishu.py:52 #: authentication/views/wecom.py:56 msgid "" "The system configuration is incorrect. Please contact your administrator" -msgstr "" +msgstr "システム設定が正しくありません。管理者に連絡してください" #: authentication/views/dingtalk.py:81 msgid "DingTalk is already bound" -msgstr "" +msgstr "DingTalkはすでにバインドされています" #: authentication/views/dingtalk.py:149 authentication/views/wecom.py:148 msgid "Invalid user_id" -msgstr "" +msgstr "無効なuser_id" #: authentication/views/dingtalk.py:165 msgid "DingTalk query user failed" -msgstr "" +msgstr "DingTalkクエリユーザーが失敗しました" #: authentication/views/dingtalk.py:174 msgid "The DingTalk is already bound to another user" -msgstr "" +msgstr "DingTalkはすでに別のユーザーにバインドされています" #: authentication/views/dingtalk.py:181 msgid "Binding DingTalk successfully" -msgstr "" +msgstr "DingTalkのバインドに成功" #: authentication/views/dingtalk.py:237 authentication/views/dingtalk.py:291 msgid "Failed to get user from DingTalk" -msgstr "" +msgstr "DingTalkからユーザーを取得できませんでした" #: authentication/views/dingtalk.py:244 authentication/views/dingtalk.py:298 msgid "Please login with a password and then bind the DingTalk" -msgstr "" +msgstr "パスワードでログインし、DingTalkをバインドしてください" #: authentication/views/feishu.py:40 msgid "FeiShu Error" -msgstr "" +msgstr "FeiShuエラー" #: authentication/views/feishu.py:88 msgid "FeiShu is already bound" -msgstr "" +msgstr "FeiShuはすでにバインドされています" #: authentication/views/feishu.py:130 msgid "FeiShu query user failed" -msgstr "" +msgstr "FeiShuクエリユーザーが失敗しました" #: authentication/views/feishu.py:139 msgid "The FeiShu is already bound to another user" -msgstr "" +msgstr "FeiShuはすでに別のユーザーにバインドされています" #: authentication/views/feishu.py:146 msgid "Binding FeiShu successfully" -msgstr "" +msgstr "本を飛ばすのバインドに成功" #: authentication/views/feishu.py:198 msgid "Failed to get user from FeiShu" -msgstr "" +msgstr "本を飛ばすからユーザーを取得できませんでした" #: authentication/views/feishu.py:205 msgid "Please login with a password and then bind the FeiShu" -msgstr "" +msgstr "パスワードでログインしてから本を飛ばすをバインドしてください" #: authentication/views/login.py:181 msgid "Redirecting" -msgstr "" +msgstr "リダイレクト" #: authentication/views/login.py:182 msgid "Redirecting to {} authentication" -msgstr "" +msgstr "{} 認証へのリダイレクト" #: authentication/views/login.py:205 msgid "Please enable cookies and try again." -msgstr "" +msgstr "クッキーを有効にして、もう一度お試しください。" #: authentication/views/login.py:307 msgid "" "Wait for {} confirm, You also can copy link to her/him
\n" " Don't close this page" msgstr "" +"{} 確認を待ちます。彼女/彼へのリンクをコピーすることもできます
\n" +" このページを閉じないでください" #: authentication/views/login.py:312 msgid "No ticket found" -msgstr "" +msgstr "チケットが見つかりません" #: authentication/views/login.py:348 msgid "Logout success" -msgstr "" +msgstr "ログアウト成功" #: authentication/views/login.py:349 msgid "Logout success, return login page" -msgstr "" +msgstr "ログアウト成功、ログインページを返す" #: authentication/views/wecom.py:41 msgid "WeCom Error, Please contact your system administrator" -msgstr "" +msgstr "企業微信エラー、システム管理者に連絡してください" #: authentication/views/wecom.py:44 msgid "WeCom Error" -msgstr "" +msgstr "企業微信エラー" #: authentication/views/wecom.py:163 msgid "WeCom query user failed" -msgstr "" +msgstr "企業微信ユーザーの問合せに失敗しました" #: authentication/views/wecom.py:172 msgid "The WeCom is already bound to another user" -msgstr "" +msgstr "この企業の微信はすでに他のユーザーをバインドしている。" #: authentication/views/wecom.py:179 msgid "Binding WeCom successfully" -msgstr "" +msgstr "企業の微信のバインドに成功" #: authentication/views/wecom.py:231 authentication/views/wecom.py:285 msgid "Failed to get user from WeCom" -msgstr "" +msgstr "企業の微信からユーザーを取得できませんでした" #: authentication/views/wecom.py:238 authentication/views/wecom.py:292 msgid "Please login with a password and then bind the WeCom" -msgstr "" +msgstr "パスワードでログインしてからWeComをバインドしてください" #: common/const/__init__.py:6 #, python-format msgid "%(name)s was created successfully" -msgstr "" +msgstr "%(name)s が正常に作成されました" #: common/const/__init__.py:7 #, python-format msgid "%(name)s was updated successfully" -msgstr "" +msgstr "%(name)s は正常に更新されました" #: common/const/choices.py:10 msgid "Manual trigger" -msgstr "" +msgstr "手動トリガー" #: common/const/choices.py:11 msgid "Timing trigger" -msgstr "" +msgstr "タイミングトリガー" #: common/const/choices.py:15 xpack/plugins/change_auth_plan/models/base.py:183 msgid "Ready" -msgstr "" +msgstr "の準備を" #: common/const/choices.py:16 tickets/const.py:29 tickets/const.py:39 msgid "Pending" -msgstr "" +msgstr "未定" #: common/const/choices.py:17 msgid "Running" msgstr "" #: common/const/choices.py:21 +#, fuzzy msgid "Canceled" -msgstr "" +msgstr "キャンセル" #: common/db/encoder.py:11 msgid "ugettext_lazy" -msgstr "" +msgstr "ugettext_lazy" #: common/db/fields.py:94 msgid "Marshal dict data to char field" -msgstr "" +msgstr "チャーフィールドへのマーシャルディクトデータ" #: common/db/fields.py:98 msgid "Marshal dict data to text field" -msgstr "" +msgstr "テキストフィールドへのマーシャルディクトデータ" #: common/db/fields.py:110 msgid "Marshal list data to char field" -msgstr "" +msgstr "元帥リストデータをチャーフィールドに" #: common/db/fields.py:114 msgid "Marshal list data to text field" -msgstr "" +msgstr "マーシャルリストデータをテキストフィールドに" #: common/db/fields.py:118 msgid "Marshal data to char field" -msgstr "" +msgstr "チャーフィールドへのマーシャルデータ" #: common/db/fields.py:122 msgid "Marshal data to text field" -msgstr "" +msgstr "テキストフィールドへのマーシャルデータ" #: common/db/fields.py:164 msgid "Encrypt field using Secret Key" -msgstr "" +msgstr "Secret Keyを使用したフィールドの暗号化" #: common/db/models.py:76 msgid "Updated by" -msgstr "" +msgstr "によって更新" #: common/drf/exc_handlers.py:25 msgid "Object" -msgstr "" +msgstr "オブジェクト" #: common/drf/fields.py:77 tickets/serializers/ticket/common.py:58 #: xpack/plugins/change_auth_plan/serializers/asset.py:64 @@ -2633,12 +2756,12 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:101 #: xpack/plugins/cloud/serializers/account_attrs.py:56 msgid "This field is required." -msgstr "" +msgstr "このフィールドは必須です。" #: common/drf/fields.py:78 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." -msgstr "" +msgstr "%s オブジェクトは存在しません。" #: common/drf/fields.py:79 #, python-brace-format @@ -2650,146 +2773,149 @@ msgid "Invalid data type, should be list" msgstr "" #: common/drf/fields.py:156 +#, fuzzy msgid "Invalid choice: {}" -msgstr "" +msgstr "無効なIP" #: common/drf/parsers/base.py:17 msgid "The file content overflowed (The maximum length `{}` bytes)" -msgstr "" +msgstr "ファイルの内容がオーバーフローしました (最大長 '{}' バイト)" #: common/drf/parsers/base.py:159 msgid "Parse file error: {}" -msgstr "" +msgstr "解析ファイルエラー: {}" #: common/drf/serializers/common.py:86 msgid "Children" msgstr "" #: common/drf/serializers/common.py:94 +#, fuzzy msgid "File" -msgstr "" +msgstr "ファイル名" #: common/exceptions.py:15 #, python-format msgid "%s object does not exist." -msgstr "" +msgstr "%s オブジェクトは存在しません。" #: common/exceptions.py:25 msgid "Someone else is doing this. Please wait for complete" -msgstr "" +msgstr "他の誰かがこれをやっています。完了をお待ちください" #: common/exceptions.py:30 msgid "Your request timeout" -msgstr "" +msgstr "リクエストのタイムアウト" #: common/exceptions.py:35 msgid "M2M reverse not allowed" -msgstr "" +msgstr "M2Mリバースは許可されません" #: common/exceptions.py:41 msgid "Is referenced by other objects and cannot be deleted" -msgstr "" +msgstr "他のオブジェクトによって参照され、削除できません。" #: common/exceptions.py:48 msgid "This action require confirm current user" -msgstr "" +msgstr "このアクションでは、MFAの確認が必要です。" #: common/exceptions.py:56 msgid "Unexpect error occur" -msgstr "" +msgstr "予期しないエラーが発生します" #: common/mixins/api/action.py:52 msgid "Request file format may be wrong" -msgstr "" +msgstr "リクエストファイルの形式が間違っている可能性があります" #: common/mixins/models.py:33 msgid "is discard" -msgstr "" +msgstr "は破棄されます" #: common/mixins/models.py:34 msgid "discard time" -msgstr "" +msgstr "時間を捨てる" #: common/mixins/views.py:58 msgid "Export all" -msgstr "" +msgstr "すべてエクスポート" #: common/mixins/views.py:60 msgid "Export only selected items" -msgstr "" +msgstr "選択項目のみエクスポート" #: common/mixins/views.py:65 #, python-format msgid "Export filtered: %s" -msgstr "" +msgstr "検索のエクスポート: %s" #: common/plugins/es.py:28 msgid "Invalid elasticsearch config" -msgstr "" +msgstr "無効なElasticsearch構成" #: common/plugins/es.py:33 msgid "Not Support Elasticsearch8" -msgstr "" +msgstr "サポートされていません Elasticsearch8" #: common/sdk/im/exceptions.py:23 msgid "Network error, please contact system administrator" -msgstr "" +msgstr "ネットワークエラー、システム管理者に連絡してください" #: common/sdk/im/wecom/__init__.py:15 msgid "WeCom error, please contact system administrator" -msgstr "" +msgstr "企業微信エラー、システム管理者に連絡してください" #: common/sdk/sms/alibaba.py:56 msgid "Signature does not match" -msgstr "" +msgstr "署名が一致しない" #: common/sdk/sms/cmpp2.py:46 msgid "sp_id is 6 bits" -msgstr "" +msgstr "SP idは6ビット" #: common/sdk/sms/cmpp2.py:216 msgid "Failed to connect to the CMPP gateway server, err: {}" -msgstr "" +msgstr "接続ゲートウェイサーバエラー, 非: {}" #: common/sdk/sms/endpoint.py:16 msgid "Alibaba cloud" -msgstr "" +msgstr "アリ雲" #: common/sdk/sms/endpoint.py:17 msgid "Tencent cloud" -msgstr "" +msgstr "テンセント雲" #: common/sdk/sms/endpoint.py:18 xpack/plugins/cloud/const.py:13 msgid "Huawei Cloud" -msgstr "" +msgstr "華為雲" #: common/sdk/sms/endpoint.py:19 msgid "CMPP v2.0" -msgstr "" +msgstr "CMPP v2.0" #: common/sdk/sms/endpoint.py:30 msgid "SMS provider not support: {}" -msgstr "" +msgstr "SMSプロバイダーはサポートしていません: {}" #: common/sdk/sms/endpoint.py:51 msgid "SMS verification code signature or template invalid" -msgstr "" +msgstr "SMS検証コードの署名またはテンプレートが無効" #: common/sdk/sms/exceptions.py:8 msgid "The verification code has expired. Please resend it" -msgstr "" +msgstr "確認コードの有効期限が切れています。再送信してください" #: common/sdk/sms/exceptions.py:13 msgid "The verification code is incorrect" -msgstr "" +msgstr "確認コードが正しくありません" #: common/sdk/sms/exceptions.py:18 msgid "Please wait {} seconds before sending" -msgstr "" +msgstr "{} 秒待ってから送信してください" #: common/tasks.py:13 +#, fuzzy msgid "Send email" -msgstr "" +msgstr "ユーザーを送信" #: common/tasks.py:40 msgid "Send email attachment" @@ -2797,43 +2923,44 @@ msgstr "" #: common/utils/ip/geoip/utils.py:26 msgid "Invalid ip" -msgstr "" +msgstr "無効なIP" #: common/utils/ip/utils.py:78 +#, fuzzy msgid "Invalid address" -msgstr "" +msgstr "署名が無効です。" #: common/validators.py:14 msgid "Special char not allowed" -msgstr "" +msgstr "特別なcharは許可されていません" #: common/validators.py:32 msgid "This field must be unique." -msgstr "" +msgstr "このフィールドは一意である必要があります。" #: common/validators.py:40 msgid "Should not contains special characters" -msgstr "" +msgstr "特殊文字を含むべきではない" #: common/validators.py:46 msgid "The mobile phone number format is incorrect" -msgstr "" +msgstr "携帯電話番号の形式が正しくありません" #: jumpserver/conf.py:413 msgid "Create account successfully" -msgstr "" +msgstr "アカウントを正常に作成" #: jumpserver/conf.py:415 msgid "Your account has been created successfully" -msgstr "" +msgstr "アカウントが正常に作成されました" #: jumpserver/context_processor.py:12 msgid "JumpServer Open Source Bastion Host" -msgstr "" +msgstr "JumpServer オープンソースの要塞ホスト" #: jumpserver/views/celery_flower.py:23 msgid "

Flower service unavailable, check it

" -msgstr "" +msgstr "

フラワーサービス利用不可、チェック

" #: jumpserver/views/other.py:26 msgid "" @@ -2841,10 +2968,16 @@ msgid "" "configure nginx for url distribution, If you see this page, " "prove that you are not accessing the nginx listening port. Good luck." msgstr "" +"
Lunaは個別にデプロイされたプログラムです。Luna、kokoをデプロイする必要" +"があります。urlディストリビューションにnginxを設定します。
この" +"ページが表示されている場合は、nginxリスニングポートにアクセスしていないことを" +"証明してください。頑張ってください。" #: jumpserver/views/other.py:70 msgid "Websocket server run on port: {}, you should proxy it on nginx" msgstr "" +"Websocket サーバーはport: {}で実行されます。nginxでプロキシする必要がありま" +"す。" #: jumpserver/views/other.py:84 msgid "" @@ -2852,42 +2985,48 @@ msgid "" "configure nginx for url distribution, If you see this page, " "prove that you are not accessing the nginx listening port. Good luck." msgstr "" +"
Kokoは個別にデプロイされているプログラムです。Kokoをデプロイする必要が" +"あります。URL配布用にnginxを設定します。
このページが表示されて" +"いる場合は、nginxリスニングポートにアクセスしていないことを証明してください。" +"頑張ってください。" #: notifications/apps.py:7 msgid "Notifications" -msgstr "" +msgstr "通知" #: notifications/backends/__init__.py:13 msgid "Site message" -msgstr "" +msgstr "サイトメッセージ" #: notifications/models/notification.py:14 msgid "receive backend" -msgstr "" +msgstr "メッセージのバックエンド" #: notifications/models/notification.py:17 msgid "User message" -msgstr "" +msgstr "ユーザメッセージ" #: notifications/models/notification.py:20 msgid "{} subscription" -msgstr "" +msgstr "{} 購読" #: notifications/models/notification.py:32 msgid "System message" -msgstr "" +msgstr "システムメッセージ" #: notifications/notifications.py:46 msgid "Publish the station message" msgstr "" #: ops/ansible/inventory.py:75 +#, fuzzy msgid "No account available" -msgstr "" +msgstr "利用できないアカウント" #: ops/ansible/inventory.py:178 +#, fuzzy msgid "Ansible disabled" -msgstr "" +msgstr "ユーザーが無効になりました。" #: ops/ansible/inventory.py:194 msgid "Skip hosts below:" @@ -2895,31 +3034,33 @@ msgstr "" #: ops/api/celery.py:63 ops/api/celery.py:78 msgid "Waiting task start" -msgstr "" +msgstr "タスク開始待ち" #: ops/apps.py:9 ops/notifications.py:16 msgid "App ops" -msgstr "" +msgstr "アプリ操作" #: ops/const.py:6 msgid "Push" msgstr "" #: ops/const.py:7 +#, fuzzy msgid "Verify" -msgstr "" +msgstr "確認済み" #: ops/const.py:8 msgid "Collect" msgstr "" #: ops/const.py:9 +#, fuzzy msgid "Change password" -msgstr "" +msgstr "パスワードの変更" #: ops/const.py:19 xpack/plugins/change_auth_plan/models/base.py:27 msgid "Custom password" -msgstr "" +msgstr "カスタムパスワード" #: ops/exception.py:6 msgid "no valid program entry found." @@ -2927,36 +3068,37 @@ msgstr "" #: ops/mixin.py:25 ops/mixin.py:88 settings/serializers/auth/ldap.py:73 msgid "Cycle perform" -msgstr "" +msgstr "サイクル実行" #: ops/mixin.py:29 ops/mixin.py:86 ops/mixin.py:105 #: settings/serializers/auth/ldap.py:70 msgid "Regularly perform" -msgstr "" +msgstr "定期的に実行する" #: ops/mixin.py:108 msgid "Interval" -msgstr "" +msgstr "間隔" #: ops/mixin.py:118 msgid "* Please enter a valid crontab expression" -msgstr "" +msgstr "* 有効なcrontab式を入力してください" #: ops/mixin.py:125 msgid "Range {} to {}" -msgstr "" +msgstr "{} から {} までの範囲" #: ops/mixin.py:136 msgid "Require periodic or regularly perform setting" -msgstr "" +msgstr "定期的または定期的に設定を行う必要があります" #: ops/models/adhoc.py:18 ops/models/job.py:31 +#, fuzzy msgid "Powershell" -msgstr "" +msgstr "PowerShell" #: ops/models/adhoc.py:22 msgid "Pattern" -msgstr "" +msgstr "パターン" #: ops/models/adhoc.py:24 ops/models/job.py:38 msgid "Module" @@ -2965,30 +3107,33 @@ msgstr "" #: ops/models/adhoc.py:25 ops/models/celery.py:54 ops/models/job.py:36 #: terminal/models/component/task.py:17 msgid "Args" -msgstr "" +msgstr "アルグ" #: ops/models/adhoc.py:26 ops/models/base.py:16 ops/models/base.py:53 #: ops/models/job.py:43 ops/models/job.py:107 ops/models/playbook.py:16 #: terminal/models/session/sharing.py:24 msgid "Creator" -msgstr "" +msgstr "作成者" #: ops/models/base.py:19 +#, fuzzy msgid "Account policy" -msgstr "" +msgstr "アカウントキー" #: ops/models/base.py:20 +#, fuzzy msgid "Last execution" -msgstr "" +msgstr "コマンド実行" #: ops/models/base.py:22 +#, fuzzy msgid "Date last run" -msgstr "" +msgstr "最終同期日" #: ops/models/base.py:51 ops/models/job.py:105 #: xpack/plugins/cloud/models.py:172 msgid "Result" -msgstr "" +msgstr "結果" #: ops/models/base.py:52 ops/models/job.py:106 msgid "Summary" @@ -2996,22 +3141,23 @@ msgstr "" #: ops/models/celery.py:55 terminal/models/component/task.py:18 msgid "Kwargs" -msgstr "" +msgstr "クワーグ" #: ops/models/celery.py:56 tickets/models/comment.py:13 #: tickets/models/ticket/general.py:43 tickets/models/ticket/general.py:278 #: tickets/serializers/ticket/ticket.py:21 msgid "State" -msgstr "" +msgstr "状態" #: ops/models/celery.py:57 terminal/models/session/sharing.py:111 #: tickets/const.py:25 xpack/plugins/change_auth_plan/models/base.py:188 msgid "Finished" -msgstr "" +msgstr "終了" #: ops/models/celery.py:58 +#, fuzzy msgid "Date published" -msgstr "" +msgstr "終了日" #: ops/models/job.py:21 msgid "Adhoc" @@ -3063,53 +3209,57 @@ msgstr "" #: ops/notifications.py:17 msgid "Server performance" -msgstr "" +msgstr "サーバーのパフォーマンス" #: ops/notifications.py:23 msgid "Terminal health check warning" -msgstr "" +msgstr "ターミナルヘルスチェックの警告" #: ops/notifications.py:68 #, python-brace-format msgid "The terminal is offline: {name}" -msgstr "" +msgstr "ターミナルはオフラインです: {name}" #: ops/notifications.py:73 #, python-brace-format msgid "Disk used more than {max_threshold}%: => {value}" -msgstr "" +msgstr "{max_threshold}%: => {value} を超えるディスクを使用" #: ops/notifications.py:78 #, python-brace-format msgid "Memory used more than {max_threshold}%: => {value}" -msgstr "" +msgstr "{max_threshold}%: => {value} を超える使用メモリ" #: ops/notifications.py:83 #, python-brace-format msgid "CPU load more than {max_threshold}: => {value}" -msgstr "" +msgstr "{max_threshold} を超えるCPUロード: => {value}" #: ops/serializers/job.py:10 +#, fuzzy msgid "Run after save" -msgstr "" +msgstr "システムユーザーの実行" #: ops/serializers/job.py:11 +#, fuzzy msgid "Job type" -msgstr "" +msgstr "Docタイプ" #: ops/signal_handlers.py:65 terminal/models/applet/host.py:108 #: terminal/models/component/task.py:26 #: xpack/plugins/gathered_user/models.py:68 msgid "Task" -msgstr "" +msgstr "タスク" #: ops/tasks.py:28 +#, fuzzy msgid "Run ansible task" -msgstr "" +msgstr "アセットの実行" #: ops/tasks.py:35 +#, fuzzy msgid "Run ansible task execution" -msgstr "" +msgstr "インスタンスタスクの同期実行" #: ops/tasks.py:48 msgid "Periodic clear celery tasks" @@ -3117,64 +3267,68 @@ msgstr "" #: ops/tasks.py:50 msgid "Clean celery log period" -msgstr "" +msgstr "きれいなセロリログ期間" #: ops/tasks.py:67 +#, fuzzy msgid "Clear celery periodic tasks" -msgstr "" +msgstr "きれいなセロリログ期間" #: ops/tasks.py:90 msgid "Create or update periodic tasks" msgstr "" #: ops/tasks.py:98 +#, fuzzy msgid "Periodic check service performance" -msgstr "" +msgstr "定期的なパフォーマンス" #: ops/templates/ops/celery_task_log.html:4 msgid "Task log" -msgstr "" +msgstr "タスクログ" #: ops/utils.py:64 msgid "Update task content: {}" -msgstr "" +msgstr "タスク内容の更新: {}" #: orgs/api.py:67 msgid "The current organization ({}) cannot be deleted" -msgstr "" +msgstr "現在の組織 ({}) は削除できません" #: orgs/api.py:72 msgid "" "LDAP synchronization is set to the current organization. Please switch to " "another organization before deleting" msgstr "" +"LDAP 同期は現在の組織に設定されます。削除する前に別の組織に切り替えてください" #: orgs/api.py:81 msgid "The organization have resource ({}) cannot be deleted" -msgstr "" +msgstr "組織のリソース ({}) は削除できません" #: orgs/apps.py:7 rbac/tree.py:113 msgid "App organizations" -msgstr "" +msgstr "アプリ組織" #: orgs/mixins/models.py:57 orgs/mixins/serializers.py:25 orgs/models.py:88 #: rbac/const.py:7 rbac/models/rolebinding.py:48 #: rbac/serializers/rolebinding.py:40 settings/serializers/auth/ldap.py:63 #: tickets/models/ticket/general.py:301 tickets/serializers/ticket/ticket.py:62 msgid "Organization" -msgstr "" +msgstr "組織" #: orgs/mixins/serializers.py:26 rbac/serializers/rolebinding.py:23 msgid "Org name" -msgstr "" +msgstr "組織名" #: orgs/models.py:72 +#, fuzzy msgid "Builtin" -msgstr "" +msgstr "内蔵" #: orgs/models.py:80 msgid "GLOBAL" -msgstr "" +msgstr "グローバル組織" #: orgs/models.py:82 msgid "DEFAULT" @@ -3186,27 +3340,29 @@ msgstr "" #: orgs/models.py:90 msgid "Can view root org" -msgstr "" +msgstr "グローバル組織を表示できます" #: orgs/models.py:91 msgid "Can view all joined org" -msgstr "" +msgstr "参加しているすべての組織を表示できます" #: orgs/tasks.py:9 +#, fuzzy msgid "Refresh organization cache" -msgstr "" +msgstr "グローバル組織名" #: perms/apps.py:9 msgid "App permissions" -msgstr "" +msgstr "アプリの権限" #: perms/const.py:12 msgid "Connect" -msgstr "" +msgstr "接続" #: perms/const.py:15 +#, fuzzy msgid "Copy" -msgstr "" +msgstr "リンクのコピー" #: perms/const.py:16 msgid "Paste" @@ -3217,76 +3373,78 @@ msgid "Transfer" msgstr "" #: perms/const.py:27 +#, fuzzy msgid "Clipboard" -msgstr "" +msgstr "クリップボードのコピー" #: perms/models/asset_permission.py:66 perms/models/perm_token.py:18 #: perms/serializers/permission.py:29 perms/serializers/permission.py:59 #: tickets/models/ticket/apply_application.py:28 #: tickets/models/ticket/apply_asset.py:18 msgid "Actions" -msgstr "" +msgstr "アクション" #: perms/models/asset_permission.py:73 msgid "From ticket" -msgstr "" +msgstr "チケットから" #: perms/models/asset_permission.py:81 msgid "Asset permission" -msgstr "" +msgstr "資産権限" #: perms/models/perm_node.py:55 msgid "Ungrouped" -msgstr "" +msgstr "グループ化されていません" #: perms/models/perm_node.py:57 msgid "Favorite" -msgstr "" +msgstr "お気に入り" #: perms/models/perm_node.py:104 msgid "Permed asset" -msgstr "" +msgstr "許可された資産" #: perms/models/perm_node.py:106 msgid "Can view my assets" -msgstr "" +msgstr "私の資産を見ることができます" #: perms/models/perm_node.py:107 msgid "Can view user assets" -msgstr "" +msgstr "ユーザー資産を表示できます" #: perms/models/perm_node.py:108 msgid "Can view usergroup assets" -msgstr "" +msgstr "ユーザーグループの資産を表示できます" #: perms/models/perm_node.py:119 +#, fuzzy msgid "Permed account" -msgstr "" +msgstr "アカウントを集める" #: perms/notifications.py:12 perms/notifications.py:44 msgid "today" -msgstr "" +msgstr "今" #: perms/notifications.py:15 msgid "You permed assets is about to expire" -msgstr "" +msgstr "パーマ資産の有効期限が近づいています" #: perms/notifications.py:20 msgid "permed assets" -msgstr "" +msgstr "パーマ資産" #: perms/notifications.py:59 msgid "Asset permissions is about to expire" -msgstr "" +msgstr "資産権限の有効期限が近づいています" #: perms/notifications.py:64 msgid "asset permissions of organization {}" -msgstr "" +msgstr "組織 {} の資産権限" #: perms/serializers/permission.py:31 perms/serializers/permission.py:60 #: users/serializers/user.py:100 users/serializers/user.py:205 msgid "Is expired" -msgstr "" +msgstr "期限切れです" #: perms/templates/perms/_msg_item_permissions_expire.html:7 #: perms/templates/perms/_msg_permed_items_expire.html:7 @@ -3296,667 +3454,675 @@ msgid "" " The following %(item_type)s will expire in %(count)s days\n" " " msgstr "" +"\n" +" 次の %(item_type)s は %(count)s 日以内に期限切れになります\n" +" " #: perms/templates/perms/_msg_permed_items_expire.html:21 msgid "If you have any question, please contact the administrator" -msgstr "" +msgstr "質問があったら、管理者に連絡して下さい" #: perms/utils/user_permission.py:627 rbac/tree.py:57 msgid "My assets" -msgstr "" +msgstr "私の資産" #: rbac/api/role.py:34 msgid "Internal role, can't be destroy" -msgstr "" +msgstr "内部の役割は、破壊することはできません" #: rbac/api/role.py:38 msgid "The role has been bound to users, can't be destroy" -msgstr "" +msgstr "ロールはユーザーにバインドされており、破壊することはできません" #: rbac/api/role.py:60 msgid "Internal role, can't be update" -msgstr "" +msgstr "内部ロール、更新できません" #: rbac/api/rolebinding.py:52 msgid "{} at least one system role" -msgstr "" +msgstr "{} 少なくとも1つのシステムロール" #: rbac/apps.py:7 msgid "RBAC" -msgstr "" +msgstr "RBAC" #: rbac/builtin.py:111 msgid "SystemAdmin" -msgstr "" +msgstr "システム管理者" #: rbac/builtin.py:114 msgid "SystemAuditor" -msgstr "" +msgstr "システム監査人" #: rbac/builtin.py:117 msgid "SystemComponent" -msgstr "" +msgstr "システムコンポーネント" #: rbac/builtin.py:123 msgid "OrgAdmin" -msgstr "" +msgstr "組織管理者" #: rbac/builtin.py:126 msgid "OrgAuditor" -msgstr "" +msgstr "監査員を組織する" #: rbac/builtin.py:129 msgid "OrgUser" -msgstr "" +msgstr "組織ユーザー" #: rbac/models/menu.py:13 msgid "Menu permission" -msgstr "" +msgstr "メニュー権限" #: rbac/models/menu.py:15 msgid "Can view console view" -msgstr "" +msgstr "コンソールビューを表示できます" #: rbac/models/menu.py:16 msgid "Can view audit view" -msgstr "" +msgstr "監査ビューを表示できます" #: rbac/models/menu.py:17 msgid "Can view workbench view" -msgstr "" +msgstr "ワークスペースビューを表示できます" #: rbac/models/menu.py:18 msgid "Can view web terminal" -msgstr "" +msgstr "Webターミナルを表示できます" #: rbac/models/menu.py:19 msgid "Can view file manager" -msgstr "" +msgstr "ファイルマネージャを表示できます" #: rbac/models/permission.py:26 rbac/models/role.py:34 msgid "Permissions" -msgstr "" +msgstr "権限" #: rbac/models/role.py:31 rbac/models/rolebinding.py:38 #: settings/serializers/auth/oauth2.py:37 msgid "Scope" -msgstr "" +msgstr "スコープ" #: rbac/models/role.py:36 msgid "Built-in" -msgstr "" +msgstr "内蔵" #: rbac/models/role.py:46 rbac/models/rolebinding.py:44 #: users/models/user.py:685 msgid "Role" -msgstr "" +msgstr "ロール" #: rbac/models/role.py:144 msgid "System role" -msgstr "" +msgstr "システムの役割" #: rbac/models/role.py:152 msgid "Organization role" -msgstr "" +msgstr "組織の役割" #: rbac/models/rolebinding.py:53 msgid "Role binding" -msgstr "" +msgstr "ロールバインディング" #: rbac/models/rolebinding.py:137 msgid "All organizations" -msgstr "" +msgstr "全ての組織" #: rbac/models/rolebinding.py:166 msgid "" "User last role in org, can not be delete, you can remove user from org " "instead" msgstr "" +"ユーザーの最後のロールは削除できません。ユーザーを組織から削除できます。" #: rbac/models/rolebinding.py:173 msgid "Organization role binding" -msgstr "" +msgstr "組織の役割バインディング" #: rbac/models/rolebinding.py:188 msgid "System role binding" -msgstr "" +msgstr "システムロールバインディング" #: rbac/serializers/permission.py:26 users/serializers/profile.py:132 msgid "Perms" -msgstr "" +msgstr "パーマ" #: rbac/serializers/role.py:11 msgid "Scope display" -msgstr "" +msgstr "スコープ表示" #: rbac/serializers/role.py:26 users/serializers/group.py:34 msgid "Users amount" -msgstr "" +msgstr "ユーザー数" #: rbac/serializers/role.py:27 terminal/models/applet/applet.py:21 msgid "Display name" -msgstr "" +msgstr "表示名" #: rbac/serializers/rolebinding.py:22 msgid "Role display" -msgstr "" +msgstr "ロール表示" #: rbac/serializers/rolebinding.py:56 msgid "Has bound this role" -msgstr "" +msgstr "この役割をバインドしました" #: rbac/tree.py:18 rbac/tree.py:19 msgid "All permissions" -msgstr "" +msgstr "すべての権限" #: rbac/tree.py:25 msgid "Console view" -msgstr "" +msgstr "コンソールビュー" #: rbac/tree.py:26 msgid "Workbench view" -msgstr "" +msgstr "ワークスペースビュー" #: rbac/tree.py:27 msgid "Audit view" -msgstr "" +msgstr "監査ビュー" #: rbac/tree.py:28 settings/models.py:156 msgid "System setting" -msgstr "" +msgstr "システム設定" #: rbac/tree.py:29 msgid "Other" -msgstr "" +msgstr "その他" #: rbac/tree.py:41 msgid "Session audits" -msgstr "" +msgstr "セッション監査" #: rbac/tree.py:51 msgid "Cloud import" -msgstr "" +msgstr "クラウドインポート" #: rbac/tree.py:52 msgid "Backup account" -msgstr "" +msgstr "バックアップアカウント" #: rbac/tree.py:53 msgid "Gather account" -msgstr "" +msgstr "アカウントを集める" #: rbac/tree.py:54 msgid "App change auth" -msgstr "" +msgstr "応用改密" #: rbac/tree.py:55 msgid "Asset change auth" -msgstr "" +msgstr "資産の改ざん" #: rbac/tree.py:56 msgid "Terminal setting" -msgstr "" +msgstr "ターミナル設定" #: rbac/tree.py:58 msgid "My apps" -msgstr "" +msgstr "マイアプリ" #: rbac/tree.py:114 msgid "Ticket comment" -msgstr "" +msgstr "チケットコメント" #: rbac/tree.py:115 tickets/models/ticket/general.py:306 msgid "Ticket" -msgstr "" +msgstr "チケット" #: rbac/tree.py:116 msgid "Common setting" -msgstr "" +msgstr "共通設定" #: rbac/tree.py:117 msgid "View permission tree" -msgstr "" +msgstr "権限ツリーの表示" #: rbac/tree.py:118 msgid "Execute batch command" -msgstr "" +msgstr "バッチ実行コマンド" #: settings/api/dingtalk.py:31 settings/api/feishu.py:36 #: settings/api/sms.py:148 settings/api/wecom.py:37 msgid "Test success" -msgstr "" +msgstr "テストの成功" #: settings/api/email.py:20 msgid "Test mail sent to {}, please check" -msgstr "" +msgstr "{}に送信されたテストメールを確認してください" #: settings/api/ldap.py:166 msgid "Synchronization start, please wait." -msgstr "" +msgstr "同期開始、お待ちください。" #: settings/api/ldap.py:170 msgid "Synchronization is running, please wait." -msgstr "" +msgstr "同期が実行中です。しばらくお待ちください。" #: settings/api/ldap.py:175 msgid "Synchronization error: {}" -msgstr "" +msgstr "同期エラー: {}" #: settings/api/ldap.py:213 msgid "Get ldap users is None" -msgstr "" +msgstr "Ldapユーザーを取得するにはNone" #: settings/api/ldap.py:222 msgid "Imported {} users successfully (Organization: {})" -msgstr "" +msgstr "{} 人のユーザーを正常にインポートしました (組織: {})" #: settings/api/sms.py:130 msgid "Invalid SMS platform" -msgstr "" +msgstr "無効なショートメッセージプラットフォーム" #: settings/api/sms.py:136 msgid "test_phone is required" -msgstr "" +msgstr "携帯番号をテストこのフィールドは必須です" #: settings/apps.py:7 msgid "Settings" -msgstr "" +msgstr "設定" #: settings/models.py:36 msgid "Encrypted" -msgstr "" +msgstr "暗号化された" #: settings/models.py:158 msgid "Can change email setting" -msgstr "" +msgstr "メール設定を変更できます" #: settings/models.py:159 msgid "Can change auth setting" -msgstr "" +msgstr "資格認定の設定" #: settings/models.py:160 msgid "Can change system msg sub setting" -msgstr "" +msgstr "システムmsgサブ设定を変更できます" #: settings/models.py:161 msgid "Can change sms setting" -msgstr "" +msgstr "Smsの設定を変えることができます" #: settings/models.py:162 msgid "Can change security setting" -msgstr "" +msgstr "セキュリティ設定を変更できます" #: settings/models.py:163 msgid "Can change clean setting" -msgstr "" +msgstr "きれいな設定を変えることができます" #: settings/models.py:164 msgid "Can change interface setting" -msgstr "" +msgstr "インターフェイスの設定を変えることができます" #: settings/models.py:165 msgid "Can change license setting" -msgstr "" +msgstr "ライセンス設定を変更できます" #: settings/models.py:166 msgid "Can change terminal setting" -msgstr "" +msgstr "ターミナルの設定を変えることができます" #: settings/models.py:167 msgid "Can change other setting" -msgstr "" +msgstr "他の設定を変えることができます" #: settings/serializers/auth/base.py:12 msgid "CAS Auth" -msgstr "" +msgstr "CAS 認証" #: settings/serializers/auth/base.py:13 msgid "OPENID Auth" -msgstr "" +msgstr "OPENID 認証" #: settings/serializers/auth/base.py:14 msgid "RADIUS Auth" -msgstr "" +msgstr "RADIUS 認証" #: settings/serializers/auth/base.py:15 msgid "DingTalk Auth" -msgstr "" +msgstr "くぎ 認証" #: settings/serializers/auth/base.py:16 msgid "FeiShu Auth" -msgstr "" +msgstr "飛本 認証" #: settings/serializers/auth/base.py:17 msgid "WeCom Auth" -msgstr "" +msgstr "企業微信 認証" #: settings/serializers/auth/base.py:18 msgid "SSO Auth" -msgstr "" +msgstr "SSO Token 認証" #: settings/serializers/auth/base.py:19 msgid "SAML2 Auth" -msgstr "" +msgstr "SAML2 認証" #: settings/serializers/auth/base.py:22 settings/serializers/basic.py:38 msgid "Forgot password url" -msgstr "" +msgstr "パスワードのURLを忘れた" #: settings/serializers/auth/base.py:28 msgid "Enable login redirect msg" -msgstr "" +msgstr "ログインリダイレクトの有効化msg" #: settings/serializers/auth/cas.py:10 msgid "CAS" -msgstr "" +msgstr "CAS" #: settings/serializers/auth/cas.py:12 msgid "Enable CAS Auth" -msgstr "" +msgstr "CAS 認証の有効化" #: settings/serializers/auth/cas.py:13 settings/serializers/auth/oidc.py:49 msgid "Server url" -msgstr "" +msgstr "サービス側アドレス" #: settings/serializers/auth/cas.py:16 msgid "Proxy server url" -msgstr "" +msgstr "コールバックアドレス" #: settings/serializers/auth/cas.py:18 settings/serializers/auth/oauth2.py:55 #: settings/serializers/auth/saml2.py:34 msgid "Logout completely" -msgstr "" +msgstr "同期ログアウト" #: settings/serializers/auth/cas.py:23 msgid "Username attr" -msgstr "" +msgstr "ユーザー名のプロパティ" #: settings/serializers/auth/cas.py:26 msgid "Enable attributes map" -msgstr "" +msgstr "属性マップの有効化" #: settings/serializers/auth/cas.py:28 settings/serializers/auth/saml2.py:33 msgid "Rename attr" -msgstr "" +msgstr "マッピングのプロパティ" #: settings/serializers/auth/cas.py:29 msgid "Create user if not" -msgstr "" +msgstr "そうでない場合はユーザーを作成" #: settings/serializers/auth/dingtalk.py:15 msgid "Enable DingTalk Auth" -msgstr "" +msgstr "ピン認証の有効化" #: settings/serializers/auth/feishu.py:14 msgid "Enable FeiShu Auth" -msgstr "" +msgstr "飛本認証の有効化" #: settings/serializers/auth/ldap.py:39 msgid "LDAP" -msgstr "" +msgstr "LDAP" #: settings/serializers/auth/ldap.py:42 msgid "LDAP server" -msgstr "" +msgstr "LDAPサーバー" #: settings/serializers/auth/ldap.py:43 msgid "eg: ldap://localhost:389" -msgstr "" +msgstr "例: ldap://localhost:389" #: settings/serializers/auth/ldap.py:45 msgid "Bind DN" -msgstr "" +msgstr "DN のバインド" #: settings/serializers/auth/ldap.py:50 msgid "User OU" -msgstr "" +msgstr "ユーザー OU" #: settings/serializers/auth/ldap.py:51 msgid "Use | split multi OUs" -msgstr "" +msgstr "使用 | splitマルチ OU" #: settings/serializers/auth/ldap.py:54 msgid "User search filter" -msgstr "" +msgstr "ユーザー検索フィルター" #: settings/serializers/auth/ldap.py:55 #, python-format msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" -msgstr "" +msgstr "選択は (cnまたはuidまたはsAMAccountName)=%(user)s)" #: settings/serializers/auth/ldap.py:58 settings/serializers/auth/oauth2.py:57 #: settings/serializers/auth/oidc.py:37 msgid "User attr map" -msgstr "" +msgstr "ユーザー属性マッピング" #: settings/serializers/auth/ldap.py:59 msgid "" "User attr map present how to map LDAP user attr to jumpserver, username,name," "email is jumpserver attr" msgstr "" +"ユーザー属性マッピングは、LDAPのユーザー属性をjumpserverユーザーにマッピング" +"する方法、username, name,emailはjumpserverのユーザーが必要とする属性です" #: settings/serializers/auth/ldap.py:77 msgid "Connect timeout" -msgstr "" +msgstr "接続タイムアウト" #: settings/serializers/auth/ldap.py:79 msgid "Search paged size" -msgstr "" +msgstr "ページサイズを検索" #: settings/serializers/auth/ldap.py:81 msgid "Enable LDAP auth" -msgstr "" +msgstr "LDAP認証の有効化" #: settings/serializers/auth/oauth2.py:19 msgid "OAuth2" -msgstr "" +msgstr "OAuth2" #: settings/serializers/auth/oauth2.py:22 msgid "Enable OAuth2 Auth" -msgstr "" +msgstr "OAuth2認証の有効化" #: settings/serializers/auth/oauth2.py:25 msgid "Logo" -msgstr "" +msgstr "アイコン" #: settings/serializers/auth/oauth2.py:28 msgid "Service provider" -msgstr "" +msgstr "サービスプロバイダー" #: settings/serializers/auth/oauth2.py:31 settings/serializers/auth/oidc.py:19 msgid "Client Id" -msgstr "" +msgstr "クライアントID" #: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:22 #: xpack/plugins/cloud/serializers/account_attrs.py:38 msgid "Client Secret" -msgstr "" +msgstr "クライアント秘密" #: settings/serializers/auth/oauth2.py:40 settings/serializers/auth/oidc.py:63 msgid "Provider auth endpoint" -msgstr "" +msgstr "認証エンドポイントアドレス" #: settings/serializers/auth/oauth2.py:43 settings/serializers/auth/oidc.py:66 msgid "Provider token endpoint" -msgstr "" +msgstr "プロバイダートークンエンドポイント" #: settings/serializers/auth/oauth2.py:46 settings/serializers/auth/oidc.py:30 msgid "Client authentication method" -msgstr "" +msgstr "クライアント認証方式" #: settings/serializers/auth/oauth2.py:50 settings/serializers/auth/oidc.py:72 msgid "Provider userinfo endpoint" -msgstr "" +msgstr "プロバイダーuserinfoエンドポイント" #: settings/serializers/auth/oauth2.py:53 settings/serializers/auth/oidc.py:75 msgid "Provider end session endpoint" -msgstr "" +msgstr "プロバイダーのセッション終了エンドポイント" #: settings/serializers/auth/oauth2.py:60 settings/serializers/auth/oidc.py:93 #: settings/serializers/auth/saml2.py:35 msgid "Always update user" -msgstr "" +msgstr "常にユーザーを更新" #: settings/serializers/auth/oidc.py:12 msgid "OIDC" -msgstr "" +msgstr "OIDC" #: settings/serializers/auth/oidc.py:16 msgid "Base site url" -msgstr "" +msgstr "ベースサイトのアドレス" #: settings/serializers/auth/oidc.py:32 msgid "Share session" -msgstr "" +msgstr "セッションの共有" #: settings/serializers/auth/oidc.py:34 msgid "Ignore ssl verification" -msgstr "" +msgstr "Ssl検証を無視する" #: settings/serializers/auth/oidc.py:38 msgid "" "User attr map present how to map OpenID user attr to jumpserver, username," "name,email is jumpserver attr" msgstr "" +"ユーザー属性マッピングは、OpenIDのユーザー属性をjumpserverユーザーにマッピン" +"グする方法、username, name,emailはjumpserverのユーザーが必要とする属性です" #: settings/serializers/auth/oidc.py:46 msgid "Use Keycloak" -msgstr "" +msgstr "Keycloakを使用する" #: settings/serializers/auth/oidc.py:52 msgid "Realm name" -msgstr "" +msgstr "レルム名" #: settings/serializers/auth/oidc.py:58 msgid "Enable OPENID Auth" -msgstr "" +msgstr "OIDC認証の有効化" #: settings/serializers/auth/oidc.py:60 msgid "Provider endpoint" -msgstr "" +msgstr "プロバイダーエンドポイント" #: settings/serializers/auth/oidc.py:69 msgid "Provider jwks endpoint" -msgstr "" +msgstr "プロバイダーjwksエンドポイント" #: settings/serializers/auth/oidc.py:78 msgid "Provider sign alg" -msgstr "" +msgstr "プロビダーサインalg" #: settings/serializers/auth/oidc.py:81 msgid "Provider sign key" -msgstr "" +msgstr "プロバイダ署名キー" #: settings/serializers/auth/oidc.py:83 msgid "Scopes" -msgstr "" +msgstr "スコープ" #: settings/serializers/auth/oidc.py:85 msgid "Id token max age" -msgstr "" +msgstr "IDトークンの最大年齢" #: settings/serializers/auth/oidc.py:88 msgid "Id token include claims" -msgstr "" +msgstr "IDトークンにはクレームが含まれます" #: settings/serializers/auth/oidc.py:90 msgid "Use state" -msgstr "" +msgstr "使用状態" #: settings/serializers/auth/oidc.py:91 msgid "Use nonce" -msgstr "" +msgstr "Nonceを使用" #: settings/serializers/auth/radius.py:13 msgid "Radius" -msgstr "" +msgstr "Radius" #: settings/serializers/auth/radius.py:15 msgid "Enable Radius Auth" -msgstr "" +msgstr "Radius認証の有効化" #: settings/serializers/auth/radius.py:21 msgid "OTP in Radius" -msgstr "" +msgstr "Radius のOTP" #: settings/serializers/auth/saml2.py:11 msgid "SAML2" -msgstr "" +msgstr "SAML2" #: settings/serializers/auth/saml2.py:14 msgid "Enable SAML2 Auth" -msgstr "" +msgstr "SAML2認証の有効化" #: settings/serializers/auth/saml2.py:17 msgid "IDP metadata URL" -msgstr "" +msgstr "IDP metadata アドレス" #: settings/serializers/auth/saml2.py:20 msgid "IDP metadata XML" -msgstr "" +msgstr "IDP metadata XML" #: settings/serializers/auth/saml2.py:23 msgid "SP advanced settings" -msgstr "" +msgstr "詳細設定" #: settings/serializers/auth/saml2.py:27 msgid "SP private key" -msgstr "" +msgstr "SP プライベートキー" #: settings/serializers/auth/saml2.py:31 msgid "SP cert" -msgstr "" +msgstr "SP 証明書" #: settings/serializers/auth/sms.py:15 msgid "Enable SMS" -msgstr "" +msgstr "SMSの有効化" #: settings/serializers/auth/sms.py:17 msgid "SMS provider / Protocol" -msgstr "" +msgstr "SMSプロバイダ / プロトコル" #: settings/serializers/auth/sms.py:22 settings/serializers/auth/sms.py:45 #: settings/serializers/auth/sms.py:53 settings/serializers/auth/sms.py:62 #: settings/serializers/auth/sms.py:73 settings/serializers/email.py:68 msgid "Signature" -msgstr "" +msgstr "署名" #: settings/serializers/auth/sms.py:23 settings/serializers/auth/sms.py:46 #: settings/serializers/auth/sms.py:54 settings/serializers/auth/sms.py:63 msgid "Template code" -msgstr "" +msgstr "テンプレートコード" #: settings/serializers/auth/sms.py:31 msgid "Test phone" -msgstr "" +msgstr "テスト電話" #: settings/serializers/auth/sms.py:60 msgid "App Access Address" -msgstr "" +msgstr "アプリケーションアドレス" #: settings/serializers/auth/sms.py:61 msgid "Signature channel number" -msgstr "" +msgstr "署名チャネル番号" #: settings/serializers/auth/sms.py:69 msgid "Enterprise code(SP id)" -msgstr "" +msgstr "企業コード(SP id)" #: settings/serializers/auth/sms.py:70 msgid "Shared secret(Shared secret)" -msgstr "" +msgstr "パスワードを共有する(Shared secret)" #: settings/serializers/auth/sms.py:71 msgid "Original number(Src id)" -msgstr "" +msgstr "元の番号(Src id)" #: settings/serializers/auth/sms.py:72 msgid "Business type(Service id)" -msgstr "" +msgstr "ビジネス・タイプ(Service id)" #: settings/serializers/auth/sms.py:75 msgid "Template" -msgstr "" +msgstr "テンプレート" #: settings/serializers/auth/sms.py:76 #, python-brace-format @@ -3965,200 +4131,213 @@ msgid "" "67 words. For example, your verification code is {code}, which is valid for " "5 minutes. Please do not disclose it to others." msgstr "" +"テンプレートには{code}を含める必要があり、署名+テンプレートの長さは67ワード未" +"満です。たとえば、認証コードは{code}で、有効期間は5分です。他の人には言わない" +"でください。" #: settings/serializers/auth/sms.py:85 #, python-brace-format msgid "The template needs to contain {code}" -msgstr "" +msgstr "テンプレートには{code}を含める必要があります" #: settings/serializers/auth/sms.py:88 msgid "Signature + Template must not exceed 65 words" -msgstr "" +msgstr "署名+テンプレートの長さは65文字以内" #: settings/serializers/auth/sso.py:13 msgid "Enable SSO auth" -msgstr "" +msgstr "SSO Token認証の有効化" #: settings/serializers/auth/sso.py:14 msgid "Other service can using SSO token login to JumpServer without password" msgstr "" +"他のサービスはパスワードなしでJumpServerへのSSOトークンログインを使用できます" #: settings/serializers/auth/sso.py:17 msgid "SSO auth key TTL" -msgstr "" +msgstr "Token有効期間" #: settings/serializers/auth/sso.py:17 #: xpack/plugins/cloud/serializers/account_attrs.py:176 msgid "Unit: second" -msgstr "" +msgstr "単位: 秒" #: settings/serializers/auth/wecom.py:15 msgid "Enable WeCom Auth" -msgstr "" +msgstr "企業微信認証の有効化" #: settings/serializers/basic.py:9 msgid "Subject" -msgstr "" +msgstr "件名" #: settings/serializers/basic.py:13 msgid "More url" -msgstr "" +msgstr "もっとURL" #: settings/serializers/basic.py:30 msgid "Site url" -msgstr "" +msgstr "サイトURL" #: settings/serializers/basic.py:31 msgid "eg: http://dev.jumpserver.org:8080" -msgstr "" +msgstr "例えば: http://dev.jumpserver.org:8080" #: settings/serializers/basic.py:34 msgid "User guide url" -msgstr "" +msgstr "ユーザーガイドurl" #: settings/serializers/basic.py:35 msgid "User first login update profile done redirect to it" -msgstr "" +msgstr "ユーザーの最初のログイン更新プロファイルがリダイレクトされました" #: settings/serializers/basic.py:39 msgid "" "The forgot password url on login page, If you use ldap or cas external " "authentication, you can set it" msgstr "" +"ログインページでパスワードのURLを忘れてしまいました。ldapまたはcasの外部認証" +"を使用している場合は、設定できます。" #: settings/serializers/basic.py:43 msgid "Global organization name" -msgstr "" +msgstr "グローバル組織名" #: settings/serializers/basic.py:44 msgid "The name of global organization to display" -msgstr "" +msgstr "表示するグローバル組織の名前" #: settings/serializers/basic.py:46 msgid "Enable announcement" -msgstr "" +msgstr "アナウンスの有効化" #: settings/serializers/basic.py:47 msgid "Announcement" -msgstr "" +msgstr "発表" #: settings/serializers/basic.py:48 msgid "Enable tickets" -msgstr "" +msgstr "チケットを有効にする" #: settings/serializers/cleaning.py:8 msgid "Period clean" -msgstr "" +msgstr "定時清掃" #: settings/serializers/cleaning.py:12 msgid "Login log keep days" -msgstr "" +msgstr "ログインログは日数を保持します" #: settings/serializers/cleaning.py:12 settings/serializers/cleaning.py:16 #: settings/serializers/cleaning.py:20 settings/serializers/cleaning.py:24 #: settings/serializers/cleaning.py:28 msgid "Unit: day" -msgstr "" +msgstr "単位: 日" #: settings/serializers/cleaning.py:16 msgid "Task log keep days" -msgstr "" +msgstr "タスクログは日数を保持します" #: settings/serializers/cleaning.py:20 msgid "Operate log keep days" -msgstr "" +msgstr "ログ管理日を操作する" #: settings/serializers/cleaning.py:24 msgid "FTP log keep days" -msgstr "" +msgstr "ダウンロードのアップロード" #: settings/serializers/cleaning.py:28 msgid "Cloud sync record keep days" -msgstr "" +msgstr "クラウド同期レコードは日数を保持します" #: settings/serializers/cleaning.py:31 msgid "Session keep duration" -msgstr "" +msgstr "セッション維持期間" #: settings/serializers/cleaning.py:32 msgid "" "Unit: days, Session, record, command will be delete if more than duration, " "only in database" msgstr "" +"単位:日。セッション、録画、コマンドレコードがそれを超えると削除されます(デー" +"タベースストレージにのみ影響します。ossなどは影響しません」影響を受ける)" #: settings/serializers/email.py:21 msgid "SMTP host" -msgstr "" +msgstr "SMTPホスト" #: settings/serializers/email.py:22 msgid "SMTP port" -msgstr "" +msgstr "SMTPポート" #: settings/serializers/email.py:23 msgid "SMTP account" -msgstr "" +msgstr "SMTPアカウント" #: settings/serializers/email.py:25 msgid "SMTP password" -msgstr "" +msgstr "SMTPパスワード" #: settings/serializers/email.py:26 msgid "Tips: Some provider use token except password" -msgstr "" +msgstr "ヒント: 一部のプロバイダーはパスワード以外のトークンを使用します" #: settings/serializers/email.py:29 msgid "Send user" -msgstr "" +msgstr "ユーザーを送信" #: settings/serializers/email.py:30 msgid "Tips: Send mail account, default SMTP account as the send account" msgstr "" +"ヒント: 送信メールアカウント、送信アカウントとしてのデフォルトのSMTPアカウン" +"ト" #: settings/serializers/email.py:33 msgid "Test recipient" -msgstr "" +msgstr "テスト受信者" #: settings/serializers/email.py:34 msgid "Tips: Used only as a test mail recipient" -msgstr "" +msgstr "ヒント: テストメールの受信者としてのみ使用" #: settings/serializers/email.py:38 msgid "If SMTP port is 465, may be select" -msgstr "" +msgstr "SMTPポートが465の場合は、" #: settings/serializers/email.py:41 msgid "Use TLS" -msgstr "" +msgstr "TLSの使用" #: settings/serializers/email.py:42 msgid "If SMTP port is 587, may be select" -msgstr "" +msgstr "SMTPポートが587の場合は、" #: settings/serializers/email.py:45 msgid "Subject prefix" -msgstr "" +msgstr "件名プレフィックス" #: settings/serializers/email.py:54 msgid "Create user email subject" -msgstr "" +msgstr "ユーザーメール件名の作成" #: settings/serializers/email.py:55 msgid "" "Tips: When creating a user, send the subject of the email (eg:Create account " "successfully)" msgstr "" +"ヒント: ユーザーを作成するときに、メールの件名を送信します (例: アカウントを" +"正常に作成)" #: settings/serializers/email.py:59 msgid "Create user honorific" -msgstr "" +msgstr "ユーザー敬語の作成" #: settings/serializers/email.py:60 msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" msgstr "" +"ヒント: ユーザーを作成するときは、メールの敬語を送信します (例: こんにちは)" #: settings/serializers/email.py:64 msgid "Create user email content" -msgstr "" +msgstr "ユーザーのメールコンテンツを作成する" #: settings/serializers/email.py:65 #, python-brace-format @@ -4166,165 +4345,173 @@ msgid "" "Tips: When creating a user, send the content of the email, support " "{username} {name} {email} label" msgstr "" +"ヒント:ユーザーの作成時にパスワード設定メールの内容を送信し、{username}{name}" +"{email}ラベルをサポートします。" #: settings/serializers/email.py:69 msgid "Tips: Email signature (eg:jumpserver)" -msgstr "" +msgstr "ヒント: メール署名 (例: jumpserver)" #: settings/serializers/other.py:6 msgid "More..." -msgstr "" +msgstr "詳細..." #: settings/serializers/other.py:9 msgid "Email suffix" -msgstr "" +msgstr "メールのサフィックス" #: settings/serializers/other.py:10 msgid "" "This is used by default if no email is returned during SSO authentication" -msgstr "" +msgstr "これは、SSO認証中にメールが返されない場合にデフォルトで使用されます。" #: settings/serializers/other.py:14 msgid "OTP issuer name" -msgstr "" +msgstr "OTP発行者名" #: settings/serializers/other.py:18 msgid "OTP valid window" -msgstr "" +msgstr "OTP有効なウィンドウ" #: settings/serializers/other.py:23 msgid "CMD" -msgstr "" +msgstr "CMD" #: settings/serializers/other.py:24 msgid "PowerShell" -msgstr "" +msgstr "PowerShell" #: settings/serializers/other.py:26 msgid "Shell (Windows)" -msgstr "" +msgstr "シェル (Windows)" #: settings/serializers/other.py:27 msgid "The shell type used when Windows assets perform ansible tasks" msgstr "" +"Windowsアセットが実行可能なタスクを実行するときに使用されるシェルタイプ" #: settings/serializers/other.py:31 msgid "Perm ungroup node" -msgstr "" +msgstr "グループ化されていないノードを表示" #: settings/serializers/other.py:32 msgid "Perm single to ungroup node" msgstr "" +"グループ化されていないノードに個別に許可された資産を配置し、資産が存在する" +"ノードが表示されないようにしますが、そのノードが許可されていないという質問に" +"質問" #: settings/serializers/other.py:37 msgid "Ticket authorize default time" -msgstr "" +msgstr "デフォルト製造オーダ承認時間" #: settings/serializers/other.py:40 msgid "day" -msgstr "" +msgstr "日" #: settings/serializers/other.py:40 msgid "hour" -msgstr "" +msgstr "時" #: settings/serializers/other.py:41 msgid "Ticket authorize default time unit" -msgstr "" +msgstr "デフォルト製造オーダ承認時間単位" #: settings/serializers/other.py:44 msgid "Help Docs URL" -msgstr "" +msgstr "ドキュメントリンク" #: settings/serializers/other.py:45 msgid "default: http://docs.jumpserver.org" -msgstr "" +msgstr "デフォルト: http://docs.jumpserver.org" #: settings/serializers/other.py:49 msgid "Help Support URL" -msgstr "" +msgstr "サポートリンク" #: settings/serializers/other.py:50 msgid "default: http://www.jumpserver.org/support/" -msgstr "" +msgstr "デフォルト: http://www.jumpserver.org/support/" #: settings/serializers/security.py:10 msgid "Password minimum length" -msgstr "" +msgstr "パスワードの最小長" #: settings/serializers/security.py:14 msgid "Admin user password minimum length" -msgstr "" +msgstr "管理者ユーザーパスワードの最小長" #: settings/serializers/security.py:17 msgid "Must contain capital" -msgstr "" +msgstr "資本を含める必要があります" #: settings/serializers/security.py:20 msgid "Must contain lowercase" -msgstr "" +msgstr "小文字を含める必要があります。" #: settings/serializers/security.py:23 msgid "Must contain numeric" -msgstr "" +msgstr "数値を含める必要があります" #: settings/serializers/security.py:26 msgid "Must contain special" -msgstr "" +msgstr "特別な" #: settings/serializers/security.py:31 msgid "" "Unit: minute, If the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." msgstr "" +"単位: 分。ユーザーが限られた回数だけログインできなかった場合、この時間間隔で" +"はログインはできません。" #: settings/serializers/security.py:40 msgid "All users" -msgstr "" +msgstr "すべてのユーザー" #: settings/serializers/security.py:41 msgid "Only admin users" -msgstr "" +msgstr "管理者のみ" #: settings/serializers/security.py:43 msgid "Global MFA auth" -msgstr "" +msgstr "グローバル有効化MFA認証" #: settings/serializers/security.py:47 msgid "Third-party login users perform MFA authentication" -msgstr "" +msgstr "サードパーティのログインユーザーがMFA認証を実行" #: settings/serializers/security.py:48 msgid "The third-party login modes include OIDC, CAS, and SAML2" -msgstr "" +msgstr "サードパーティのログインモードには、OIDC、CAS、SAML2" #: settings/serializers/security.py:52 msgid "Limit the number of user login failures" -msgstr "" +msgstr "ユーザーログインの失敗数を制限する" #: settings/serializers/security.py:56 msgid "Block user login interval" -msgstr "" +msgstr "ユーザーのログイン間隔をブロックする" #: settings/serializers/security.py:61 msgid "Limit the number of IP login failures" -msgstr "" +msgstr "IPログイン失敗の数を制限する" #: settings/serializers/security.py:65 msgid "Block IP login interval" -msgstr "" +msgstr "IPログイン間隔をブロックする" #: settings/serializers/security.py:69 msgid "Login IP White List" -msgstr "" +msgstr "ログインIPホワイトリスト" #: settings/serializers/security.py:74 msgid "Login IP Black List" -msgstr "" +msgstr "ログインIPブラックリスト" #: settings/serializers/security.py:80 msgid "User password expiration" -msgstr "" +msgstr "ユーザーパスワードの有効期限" #: settings/serializers/security.py:82 msgid "" @@ -4333,146 +4520,160 @@ msgid "" "be automatic sent to the user by system within 5 days (daily) before the " "password expires" msgstr "" +"単位: 日。ユーザーがその期間中にパスワードを更新しなかった場合、ユーザーパス" +"ワードの有効期限が切れます。パスワードの有効期限が切れる前の5日 (毎日) 以内" +"に、パスワードの有効期限が切れるリマインダーメールがシステムからユーザーに自" +"動的に送信されます。" #: settings/serializers/security.py:89 msgid "Number of repeated historical passwords" -msgstr "" +msgstr "繰り返された履歴パスワードの数" #: settings/serializers/security.py:91 msgid "" "Tip: When the user resets the password, it cannot be the previous n " "historical passwords of the user" msgstr "" +"ヒント: ユーザーがパスワードをリセットすると、ユーザーの前のnの履歴パスワード" +"にすることはできません" #: settings/serializers/security.py:96 msgid "Only single device login" -msgstr "" +msgstr "単一デバイスログインのみ" #: settings/serializers/security.py:97 msgid "Next device login, pre login will be logout" -msgstr "" +msgstr "次のデバイスログイン、事前ログインはログアウトになります" #: settings/serializers/security.py:100 msgid "Only exist user login" -msgstr "" +msgstr "ユーザーログインのみ存在" #: settings/serializers/security.py:101 msgid "If enable, CAS、OIDC auth will be failed, if user not exist yet" -msgstr "" +msgstr "Enableの場合、ユーザーがまだ存在しない場合、CAS、OIDC authは失敗します" #: settings/serializers/security.py:104 msgid "Only from source login" -msgstr "" +msgstr "ソースログインからのみ" #: settings/serializers/security.py:105 msgid "Only log in from the user source property" -msgstr "" +msgstr "ユーザーソースのプロパティからのみログイン" #: settings/serializers/security.py:109 msgid "MFA verify TTL" -msgstr "" +msgstr "MFAはTTLを確認します" #: settings/serializers/security.py:111 msgid "" "Unit: second, The verification MFA takes effect only when you view the " "account password" msgstr "" +"単位: 2番目に、検証MFAはアカウントのパスワードを表示したときにのみ有効になり" +"ます。" #: settings/serializers/security.py:116 msgid "Enable Login dynamic code" -msgstr "" +msgstr "ログイン動的コードの有効化" #: settings/serializers/security.py:117 msgid "" "The password and additional code are sent to a third party authentication " "system for verification" msgstr "" +"パスワードと追加コードは、検証のためにサードパーティの認証システムに送信され" +"ます" #: settings/serializers/security.py:122 msgid "MFA in login page" -msgstr "" +msgstr "ログインページのMFA" #: settings/serializers/security.py:123 msgid "Eu security regulations(GDPR) require MFA to be on the login page" msgstr "" +"Euセキュリティ規制 (GDPR) では、MFAがログインページにある必要があります" #: settings/serializers/security.py:126 msgid "Enable Login captcha" -msgstr "" +msgstr "ログインcaptchaの有効化" #: settings/serializers/security.py:127 msgid "Enable captcha to prevent robot authentication" -msgstr "" +msgstr "Captchaを有効にしてロボット認証を防止する" #: settings/serializers/security.py:146 msgid "Security" -msgstr "" +msgstr "セキュリティ" #: settings/serializers/security.py:149 msgid "Enable terminal register" -msgstr "" +msgstr "ターミナルレジスタの有効化" #: settings/serializers/security.py:151 msgid "" "Allow terminal register, after all terminal setup, you should disable this " "for security" msgstr "" +"ターミナルレジスタを許可し、すべてのターミナルセットアップの後、セキュリティ" +"のためにこれを無効にする必要があります" #: settings/serializers/security.py:155 msgid "Enable watermark" -msgstr "" +msgstr "透かしの有効化" #: settings/serializers/security.py:156 msgid "Enabled, the web session and replay contains watermark information" -msgstr "" +msgstr "Webセッションとリプレイには透かし情報が含まれています。" #: settings/serializers/security.py:160 msgid "Connection max idle time" -msgstr "" +msgstr "接続最大アイドル時間" #: settings/serializers/security.py:161 msgid "If idle time more than it, disconnect connection Unit: minute" -msgstr "" +msgstr "アイドル時間がそれ以上の場合は、接続単位を切断します: 分" #: settings/serializers/security.py:164 msgid "Remember manual auth" -msgstr "" +msgstr "手動入力パスワードの保存" #: settings/serializers/security.py:167 msgid "Enable change auth secure mode" -msgstr "" +msgstr "安全モードの変更を有効にする" #: settings/serializers/security.py:170 msgid "Insecure command alert" -msgstr "" +msgstr "安全でないコマンドアラート" #: settings/serializers/security.py:173 msgid "Email recipient" -msgstr "" +msgstr "メール受信者" #: settings/serializers/security.py:174 msgid "Multiple user using , split" -msgstr "" +msgstr "複数のユーザーを使用して、分割" #: settings/serializers/security.py:177 msgid "Batch command execution" -msgstr "" +msgstr "バッチコマンドの実行" #: settings/serializers/security.py:178 msgid "Allow user run batch command or not using ansible" -msgstr "" +msgstr "ユーザー実行バッチコマンドを許可するか、ansibleを使用しない" #: settings/serializers/security.py:181 msgid "Session share" -msgstr "" +msgstr "セッション共有" #: settings/serializers/security.py:182 msgid "Enabled, Allows user active session to be shared with other users" msgstr "" +"ユーザーのアクティブなセッションを他のユーザーと共有できるようにします。" #: settings/serializers/security.py:185 msgid "Remote Login Protection" -msgstr "" +msgstr "リモートログイン保護" #: settings/serializers/security.py:187 msgid "" @@ -4480,224 +4681,237 @@ msgid "" "city. If the account is logged in from a common login city, the system sends " "a remote login reminder" msgstr "" +"システムは、ログインIPアドレスが共通のログイン都市に属しているかどうかを判断" +"します。アカウントが共通のログイン都市からログインしている場合、システムはリ" +"モートログインリマインダーを送信します" #: settings/serializers/terminal.py:15 msgid "Auto" -msgstr "" +msgstr "自動" #: settings/serializers/terminal.py:21 msgid "Password auth" -msgstr "" +msgstr "パスワード認証" #: settings/serializers/terminal.py:23 msgid "Public key auth" -msgstr "" +msgstr "鍵認証" #: settings/serializers/terminal.py:24 msgid "" "Tips: If use other auth method, like AD/LDAP, you should disable this to " "avoid being able to log in after deleting" msgstr "" +"ヒント: AD/LDAPなどの他の認証方法を使用する場合は、サードパーティ製システムの" +"削除後にこの項目を無効にする必要があります, ログインも可能" #: settings/serializers/terminal.py:28 msgid "List sort by" -msgstr "" +msgstr "リストの並べ替え" #: settings/serializers/terminal.py:31 msgid "List page size" -msgstr "" +msgstr "ページサイズを一覧表示" #: settings/serializers/terminal.py:34 msgid "Telnet login regex" -msgstr "" +msgstr "Telnetログインregex" #: settings/serializers/terminal.py:35 msgid "" "Tips: The login success message varies with devices. if you cannot log in to " "the device through Telnet, set this parameter" msgstr "" +"ヒント: ログイン成功メッセージはデバイスによって異なります。Telnet経由でデバ" +"イスにログインできない場合は、このパラメーターを設定します。" #: settings/serializers/terminal.py:38 msgid "Enable database proxy" -msgstr "" +msgstr "属性マップの有効化" #: settings/serializers/terminal.py:39 msgid "Enable Razor" -msgstr "" +msgstr "Razor の有効化" #: settings/serializers/terminal.py:40 msgid "Enable SSH Client" -msgstr "" +msgstr "SSH Clientの有効化" #: settings/serializers/terminal.py:51 msgid "Default graphics resolution" -msgstr "" +msgstr "デフォルトのグラフィック解像度" #: settings/serializers/terminal.py:52 msgid "" "Tip: Default resolution to use when connecting graphical assets in Luna pages" msgstr "" +"ヒント: Luna ページでグラフィック アセットを接続するときに使用するデフォルト" +"の解像度" #: settings/utils/ldap.py:467 msgid "ldap:// or ldaps:// protocol is used." -msgstr "" +msgstr "ldap:// または ldaps:// プロトコルが使用されます。" #: settings/utils/ldap.py:478 msgid "Host or port is disconnected: {}" -msgstr "" +msgstr "ホストまたはポートが切断されました: {}" #: settings/utils/ldap.py:480 msgid "The port is not the port of the LDAP service: {}" -msgstr "" +msgstr "ポートはLDAPサービスのポートではありません: {}" #: settings/utils/ldap.py:482 msgid "Please add certificate: {}" -msgstr "" +msgstr "証明書を追加してください: {}" #: settings/utils/ldap.py:486 settings/utils/ldap.py:513 #: settings/utils/ldap.py:543 settings/utils/ldap.py:571 msgid "Unknown error: {}" -msgstr "" +msgstr "不明なエラー: {}" #: settings/utils/ldap.py:500 msgid "Bind DN or Password incorrect" -msgstr "" +msgstr "DNまたはパスワードのバインドが正しくありません" #: settings/utils/ldap.py:507 msgid "Please enter Bind DN: {}" -msgstr "" +msgstr "バインドDN: {} を入力してください" #: settings/utils/ldap.py:509 msgid "Please enter Password: {}" -msgstr "" +msgstr "パスワードを入力してください: {}" #: settings/utils/ldap.py:511 msgid "Please enter correct Bind DN and Password: {}" -msgstr "" +msgstr "正しいバインドDNとパスワードを入力してください: {}" #: settings/utils/ldap.py:529 msgid "Invalid User OU or User search filter: {}" -msgstr "" +msgstr "無効なユーザー OU またはユーザー検索フィルター: {}" #: settings/utils/ldap.py:560 msgid "LDAP User attr map not include: {}" -msgstr "" +msgstr "LDAP ユーザーattrマップは含まれません: {}" #: settings/utils/ldap.py:567 msgid "LDAP User attr map is not dict" -msgstr "" +msgstr "LDAPユーザーattrマップはdictではありません" #: settings/utils/ldap.py:586 msgid "LDAP authentication is not enabled" -msgstr "" +msgstr "LDAP 認証が有効になっていない" #: settings/utils/ldap.py:604 msgid "Error (Invalid LDAP server): {}" -msgstr "" +msgstr "エラー (LDAPサーバーが無効): {}" #: settings/utils/ldap.py:606 msgid "Error (Invalid Bind DN): {}" -msgstr "" +msgstr "エラー (DNのバインドが無効): {}" #: settings/utils/ldap.py:608 msgid "Error (Invalid LDAP User attr map): {}" -msgstr "" +msgstr "エラー (LDAPユーザーattrマップが無効): {}" #: settings/utils/ldap.py:610 msgid "Error (Invalid User OU or User search filter): {}" -msgstr "" +msgstr "エラー (ユーザーOUまたはユーザー検索フィルターが無効): {}" #: settings/utils/ldap.py:612 msgid "Error (Not enabled LDAP authentication): {}" -msgstr "" +msgstr "エラー (LDAP認証が有効化されていません): {}" #: settings/utils/ldap.py:614 msgid "Error (Unknown): {}" -msgstr "" +msgstr "エラー (不明): {}" #: settings/utils/ldap.py:617 msgid "Succeed: Match {} s user" -msgstr "" +msgstr "成功: {} 人のユーザーに一致" #: settings/utils/ldap.py:650 msgid "Authentication failed (configuration incorrect): {}" -msgstr "" +msgstr "認証に失敗しました (設定が正しくありません): {}" #: settings/utils/ldap.py:654 msgid "Authentication failed (username or password incorrect): {}" -msgstr "" +msgstr "認証に失敗しました (ユーザー名またはパスワードが正しくありません): {}" #: settings/utils/ldap.py:656 msgid "Authentication failed (Unknown): {}" -msgstr "" +msgstr "認証に失敗しました (不明): {}" #: settings/utils/ldap.py:659 msgid "Authentication success: {}" -msgstr "" +msgstr "認証成功: {}" #: templates/_csv_import_export.html:8 msgid "Export" -msgstr "" +msgstr "エクスポート" #: templates/_csv_import_export.html:13 templates/_csv_import_modal.html:5 msgid "Import" -msgstr "" +msgstr "インポート" #: templates/_csv_import_modal.html:12 msgid "Download the imported template or use the exported CSV file format" msgstr "" +"インポートしたテンプレートをダウンロードするか、エクスポートしたCSVファイル形" +"式を使用する" #: templates/_csv_import_modal.html:13 msgid "Download the import template" -msgstr "" +msgstr "インポートテンプレートのダウンロード" #: templates/_csv_import_modal.html:17 templates/_csv_update_modal.html:17 msgid "Select the CSV file to import" -msgstr "" +msgstr "インポートするCSVファイルの選択" #: templates/_csv_import_modal.html:39 templates/_csv_update_modal.html:42 msgid "Please select file" -msgstr "" +msgstr "ファイルを選択してください" #: templates/_csv_update_modal.html:12 msgid "Download the update template or use the exported CSV file format" msgstr "" +"更新テンプレートをダウンロードするか、エクスポートしたCSVファイル形式を使用す" +"る" #: templates/_csv_update_modal.html:13 msgid "Download the update template" -msgstr "" +msgstr "更新テンプレートのダウンロード" #: templates/_header_bar.html:12 msgid "Help" -msgstr "" +msgstr "ヘルプ" #: templates/_header_bar.html:19 msgid "Docs" -msgstr "" +msgstr "ドキュメント" #: templates/_header_bar.html:25 msgid "Commercial support" -msgstr "" +msgstr "商用サポート" #: templates/_header_bar.html:76 users/forms/profile.py:44 msgid "Profile" -msgstr "" +msgstr "プロフィール" #: templates/_header_bar.html:79 msgid "Admin page" -msgstr "" +msgstr "ページの管理" #: templates/_header_bar.html:81 msgid "User page" -msgstr "" +msgstr "ユーザーページ" #: templates/_header_bar.html:84 msgid "API Key" -msgstr "" +msgstr "API Key" #: templates/_header_bar.html:85 msgid "Logout" -msgstr "" +msgstr "ログアウト" #: templates/_message.html:6 msgid "" @@ -4705,14 +4919,17 @@ msgid "" " Your account has expired, please contact the administrator.\n" " " msgstr "" +"\n" +" アカウントが期限切れになったので、管理者に連絡してくださ" +"い。 " #: templates/_message.html:13 msgid "Your account will at" -msgstr "" +msgstr "あなたのアカウントは" #: templates/_message.html:13 templates/_message.html:30 msgid "expired. " -msgstr "" +msgstr "期限切れです。" #: templates/_message.html:23 #, python-format @@ -4722,10 +4939,14 @@ msgid "" "href=\"%(user_password_update_url)s\"> this link update password.\n" " " msgstr "" +"\n" +" パスワードが期限切れになりましたので、クリックしてください " +" リンク パスワードの更新\n" +" " #: templates/_message.html:30 msgid "Your password will at" -msgstr "" +msgstr "あなたのパスワードは" #: templates/_message.html:31 #, python-format @@ -4735,6 +4956,10 @@ msgid "" "link to update your password.\n" " " msgstr "" +"\n" +" クリックしてください リンク パスワードの更新\n" +" " #: templates/_message.html:43 #, python-format @@ -4744,6 +4969,10 @@ msgid "" "href=\"%(first_login_url)s\"> this link to complete your information.\n" " " msgstr "" +"\n" +" あなたの情報が不完全なので、クリックしてください。 リンク 補完\n" +" " #: templates/_message.html:56 #, python-format @@ -4753,207 +4982,223 @@ msgid "" "href=\"%(user_pubkey_update)s\"> this link to update\n" " " msgstr "" +"\n" +" SSHキーが設定されていないか無効になっている場合は、 リンク 更新\n" +" " #: templates/_mfa_login_field.html:28 msgid "Send verification code" -msgstr "" +msgstr "確認コードを送信" #: templates/_mfa_login_field.html:106 #: users/templates/users/forgot_password.html:129 msgid "Wait: " -msgstr "" +msgstr "待つ:" #: templates/_mfa_login_field.html:116 #: users/templates/users/forgot_password.html:145 msgid "The verification code has been sent" -msgstr "" +msgstr "確認コードが送信されました" #: templates/_without_nav_base.html:26 msgid "Home page" -msgstr "" +msgstr "ホームページ" #: templates/resource_download.html:18 templates/resource_download.html:31 msgid "Client" -msgstr "" +msgstr "クライアント" #: templates/resource_download.html:20 msgid "" "JumpServer Client, currently used to launch the client, now only support " "launch RDP SSH client, The Telnet client will next" msgstr "" +"JumpServerクライアントは、現在特定のクライアントプログラムの接続資産を喚起す" +"るために使用されており、現在はRDP SSHクライアントのみをサポートしています。" +"「Telnetは将来的にサポートする" #: templates/resource_download.html:31 msgid "Microsoft" -msgstr "" +msgstr "マイクロソフト" #: templates/resource_download.html:31 msgid "Official" -msgstr "" +msgstr "公式" #: templates/resource_download.html:33 msgid "" "macOS needs to download the client to connect RDP asset, which comes with " "Windows" msgstr "" +"MacOSは、Windowsに付属のRDPアセットを接続するためにクライアントをダウンロード" +"する必要があります" #: templates/resource_download.html:42 msgid "Windows Remote application publisher tools" -msgstr "" +msgstr "Windowsリモートアプリケーション発行者ツール" #: templates/resource_download.html:43 msgid "" "OpenSSH is a program used to connect remote applications in the Windows " "Remote Application Publisher" msgstr "" +"OpenSSHはリモートアプリケーションをWindowsリモートアプリケーションで接続する" +"プログラムです" #: templates/resource_download.html:48 msgid "" "Jmservisor is the program used to pull up remote applications in Windows " "Remote Application publisher" msgstr "" +"Jmservisorはwindowsリモートアプリケーションパブリケーションサーバでリモートア" +"プリケーションを引き出すためのプログラムです" #: templates/resource_download.html:57 msgid "Offline video player" -msgstr "" +msgstr "オフラインビデオプレーヤー" #: terminal/api/component/endpoint.py:31 msgid "Not found protocol query params" -msgstr "" +msgstr "プロトコルクエリパラメータが見つかりません" #: terminal/api/component/storage.py:28 msgid "Deleting the default storage is not allowed" -msgstr "" +msgstr "デフォルトのストレージの削除は許可されていません" #: terminal/api/component/storage.py:31 msgid "Cannot delete storage that is being used" -msgstr "" +msgstr "使用中のストレージを削除できません" #: terminal/api/component/storage.py:72 terminal/api/component/storage.py:73 msgid "Command storages" -msgstr "" +msgstr "コマンドストア" #: terminal/api/component/storage.py:79 msgid "Invalid" -msgstr "" +msgstr "無効" #: terminal/api/component/storage.py:119 msgid "Test failure: {}" -msgstr "" +msgstr "テスト失敗: {}" #: terminal/api/component/storage.py:122 msgid "Test successful" -msgstr "" +msgstr "テスト成功" #: terminal/api/component/storage.py:124 msgid "Test failure: Account invalid" -msgstr "" +msgstr "テスト失敗: アカウントが無効" #: terminal/api/component/terminal.py:38 msgid "Have online sessions" -msgstr "" +msgstr "オンラインセッションを持つ" #: terminal/api/session/session.py:217 msgid "Session does not exist: {}" -msgstr "" +msgstr "セッションが存在しません: {}" #: terminal/api/session/session.py:220 msgid "Session is finished or the protocol not supported" -msgstr "" +msgstr "セッションが終了したか、プロトコルがサポートされていません" #: terminal/api/session/session.py:233 msgid "User does not have permission" -msgstr "" +msgstr "ユーザーに権限がありません" #: terminal/api/session/sharing.py:29 msgid "Secure session sharing settings is disabled" -msgstr "" +msgstr "安全なセッション共有設定が無効になっています" #: terminal/apps.py:9 msgid "Terminals" -msgstr "" +msgstr "ターミナル管理" #: terminal/backends/command/models.py:16 msgid "Ordinary" -msgstr "" +msgstr "普通" #: terminal/backends/command/models.py:17 msgid "Dangerous" -msgstr "" +msgstr "危険" #: terminal/backends/command/models.py:23 msgid "Input" -msgstr "" +msgstr "入力" #: terminal/backends/command/models.py:24 #: terminal/backends/command/serializers.py:38 msgid "Output" -msgstr "" +msgstr "出力" #: terminal/backends/command/models.py:25 terminal/models/session/replay.py:9 #: terminal/models/session/sharing.py:19 terminal/models/session/sharing.py:78 #: terminal/templates/terminal/_msg_command_alert.html:10 #: tickets/models/ticket/command_confirm.py:17 msgid "Session" -msgstr "" +msgstr "セッション" #: terminal/backends/command/models.py:26 #: terminal/backends/command/serializers.py:18 msgid "Risk level" -msgstr "" +msgstr "リスクレベル" #: terminal/backends/command/serializers.py:16 msgid "Session ID" -msgstr "" +msgstr "セッションID" #: terminal/backends/command/serializers.py:37 +#, fuzzy msgid "Account " -msgstr "" +msgstr "アカウント" #: terminal/backends/command/serializers.py:39 msgid "Risk level display" -msgstr "" +msgstr "リスクレベル表示" #: terminal/backends/command/serializers.py:40 msgid "Timestamp" -msgstr "" +msgstr "タイムスタンプ" #: terminal/backends/command/serializers.py:42 #: terminal/models/component/terminal.py:85 msgid "Remote Address" -msgstr "" +msgstr "リモートアドレス" #: terminal/const.py:37 msgid "Critical" -msgstr "" +msgstr "クリティカル" #: terminal/const.py:38 msgid "High" -msgstr "" +msgstr "高い" #: terminal/const.py:39 users/templates/users/reset_password.html:50 msgid "Normal" -msgstr "" +msgstr "正常" #: terminal/const.py:40 msgid "Offline" -msgstr "" +msgstr "オフライン" #: terminal/const.py:81 terminal/const.py:82 terminal/const.py:83 #: terminal/const.py:84 terminal/const.py:85 +#, fuzzy msgid "DB Client" -msgstr "" +msgstr "クライアント" #: terminal/exceptions.py:8 msgid "Bulk create not support" -msgstr "" +msgstr "一括作成非サポート" #: terminal/exceptions.py:13 msgid "Storage is invalid" -msgstr "" +msgstr "ストレージが無効です" #: terminal/models/applet/applet.py:23 +#, fuzzy msgid "Author" -msgstr "" +msgstr "資産アカウント" #: terminal/models/applet/applet.py:27 msgid "Tags" @@ -4961,31 +5206,36 @@ msgstr "" #: terminal/models/applet/applet.py:31 terminal/serializers/storage.py:157 msgid "Hosts" -msgstr "" +msgstr "ホスト" #: terminal/models/applet/applet.py:58 terminal/models/applet/host.py:27 +#, fuzzy msgid "Applet" -msgstr "" +msgstr "資産の適用" #: terminal/models/applet/host.py:18 terminal/serializers/applet_host.py:38 +#, fuzzy msgid "Deploy options" -msgstr "" +msgstr "その他のログインオプション" #: terminal/models/applet/host.py:19 msgid "Inited" msgstr "" #: terminal/models/applet/host.py:20 +#, fuzzy msgid "Date inited" -msgstr "" +msgstr "終了日" #: terminal/models/applet/host.py:21 +#, fuzzy msgid "Date synced" -msgstr "" +msgstr "日付の同期" #: terminal/models/applet/host.py:102 +#, fuzzy msgid "Hosting" -msgstr "" +msgstr "ホスト" #: terminal/models/applet/host.py:103 msgid "Initial" @@ -4993,19 +5243,19 @@ msgstr "" #: terminal/models/component/endpoint.py:15 msgid "HTTPS Port" -msgstr "" +msgstr "HTTPS ポート" #: terminal/models/component/endpoint.py:16 msgid "HTTP Port" -msgstr "" +msgstr "HTTP ポート" #: terminal/models/component/endpoint.py:17 msgid "SSH Port" -msgstr "" +msgstr "SSH ポート" #: terminal/models/component/endpoint.py:18 msgid "RDP Port" -msgstr "" +msgstr "RDP ポート" #: terminal/models/component/endpoint.py:25 #: terminal/models/component/endpoint.py:94 terminal/serializers/endpoint.py:57 @@ -5013,205 +5263,210 @@ msgstr "" #: terminal/serializers/storage.py:80 terminal/serializers/storage.py:90 #: terminal/serializers/storage.py:98 msgid "Endpoint" -msgstr "" +msgstr "エンドポイント" #: terminal/models/component/endpoint.py:87 msgid "IP group" -msgstr "" +msgstr "IP グループ" #: terminal/models/component/endpoint.py:99 msgid "Endpoint rule" -msgstr "" +msgstr "エンドポイントルール" #: terminal/models/component/status.py:14 msgid "Session Online" -msgstr "" +msgstr "セッションオンライン" #: terminal/models/component/status.py:15 msgid "CPU Load" -msgstr "" +msgstr "CPUロード" #: terminal/models/component/status.py:16 msgid "Memory Used" -msgstr "" +msgstr "使用メモリ" #: terminal/models/component/status.py:17 msgid "Disk Used" -msgstr "" +msgstr "使用済みディスク" #: terminal/models/component/status.py:18 msgid "Connections" -msgstr "" +msgstr "接続" #: terminal/models/component/status.py:19 msgid "Threads" -msgstr "" +msgstr "スレッド" #: terminal/models/component/status.py:20 msgid "Boot Time" -msgstr "" +msgstr "ブート時間" #: terminal/models/component/storage.py:27 msgid "Default storage" -msgstr "" +msgstr "デフォルトのストレージ" #: terminal/models/component/storage.py:140 #: terminal/models/component/terminal.py:86 msgid "Command storage" -msgstr "" +msgstr "コマンドストレージ" #: terminal/models/component/storage.py:200 #: terminal/models/component/terminal.py:87 msgid "Replay storage" -msgstr "" +msgstr "再生ストレージ" #: terminal/models/component/terminal.py:83 msgid "type" -msgstr "" +msgstr "タイプ" #: terminal/models/component/terminal.py:88 msgid "Application User" -msgstr "" +msgstr "ユーザーの適用" #: terminal/models/component/terminal.py:161 msgid "Can view terminal config" -msgstr "" +msgstr "ターミナル構成を表示できます" #: terminal/models/session/command.py:66 msgid "Command record" -msgstr "" +msgstr "コマンドレコード" #: terminal/models/session/replay.py:12 msgid "Session replay" -msgstr "" +msgstr "セッション再生" #: terminal/models/session/replay.py:14 msgid "Can upload session replay" -msgstr "" +msgstr "セッションのリプレイをアップロードできます" #: terminal/models/session/replay.py:15 msgid "Can download session replay" -msgstr "" +msgstr "セッション再生をダウンロードできます" #: terminal/models/session/session.py:36 terminal/models/session/sharing.py:101 msgid "Login from" -msgstr "" +msgstr "ログイン元" #: terminal/models/session/session.py:40 msgid "Replay" -msgstr "" +msgstr "リプレイ" #: terminal/models/session/session.py:44 msgid "Date end" -msgstr "" +msgstr "終了日" #: terminal/models/session/session.py:236 msgid "Session record" -msgstr "" +msgstr "セッション記録" #: terminal/models/session/session.py:238 msgid "Can monitor session" -msgstr "" +msgstr "セッションを監視できます" #: terminal/models/session/session.py:239 msgid "Can share session" -msgstr "" +msgstr "セッションを共有できます" #: terminal/models/session/session.py:240 msgid "Can terminate session" -msgstr "" +msgstr "セッションを終了できます" #: terminal/models/session/session.py:241 msgid "Can validate session action perm" -msgstr "" +msgstr "セッションアクションのパーマを検証できます" #: terminal/models/session/sharing.py:31 msgid "Expired time (min)" -msgstr "" +msgstr "期限切れ時間 (分)" #: terminal/models/session/sharing.py:37 terminal/models/session/sharing.py:83 msgid "Session sharing" -msgstr "" +msgstr "セッション共有" #: terminal/models/session/sharing.py:39 msgid "Can add super session sharing" -msgstr "" +msgstr "スーパーセッション共有を追加できます" #: terminal/models/session/sharing.py:66 msgid "Link not active" -msgstr "" +msgstr "リンクがアクティブでない" #: terminal/models/session/sharing.py:68 msgid "Link expired" -msgstr "" +msgstr "リンク期限切れ" #: terminal/models/session/sharing.py:70 msgid "User not allowed to join" -msgstr "" +msgstr "ユーザーはセッションに参加できません" #: terminal/models/session/sharing.py:87 terminal/serializers/sharing.py:59 msgid "Joiner" -msgstr "" +msgstr "ジョイナー" #: terminal/models/session/sharing.py:90 msgid "Date joined" -msgstr "" +msgstr "参加日" #: terminal/models/session/sharing.py:93 msgid "Date left" -msgstr "" +msgstr "日付が残っています" #: terminal/models/session/sharing.py:116 msgid "Session join record" -msgstr "" +msgstr "セッション参加記録" #: terminal/models/session/sharing.py:132 msgid "Invalid verification code" -msgstr "" +msgstr "検証コードが無効" #: terminal/notifications.py:22 msgid "Sessions" -msgstr "" +msgstr "セッション" #: terminal/notifications.py:68 msgid "Danger command alert" -msgstr "" +msgstr "危険コマンドアラート" #: terminal/notifications.py:95 terminal/notifications.py:143 msgid "Level" -msgstr "" +msgstr "レベル" #: terminal/notifications.py:113 msgid "Batch danger command alert" -msgstr "" +msgstr "一括危険コマンド警告" #: terminal/serializers/applet.py:16 +#, fuzzy msgid "Published" -msgstr "" +msgstr "公開キー" #: terminal/serializers/applet.py:17 +#, fuzzy msgid "Unpublished" -msgstr "" +msgstr "終了" #: terminal/serializers/applet.py:18 +#, fuzzy msgid "Not match" -msgstr "" +msgstr "ユーザーにマッチしなかった" #: terminal/serializers/applet.py:32 msgid "Icon" msgstr "" #: terminal/serializers/applet_host.py:21 +#, fuzzy msgid "Per Session" -msgstr "" +msgstr "セッション" #: terminal/serializers/applet_host.py:22 msgid "Per Device" msgstr "" #: terminal/serializers/applet_host.py:28 +#, fuzzy msgid "RDS Licensing" -msgstr "" +msgstr "ライセンス" #: terminal/serializers/applet_host.py:29 msgid "RDS License Server" @@ -5235,140 +5490,142 @@ msgstr "" #: terminal/serializers/applet_host.py:40 terminal/serializers/terminal.py:41 msgid "Load status" -msgstr "" +msgstr "ロードステータス" #: terminal/serializers/endpoint.py:14 msgid "Magnus listen db port" -msgstr "" +msgstr "Magnus がリッスンするデータベース ポート" #: terminal/serializers/endpoint.py:17 msgid "Magnus Listen port range" -msgstr "" +msgstr "Magnus がリッスンするポート範囲" #: terminal/serializers/endpoint.py:19 msgid "" "The range of ports that Magnus listens on is modified in the configuration " "file" -msgstr "" +msgstr "Magnus がリッスンするポート範囲を構成ファイルで変更してください" #: terminal/serializers/endpoint.py:51 msgid "" "If asset IP addresses under different endpoints conflict, use asset labels" msgstr "" +"異なるエンドポイントの下に競合するアセットIPがある場合は、アセットタグを使用" +"して実装します" #: terminal/serializers/session.py:17 terminal/serializers/session.py:42 msgid "Terminal display" -msgstr "" +msgstr "ターミナルディスプレイ" #: terminal/serializers/session.py:33 msgid "User ID" -msgstr "" +msgstr "ユーザーID" #: terminal/serializers/session.py:34 msgid "Asset ID" -msgstr "" +msgstr "資産ID" #: terminal/serializers/session.py:35 msgid "Login from display" -msgstr "" +msgstr "表示からのログイン" #: terminal/serializers/session.py:37 msgid "Can replay" -msgstr "" +msgstr "再生できます" #: terminal/serializers/session.py:38 msgid "Can join" -msgstr "" +msgstr "参加できます" #: terminal/serializers/session.py:39 msgid "Terminal ID" -msgstr "" +msgstr "ターミナル ID" #: terminal/serializers/session.py:40 msgid "Is finished" -msgstr "" +msgstr "終了しました" #: terminal/serializers/session.py:41 msgid "Can terminate" -msgstr "" +msgstr "終了できます" #: terminal/serializers/session.py:47 msgid "Command amount" -msgstr "" +msgstr "コマンド量" #: terminal/serializers/storage.py:20 msgid "Endpoint invalid: remove path `{}`" -msgstr "" +msgstr "エンドポイントが無効: パス '{}' を削除" #: terminal/serializers/storage.py:26 msgid "Bucket" -msgstr "" +msgstr "バケット" #: terminal/serializers/storage.py:30 #: xpack/plugins/cloud/serializers/account_attrs.py:17 msgid "Access key id" -msgstr "" +msgstr "アクセスキー" #: terminal/serializers/storage.py:34 #: xpack/plugins/cloud/serializers/account_attrs.py:20 msgid "Access key secret" -msgstr "" +msgstr "アクセスキーシークレット" #: terminal/serializers/storage.py:65 xpack/plugins/cloud/models.py:219 msgid "Region" -msgstr "" +msgstr "リージョン" #: terminal/serializers/storage.py:109 msgid "Container name" -msgstr "" +msgstr "コンテナー名" #: terminal/serializers/storage.py:112 msgid "Account key" -msgstr "" +msgstr "アカウントキー" #: terminal/serializers/storage.py:115 msgid "Endpoint suffix" -msgstr "" +msgstr "エンドポイントサフィックス" #: terminal/serializers/storage.py:135 msgid "The address format is incorrect" -msgstr "" +msgstr "アドレス形式が正しくありません" #: terminal/serializers/storage.py:142 msgid "Host invalid" -msgstr "" +msgstr "ホスト無効" #: terminal/serializers/storage.py:145 msgid "Port invalid" -msgstr "" +msgstr "ポートが無効" #: terminal/serializers/storage.py:160 msgid "Index by date" -msgstr "" +msgstr "日付による索引付け" #: terminal/serializers/storage.py:161 msgid "Whether to create an index by date" -msgstr "" +msgstr "現在の日付に基づいてインデックスを動的に作成するかどうか" #: terminal/serializers/storage.py:164 msgid "Index" -msgstr "" +msgstr "インデックス" #: terminal/serializers/storage.py:166 msgid "Doc type" -msgstr "" +msgstr "Docタイプ" #: terminal/serializers/storage.py:168 msgid "Ignore Certificate Verification" -msgstr "" +msgstr "証明書の検証を無視する" #: terminal/serializers/terminal.py:77 terminal/serializers/terminal.py:85 msgid "Not found" -msgstr "" +msgstr "見つかりません" #: terminal/templates/terminal/_msg_command_alert.html:10 msgid "view" -msgstr "" +msgstr "表示" #: terminal/utils/db_port_mapper.py:64 msgid "" @@ -5376,28 +5633,33 @@ msgid "" "number of ports open to the database agent service, Contact the " "administrator to open more ports." msgstr "" +"利用可能なポートと一致しません。データベースの数が、データベース プロキシ " +"サービスによって開かれたポートの数を超えた可能性があります。さらにポートを開" +"くには、管理者に連絡してください。" #: terminal/utils/db_port_mapper.py:90 msgid "" "No ports can be used, check and modify the limit on the number of ports that " "Magnus listens on in the configuration file." msgstr "" +"使用できるポートがありません。設定ファイルで Magnus がリッスンするポート数の" +"制限を確認して変更してください. " #: terminal/utils/db_port_mapper.py:92 msgid "All available port count: {}, Already use port count: {}" -msgstr "" +msgstr "使用可能なすべてのポート数: {}、すでに使用しているポート数: {}" #: tickets/apps.py:7 msgid "Tickets" -msgstr "" +msgstr "チケット" #: tickets/const.py:9 msgid "Apply for asset" -msgstr "" +msgstr "資産の申請" #: tickets/const.py:16 tickets/const.py:24 tickets/const.py:43 msgid "Open" -msgstr "" +msgstr "オープン" #: tickets/const.py:18 tickets/const.py:31 msgid "Reopen" @@ -5405,69 +5667,71 @@ msgstr "" #: tickets/const.py:19 tickets/const.py:32 msgid "Approved" -msgstr "" +msgstr "承認済み" #: tickets/const.py:20 tickets/const.py:33 msgid "Rejected" -msgstr "" +msgstr "拒否" #: tickets/const.py:30 tickets/const.py:38 msgid "Closed" -msgstr "" +msgstr "クローズ" #: tickets/const.py:46 msgid "Approve" -msgstr "" +msgstr "承認" #: tickets/const.py:50 msgid "One level" -msgstr "" +msgstr "1つのレベル" #: tickets/const.py:51 msgid "Two level" -msgstr "" +msgstr "2つのレベル" #: tickets/const.py:55 msgid "Org admin" -msgstr "" +msgstr "Org admin" #: tickets/const.py:56 msgid "Custom user" -msgstr "" +msgstr "カスタムユーザー" #: tickets/const.py:57 msgid "Super admin" -msgstr "" +msgstr "スーパー管理者" #: tickets/const.py:58 msgid "Super admin and org admin" -msgstr "" +msgstr "スーパーadminとorg admin" #: tickets/errors.py:9 msgid "Ticket already closed" -msgstr "" +msgstr "チケットはすでに閉じています" #: tickets/handlers/apply_asset.py:36 msgid "" "Created by the ticket ticket title: {} ticket applicant: {} ticket " "processor: {} ticket ID: {}" msgstr "" +"チケットのタイトル: {} チケット申請者: {} チケットプロセッサ: {} チケットID: " +"{}" #: tickets/handlers/base.py:84 msgid "Change field" -msgstr "" +msgstr "フィールドを変更" #: tickets/handlers/base.py:84 msgid "Before change" -msgstr "" +msgstr "変更前" #: tickets/handlers/base.py:84 msgid "After change" -msgstr "" +msgstr "変更後" #: tickets/handlers/base.py:96 msgid "{} {} the ticket" -msgstr "" +msgstr "{} {} チケット" #: tickets/models/comment.py:14 msgid "common" @@ -5475,291 +5739,297 @@ msgstr "" #: tickets/models/comment.py:23 msgid "User display name" -msgstr "" +msgstr "ユーザー表示名" #: tickets/models/comment.py:24 msgid "Body" -msgstr "" +msgstr "ボディ" #: tickets/models/flow.py:20 tickets/models/flow.py:62 #: tickets/models/ticket/general.py:39 msgid "Approve level" -msgstr "" +msgstr "レベルを承認する" #: tickets/models/flow.py:25 tickets/serializers/flow.py:18 msgid "Approve strategy" -msgstr "" +msgstr "戦略を承認する" #: tickets/models/flow.py:30 tickets/serializers/flow.py:20 msgid "Assignees" -msgstr "" +msgstr "アシニーズ" #: tickets/models/flow.py:34 msgid "Ticket flow approval rule" -msgstr "" +msgstr "チケットフロー承認ルール" #: tickets/models/flow.py:67 msgid "Ticket flow" -msgstr "" +msgstr "チケットの流れ" #: tickets/models/relation.py:10 msgid "Ticket session relation" -msgstr "" +msgstr "チケットセッションの関係" #: tickets/models/ticket/apply_application.py:10 #: tickets/models/ticket/apply_asset.py:13 msgid "Permission name" -msgstr "" +msgstr "認可ルール名" #: tickets/models/ticket/apply_application.py:19 msgid "Apply applications" -msgstr "" +msgstr "アプリケーションの適用" #: tickets/models/ticket/apply_application.py:22 msgid "Apply system users" -msgstr "" +msgstr "システムユーザーの適用" #: tickets/models/ticket/apply_asset.py:9 #: tickets/serializers/ticket/apply_asset.py:14 msgid "Select at least one asset or node" -msgstr "" +msgstr "少なくとも1つのアセットまたはノードを選択します。" #: tickets/models/ticket/apply_asset.py:14 #: tickets/serializers/ticket/apply_asset.py:19 msgid "Apply nodes" -msgstr "" +msgstr "ノードの適用" #: tickets/models/ticket/apply_asset.py:16 #: tickets/serializers/ticket/apply_asset.py:18 msgid "Apply assets" -msgstr "" +msgstr "資産の適用" #: tickets/models/ticket/apply_asset.py:17 +#, fuzzy msgid "Apply accounts" -msgstr "" +msgstr "アプリケーションアカウント" #: tickets/models/ticket/command_confirm.py:10 msgid "Run user" -msgstr "" +msgstr "ユーザーの実行" #: tickets/models/ticket/command_confirm.py:12 msgid "Run asset" -msgstr "" +msgstr "アセットの実行" #: tickets/models/ticket/command_confirm.py:13 msgid "Run command" -msgstr "" +msgstr "実行コマンド" #: tickets/models/ticket/command_confirm.py:14 +#, fuzzy msgid "Run account" -msgstr "" +msgstr "アカウント" #: tickets/models/ticket/command_confirm.py:21 msgid "From cmd filter" -msgstr "" +msgstr "コマンドフィルタ規則から" #: tickets/models/ticket/command_confirm.py:25 msgid "From cmd filter rule" -msgstr "" +msgstr "コマンドフィルタ規則から" #: tickets/models/ticket/general.py:74 msgid "Ticket step" -msgstr "" +msgstr "チケットステップ" #: tickets/models/ticket/general.py:92 msgid "Ticket assignee" -msgstr "" +msgstr "割り当てられたチケット" #: tickets/models/ticket/general.py:271 msgid "Title" -msgstr "" +msgstr "タイトル" #: tickets/models/ticket/general.py:287 msgid "Applicant" -msgstr "" +msgstr "応募者" #: tickets/models/ticket/general.py:291 msgid "TicketFlow" -msgstr "" +msgstr "作業指示プロセス" #: tickets/models/ticket/general.py:294 msgid "Approval step" -msgstr "" +msgstr "承認ステップ" #: tickets/models/ticket/general.py:297 msgid "Relation snapshot" -msgstr "" +msgstr "製造オーダスナップショット" #: tickets/models/ticket/general.py:391 msgid "Please try again" -msgstr "" +msgstr "もう一度お試しください" #: tickets/models/ticket/general.py:424 msgid "Super ticket" -msgstr "" +msgstr "スーパーチケット" #: tickets/models/ticket/login_asset_confirm.py:11 msgid "Login user" -msgstr "" +msgstr "ログインユーザー" #: tickets/models/ticket/login_asset_confirm.py:14 msgid "Login asset" -msgstr "" +msgstr "ログイン資産" #: tickets/models/ticket/login_asset_confirm.py:17 +#, fuzzy msgid "Login account" -msgstr "" +msgstr "ログインacl" #: tickets/models/ticket/login_confirm.py:12 msgid "Login datetime" -msgstr "" +msgstr "ログイン日時" #: tickets/notifications.py:63 msgid "Ticket basic info" -msgstr "" +msgstr "チケット基本情報" #: tickets/notifications.py:64 msgid "Ticket applied info" -msgstr "" +msgstr "チケット適用情報" #: tickets/notifications.py:109 msgid "Your has a new ticket, applicant - {}" -msgstr "" +msgstr "新しいチケットがあります- {}" #: tickets/notifications.py:113 msgid "{}: New Ticket - {} ({})" -msgstr "" +msgstr "新しいチケット- {} ({})" #: tickets/notifications.py:157 msgid "Your ticket has been processed, processor - {}" -msgstr "" +msgstr "チケットが処理されました。プロセッサー- {}" #: tickets/notifications.py:161 msgid "Ticket has processed - {} ({})" -msgstr "" +msgstr "チケットが処理済み- {} ({})" #: tickets/serializers/flow.py:21 msgid "Assignees display" -msgstr "" +msgstr "受付者名" #: tickets/serializers/flow.py:47 msgid "Please select the Assignees" -msgstr "" +msgstr "受付をお選びください" #: tickets/serializers/flow.py:75 msgid "The current organization type already exists" -msgstr "" +msgstr "現在の組織タイプは既に存在します。" #: tickets/serializers/super_ticket.py:11 msgid "Processor" -msgstr "" +msgstr "プロセッサ" #: tickets/serializers/ticket/apply_asset.py:20 +#, fuzzy msgid "Apply actions" -msgstr "" +msgstr "アプリケーションの適用" #: tickets/serializers/ticket/common.py:15 #: tickets/serializers/ticket/common.py:77 msgid "Created by ticket ({}-{})" -msgstr "" +msgstr "チケットで作成 ({}-{})" #: tickets/serializers/ticket/common.py:67 msgid "The expiration date should be greater than the start date" -msgstr "" +msgstr "有効期限は開始日より大きくする必要があります" #: tickets/serializers/ticket/common.py:84 msgid "Permission named `{}` already exists" -msgstr "" +msgstr "'{}'という名前の権限は既に存在します" #: tickets/serializers/ticket/ticket.py:96 msgid "The ticket flow `{}` does not exist" -msgstr "" +msgstr "チケットフロー '{}'が存在しない" #: tickets/templates/tickets/_msg_ticket.html:20 msgid "View details" -msgstr "" +msgstr "詳細の表示" #: tickets/templates/tickets/_msg_ticket.html:25 msgid "Direct approval" -msgstr "" +msgstr "直接承認" #: tickets/templates/tickets/approve_check_password.html:11 msgid "Ticket information" -msgstr "" +msgstr "作業指示情報" #: tickets/templates/tickets/approve_check_password.html:29 #: tickets/views/approve.py:38 msgid "Ticket approval" -msgstr "" +msgstr "作業指示の承認" #: tickets/templates/tickets/approve_check_password.html:45 msgid "Approval" -msgstr "" +msgstr "承認" #: tickets/templates/tickets/approve_check_password.html:54 msgid "Go Login" -msgstr "" +msgstr "ログイン" #: tickets/views/approve.py:39 msgid "" "This ticket does not exist, the process has ended, or this link has expired" msgstr "" +"このワークシートが存在しないか、ワークシートが終了したか、このリンクが無効に" +"なっています" #: tickets/views/approve.py:68 msgid "Click the button below to approve or reject" -msgstr "" +msgstr "下のボタンをクリックして同意または拒否。" #: tickets/views/approve.py:70 msgid "After successful authentication, this ticket can be approved directly" -msgstr "" +msgstr "認証に成功した後、作業指示書は直接承認することができる。" #: tickets/views/approve.py:92 msgid "Illegal approval action" -msgstr "" +msgstr "無効な承認アクション" #: tickets/views/approve.py:105 msgid "This user is not authorized to approve this ticket" -msgstr "" +msgstr "このユーザーはこの作業指示を承認する権限がありません" #: users/api/user.py:183 msgid "Could not reset self otp, use profile reset instead" -msgstr "" +msgstr "自己otpをリセットできませんでした、代わりにプロファイルリセットを使用" #: users/apps.py:9 msgid "Users" -msgstr "" +msgstr "ユーザー" #: users/const.py:10 msgid "System administrator" -msgstr "" +msgstr "システム管理者" #: users/const.py:11 msgid "System auditor" -msgstr "" +msgstr "システム監査人" #: users/const.py:12 msgid "Organization administrator" -msgstr "" +msgstr "組織管理者" #: users/const.py:13 msgid "Organization auditor" -msgstr "" +msgstr "組織監査人" #: users/const.py:18 msgid "Reset link will be generated and sent to the user" -msgstr "" +msgstr "リセットリンクが生成され、ユーザーに送信されます" #: users/const.py:19 msgid "Set password" -msgstr "" +msgstr "パスワードの設定" #: users/exceptions.py:10 msgid "MFA not enabled" -msgstr "" +msgstr "MFAが有効化されていません" #: users/exceptions.py:20 msgid "MFA method not support" -msgstr "" +msgstr "MFAメソッドはサポートしていません" #: users/forms/profile.py:50 msgid "" @@ -5767,10 +6037,12 @@ msgid "" "in. you can also directly bind in \"personal information -> quick " "modification -> change MFA Settings\"!" msgstr "" +"有効にすると、次回のログイン時にマルチファクタ認証バインドプロセスに入りま" +"す。(個人情報->クイック修正->MFAマルチファクタ認証の設定)で直接バインド!" #: users/forms/profile.py:61 msgid "* Enable MFA to make the account more secure." -msgstr "" +msgstr "* アカウントをより安全にするためにMFAを有効にします。" #: users/forms/profile.py:70 msgid "" @@ -5778,710 +6050,726 @@ msgid "" "and key sensitive information properly. (for example: setting complex " "password, enabling MFA)" msgstr "" +"あなたとあなたの会社を保護するために、アカウント、パスワード、キーの機密情報" +"を適切に保管してください。(例: 複雑なパスワードの設定、MFAの有効化)" #: users/forms/profile.py:77 msgid "Finish" -msgstr "" +msgstr "仕上げ" #: users/forms/profile.py:84 msgid "New password" -msgstr "" +msgstr "新しいパスワード" #: users/forms/profile.py:89 msgid "Confirm password" -msgstr "" +msgstr "パスワードの確認" #: users/forms/profile.py:97 msgid "Password does not match" -msgstr "" +msgstr "パスワードが一致しない" #: users/forms/profile.py:118 msgid "Old password" -msgstr "" +msgstr "古いパスワード" #: users/forms/profile.py:128 msgid "Old password error" -msgstr "" +msgstr "古いパスワードエラー" #: users/forms/profile.py:138 msgid "Automatically configure and download the SSH key" -msgstr "" +msgstr "SSHキーの自動設定とダウンロード" #: users/forms/profile.py:140 msgid "ssh public key" -msgstr "" +msgstr "ssh公開キー" #: users/forms/profile.py:141 msgid "ssh-rsa AAAA..." -msgstr "" +msgstr "ssh-rsa AAAA.." #: users/forms/profile.py:142 msgid "Paste your id_rsa.pub here." -msgstr "" +msgstr "ここにid_rsa.pubを貼り付けます。" #: users/forms/profile.py:155 msgid "Public key should not be the same as your old one." -msgstr "" +msgstr "公開鍵は古いものと同じであってはなりません。" #: users/forms/profile.py:159 users/serializers/profile.py:100 #: users/serializers/profile.py:183 users/serializers/profile.py:210 msgid "Not a valid ssh public key" -msgstr "" +msgstr "有効なssh公開鍵ではありません" #: users/forms/profile.py:170 users/models/user.py:708 msgid "Public key" -msgstr "" +msgstr "公開キー" #: users/models/user.py:561 msgid "Force enable" -msgstr "" +msgstr "強制有効" #: users/models/user.py:631 msgid "Local" -msgstr "" +msgstr "ローカル" #: users/models/user.py:687 users/serializers/user.py:204 msgid "Is service account" -msgstr "" +msgstr "サービスアカウントです" #: users/models/user.py:689 msgid "Avatar" -msgstr "" +msgstr "アバター" #: users/models/user.py:692 msgid "Wechat" -msgstr "" +msgstr "微信" #: users/models/user.py:695 msgid "Phone" -msgstr "" +msgstr "電話" #: users/models/user.py:701 msgid "OTP secret key" -msgstr "" +msgstr "OTP 秘密" #: users/models/user.py:705 msgid "Private key" -msgstr "" +msgstr "ssh秘密鍵" #: users/models/user.py:711 msgid "Secret key" -msgstr "" +msgstr "秘密キー" #: users/models/user.py:716 users/serializers/profile.py:149 #: users/serializers/user.py:201 msgid "Is first login" -msgstr "" +msgstr "最初のログインです" #: users/models/user.py:727 msgid "Source" -msgstr "" +msgstr "ソース" #: users/models/user.py:731 msgid "Date password last updated" -msgstr "" +msgstr "最終更新日パスワード" #: users/models/user.py:734 msgid "Need update password" -msgstr "" +msgstr "更新パスワードが必要" #: users/models/user.py:909 msgid "Can invite user" -msgstr "" +msgstr "ユーザーを招待できます" #: users/models/user.py:910 msgid "Can remove user" -msgstr "" +msgstr "ユーザーを削除できます" #: users/models/user.py:911 msgid "Can match user" -msgstr "" +msgstr "ユーザーに一致できます" #: users/models/user.py:920 msgid "Administrator" -msgstr "" +msgstr "管理者" #: users/models/user.py:923 msgid "Administrator is the super user of system" -msgstr "" +msgstr "管理者はシステムのスーパーユーザーです" #: users/models/user.py:948 msgid "User password history" -msgstr "" +msgstr "ユーザーパスワード履歴" #: users/notifications.py:55 #: users/templates/users/_msg_password_expire_reminder.html:17 #: users/templates/users/reset_password.html:5 #: users/templates/users/reset_password.html:6 msgid "Reset password" -msgstr "" +msgstr "パスワードのリセット" #: users/notifications.py:85 users/views/profile/reset.py:194 msgid "Reset password success" -msgstr "" +msgstr "パスワードのリセット成功" #: users/notifications.py:117 msgid "Reset public key success" -msgstr "" +msgstr "公開鍵のリセット成功" #: users/notifications.py:143 msgid "Password is about expire" -msgstr "" +msgstr "パスワードの有効期限が近づいています" #: users/notifications.py:171 msgid "Account is about expire" -msgstr "" +msgstr "アカウントの有効期限が近づいています" #: users/notifications.py:193 msgid "Reset SSH Key" -msgstr "" +msgstr "SSHキーのリセット" #: users/notifications.py:214 msgid "Reset MFA" -msgstr "" +msgstr "MFAのリセット" #: users/serializers/profile.py:30 msgid "The old password is incorrect" -msgstr "" +msgstr "古いパスワードが正しくありません" #: users/serializers/profile.py:37 users/serializers/profile.py:197 msgid "Password does not match security rules" -msgstr "" +msgstr "パスワードがセキュリティルールと一致しない" #: users/serializers/profile.py:41 msgid "The new password cannot be the last {} passwords" -msgstr "" +msgstr "新しいパスワードを最後の {} 個のパスワードにすることはできません" #: users/serializers/profile.py:49 users/serializers/profile.py:71 msgid "The newly set password is inconsistent" -msgstr "" +msgstr "新しく設定されたパスワードが一致しない" #: users/serializers/user.py:30 msgid "System roles" -msgstr "" +msgstr "システムの役割" #: users/serializers/user.py:35 msgid "Org roles" -msgstr "" +msgstr "組織ロール" #: users/serializers/user.py:38 msgid "System roles display" -msgstr "" +msgstr "システムロール表示" #: users/serializers/user.py:40 msgid "Org roles display" -msgstr "" +msgstr "組織ロール表示" #: users/serializers/user.py:90 #: xpack/plugins/change_auth_plan/models/base.py:35 #: xpack/plugins/change_auth_plan/serializers/base.py:27 msgid "Password strategy" -msgstr "" +msgstr "パスワード戦略" #: users/serializers/user.py:92 msgid "MFA enabled" -msgstr "" +msgstr "MFA有効化" #: users/serializers/user.py:94 msgid "MFA force enabled" -msgstr "" +msgstr "MFAフォース有効化" #: users/serializers/user.py:97 msgid "MFA level display" -msgstr "" +msgstr "MFAレベル表示" #: users/serializers/user.py:99 msgid "Login blocked" -msgstr "" +msgstr "ログインブロック" #: users/serializers/user.py:102 msgid "Can public key authentication" -msgstr "" +msgstr "公開鍵認証が可能" #: users/serializers/user.py:206 msgid "Avatar url" -msgstr "" +msgstr "アバターURL" #: users/serializers/user.py:208 msgid "Groups name" -msgstr "" +msgstr "グループ名" #: users/serializers/user.py:209 msgid "Source name" -msgstr "" +msgstr "ソース名" #: users/serializers/user.py:210 msgid "Organization role name" -msgstr "" +msgstr "組織の役割名" #: users/serializers/user.py:211 msgid "Super role name" -msgstr "" +msgstr "スーパーロール名" #: users/serializers/user.py:212 msgid "Total role name" -msgstr "" +msgstr "合計ロール名" #: users/serializers/user.py:214 msgid "Is wecom bound" -msgstr "" +msgstr "企業の微信をバインドしているかどうか" #: users/serializers/user.py:215 msgid "Is dingtalk bound" -msgstr "" +msgstr "ピンをバインドしているかどうか" #: users/serializers/user.py:216 msgid "Is feishu bound" -msgstr "" +msgstr "飛本を縛ったかどうか" #: users/serializers/user.py:217 msgid "Is OTP bound" -msgstr "" +msgstr "仮想MFAがバインドされているか" #: users/serializers/user.py:219 msgid "System role name" -msgstr "" +msgstr "システムロール名" #: users/serializers/user.py:325 msgid "Select users" -msgstr "" +msgstr "ユーザーの選択" #: users/serializers/user.py:326 msgid "For security, only list several users" -msgstr "" +msgstr "セキュリティのために、複数のユーザーのみをリストします" #: users/serializers/user.py:362 msgid "name not unique" -msgstr "" +msgstr "名前が一意ではない" #: users/templates/users/_msg_account_expire_reminder.html:7 msgid "Your account will expire in" -msgstr "" +msgstr "アカウントの有効期限は" #: users/templates/users/_msg_account_expire_reminder.html:8 msgid "" "In order not to affect your normal work, please contact the administrator " "for confirmation." msgstr "" +"通常の作業に影響を与えないように、確認のために管理者に連絡してください。" #: users/templates/users/_msg_password_expire_reminder.html:7 msgid "Your password will expire in" -msgstr "" +msgstr "パスワードは" #: users/templates/users/_msg_password_expire_reminder.html:8 msgid "" "For your account security, please click on the link below to update your " "password in time" msgstr "" +"アカウントのセキュリティについては、下のリンクをクリックしてパスワードを時間" +"内に更新してください" #: users/templates/users/_msg_password_expire_reminder.html:11 msgid "Click here update password" -msgstr "" +msgstr "ここをクリック更新パスワード" #: users/templates/users/_msg_password_expire_reminder.html:16 msgid "If your password has expired, please click the link below to" msgstr "" +"パスワードの有効期限が切れている場合は、以下のリンクをクリックしてください" #: users/templates/users/_msg_reset_mfa.html:7 msgid "Your MFA has been reset by site administrator" -msgstr "" +msgstr "MFAはサイト管理者によってリセットされました" #: users/templates/users/_msg_reset_mfa.html:8 #: users/templates/users/_msg_reset_ssh_key.html:8 msgid "Please click the link below to set" -msgstr "" +msgstr "以下のリンクをクリックして設定してください" #: users/templates/users/_msg_reset_mfa.html:11 #: users/templates/users/_msg_reset_ssh_key.html:11 msgid "Click here set" -msgstr "" +msgstr "ここをクリックセット" #: users/templates/users/_msg_reset_ssh_key.html:7 msgid "Your ssh public key has been reset by site administrator" -msgstr "" +msgstr "あなたのssh公開鍵はサイト管理者によってリセットされました" #: users/templates/users/_msg_user_created.html:15 msgid "click here to set your password" -msgstr "" +msgstr "ここをクリックしてパスワードを設定してください" #: users/templates/users/forgot_password.html:32 msgid "Input your email account, that will send a email to your" -msgstr "" +msgstr "あなたのメールを入力し、それはあなたにメールを送信します" #: users/templates/users/forgot_password.html:35 msgid "" "Enter your mobile number and a verification code will be sent to your phone" -msgstr "" +msgstr "携帯電話番号を入力すると、認証コードが携帯電話に送信されます" #: users/templates/users/forgot_password.html:57 msgid "Email account" -msgstr "" +msgstr "メールアドレス" #: users/templates/users/forgot_password.html:61 msgid "Mobile number" -msgstr "" +msgstr "携帯番号" #: users/templates/users/forgot_password.html:68 msgid "Send" -msgstr "" +msgstr "送信" #: users/templates/users/forgot_password.html:72 #: users/templates/users/forgot_password_previewing.html:30 msgid "Submit" -msgstr "" +msgstr "送信" #: users/templates/users/forgot_password_previewing.html:21 msgid "Please enter the username for which you want to retrieve the password" -msgstr "" +msgstr "パスワードを取り戻す必要があるユーザー名を入力してください" #: users/templates/users/mfa_setting.html:24 msgid "Enable MFA" -msgstr "" +msgstr "MFAの有効化" #: users/templates/users/mfa_setting.html:30 msgid "MFA force enable, cannot disable" -msgstr "" +msgstr "MFA強制有効化、無効化できません" #: users/templates/users/mfa_setting.html:48 msgid "MFA setting" -msgstr "" +msgstr "MFAの設定" #: users/templates/users/reset_password.html:23 msgid "Your password must satisfy" -msgstr "" +msgstr "パスワードを満たす必要があります" #: users/templates/users/reset_password.html:24 msgid "Password strength" -msgstr "" +msgstr "パスワードの強さ" #: users/templates/users/reset_password.html:48 msgid "Very weak" -msgstr "" +msgstr "非常に弱い" #: users/templates/users/reset_password.html:49 msgid "Weak" -msgstr "" +msgstr "弱い" #: users/templates/users/reset_password.html:51 msgid "Medium" -msgstr "" +msgstr "中" #: users/templates/users/reset_password.html:52 msgid "Strong" -msgstr "" +msgstr "強い" #: users/templates/users/reset_password.html:53 msgid "Very strong" -msgstr "" +msgstr "非常に強い" #: users/templates/users/user_otp_check_password.html:6 msgid "Enable OTP" -msgstr "" +msgstr "OTPの有効化" #: users/templates/users/user_otp_enable_bind.html:6 msgid "Bind one-time password authenticator" -msgstr "" +msgstr "ワンタイムパスワード認証子のバインド" #: users/templates/users/user_otp_enable_bind.html:13 msgid "" "Use the MFA Authenticator application to scan the following qr code for a 6-" "bit verification code" msgstr "" +"MFA Authenticatorアプリケーションを使用して、次のqrコードを6ビット検証コード" +"でスキャンします。" #: users/templates/users/user_otp_enable_bind.html:22 #: users/templates/users/user_verify_mfa.html:27 msgid "Six figures" -msgstr "" +msgstr "6つの数字" #: users/templates/users/user_otp_enable_install_app.html:6 msgid "Install app" -msgstr "" +msgstr "アプリのインストール" #: users/templates/users/user_otp_enable_install_app.html:13 msgid "" "Download and install the MFA Authenticator application on your phone or " "applet of WeChat" msgstr "" +"携帯電話またはWeChatのアプレットにMFA Authenticatorアプリケーションをダウン" +"ロードしてインストールします" #: users/templates/users/user_otp_enable_install_app.html:18 msgid "Android downloads" -msgstr "" +msgstr "Androidのダウンロード" #: users/templates/users/user_otp_enable_install_app.html:23 msgid "iPhone downloads" -msgstr "" +msgstr "IPhoneのダウンロード" #: users/templates/users/user_otp_enable_install_app.html:26 msgid "" "After installation, click the next step to enter the binding page (if " "installed, go to the next step directly)." msgstr "" +"インストール後、次のステップをクリックしてバインディングページに入ります (イ" +"ンストールされている場合は、次のステップに直接進みます)。" #: users/templates/users/user_password_verify.html:8 #: users/templates/users/user_password_verify.html:9 msgid "Verify password" -msgstr "" +msgstr "パスワードの確認" #: users/templates/users/user_verify_mfa.html:9 msgid "Authenticate" -msgstr "" +msgstr "認証" #: users/templates/users/user_verify_mfa.html:15 msgid "" "The account protection has been opened, please complete the following " "operations according to the prompts" msgstr "" +"アカウント保護が開始されました。プロンプトに従って次の操作を完了してください" #: users/templates/users/user_verify_mfa.html:17 msgid "Open MFA Authenticator and enter the 6-bit dynamic code" -msgstr "" +msgstr "MFA Authenticatorを開き、6ビットの動的コードを入力します" #: users/views/profile/otp.py:87 msgid "Already bound" -msgstr "" +msgstr "すでにバインド済み" #: users/views/profile/otp.py:88 msgid "MFA already bound, disable first, then bound" msgstr "" +"MFAはすでにバインドされており、最初に無効にしてからバインドされています。" #: users/views/profile/otp.py:115 msgid "OTP enable success" -msgstr "" +msgstr "OTP有効化成功" #: users/views/profile/otp.py:116 msgid "OTP enable success, return login page" -msgstr "" +msgstr "OTP有効化成功、ログインページを返す" #: users/views/profile/otp.py:158 msgid "Disable OTP" -msgstr "" +msgstr "OTPの無効化" #: users/views/profile/otp.py:164 msgid "OTP disable success" -msgstr "" +msgstr "OTP無効化成功" #: users/views/profile/otp.py:165 msgid "OTP disable success, return login page" -msgstr "" +msgstr "OTP無効化成功、ログインページを返す" #: users/views/profile/password.py:36 users/views/profile/password.py:41 msgid "Password invalid" -msgstr "" +msgstr "パスワード無効" #: users/views/profile/reset.py:47 msgid "" "Non-local users can log in only from third-party platforms and cannot change " "their passwords: {}" msgstr "" +"ローカル以外のユーザーは、サードパーティ プラットフォームからのログインのみが" +"許可され、パスワードの変更はサポートされていません: {}" #: users/views/profile/reset.py:149 users/views/profile/reset.py:160 msgid "Token invalid or expired" -msgstr "" +msgstr "トークンが無効または期限切れ" #: users/views/profile/reset.py:165 msgid "User auth from {}, go there change password" -msgstr "" +msgstr "ユーザー認証ソース {}, 対応するシステムにパスワードを変更してください" #: users/views/profile/reset.py:172 msgid "* Your password does not meet the requirements" -msgstr "" +msgstr "* パスワードが要件を満たしていない" #: users/views/profile/reset.py:178 msgid "* The new password cannot be the last {} passwords" -msgstr "" +msgstr "* 新しいパスワードを最後の {} パスワードにすることはできません" #: users/views/profile/reset.py:195 msgid "Reset password success, return to login page" -msgstr "" +msgstr "パスワードの成功をリセットし、ログインページに戻る" #: xpack/apps.py:8 msgid "XPACK" -msgstr "" +msgstr "XPack" #: xpack/plugins/change_auth_plan/meta.py:9 #: xpack/plugins/change_auth_plan/models/asset.py:124 msgid "Change auth plan" -msgstr "" +msgstr "密かな計画" #: xpack/plugins/change_auth_plan/models/app.py:45 #: xpack/plugins/change_auth_plan/models/app.py:94 msgid "Application change auth plan" -msgstr "" +msgstr "改密計画の適用" #: xpack/plugins/change_auth_plan/models/app.py:98 #: xpack/plugins/change_auth_plan/models/app.py:150 msgid "Application change auth plan execution" -msgstr "" +msgstr "改密計画実行の適用" #: xpack/plugins/change_auth_plan/models/app.py:143 msgid "App" -msgstr "" +msgstr "適用" #: xpack/plugins/change_auth_plan/models/app.py:155 msgid "Application change auth plan task" -msgstr "" +msgstr "改密計画タスクの適用" #: xpack/plugins/change_auth_plan/models/app.py:179 #: xpack/plugins/change_auth_plan/models/asset.py:264 msgid "Password cannot be set to blank, exit. " -msgstr "" +msgstr "パスワードを空白に設定することはできません。" #: xpack/plugins/change_auth_plan/models/asset.py:68 msgid "Asset change auth plan" -msgstr "" +msgstr "資産変更のオースプラン" #: xpack/plugins/change_auth_plan/models/asset.py:135 msgid "Asset change auth plan execution" -msgstr "" +msgstr "資産変更のオースプランの実行" #: xpack/plugins/change_auth_plan/models/asset.py:211 msgid "Change auth plan execution" -msgstr "" +msgstr "改密計画の実行" #: xpack/plugins/change_auth_plan/models/asset.py:218 msgid "Asset change auth plan task" -msgstr "" +msgstr "資産改密計画タスク" #: xpack/plugins/change_auth_plan/models/asset.py:253 msgid "This asset does not have a privileged user set: " -msgstr "" +msgstr "このアセットには特権ユーザーセットがありません。" #: xpack/plugins/change_auth_plan/models/asset.py:259 msgid "" "The password and key of the current asset privileged user cannot be changed: " -msgstr "" +msgstr "現在のアセット特権ユーザーのパスワードとキーは変更できません。" #: xpack/plugins/change_auth_plan/models/asset.py:270 msgid "Public key cannot be set to null, exit. " -msgstr "" +msgstr "公開鍵をnull、exitに設定することはできません。" #: xpack/plugins/change_auth_plan/models/base.py:114 msgid "Change auth plan snapshot" -msgstr "" +msgstr "計画スナップショットの暗号化" #: xpack/plugins/change_auth_plan/models/base.py:184 msgid "Preflight check" -msgstr "" +msgstr "プリフライトチェック" #: xpack/plugins/change_auth_plan/models/base.py:185 msgid "Change auth" -msgstr "" +msgstr "秘密を改める" #: xpack/plugins/change_auth_plan/models/base.py:186 msgid "Verify auth" -msgstr "" +msgstr "パスワード/キーの確認" #: xpack/plugins/change_auth_plan/models/base.py:187 msgid "Keep auth" -msgstr "" +msgstr "パスワード/キーの保存" #: xpack/plugins/change_auth_plan/models/base.py:195 msgid "Step" -msgstr "" +msgstr "ステップ" #: xpack/plugins/change_auth_plan/serializers/asset.py:30 msgid "Change Password" -msgstr "" +msgstr "パスワードの変更" #: xpack/plugins/change_auth_plan/serializers/asset.py:31 msgid "Change SSH Key" -msgstr "" +msgstr "SSHキーの変更" #: xpack/plugins/change_auth_plan/serializers/base.py:44 msgid "Run times" -msgstr "" +msgstr "実行時間" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:236 msgid "After many attempts to change the secret, it still failed" -msgstr "" +msgstr "秘密を変更しようとする多くの試みの後、それはまだ失敗しました" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:255 msgid "Invalid/incorrect password" -msgstr "" +msgstr "パスワードが無効/間違っている" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:257 msgid "Failed to connect to the host" -msgstr "" +msgstr "ホストへの接続に失敗しました" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:259 msgid "Data could not be sent to remote" -msgstr "" +msgstr "データをリモートに送信できませんでした" #: xpack/plugins/cloud/api.py:40 msgid "Test connection successful" -msgstr "" +msgstr "テスト接続成功" #: xpack/plugins/cloud/api.py:42 msgid "Test connection failed: {}" -msgstr "" +msgstr "テスト接続に失敗しました: {}" #: xpack/plugins/cloud/const.py:8 msgid "Alibaba Cloud" -msgstr "" +msgstr "アリ雲" #: xpack/plugins/cloud/const.py:9 msgid "AWS (International)" -msgstr "" +msgstr "AWS (国際)" #: xpack/plugins/cloud/const.py:10 msgid "AWS (China)" -msgstr "" +msgstr "AWS (中国)" #: xpack/plugins/cloud/const.py:11 msgid "Azure (China)" -msgstr "" +msgstr "Azure (中国)" #: xpack/plugins/cloud/const.py:12 msgid "Azure (International)" -msgstr "" +msgstr "Azure (国際)" #: xpack/plugins/cloud/const.py:14 msgid "Baidu Cloud" -msgstr "" +msgstr "百度雲" #: xpack/plugins/cloud/const.py:15 msgid "JD Cloud" -msgstr "" +msgstr "京東雲" #: xpack/plugins/cloud/const.py:16 msgid "KingSoft Cloud" -msgstr "" +msgstr "金山雲" #: xpack/plugins/cloud/const.py:17 msgid "Tencent Cloud" -msgstr "" +msgstr "テンセント雲" #: xpack/plugins/cloud/const.py:18 msgid "Tencent Cloud (Lighthouse)" -msgstr "" +msgstr "テンセント雲(軽量アプリケーション)" #: xpack/plugins/cloud/const.py:19 msgid "VMware" -msgstr "" +msgstr "VMware" #: xpack/plugins/cloud/const.py:20 xpack/plugins/cloud/providers/nutanix.py:13 msgid "Nutanix" -msgstr "" +msgstr "Nutanix" #: xpack/plugins/cloud/const.py:21 msgid "Huawei Private Cloud" -msgstr "" +msgstr "華為私有雲" #: xpack/plugins/cloud/const.py:22 msgid "Qingyun Private Cloud" -msgstr "" +msgstr "青雲私有雲" #: xpack/plugins/cloud/const.py:23 msgid "CTYun Private Cloud" -msgstr "" +msgstr "スカイウィング私有雲" #: xpack/plugins/cloud/const.py:24 msgid "OpenStack" -msgstr "" +msgstr "OpenStack" #: xpack/plugins/cloud/const.py:25 msgid "Google Cloud Platform" -msgstr "" +msgstr "谷歌雲" #: xpack/plugins/cloud/const.py:26 msgid "Fusion Compute" @@ -6489,374 +6777,374 @@ msgstr "" #: xpack/plugins/cloud/const.py:31 msgid "Private IP" -msgstr "" +msgstr "プライベートIP" #: xpack/plugins/cloud/const.py:32 msgid "Public IP" -msgstr "" +msgstr "パブリックIP" #: xpack/plugins/cloud/const.py:36 msgid "Instance name" -msgstr "" +msgstr "インスタンス名" #: xpack/plugins/cloud/const.py:37 msgid "Instance name and Partial IP" -msgstr "" +msgstr "インスタンス名と部分IP" #: xpack/plugins/cloud/const.py:42 msgid "Succeed" -msgstr "" +msgstr "成功" #: xpack/plugins/cloud/const.py:46 msgid "Unsync" -msgstr "" +msgstr "同期していません" #: xpack/plugins/cloud/const.py:47 msgid "New Sync" -msgstr "" +msgstr "新しい同期" #: xpack/plugins/cloud/const.py:48 msgid "Synced" -msgstr "" +msgstr "同期済み" #: xpack/plugins/cloud/const.py:49 msgid "Released" -msgstr "" +msgstr "リリース済み" #: xpack/plugins/cloud/meta.py:9 msgid "Cloud center" -msgstr "" +msgstr "クラウドセンター" #: xpack/plugins/cloud/models.py:32 msgid "Provider" -msgstr "" +msgstr "プロバイダー" #: xpack/plugins/cloud/models.py:36 msgid "Validity" -msgstr "" +msgstr "有効性" #: xpack/plugins/cloud/models.py:41 msgid "Cloud account" -msgstr "" +msgstr "クラウドアカウント" #: xpack/plugins/cloud/models.py:43 msgid "Test cloud account" -msgstr "" +msgstr "クラウドアカウントのテスト" #: xpack/plugins/cloud/models.py:90 xpack/plugins/cloud/serializers/task.py:38 msgid "Regions" -msgstr "" +msgstr "リージョン" #: xpack/plugins/cloud/models.py:93 msgid "Hostname strategy" -msgstr "" +msgstr "ホスト名戦略" #: xpack/plugins/cloud/models.py:102 xpack/plugins/cloud/serializers/task.py:72 msgid "Unix admin user" -msgstr "" +msgstr "Unix adminユーザー" #: xpack/plugins/cloud/models.py:106 xpack/plugins/cloud/serializers/task.py:73 msgid "Windows admin user" -msgstr "" +msgstr "Windows管理者" #: xpack/plugins/cloud/models.py:112 xpack/plugins/cloud/serializers/task.py:46 msgid "IP network segment group" -msgstr "" +msgstr "IPネットワークセグメントグループ" #: xpack/plugins/cloud/models.py:115 xpack/plugins/cloud/serializers/task.py:51 msgid "Sync IP type" -msgstr "" +msgstr "同期IPタイプ" #: xpack/plugins/cloud/models.py:118 xpack/plugins/cloud/serializers/task.py:76 msgid "Always update" -msgstr "" +msgstr "常に更新" #: xpack/plugins/cloud/models.py:124 msgid "Date last sync" -msgstr "" +msgstr "最終同期日" #: xpack/plugins/cloud/models.py:129 xpack/plugins/cloud/models.py:170 msgid "Sync instance task" -msgstr "" +msgstr "インスタンスの同期タスク" #: xpack/plugins/cloud/models.py:181 xpack/plugins/cloud/models.py:229 msgid "Date sync" -msgstr "" +msgstr "日付の同期" #: xpack/plugins/cloud/models.py:185 msgid "Sync instance task execution" -msgstr "" +msgstr "インスタンスタスクの同期実行" #: xpack/plugins/cloud/models.py:209 msgid "Sync task" -msgstr "" +msgstr "同期タスク" #: xpack/plugins/cloud/models.py:213 msgid "Sync instance task history" -msgstr "" +msgstr "インスタンスタスク履歴の同期" #: xpack/plugins/cloud/models.py:216 msgid "Instance" -msgstr "" +msgstr "インスタンス" #: xpack/plugins/cloud/models.py:233 msgid "Sync instance detail" -msgstr "" +msgstr "同期インスタンスの詳細" #: xpack/plugins/cloud/providers/aws_international.py:17 msgid "China (Beijing)" -msgstr "" +msgstr "中国 (北京)" #: xpack/plugins/cloud/providers/aws_international.py:18 msgid "China (Ningxia)" -msgstr "" +msgstr "中国 (寧夏)" #: xpack/plugins/cloud/providers/aws_international.py:21 msgid "US East (Ohio)" -msgstr "" +msgstr "米国東部 (オハイオ州)" #: xpack/plugins/cloud/providers/aws_international.py:22 msgid "US East (N. Virginia)" -msgstr "" +msgstr "米国東部 (N. バージニア州)" #: xpack/plugins/cloud/providers/aws_international.py:23 msgid "US West (N. California)" -msgstr "" +msgstr "米国西部 (N. カリフォルニア州)" #: xpack/plugins/cloud/providers/aws_international.py:24 msgid "US West (Oregon)" -msgstr "" +msgstr "米国西部 (オレゴン州)" #: xpack/plugins/cloud/providers/aws_international.py:25 msgid "Africa (Cape Town)" -msgstr "" +msgstr "アフリカ (ケープタウン)" #: xpack/plugins/cloud/providers/aws_international.py:26 msgid "Asia Pacific (Hong Kong)" -msgstr "" +msgstr "アジアパシフィック (香港)" #: xpack/plugins/cloud/providers/aws_international.py:27 msgid "Asia Pacific (Mumbai)" -msgstr "" +msgstr "アジア太平洋 (ムンバイ)" #: xpack/plugins/cloud/providers/aws_international.py:28 msgid "Asia Pacific (Osaka-Local)" -msgstr "" +msgstr "アジアパシフィック (大阪-ローカル)" #: xpack/plugins/cloud/providers/aws_international.py:29 msgid "Asia Pacific (Seoul)" -msgstr "" +msgstr "アジア太平洋地域 (ソウル)" #: xpack/plugins/cloud/providers/aws_international.py:30 msgid "Asia Pacific (Singapore)" -msgstr "" +msgstr "アジア太平洋 (シンガポール)" #: xpack/plugins/cloud/providers/aws_international.py:31 msgid "Asia Pacific (Sydney)" -msgstr "" +msgstr "アジア太平洋 (シドニー)" #: xpack/plugins/cloud/providers/aws_international.py:32 msgid "Asia Pacific (Tokyo)" -msgstr "" +msgstr "アジアパシフィック (東京)" #: xpack/plugins/cloud/providers/aws_international.py:33 msgid "Canada (Central)" -msgstr "" +msgstr "カナダ (中央)" #: xpack/plugins/cloud/providers/aws_international.py:34 msgid "Europe (Frankfurt)" -msgstr "" +msgstr "ヨーロッパ (フランクフルト)" #: xpack/plugins/cloud/providers/aws_international.py:35 msgid "Europe (Ireland)" -msgstr "" +msgstr "ヨーロッパ (アイルランド)" #: xpack/plugins/cloud/providers/aws_international.py:36 msgid "Europe (London)" -msgstr "" +msgstr "ヨーロッパ (ロンドン)" #: xpack/plugins/cloud/providers/aws_international.py:37 msgid "Europe (Milan)" -msgstr "" +msgstr "ヨーロッパ (ミラノ)" #: xpack/plugins/cloud/providers/aws_international.py:38 msgid "Europe (Paris)" -msgstr "" +msgstr "ヨーロッパ (パリ)" #: xpack/plugins/cloud/providers/aws_international.py:39 msgid "Europe (Stockholm)" -msgstr "" +msgstr "ヨーロッパ (ストックホルム)" #: xpack/plugins/cloud/providers/aws_international.py:40 msgid "Middle East (Bahrain)" -msgstr "" +msgstr "中东 (バーレーン)" #: xpack/plugins/cloud/providers/aws_international.py:41 msgid "South America (São Paulo)" -msgstr "" +msgstr "南米 (サンパウロ)" #: xpack/plugins/cloud/providers/baiducloud.py:54 #: xpack/plugins/cloud/providers/jdcloud.py:127 msgid "CN North-Beijing" -msgstr "" +msgstr "華北-北京" #: xpack/plugins/cloud/providers/baiducloud.py:55 #: xpack/plugins/cloud/providers/huaweicloud.py:40 #: xpack/plugins/cloud/providers/jdcloud.py:130 msgid "CN South-Guangzhou" -msgstr "" +msgstr "華南-広州" #: xpack/plugins/cloud/providers/baiducloud.py:56 msgid "CN East-Suzhou" -msgstr "" +msgstr "華東-蘇州" #: xpack/plugins/cloud/providers/baiducloud.py:57 #: xpack/plugins/cloud/providers/huaweicloud.py:48 msgid "CN-Hong Kong" -msgstr "" +msgstr "中国-香港" #: xpack/plugins/cloud/providers/baiducloud.py:58 msgid "CN Center-Wuhan" -msgstr "" +msgstr "華中-武漢" #: xpack/plugins/cloud/providers/baiducloud.py:59 msgid "CN North-Baoding" -msgstr "" +msgstr "華北-保定" #: xpack/plugins/cloud/providers/baiducloud.py:60 #: xpack/plugins/cloud/providers/jdcloud.py:129 msgid "CN East-Shanghai" -msgstr "" +msgstr "華東-上海" #: xpack/plugins/cloud/providers/baiducloud.py:61 #: xpack/plugins/cloud/providers/huaweicloud.py:47 msgid "AP-Singapore" -msgstr "" +msgstr "アジア太平洋-シンガポール" #: xpack/plugins/cloud/providers/huaweicloud.py:35 msgid "AF-Johannesburg" -msgstr "" +msgstr "アフリカ-ヨハネスブルク" #: xpack/plugins/cloud/providers/huaweicloud.py:36 msgid "CN North-Beijing4" -msgstr "" +msgstr "華北-北京4" #: xpack/plugins/cloud/providers/huaweicloud.py:37 msgid "CN North-Beijing1" -msgstr "" +msgstr "華北-北京1" #: xpack/plugins/cloud/providers/huaweicloud.py:38 msgid "CN East-Shanghai2" -msgstr "" +msgstr "華東-上海2" #: xpack/plugins/cloud/providers/huaweicloud.py:39 msgid "CN East-Shanghai1" -msgstr "" +msgstr "華東-上海1" #: xpack/plugins/cloud/providers/huaweicloud.py:41 msgid "LA-Mexico City1" -msgstr "" +msgstr "LA-メキシコCity1" #: xpack/plugins/cloud/providers/huaweicloud.py:42 msgid "LA-Santiago" -msgstr "" +msgstr "ラテンアメリカ-サンディエゴ" #: xpack/plugins/cloud/providers/huaweicloud.py:43 msgid "LA-Sao Paulo1" -msgstr "" +msgstr "ラミー・サンパウロ1" #: xpack/plugins/cloud/providers/huaweicloud.py:44 msgid "EU-Paris" -msgstr "" +msgstr "ヨーロッパ-パリ" #: xpack/plugins/cloud/providers/huaweicloud.py:45 msgid "CN Southwest-Guiyang1" -msgstr "" +msgstr "南西-貴陽1" #: xpack/plugins/cloud/providers/huaweicloud.py:46 msgid "AP-Bangkok" -msgstr "" +msgstr "アジア太平洋-バンコク" #: xpack/plugins/cloud/providers/huaweicloud.py:50 msgid "CN Northeast-Dalian" -msgstr "" +msgstr "华北-大连" #: xpack/plugins/cloud/providers/huaweicloud.py:51 msgid "CN North-Ulanqab1" -msgstr "" +msgstr "華北-ウランチャブ一" #: xpack/plugins/cloud/providers/huaweicloud.py:52 msgid "CN South-Guangzhou-InvitationOnly" -msgstr "" +msgstr "華南-広州-友好ユーザー環境" #: xpack/plugins/cloud/providers/jdcloud.py:128 msgid "CN East-Suqian" -msgstr "" +msgstr "華東-宿遷" #: xpack/plugins/cloud/serializers/account.py:65 msgid "Validity display" -msgstr "" +msgstr "有効表示" #: xpack/plugins/cloud/serializers/account.py:66 msgid "Provider display" -msgstr "" +msgstr "プロバイダ表示" #: xpack/plugins/cloud/serializers/account_attrs.py:35 msgid "Client ID" -msgstr "" +msgstr "クライアントID" #: xpack/plugins/cloud/serializers/account_attrs.py:41 msgid "Tenant ID" -msgstr "" +msgstr "テナントID" #: xpack/plugins/cloud/serializers/account_attrs.py:44 msgid "Subscription ID" -msgstr "" +msgstr "サブスクリプションID" #: xpack/plugins/cloud/serializers/account_attrs.py:95 #: xpack/plugins/cloud/serializers/account_attrs.py:100 #: xpack/plugins/cloud/serializers/account_attrs.py:116 #: xpack/plugins/cloud/serializers/account_attrs.py:141 msgid "API Endpoint" -msgstr "" +msgstr "APIエンドポイント" #: xpack/plugins/cloud/serializers/account_attrs.py:106 msgid "Auth url" -msgstr "" +msgstr "認証アドレス" #: xpack/plugins/cloud/serializers/account_attrs.py:107 msgid "eg: http://openstack.example.com:5000/v3" -msgstr "" +msgstr "例えば: http://openstack.example.com:5000/v3" #: xpack/plugins/cloud/serializers/account_attrs.py:110 msgid "User domain" -msgstr "" +msgstr "ユーザードメイン" #: xpack/plugins/cloud/serializers/account_attrs.py:117 msgid "Cert File" -msgstr "" +msgstr "証明書ファイル" #: xpack/plugins/cloud/serializers/account_attrs.py:118 msgid "Key File" -msgstr "" +msgstr "キーファイル" #: xpack/plugins/cloud/serializers/account_attrs.py:134 msgid "Service account key" -msgstr "" +msgstr "サービスアカウントキー" #: xpack/plugins/cloud/serializers/account_attrs.py:135 msgid "The file is in JSON format" -msgstr "" +msgstr "ファイルはJSON形式です。" #: xpack/plugins/cloud/serializers/account_attrs.py:148 msgid "IP address invalid `{}`, {}" -msgstr "" +msgstr "IPアドレスが無効: '{}', {}" #: xpack/plugins/cloud/serializers/account_attrs.py:154 msgid "" "Format for comma-delimited string,Such as: 192.168.1.0/24, " "10.0.0.0-10.0.0.255" -msgstr "" +msgstr "形式はコンマ区切りの文字列です,例:192.168.1.0/24,10.0.0.0-10.0.0.255" #: xpack/plugins/cloud/serializers/account_attrs.py:158 msgid "" @@ -6864,22 +7152,25 @@ msgid "" "synchronization task is executed, only the valid IP address will be " "synchronized.
If the port is 0, all IP addresses are valid." msgstr "" +"このポートは、 IP アドレスの有効性を検出するために使用されます。同期タスクが" +"実行されると、有効な IP アドレスのみが同期されます。
ポートが0の場合、す" +"べてのIPアドレスが有効です。" #: xpack/plugins/cloud/serializers/account_attrs.py:166 msgid "Hostname prefix" -msgstr "" +msgstr "ホスト名プレフィックス" #: xpack/plugins/cloud/serializers/account_attrs.py:169 msgid "IP segment" -msgstr "" +msgstr "IP セグメント" #: xpack/plugins/cloud/serializers/account_attrs.py:173 msgid "Test port" -msgstr "" +msgstr "テストポート" #: xpack/plugins/cloud/serializers/account_attrs.py:176 msgid "Test timeout" -msgstr "" +msgstr "テストタイムアウト" #: xpack/plugins/cloud/serializers/task.py:29 msgid "" @@ -6889,108 +7180,564 @@ msgid "" "all instances and randomly match IP addresses.
Format for comma-" "delimited string, Such as: 192.168.1.0/24, 10.1.1.1-10.1.1.20" msgstr "" +"IP範囲に一致するインスタンスのみが同期されます。
インスタンスに複数のIPア" +"ドレスが含まれている場合、一致する最初のIPアドレスが作成されたアセットのIPと" +"して使用されます。
デフォルト値の*は、すべてのインスタンスを同期し、IPア" +"ドレスをランダムに一致させることを意味します。
形式はコンマ区切りの文字列" +"です。例:192.168.1.0/24,10.1.1.1-10.1.1.20" #: xpack/plugins/cloud/serializers/task.py:36 msgid "History count" -msgstr "" +msgstr "実行回数" #: xpack/plugins/cloud/serializers/task.py:37 msgid "Instance count" -msgstr "" +msgstr "インスタンス数" #: xpack/plugins/cloud/serializers/task.py:70 msgid "Linux admin user" -msgstr "" +msgstr "Linux管理者" #: xpack/plugins/cloud/serializers/task.py:75 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" -msgstr "" +msgstr "定期的な表示" #: xpack/plugins/cloud/utils.py:69 msgid "Account unavailable" -msgstr "" +msgstr "利用できないアカウント" #: xpack/plugins/gathered_user/meta.py:11 msgid "Gathered user" -msgstr "" +msgstr "収集されたユーザー" #: xpack/plugins/gathered_user/models.py:34 msgid "Gather user task" -msgstr "" +msgstr "ユーザータスクの収集" #: xpack/plugins/gathered_user/models.py:80 msgid "gather user task execution" -msgstr "" +msgstr "ユーザータスクの実行を収集" #: xpack/plugins/gathered_user/models.py:86 msgid "Assets is empty, please change nodes" -msgstr "" +msgstr "資産は空です。ノードを変更してください" #: xpack/plugins/gathered_user/serializers.py:21 msgid "Executed times" -msgstr "" +msgstr "実行時間" #: xpack/plugins/interface/api.py:52 msgid "Restore default successfully." -msgstr "" +msgstr "デフォルトの復元に成功しました。" #: xpack/plugins/interface/meta.py:10 msgid "Interface settings" -msgstr "" +msgstr "インターフェイスの設定" #: xpack/plugins/interface/models.py:22 msgid "Title of login page" -msgstr "" +msgstr "ログインページのタイトル" #: xpack/plugins/interface/models.py:26 msgid "Image of login page" -msgstr "" +msgstr "ログインページのイメージ" #: xpack/plugins/interface/models.py:30 msgid "Website icon" -msgstr "" +msgstr "ウェブサイトのアイコン" #: xpack/plugins/interface/models.py:34 msgid "Logo of management page" -msgstr "" +msgstr "管理ページのロゴ" #: xpack/plugins/interface/models.py:38 msgid "Logo of logout page" -msgstr "" +msgstr "ログアウトページのロゴ" #: xpack/plugins/interface/models.py:40 msgid "Theme" -msgstr "" +msgstr "テーマ" #: xpack/plugins/interface/models.py:43 xpack/plugins/interface/models.py:84 msgid "Interface setting" -msgstr "" +msgstr "インターフェイスの設定" #: xpack/plugins/license/api.py:50 msgid "License import successfully" -msgstr "" +msgstr "ライセンスのインポートに成功" #: xpack/plugins/license/api.py:51 msgid "License is invalid" -msgstr "" +msgstr "ライセンスが無効です" #: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:127 msgid "License" -msgstr "" +msgstr "ライセンス" #: xpack/plugins/license/models.py:71 msgid "Standard edition" -msgstr "" +msgstr "標準版" #: xpack/plugins/license/models.py:73 msgid "Enterprise edition" -msgstr "" +msgstr "エンタープライズ版" #: xpack/plugins/license/models.py:75 msgid "Ultimate edition" -msgstr "" +msgstr "究極のエディション" #: xpack/plugins/license/models.py:77 msgid "Community edition" -msgstr "" +msgstr "コミュニティ版" + +#~ msgid "System User" +#~ msgstr "システムユーザー" + +#~ msgid "" +#~ "Format for comma-delimited string, with * indicating a match all. " +#~ "Protocol options: {}" +#~ msgstr "" +#~ "コンマ区切り文字列の形式。* はすべて一致することを示します。プロトコルオプ" +#~ "ション: {}" + +#~ msgid "Unsupported protocols: {}" +#~ msgstr "サポートされていないプロトコル: {}" + +#~ msgid "Remote app" +#~ msgstr "リモートアプリ" + +#~ msgid "Custom" +#~ msgstr "カスタム" + +#~ msgid "Can view application account secret" +#~ msgstr "アプリケーションアカウントの秘密を表示できます" + +#~ msgid "Can change application account secret" +#~ msgstr "アプリケーションアカウントの秘密を変更できます" + +#~ msgid "Application user" +#~ msgstr "アプリケーションユーザー" + +#~ msgid "Type display" +#~ msgstr "タイプ表示" + +#~ msgid "Application display" +#~ msgstr "アプリケーション表示" + +#~ msgid "Cluster" +#~ msgstr "クラスター" + +#~ msgid "CA certificate" +#~ msgstr "CA 証明書" + +#~ msgid "Client certificate file" +#~ msgstr "クライアント証明書" + +#~ msgid "Certificate key file" +#~ msgstr "証明書キー" + +#~ msgid "Asset Info" +#~ msgstr "資産情報" + +#~ msgid "Application path" +#~ msgstr "アプリケーションパス" + +#~ msgid "Target URL" +#~ msgstr "ターゲットURL" + +#~ msgid "Chrome username" +#~ msgstr "Chromeユーザー名" + +#~ msgid "Chrome password" +#~ msgstr "Chromeパスワード" + +#~ msgid "Operating parameter" +#~ msgstr "操作パラメータ" + +#~ msgid "Target url" +#~ msgstr "ターゲットURL" + +#~ msgid "Mysql workbench username" +#~ msgstr "Mysql workbench のユーザー名" + +#~ msgid "Mysql workbench password" +#~ msgstr "Mysql workbench パスワード" + +#~ msgid "Vmware username" +#~ msgstr "Vmware ユーザー名" + +#~ msgid "Vmware password" +#~ msgstr "Vmware パスワード" + +#~ msgid "Base" +#~ msgstr "ベース" + +#~ msgid "Can test asset account connectivity" +#~ msgstr "アセットアカウントの接続性をテストできます" + +#~ msgid "Bandwidth" +#~ msgstr "帯域幅" + +#~ msgid "Contact" +#~ msgstr "連絡先" + +#~ msgid "Intranet" +#~ msgstr "イントラネット" + +#~ msgid "Extranet" +#~ msgstr "エクストラネット" + +#~ msgid "Operator" +#~ msgstr "オペレーター" + +#~ msgid "Default Cluster" +#~ msgstr "デフォルトクラスター" + +#~ msgid "Test gateway" +#~ msgstr "テストゲートウェイ" + +#~ msgid "User groups" +#~ msgstr "ユーザーグループ" + +#~ msgid "System user display" +#~ msgstr "システムユーザー表示" + +#~ msgid "Protocol format should {}/{}" +#~ msgstr "プロトコル形式は {}/{}" + +#~ msgid "Nodes name" +#~ msgstr "ノード名" + +#~ msgid "Labels name" +#~ msgstr "ラベル名" + +#~ msgid "Hardware info" +#~ msgstr "ハードウェア情報" + +#~ msgid "Admin user display" +#~ msgstr "管理者ユーザー表示" + +#~ msgid "CPU info" +#~ msgstr "CPU情報" + +#~ msgid "Action display" +#~ msgstr "アクション表示" + +#~ msgid "Applications amount" +#~ msgstr "申し込み金額" + +#~ msgid "Gateways count" +#~ msgstr "ゲートウェイ数" + +#~ msgid "SSH key fingerprint" +#~ msgstr "SSHキー指紋" + +#~ msgid "Apps amount" +#~ msgstr "アプリの量" + +#~ msgid "Nodes amount" +#~ msgstr "ノード量" + +#~ msgid "Login mode display" +#~ msgstr "ログインモード表示" + +#~ msgid "Ad domain" +#~ msgstr "広告ドメイン" + +#~ msgid "Is asset protocol" +#~ msgstr "資産プロトコルです" + +#~ msgid "Only ssh and automatic login system users are supported" +#~ msgstr "sshと自動ログインシステムのユーザーのみがサポートされています" + +#~ msgid "Username same with user with protocol {} only allow 1" +#~ msgstr "プロトコル {} のユーザーと同じユーザー名は1のみ許可します" + +#~ msgid "* Automatic login mode must fill in the username." +#~ msgstr "* 自動ログインモードはユーザー名を入力する必要があります。" + +#~ msgid "Path should starts with /" +#~ msgstr "パスは/で始まる必要があります" + +#~ msgid "Password or private key required" +#~ msgstr "パスワードまたは秘密鍵が必要" + +#~ msgid "Only ssh protocol system users are allowed" +#~ msgstr "Sshプロトコルシステムユーザーのみが許可されています" + +#~ msgid "The protocol must be consistent with the current user: {}" +#~ msgstr "プロトコルは現在のユーザーと一致している必要があります: {}" + +#~ msgid "Only system users with automatic login are allowed" +#~ msgstr "自動ログインを持つシステムユーザーのみが許可されます" + +#~ msgid "System user name" +#~ msgstr "システムユーザー名" + +#~ msgid "Asset hostname" +#~ msgstr "資産ホスト名" + +#~ msgid "The asset {} system platform {} does not support run Ansible tasks" +#~ msgstr "" +#~ "資産 {} システムプラットフォーム {} はAnsibleタスクの実行をサポートしてい" +#~ "ません。" + +#~ msgid "Test assets connectivity: " +#~ msgstr "資産の接続性のテスト:" + +#~ msgid "Unreachable" +#~ msgstr "達成できない" + +#~ msgid "Reachable" +#~ msgstr "接続可能" + +#~ msgid "Get asset info failed: {}" +#~ msgstr "資産情報の取得に失敗しました: {}" + +#~ msgid "Update asset hardware info: " +#~ msgstr "資産ハードウェア情報の更新:" + +#~ msgid "System user is dynamic: {}" +#~ msgstr "システムユーザーは動的です: {}" + +#~ msgid "Start push system user for platform: [{}]" +#~ msgstr "プラットフォームのプッシュシステムユーザーを開始: [{}]" + +#~ msgid "Hosts count: {}" +#~ msgstr "ホスト数: {}" + +#~ msgid "Push system users to asset: " +#~ msgstr "システムユーザーをアセットにプッシュする:" + +#~ msgid "Dynamic system user not support test" +#~ msgstr "動的システムユーザーがテストをサポートしていない" + +#~ msgid "Start test system user connectivity for platform: [{}]" +#~ msgstr "プラットフォームのテストシステムのユーザー接続を開始: [{}]" + +#~ msgid "Test system user connectivity: " +#~ msgstr "テストシステムユーザー接続:" + +#~ msgid "Test system user connectivity period: " +#~ msgstr "テストシステムユーザー接続期间:" + +#~ msgid "Operate display" +#~ msgstr "ディスプレイを操作する" + +#~ msgid "Status display" +#~ msgstr "ステータス表示" + +#~ msgid "MFA display" +#~ msgstr "MFAディスプレイ" + +#~ msgid "Hosts display" +#~ msgstr "ホスト表示" + +#~ msgid "Run as" +#~ msgstr "として実行" + +#~ msgid "Run as display" +#~ msgstr "ディスプレイとして実行する" + +#~ msgid "User not exists" +#~ msgstr "ユーザーは存在しません" + +#~ msgid "System user not exists" +#~ msgstr "システムユーザーが存在しません" + +#~ msgid "Asset not exists" +#~ msgstr "アセットが存在しません" + +#~ msgid "User has no permission to access asset or permission expired" +#~ msgstr "" +#~ "ユーザーがアセットにアクセスする権限を持っていないか、権限の有効期限が切れ" +#~ "ています" + +#~ msgid "User has no permission to access application or permission expired" +#~ msgstr "" +#~ "ユーザーがアプリにアクセスする権限を持っていないか、権限の有効期限が切れて" +#~ "います" + +#~ msgid "Asset or application required" +#~ msgstr "アセットまたはアプリが必要" + +#~ msgid "Not has host {} permission" +#~ msgstr "ホスト {} 権限がありません" + +#~ msgid "" +#~ "eg: Every Sunday 03:05 run <5 3 * * 0>
Tips: Using 5 digits linux " +#~ "crontab expressions (Online tools)
Note: If both Regularly " +#~ "perform and Cycle perform are set, give priority to Regularly perform" +#~ msgstr "" +#~ "eg:毎週日03:05<5 3**0>
ヒント:5ビットLinux crontab式<分時日月曜日>(オンラインワーク)
" +#~ "注意:定期実行と周期実行を同時に設定した場合は、定期実行を優先します。" + +#~ msgid "Unit: hour" +#~ msgstr "単位: 時間" + +#~ msgid "Callback" +#~ msgstr "コールバック" + +#~ msgid "Can view task monitor" +#~ msgstr "タスクモニターを表示できます" + +#~ msgid "Tasks" +#~ msgstr "タスク" + +#~ msgid "Options" +#~ msgstr "オプション" + +#~ msgid "Run as admin" +#~ msgstr "再実行" + +#~ msgid "Become" +#~ msgstr "になる" + +#~ msgid "Create by" +#~ msgstr "による作成" + +#~ msgid "AdHoc" +#~ msgstr "タスクの各バージョン" + +#~ msgid "Task display" +#~ msgstr "タスク表示" + +#~ msgid "Host amount" +#~ msgstr "ホスト量" + +#~ msgid "Start time" +#~ msgstr "開始時間" + +#~ msgid "End time" +#~ msgstr "終了時間" + +#~ msgid "Adhoc raw result" +#~ msgstr "アドホック生の結果" + +#~ msgid "Adhoc result summary" +#~ msgstr "アドホック結果の概要" + +#~ msgid "AdHoc execution" +#~ msgstr "アドホックエキューション" + +#~ msgid "Task start" +#~ msgstr "タスクの開始" + +#~ msgid "Command `{}` is forbidden ........" +#~ msgstr "コマンド '{}' は禁止されています ........" + +#~ msgid "Task end" +#~ msgstr "タスク" + +#~ msgid "Clean task history period" +#~ msgstr "クリーンなタスク履歴期間" + +#~ msgid "The administrator is modifying permissions. Please wait" +#~ msgstr "管理者は権限を変更しています。お待ちください" + +#~ msgid "The authorization cannot be revoked for the time being" +#~ msgstr "当分の間、承認を取り消すことはできません。" + +#~ msgid "Application permission" +#~ msgstr "申請許可" + +#~ msgid "Permed application" +#~ msgstr "許可されたアプリケーション" + +#~ msgid "Can view my apps" +#~ msgstr "自分のアプリを表示できます" + +#~ msgid "Can view user apps" +#~ msgstr "ユーザーアプリを表示できます" + +#~ msgid "Can view usergroup apps" +#~ msgstr "ユーザー・グループ認可の適用を表示できます" + +#~ msgid "Upload file" +#~ msgstr "ファイルのアップロード" + +#~ msgid "Download file" +#~ msgstr "ファイルのダウンロード" + +#~ msgid "Upload download" +#~ msgstr "ダウンロードのアップロード" + +#~ msgid "Clipboard paste" +#~ msgstr "クリップボードペースト" + +#~ msgid "Clipboard copy paste" +#~ msgstr "クリップボードコピーペースト" + +#~ msgid "Your permed applications is about to expire" +#~ msgstr "パーマアプリケーションの有効期限が近づいています" + +#~ msgid "permed applications" +#~ msgstr "Permedアプリケーション" + +#~ msgid "Application permissions is about to expire" +#~ msgstr "アプリケーション権限の有効期限が近づいています" + +#~ msgid "application permissions of organization {}" +#~ msgstr "Organization {} のアプリケーション権限" + +#~ msgid "User groups amount" +#~ msgstr "ユーザーグループの量" + +#~ msgid "System users amount" +#~ msgstr "システムユーザー数" + +#~ msgid "" +#~ "The application list contains applications that are different from the " +#~ "permission type. ({})" +#~ msgstr "" +#~ "アプリケーションリストには、権限タイプとは異なるアプリケーションが含まれて" +#~ "います。({})" + +#~ msgid "Users display" +#~ msgstr "ユーザー表示" + +#~ msgid "User groups display" +#~ msgstr "ユーザーグループの表示" + +#~ msgid "Assets display" +#~ msgstr "資産表示" + +#~ msgid "Nodes display" +#~ msgstr "ノード表示" + +#~ msgid "System users display" +#~ msgstr "システムユーザーの表示" + +#~ msgid "My applications" +#~ msgstr "私のアプリケーション" + +#~ msgid "Empty" +#~ msgstr "空" + +#~ msgid "System user ID" +#~ msgstr "システムユーザーID" + +#~ msgid "Apply for application" +#~ msgstr "申し込み" + +#~ msgid "" +#~ "Created by the ticket, ticket title: {}, ticket applicant: {}, ticket " +#~ "processor: {}, ticket ID: {}" +#~ msgstr "" +#~ "チケットによって作成されたチケットタイトル: {}、チケット申請者: {}、チケッ" +#~ "ト処理者: {}、チケットID: {}" + +#~ msgid "Applied login IP" +#~ msgstr "応用ログインIP" + +#~ msgid "Applied login city" +#~ msgstr "応用ログイン都市" + +#~ msgid "Applied login datetime" +#~ msgstr "適用されたログインの日付時間" + +#~ msgid "Login system user" +#~ msgstr "ログインシステムユーザー" diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 19eccde31..0fc454c7f 100644 --- a/apps/locale/zh/LC_MESSAGES/django.mo +++ b/apps/locale/zh/LC_MESSAGES/django.mo @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c0ba1103efe746ecf579fe27832b5d2969858508f4aabdcc42723b13c1b01f8 -size 383 +oid sha256:6bd3c45b4301a45fa1b110716b3ea78bcbb53a2913f707ab754882df061256cc +size 98368 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 63a82105c..524d6d076 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -3,36 +3,38 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-12-06 17:33+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2021-05-20 10:54+0800\n" +"Last-Translator: ibuler \n" +"Language-Team: JumpServer team\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.3\n" #: acls/apps.py:7 msgid "Acls" -msgstr "" +msgstr "访问控制" #: acls/models/base.py:20 tickets/const.py:45 #: tickets/templates/tickets/approve_check_password.html:49 msgid "Reject" -msgstr "" +msgstr "拒绝" #: acls/models/base.py:21 +#, fuzzy msgid "Accept" -msgstr "" +msgstr "被接受" #: acls/models/base.py:22 +#, fuzzy msgid "Review" -msgstr "" +msgstr "审批人" #: acls/models/base.py:71 acls/models/command_acl.py:22 #: acls/serializers/base.py:34 applications/models.py:10 @@ -53,36 +55,36 @@ msgstr "" #: users/models/group.py:15 users/models/user.py:675 #: xpack/plugins/cloud/models.py:30 msgid "Name" -msgstr "" +msgstr "名称" #: acls/models/base.py:73 assets/models/_user.py:47 #: assets/models/cmd_filter.py:81 terminal/models/component/endpoint.py:89 msgid "Priority" -msgstr "" +msgstr "优先级" #: acls/models/base.py:74 assets/models/_user.py:47 #: assets/models/cmd_filter.py:81 terminal/models/component/endpoint.py:90 msgid "1-100, the lower the value will be match first" -msgstr "" +msgstr "优先级可选范围为 1-100 (数值越小越优先)" #: acls/models/base.py:77 acls/serializers/base.py:63 #: assets/models/cmd_filter.py:86 audits/models.py:51 audits/serializers.py:75 #: authentication/templates/authentication/_access_key_modal.html:34 msgid "Action" -msgstr "" +msgstr "动作" #: acls/models/base.py:78 acls/serializers/base.py:59 #: acls/serializers/login_acl.py:23 assets/models/cmd_filter.py:91 #: authentication/serializers/connect_token_secret.py:79 msgid "Reviewers" -msgstr "" +msgstr "审批人" #: acls/models/base.py:79 authentication/models/access_key.py:17 #: authentication/templates/authentication/_access_key_modal.html:32 #: perms/models/asset_permission.py:72 terminal/models/session/sharing.py:28 #: tickets/const.py:37 msgid "Active" -msgstr "" +msgstr "激活中" #: acls/models/base.py:80 acls/models/command_acl.py:29 #: applications/models.py:19 assets/models/_user.py:40 @@ -104,7 +106,7 @@ msgstr "" #: xpack/plugins/cloud/models.py:37 xpack/plugins/cloud/models.py:121 #: xpack/plugins/gathered_user/models.py:26 msgid "Comment" -msgstr "" +msgstr "备注" #: acls/models/base.py:92 acls/models/login_acl.py:13 #: acls/serializers/base.py:55 acls/serializers/login_acl.py:21 @@ -122,7 +124,7 @@ msgstr "" #: tickets/models/comment.py:21 users/const.py:14 users/models/user.py:907 #: users/models/user.py:938 users/serializers/group.py:19 msgid "User" -msgstr "" +msgstr "用户" #: acls/models/base.py:94 acls/serializers/base.py:56 #: assets/models/account.py:51 assets/models/asset/common.py:83 @@ -141,7 +143,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:172 #: xpack/plugins/cloud/models.py:222 msgid "Asset" -msgstr "" +msgstr "资产" #: acls/models/base.py:96 acls/serializers/base.py:57 #: assets/models/account.py:61 @@ -151,7 +153,7 @@ msgstr "" #: terminal/models/session/session.py:34 xpack/plugins/cloud/models.py:87 #: xpack/plugins/cloud/serializers/task.py:71 msgid "Account" -msgstr "" +msgstr "账号" #: acls/models/command_acl.py:17 assets/models/cmd_filter.py:65 #: terminal/backends/command/serializers.py:15 @@ -159,11 +161,11 @@ msgstr "" #: terminal/templates/terminal/_msg_command_alert.html:12 #: terminal/templates/terminal/_msg_command_execute_alert.html:10 msgid "Command" -msgstr "" +msgstr "命令" #: acls/models/command_acl.py:18 assets/models/cmd_filter.py:64 msgid "Regex" -msgstr "" +msgstr "正则表达式" #: acls/models/command_acl.py:25 acls/serializers/command_acl.py:14 #: applications/models.py:15 assets/models/_user.py:46 @@ -181,65 +183,68 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/app.py:27 #: xpack/plugins/change_auth_plan/models/app.py:152 msgid "Type" -msgstr "" +msgstr "类型" #: acls/models/command_acl.py:27 assets/models/cmd_filter.py:84 #: settings/serializers/basic.py:10 xpack/plugins/license/models.py:29 msgid "Content" -msgstr "" +msgstr "内容" #: acls/models/command_acl.py:27 assets/models/cmd_filter.py:84 msgid "One line one command" -msgstr "" +msgstr "每行一个命令" #: acls/models/command_acl.py:28 assets/models/cmd_filter.py:85 msgid "Ignore case" -msgstr "" +msgstr "忽略大小写" #: acls/models/command_acl.py:35 acls/serializers/command_acl.py:24 #: authentication/serializers/connect_token_secret.py:76 +#, fuzzy msgid "Command group" -msgstr "" +msgstr "命令记录" #: acls/models/command_acl.py:88 msgid "The generated regular expression is incorrect: {}" -msgstr "" +msgstr "生成的正则表达式有误" #: acls/models/command_acl.py:98 +#, fuzzy msgid "Commands" -msgstr "" +msgstr "命令" #: acls/models/command_acl.py:102 +#, fuzzy msgid "Command acl" -msgstr "" +msgstr "命令" #: acls/models/command_acl.py:111 tickets/const.py:11 msgid "Command confirm" -msgstr "" +msgstr "命令复核" #: acls/models/login_acl.py:16 msgid "Rule" -msgstr "" +msgstr "规则" #: acls/models/login_acl.py:19 msgid "Login acl" -msgstr "" +msgstr "登录访问控制" #: acls/models/login_acl.py:54 tickets/const.py:10 msgid "Login confirm" -msgstr "" +msgstr "登录复核" #: acls/models/login_asset_acl.py:10 msgid "Login asset acl" -msgstr "" +msgstr "登录资产访问控制" #: acls/models/login_asset_acl.py:20 tickets/const.py:12 msgid "Login asset confirm" -msgstr "" +msgstr "登录资产复核" #: acls/serializers/base.py:10 acls/serializers/login_acl.py:16 msgid "Format for comma-delimited string, with * indicating a match all. " -msgstr "" +msgstr "格式为逗号分隔的字符串, * 表示匹配所有. " #: acls/serializers/base.py:18 acls/serializers/base.py:49 #: assets/models/_user.py:34 assets/models/base.py:65 @@ -254,7 +259,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/asset.py:196 #: xpack/plugins/cloud/serializers/account_attrs.py:26 msgid "Username" -msgstr "" +msgstr "用户名" #: acls/serializers/base.py:25 msgid "" @@ -262,23 +267,26 @@ msgid "" "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/base.py:40 assets/serializers/asset/host.py:40 +#, fuzzy msgid "IP/Host" -msgstr "" +msgstr "主机" #: acls/serializers/base.py:90 tickets/serializers/ticket/ticket.py:79 msgid "The organization `{}` does not exist" -msgstr "" +msgstr "组织 `{}` 不存在" #: acls/serializers/base.py:96 msgid "None of the reviewers belong to Organization `{}`" -msgstr "" +msgstr "所有复核人都不属于组织 `{}`" #: acls/serializers/rules/rules.py:20 #: xpack/plugins/cloud/serializers/task.py:23 msgid "IP address invalid: `{}`" -msgstr "" +msgstr "IP 地址无效: `{}`" #: acls/serializers/rules/rules.py:25 msgid "" @@ -286,6 +294,8 @@ msgid "" "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/rules/rules.py:33 assets/models/asset/common.py:92 #: authentication/templates/authentication/_msg_oauth_bind.html:12 @@ -293,15 +303,15 @@ msgstr "" #: authentication/templates/authentication/_msg_rest_public_key_success.html:8 #: settings/serializers/terminal.py:10 terminal/serializers/endpoint.py:54 msgid "IP" -msgstr "" +msgstr "IP" #: acls/serializers/rules/rules.py:35 msgid "Time Period" -msgstr "" +msgstr "时段" #: applications/apps.py:9 msgid "Applications" -msgstr "" +msgstr "应用管理" #: applications/models.py:12 assets/models/label.py:20 #: assets/models/platform.py:73 assets/serializers/asset/common.py:62 @@ -310,72 +320,73 @@ msgstr "" #: settings/models.py:35 tickets/models/ticket/apply_application.py:13 #: xpack/plugins/change_auth_plan/models/app.py:24 msgid "Category" -msgstr "" +msgstr "类别" #: applications/models.py:17 xpack/plugins/cloud/models.py:35 #: xpack/plugins/cloud/serializers/account.py:64 msgid "Attrs" -msgstr "" +msgstr "属性" #: applications/models.py:23 xpack/plugins/change_auth_plan/models/app.py:31 msgid "Application" -msgstr "" +msgstr "应用程序" #: applications/models.py:27 msgid "Can match application" -msgstr "" +msgstr "匹配应用" #: applications/serializers/attrs/application_type/clickhouse.py:11 #: assets/models/asset/common.py:82 assets/models/platform.py:22 #: settings/serializers/auth/radius.py:17 settings/serializers/auth/sms.py:68 #: xpack/plugins/cloud/serializers/account_attrs.py:73 msgid "Port" -msgstr "" +msgstr "端口" #: applications/serializers/attrs/application_type/clickhouse.py:13 msgid "" "Typically, the port is 9000,the HTTP interface and the native interface use " "different ports" -msgstr "" +msgstr "默认端口为9000, HTTP接口和本机接口使用不同的端口" #: assets/api/automations/base.py:76 #: xpack/plugins/change_auth_plan/api/asset.py:94 msgid "The parameter 'action' must be [{}]" -msgstr "" +msgstr "参数 'action' 必须是 [{}]" #: assets/api/domain.py:56 msgid "Number required" -msgstr "" +msgstr "需要为数字" #: assets/api/node.py:62 msgid "You can't update the root node name" -msgstr "" +msgstr "不能修改根节点名称" #: assets/api/node.py:69 msgid "You can't delete the root node ({})" -msgstr "" +msgstr "不能删除根节点 ({})" #: assets/api/node.py:72 msgid "Deletion failed and the node contains assets" -msgstr "" +msgstr "删除失败,节点包含资产" #: assets/apps.py:9 msgid "App assets" -msgstr "" +msgstr "资产管理" #: assets/automations/base/manager.py:123 +#, fuzzy msgid "{} disabled" -msgstr "" +msgstr "禁用" #: assets/const/account.py:6 audits/const.py:6 audits/const.py:64 #: common/utils/ip/geoip/utils.py:31 common/utils/ip/geoip/utils.py:37 #: common/utils/ip/utils.py:84 msgid "Unknown" -msgstr "" +msgstr "未知" #: assets/const/account.py:7 msgid "Ok" -msgstr "" +msgstr "成功" #: assets/const/account.py:8 #: assets/serializers/automations/change_secret.py:118 @@ -384,7 +395,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:190 #: xpack/plugins/cloud/const.py:41 msgid "Failed" -msgstr "" +msgstr "失败" #: assets/const/account.py:12 assets/models/_user.py:35 #: audits/signal_handlers.py:49 authentication/confirm/password.py:9 @@ -401,44 +412,50 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/base.py:73 #: xpack/plugins/cloud/serializers/account_attrs.py:28 msgid "Password" -msgstr "" +msgstr "密码" #: assets/const/account.py:13 +#, fuzzy msgid "SSH key" -msgstr "" +msgstr "SSH 密钥" #: assets/const/account.py:14 authentication/models/access_key.py:33 msgid "Access key" -msgstr "" +msgstr "Access key" #: assets/const/account.py:15 assets/models/_user.py:38 #: authentication/models/sso_token.py:14 msgid "Token" -msgstr "" +msgstr "Token" #: assets/const/automation.py:13 msgid "Ping" msgstr "" #: assets/const/automation.py:14 +#, fuzzy msgid "Gather facts" -msgstr "" +msgstr "收集账号" #: assets/const/automation.py:15 +#, fuzzy msgid "Create account" -msgstr "" +msgstr "收集账号" #: assets/const/automation.py:16 +#, fuzzy msgid "Change secret" -msgstr "" +msgstr "执行改密" #: assets/const/automation.py:17 +#, fuzzy msgid "Verify account" -msgstr "" +msgstr "验证密码/密钥" #: assets/const/automation.py:18 +#, fuzzy msgid "Gather accounts" -msgstr "" +msgstr "收集账号" #: assets/const/automation.py:38 assets/serializers/account/base.py:26 msgid "Specific" @@ -447,34 +464,34 @@ msgstr "" #: assets/const/automation.py:39 ops/const.py:20 #: xpack/plugins/change_auth_plan/models/base.py:28 msgid "All assets use the same random password" -msgstr "" +msgstr "使用相同的随机密码" #: assets/const/automation.py:40 ops/const.py:21 #: xpack/plugins/change_auth_plan/models/base.py:29 msgid "All assets use different random password" -msgstr "" +msgstr "使用不同的随机密码" #: assets/const/automation.py:44 ops/const.py:13 #: xpack/plugins/change_auth_plan/models/asset.py:30 msgid "Append SSH KEY" -msgstr "" +msgstr "追加" #: assets/const/automation.py:45 ops/const.py:14 #: xpack/plugins/change_auth_plan/models/asset.py:31 msgid "Empty and append SSH KEY" -msgstr "" +msgstr "清空所有并添加" #: assets/const/automation.py:46 ops/const.py:15 #: xpack/plugins/change_auth_plan/models/asset.py:32 msgid "Replace (The key generated by JumpServer) " -msgstr "" +msgstr "替换 (由 JumpServer 生成的密钥)" #: assets/const/category.py:11 settings/serializers/auth/radius.py:16 #: settings/serializers/auth/sms.py:67 terminal/models/applet/applet.py:59 #: terminal/models/component/endpoint.py:13 #: xpack/plugins/cloud/serializers/account_attrs.py:72 msgid "Host" -msgstr "" +msgstr "主机" #: assets/const/category.py:12 msgid "Device" @@ -483,11 +500,12 @@ msgstr "" #: assets/const/category.py:13 assets/models/asset/database.py:8 #: assets/models/asset/database.py:34 msgid "Database" -msgstr "" +msgstr "数据库" #: assets/const/category.py:14 +#, fuzzy msgid "Cloud service" -msgstr "" +msgstr "云管中心" #: assets/const/category.py:15 audits/const.py:62 #: terminal/models/applet/applet.py:18 @@ -497,11 +515,12 @@ msgstr "" #: assets/const/device.py:7 terminal/models/applet/applet.py:17 #: tickets/const.py:8 msgid "General" -msgstr "" +msgstr "一般" #: assets/const/device.py:8 +#, fuzzy msgid "Switch" -msgstr "" +msgstr "切换自" #: assets/const/device.py:9 msgid "Router" @@ -512,36 +531,37 @@ msgid "Firewall" msgstr "" #: assets/const/web.py:7 +#, fuzzy msgid "Website" -msgstr "" +msgstr "网站图标" #: assets/models/_user.py:24 msgid "Automatic managed" -msgstr "" +msgstr "托管密码" #: assets/models/_user.py:25 msgid "Manually input" -msgstr "" +msgstr "手动输入" #: assets/models/_user.py:29 msgid "Common user" -msgstr "" +msgstr "普通用户" #: assets/models/_user.py:30 msgid "Admin user" -msgstr "" +msgstr "特权用户" #: assets/models/_user.py:36 xpack/plugins/change_auth_plan/models/asset.py:54 #: xpack/plugins/change_auth_plan/models/asset.py:131 #: xpack/plugins/change_auth_plan/models/asset.py:207 msgid "SSH private key" -msgstr "" +msgstr "SSH密钥" #: assets/models/_user.py:37 xpack/plugins/change_auth_plan/models/asset.py:57 #: xpack/plugins/change_auth_plan/models/asset.py:127 #: xpack/plugins/change_auth_plan/models/asset.py:203 msgid "SSH public key" -msgstr "" +msgstr "SSH公钥" #: assets/models/_user.py:41 assets/models/automations/base.py:92 #: assets/models/cmd_filter.py:46 assets/models/domain.py:23 @@ -551,13 +571,13 @@ msgstr "" #: users/models/group.py:18 users/models/user.py:939 #: xpack/plugins/change_auth_plan/models/base.py:45 msgid "Date created" -msgstr "" +msgstr "创建日期" #: assets/models/_user.py:42 assets/models/cmd_filter.py:47 #: assets/models/gathered_user.py:20 common/db/models.py:78 #: common/mixins/models.py:51 xpack/plugins/change_auth_plan/models/base.py:46 msgid "Date updated" -msgstr "" +msgstr "更新日期" #: assets/models/_user.py:43 assets/models/base.py:73 #: assets/models/cmd_filter.py:49 assets/models/cmd_filter.py:96 @@ -566,128 +586,129 @@ msgstr "" #: users/models/user.py:722 users/serializers/group.py:33 #: xpack/plugins/change_auth_plan/models/base.py:48 msgid "Created by" -msgstr "" +msgstr "创建者" #: assets/models/_user.py:45 msgid "Username same with user" -msgstr "" +msgstr "用户名与用户相同" #: assets/models/_user.py:48 authentication/models/connection_token.py:34 #: perms/models/perm_token.py:16 terminal/models/applet/applet.py:26 #: terminal/serializers/session.py:18 terminal/serializers/session.py:32 #: terminal/serializers/storage.py:68 msgid "Protocol" -msgstr "" +msgstr "协议" #: assets/models/_user.py:49 msgid "Auto push" -msgstr "" +msgstr "自动推送" #: assets/models/_user.py:50 msgid "Sudo" -msgstr "" +msgstr "Sudo" #: assets/models/_user.py:51 ops/models/adhoc.py:17 ops/models/job.py:30 msgid "Shell" -msgstr "" +msgstr "Shell" #: assets/models/_user.py:52 msgid "Login mode" -msgstr "" +msgstr "认证方式" #: assets/models/_user.py:53 msgid "SFTP Root" -msgstr "" +msgstr "SFTP根路径" #: assets/models/_user.py:54 msgid "Home" -msgstr "" +msgstr "家目录" #: assets/models/_user.py:55 msgid "System groups" -msgstr "" +msgstr "用户组" #: assets/models/_user.py:58 msgid "User switch" -msgstr "" +msgstr "用户切换" #: assets/models/_user.py:59 msgid "Switch from" -msgstr "" +msgstr "切换自" #: assets/models/_user.py:65 audits/models.py:35 #: xpack/plugins/change_auth_plan/models/app.py:35 #: xpack/plugins/change_auth_plan/models/app.py:146 msgid "System user" -msgstr "" +msgstr "系统用户" #: assets/models/_user.py:67 msgid "Can match system user" -msgstr "" +msgstr "可以匹配系统用户" #: assets/models/account.py:45 common/db/fields.py:232 #: settings/serializers/terminal.py:14 msgid "All" -msgstr "" +msgstr "全部" #: assets/models/account.py:46 msgid "Manual input" -msgstr "" +msgstr "手动输入" #: assets/models/account.py:47 msgid "Dynamic user" -msgstr "" +msgstr "同名账号" #: assets/models/account.py:55 #: authentication/serializers/connect_token_secret.py:47 msgid "Su from" -msgstr "" +msgstr "切换自" #: assets/models/account.py:57 settings/serializers/auth/cas.py:20 #: terminal/models/applet/applet.py:22 msgid "Version" -msgstr "" +msgstr "版本" #: assets/models/account.py:67 msgid "Can view asset account secret" -msgstr "" +msgstr "可以查看资产账号密码" #: assets/models/account.py:68 msgid "Can change asset account secret" -msgstr "" +msgstr "可以更改资产账号密码" #: assets/models/account.py:69 msgid "Can view asset history account" -msgstr "" +msgstr "可以查看资产历史账号" #: assets/models/account.py:70 msgid "Can view asset history account secret" -msgstr "" +msgstr "可以查看资产历史账号密码" #: assets/models/account.py:93 assets/serializers/account/account.py:15 msgid "Account template" -msgstr "" +msgstr "账号模版" #: assets/models/account.py:98 msgid "Can view asset account template secret" -msgstr "" +msgstr "可以查看资产账号密码" #: assets/models/account.py:99 +#, fuzzy msgid "Can change asset account template secret" -msgstr "" +msgstr "可以更改资产账号密码" #: assets/models/asset/common.py:93 assets/models/platform.py:110 #: assets/serializers/asset/common.py:65 #: perms/serializers/user_permission.py:21 #: xpack/plugins/cloud/serializers/account_attrs.py:179 msgid "Platform" -msgstr "" +msgstr "系统平台" #: assets/models/asset/common.py:95 assets/models/domain.py:26 #: assets/serializers/asset/common.py:64 #: authentication/serializers/connect_token_secret.py:105 msgid "Domain" -msgstr "" +msgstr "网域" #: assets/models/asset/common.py:97 assets/models/automations/base.py:18 #: assets/models/cmd_filter.py:37 assets/serializers/asset/common.py:66 @@ -696,72 +717,73 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/asset.py:44 #: xpack/plugins/gathered_user/models.py:24 msgid "Nodes" -msgstr "" +msgstr "节点" #: assets/models/asset/common.py:98 assets/models/automations/base.py:21 #: assets/models/base.py:71 assets/models/cmd_filter.py:44 #: assets/models/label.py:21 terminal/models/applet/applet.py:25 #: users/serializers/user.py:202 msgid "Is active" -msgstr "" +msgstr "激活" #: assets/models/asset/common.py:99 assets/serializers/asset/common.py:67 msgid "Labels" -msgstr "" +msgstr "标签管理" #: assets/models/asset/common.py:215 msgid "Can refresh asset hardware info" -msgstr "" +msgstr "可以更新资产硬件信息" #: assets/models/asset/common.py:216 msgid "Can test asset connectivity" -msgstr "" +msgstr "可以测试资产连接性" #: assets/models/asset/common.py:217 +#, fuzzy msgid "Can push account to asset" -msgstr "" +msgstr "可以推送系统用户到资产" #: assets/models/asset/common.py:218 msgid "Can match asset" -msgstr "" +msgstr "可以匹配资产" #: assets/models/asset/common.py:219 msgid "Add asset to node" -msgstr "" +msgstr "添加资产到节点" #: assets/models/asset/common.py:220 msgid "Move asset to node" -msgstr "" +msgstr "移动资产到节点" #: assets/models/asset/database.py:9 settings/serializers/email.py:37 msgid "Use SSL" -msgstr "" +msgstr "使用 SSL" #: assets/models/asset/database.py:10 msgid "CA cert" -msgstr "" +msgstr "CA 证书" #: assets/models/asset/database.py:11 msgid "Client cert" -msgstr "" +msgstr "客户端证书" #: assets/models/asset/database.py:12 msgid "Client key" -msgstr "" +msgstr "客户端密钥" #: assets/models/asset/database.py:13 msgid "Allow invalid cert" -msgstr "" +msgstr "忽略证书校验" #: assets/models/asset/web.py:9 audits/const.py:68 #: terminal/serializers/applet_host.py:25 msgid "Disabled" -msgstr "" +msgstr "禁用" #: assets/models/asset/web.py:10 settings/serializers/auth/base.py:10 #: settings/serializers/basic.py:27 msgid "Basic" -msgstr "" +msgstr "基本" #: assets/models/asset/web.py:11 assets/models/asset/web.py:17 msgid "Script" @@ -769,25 +791,25 @@ msgstr "" #: assets/models/asset/web.py:13 msgid "Autofill" -msgstr "" +msgstr "自动代填" #: assets/models/asset/web.py:14 assets/serializers/platform.py:30 msgid "Username selector" -msgstr "" +msgstr "用户名选择器" #: assets/models/asset/web.py:15 assets/serializers/platform.py:33 msgid "Password selector" -msgstr "" +msgstr "密码选择器" #: assets/models/asset/web.py:16 assets/serializers/platform.py:36 msgid "Submit selector" -msgstr "" +msgstr "确认按钮选择器" #: assets/models/automations/base.py:17 assets/models/cmd_filter.py:43 #: assets/serializers/asset/common.py:69 perms/models/asset_permission.py:65 #: perms/serializers/permission.py:32 rbac/tree.py:37 msgid "Accounts" -msgstr "" +msgstr "账号管理" #: assets/models/automations/base.py:19 #: assets/serializers/automations/base.py:20 ops/models/base.py:17 @@ -795,11 +817,11 @@ msgstr "" #: terminal/templates/terminal/_msg_command_execute_alert.html:16 #: xpack/plugins/change_auth_plan/models/asset.py:40 msgid "Assets" -msgstr "" +msgstr "资产" #: assets/models/automations/base.py:82 assets/models/automations/base.py:89 msgid "Automation task" -msgstr "" +msgstr "自动化任务" #: assets/models/automations/base.py:91 audits/models.py:129 #: audits/serializers.py:41 ops/models/base.py:49 ops/models/job.py:102 @@ -808,7 +830,7 @@ msgstr "" #: tickets/models/ticket/general.py:282 tickets/serializers/ticket/ticket.py:20 #: xpack/plugins/cloud/models.py:174 xpack/plugins/cloud/models.py:226 msgid "Status" -msgstr "" +msgstr "状态" #: assets/models/automations/base.py:93 assets/models/backup.py:76 #: audits/models.py:41 ops/models/base.py:55 ops/models/celery.py:59 @@ -820,19 +842,19 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:199 #: xpack/plugins/gathered_user/models.py:71 msgid "Date start" -msgstr "" +msgstr "开始日期" #: assets/models/automations/base.py:94 #: assets/models/automations/change_secret.py:59 ops/models/base.py:56 #: ops/models/celery.py:60 ops/models/job.py:110 #: terminal/models/applet/host.py:106 msgid "Date finished" -msgstr "" +msgstr "结束日期" #: assets/models/automations/base.py:96 #: assets/serializers/automations/base.py:39 msgid "Automation snapshot" -msgstr "" +msgstr "工单快照" #: assets/models/automations/base.py:100 assets/models/backup.py:87 #: assets/serializers/account/backup.py:37 @@ -840,22 +862,22 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:121 #: xpack/plugins/change_auth_plan/serializers/base.py:78 msgid "Trigger mode" -msgstr "" +msgstr "触发模式" #: assets/models/automations/base.py:104 #: assets/serializers/automations/change_secret.py:103 msgid "Automation task execution" -msgstr "" +msgstr "自动化任务执行历史" #: assets/models/automations/change_secret.py:15 assets/models/base.py:67 #: assets/serializers/account/account.py:97 assets/serializers/base.py:13 msgid "Secret type" -msgstr "" +msgstr "密问类型" #: assets/models/automations/change_secret.py:19 #: assets/serializers/automations/change_secret.py:25 msgid "Secret strategy" -msgstr "" +msgstr "密文策略" #: assets/models/automations/change_secret.py:21 #: assets/models/automations/change_secret.py:57 assets/models/base.py:69 @@ -863,16 +885,16 @@ msgstr "" #: authentication/templates/authentication/_access_key_modal.html:31 #: perms/models/perm_token.py:15 settings/serializers/auth/radius.py:19 msgid "Secret" -msgstr "" +msgstr "密钥" #: assets/models/automations/change_secret.py:22 #: xpack/plugins/change_auth_plan/models/base.py:39 msgid "Password rules" -msgstr "" +msgstr "密码规则" #: assets/models/automations/change_secret.py:25 msgid "SSH key change strategy" -msgstr "" +msgstr "SSH 密钥策略" #: assets/models/automations/change_secret.py:27 assets/models/backup.py:27 #: assets/serializers/account/backup.py:30 @@ -881,56 +903,56 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/asset.py:63 #: xpack/plugins/change_auth_plan/serializers/base.py:45 msgid "Recipient" -msgstr "" +msgstr "收件人" #: assets/models/automations/change_secret.py:34 msgid "Change secret automation" -msgstr "" +msgstr "自动化改密" #: assets/models/automations/change_secret.py:56 msgid "Old secret" -msgstr "" +msgstr "原密码" #: assets/models/automations/change_secret.py:58 msgid "Date started" -msgstr "" +msgstr "开始日期" #: assets/models/automations/change_secret.py:61 common/const/choices.py:20 msgid "Error" -msgstr "" +msgstr "错误" #: assets/models/automations/change_secret.py:64 msgid "Change secret record" -msgstr "" +msgstr "改密记录" #: assets/models/automations/discovery_account.py:8 msgid "Discovery account automation" -msgstr "" +msgstr "账号发现" #: assets/models/automations/gather_accounts.py:15 #: assets/tasks/gather_accounts.py:28 msgid "Gather asset accounts" -msgstr "" +msgstr "收集账号" #: assets/models/automations/gather_facts.py:15 msgid "Gather asset facts" -msgstr "" +msgstr "收集资产信息" #: assets/models/automations/ping.py:15 msgid "Ping asset" -msgstr "" +msgstr "测试资产" #: assets/models/automations/push_account.py:16 msgid "Push asset account" -msgstr "" +msgstr "账号推送" #: assets/models/automations/verify_account.py:15 msgid "Verify asset account" -msgstr "" +msgstr "账号验证" #: assets/models/backup.py:37 assets/models/backup.py:95 msgid "Account backup plan" -msgstr "" +msgstr "账号备份计划" #: assets/models/backup.py:79 #: authentication/templates/authentication/_msg_oauth_bind.html:11 @@ -939,11 +961,11 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:200 #: xpack/plugins/gathered_user/models.py:74 msgid "Time" -msgstr "" +msgstr "时间" #: assets/models/backup.py:83 msgid "Account backup snapshot" -msgstr "" +msgstr "账号备份快照" #: assets/models/backup.py:90 audits/models.py:124 #: terminal/models/session/sharing.py:108 @@ -951,7 +973,7 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:171 #: xpack/plugins/cloud/models.py:178 msgid "Reason" -msgstr "" +msgstr "原因" #: assets/models/backup.py:92 #: assets/serializers/automations/change_secret.py:99 @@ -960,19 +982,19 @@ msgstr "" #: xpack/plugins/change_auth_plan/models/base.py:198 #: xpack/plugins/change_auth_plan/serializers/asset.py:173 msgid "Is success" -msgstr "" +msgstr "是否成功" #: assets/models/backup.py:99 msgid "Account backup execution" -msgstr "" +msgstr "账号备份执行" #: assets/models/base.py:26 msgid "Connectivity" -msgstr "" +msgstr "可连接性" #: assets/models/base.py:28 authentication/models/temp_token.py:12 msgid "Date verified" -msgstr "" +msgstr "校验日期" #: assets/models/base.py:70 msgid "Privileged" @@ -981,229 +1003,229 @@ msgstr "" #: assets/models/cmd_filter.py:33 perms/models/asset_permission.py:56 #: users/models/group.py:31 users/models/user.py:681 msgid "User group" -msgstr "" +msgstr "用户组" #: assets/models/cmd_filter.py:57 msgid "Command filter" -msgstr "" +msgstr "命令过滤器" #: assets/models/cmd_filter.py:71 msgid "Deny" -msgstr "" +msgstr "拒绝" #: assets/models/cmd_filter.py:72 msgid "Allow" -msgstr "" +msgstr "允许" #: assets/models/cmd_filter.py:73 msgid "Reconfirm" -msgstr "" +msgstr "复核" #: assets/models/cmd_filter.py:77 msgid "Filter" -msgstr "" +msgstr "过滤器" #: assets/models/cmd_filter.py:100 msgid "Command filter rule" -msgstr "" +msgstr "命令过滤规则" #: assets/models/gateway.py:61 authentication/models/connection_token.py:101 msgid "No account" -msgstr "" +msgstr "没有账号" #: assets/models/gateway.py:83 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Unable to connect to port {port} on {address}" -msgstr "" +msgstr "无法连接到 {ip} 上的端口 {port}" #: assets/models/gateway.py:86 authentication/middleware.py:76 #: xpack/plugins/cloud/providers/fc.py:48 msgid "Authentication failed" -msgstr "" +msgstr "认证失败" #: assets/models/gateway.py:88 assets/models/gateway.py:115 msgid "Connect failed" -msgstr "" +msgstr "连接失败" #: assets/models/gathered_user.py:16 msgid "Present" -msgstr "" +msgstr "存在" #: assets/models/gathered_user.py:17 msgid "Date last login" -msgstr "" +msgstr "最后登录日期" #: assets/models/gathered_user.py:18 msgid "IP last login" -msgstr "" +msgstr "最后登录IP" #: assets/models/gathered_user.py:31 msgid "GatherUser" -msgstr "" +msgstr "收集用户" #: assets/models/group.py:30 msgid "Asset group" -msgstr "" +msgstr "资产组" #: assets/models/group.py:34 assets/models/platform.py:19 #: xpack/plugins/cloud/providers/nutanix.py:30 msgid "Default" -msgstr "" +msgstr "默认" #: assets/models/group.py:34 msgid "Default asset group" -msgstr "" +msgstr "默认资产组" #: assets/models/label.py:14 rbac/const.py:6 users/models/user.py:924 msgid "System" -msgstr "" +msgstr "系统" #: assets/models/label.py:18 assets/models/node.py:553 #: assets/serializers/cagegory.py:7 assets/serializers/cagegory.py:14 #: authentication/models/connection_token.py:22 #: common/drf/serializers/common.py:82 settings/models.py:34 msgid "Value" -msgstr "" +msgstr "值" #: assets/models/label.py:36 assets/serializers/cagegory.py:6 #: assets/serializers/cagegory.py:13 common/drf/serializers/common.py:81 #: settings/serializers/sms.py:7 msgid "Label" -msgstr "" +msgstr "标签" #: assets/models/node.py:158 msgid "New node" -msgstr "" +msgstr "新节点" #: assets/models/node.py:481 msgid "empty" -msgstr "" +msgstr "空" #: assets/models/node.py:552 perms/models/perm_node.py:21 msgid "Key" -msgstr "" +msgstr "键" #: assets/models/node.py:554 assets/serializers/node.py:20 msgid "Full value" -msgstr "" +msgstr "全称" #: assets/models/node.py:558 perms/models/perm_node.py:22 msgid "Parent key" -msgstr "" +msgstr "ssh私钥" #: assets/models/node.py:567 xpack/plugins/cloud/models.py:98 #: xpack/plugins/cloud/serializers/task.py:74 msgid "Node" -msgstr "" +msgstr "节点" #: assets/models/node.py:570 msgid "Can match node" -msgstr "" +msgstr "可以匹配节点" #: assets/models/platform.py:20 msgid "Required" -msgstr "" +msgstr "必须的" #: assets/models/platform.py:23 settings/serializers/settings.py:61 #: users/templates/users/reset_password.html:29 msgid "Setting" -msgstr "" +msgstr "设置" #: assets/models/platform.py:42 audits/const.py:69 settings/models.py:37 #: terminal/serializers/applet_host.py:26 msgid "Enabled" -msgstr "" +msgstr "启用" #: assets/models/platform.py:43 msgid "Ansible config" -msgstr "" +msgstr "Ansible 配置" #: assets/models/platform.py:44 msgid "Ping enabled" -msgstr "" +msgstr "启用资产探活" #: assets/models/platform.py:45 msgid "Ping method" -msgstr "" +msgstr "资产探活方式" #: assets/models/platform.py:46 assets/models/platform.py:56 msgid "Gather facts enabled" -msgstr "" +msgstr "收集资产信息" #: assets/models/platform.py:47 assets/models/platform.py:58 msgid "Gather facts method" -msgstr "" +msgstr "收集信息方式" #: assets/models/platform.py:48 msgid "Push account enabled" -msgstr "" +msgstr "启用账号推送" #: assets/models/platform.py:49 msgid "Push account method" -msgstr "" +msgstr "账号推送方式" #: assets/models/platform.py:50 msgid "Change password enabled" -msgstr "" +msgstr "开启账号改密" #: assets/models/platform.py:52 msgid "Change password method" -msgstr "" +msgstr "更改密码方式" #: assets/models/platform.py:53 msgid "Verify account enabled" -msgstr "" +msgstr "开启账号验证" #: assets/models/platform.py:55 msgid "Verify account method" -msgstr "" +msgstr "账号验证方式" #: assets/models/platform.py:75 tickets/models/ticket/general.py:299 msgid "Meta" -msgstr "" +msgstr "元数据" #: assets/models/platform.py:76 msgid "Internal" -msgstr "" +msgstr "内部的" #: assets/models/platform.py:80 assets/serializers/platform.py:97 msgid "Charset" -msgstr "" +msgstr "编码" #: assets/models/platform.py:82 msgid "Domain enabled" -msgstr "" +msgstr "启用网域" #: assets/models/platform.py:83 msgid "Protocols enabled" -msgstr "" +msgstr "启用协议" #: assets/models/platform.py:85 msgid "Su enabled" -msgstr "" +msgstr "启用账号切换" #: assets/models/platform.py:86 -msgid "SU method" -msgstr "" +msgid "Su method" +msgstr "账号切换方式" #: assets/models/platform.py:88 assets/serializers/platform.py:104 msgid "Automation" -msgstr "" +msgstr "自动化" #: assets/models/utils.py:19 #, python-format msgid "%(value)s is not an even number" -msgstr "" +msgstr "%(value)s is not an even number" #: assets/notifications.py:8 msgid "Notification of account backup route task results" -msgstr "" +msgstr "账号备份任务结果通知" #: assets/notifications.py:18 msgid "" "{} - The account backup passage task has been completed. See the attachment " "for details" -msgstr "" +msgstr "{} - 账号备份任务已完成, 详情见附件" #: assets/notifications.py:20 msgid "" @@ -1211,17 +1233,19 @@ msgid "" "password has not been set - please go to personal information -> file " "encryption password to set the encryption password" msgstr "" +"{} - 账号备份任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设" +"置加密密码" #: assets/notifications.py:31 xpack/plugins/change_auth_plan/notifications.py:8 msgid "Notification of implementation result of encryption change plan" -msgstr "" +msgstr "改密计划任务结果通知" #: assets/notifications.py:41 #: xpack/plugins/change_auth_plan/notifications.py:18 msgid "" "{} - The encryption change task has been completed. See the attachment for " "details" -msgstr "" +msgstr "{} - 改密任务已完成, 详情见附件" #: assets/notifications.py:42 #: xpack/plugins/change_auth_plan/notifications.py:19 @@ -1230,31 +1254,33 @@ msgid "" "has not been set - please go to personal information -> file encryption " "password to set the encryption password" msgstr "" +"{} - 改密任务已完成: 未设置加密密码 - 请前往个人信息 -> 文件加密密码中设置加" +"密密码" #: assets/serializers/account/account.py:18 msgid "Push now" -msgstr "" +msgstr "立即推送" #: assets/serializers/account/account.py:20 msgid "Has secret" -msgstr "" +msgstr "已托管密码" #: assets/serializers/account/account.py:27 msgid "Account template not found" -msgstr "" +msgstr "账号模版未找到" #: assets/serializers/account/backup.py:29 #: assets/serializers/automations/base.py:34 ops/mixin.py:22 ops/mixin.py:102 #: settings/serializers/auth/ldap.py:66 #: xpack/plugins/change_auth_plan/serializers/base.py:43 msgid "Periodic perform" -msgstr "" +msgstr "定时执行" #: assets/serializers/account/backup.py:31 #: assets/serializers/automations/change_secret.py:41 #: xpack/plugins/change_auth_plan/serializers/base.py:46 msgid "Currently only mail sending is supported" -msgstr "" +msgstr "当前只支持邮件发送" #: assets/serializers/asset/common.py:68 assets/serializers/platform.py:102 #: authentication/serializers/connect_token_secret.py:27 @@ -1262,95 +1288,95 @@ msgstr "" #: perms/serializers/user_permission.py:22 xpack/plugins/cloud/models.py:109 #: xpack/plugins/cloud/serializers/task.py:43 msgid "Protocols" -msgstr "" +msgstr "协议组" #: assets/serializers/asset/common.py:88 msgid "Address" -msgstr "" +msgstr "地址" #: assets/serializers/asset/common.py:156 msgid "Platform not exist" -msgstr "" +msgstr "平台不存在" #: assets/serializers/asset/common.py:172 msgid "Protocol is required: {}" -msgstr "" +msgstr "协议是必填的: {}" #: assets/serializers/asset/host.py:12 msgid "Vendor" -msgstr "" +msgstr "制造商" #: assets/serializers/asset/host.py:13 msgid "Model" -msgstr "" +msgstr "型号" #: assets/serializers/asset/host.py:14 tickets/models/ticket/general.py:298 msgid "Serial number" -msgstr "" +msgstr "序列号" #: assets/serializers/asset/host.py:16 msgid "CPU model" -msgstr "" +msgstr "CPU型号" #: assets/serializers/asset/host.py:17 msgid "CPU count" -msgstr "" +msgstr "CPU数量" #: assets/serializers/asset/host.py:18 msgid "CPU cores" -msgstr "" +msgstr "CPU核数" #: assets/serializers/asset/host.py:19 msgid "CPU vcpus" -msgstr "" +msgstr "CPU总数" #: assets/serializers/asset/host.py:20 msgid "Memory" -msgstr "" +msgstr "内存" #: assets/serializers/asset/host.py:21 msgid "Disk total" -msgstr "" +msgstr "硬盘大小" #: assets/serializers/asset/host.py:22 msgid "Disk info" -msgstr "" +msgstr "硬盘信息" #: assets/serializers/asset/host.py:24 msgid "OS" -msgstr "" +msgstr "操作系统" #: assets/serializers/asset/host.py:25 msgid "OS version" -msgstr "" +msgstr "系统版本" #: assets/serializers/asset/host.py:26 msgid "OS arch" -msgstr "" +msgstr "系统架构" #: assets/serializers/asset/host.py:27 msgid "Hostname raw" -msgstr "" +msgstr "主机名原始" #: assets/serializers/asset/host.py:28 msgid "Asset number" -msgstr "" +msgstr "资产编号" #: assets/serializers/automations/change_secret.py:28 #: xpack/plugins/change_auth_plan/models/asset.py:50 #: xpack/plugins/change_auth_plan/serializers/asset.py:33 msgid "SSH Key strategy" -msgstr "" +msgstr "SSH 密钥策略" #: assets/serializers/automations/change_secret.py:70 #: xpack/plugins/change_auth_plan/serializers/base.py:58 msgid "* Please enter the correct password length" -msgstr "" +msgstr "* 请输入正确的密码长度" #: assets/serializers/automations/change_secret.py:73 #: xpack/plugins/change_auth_plan/serializers/base.py:61 msgid "* Password length range 6-30 bits" -msgstr "" +msgstr "* 密码长度范围 6-30 位" #: assets/serializers/automations/change_secret.py:117 #: assets/serializers/automations/change_secret.py:145 audits/const.py:74 @@ -1358,15 +1384,15 @@ msgstr "" #: terminal/models/session/sharing.py:104 tickets/views/approve.py:114 #: xpack/plugins/change_auth_plan/serializers/asset.py:189 msgid "Success" -msgstr "" +msgstr "成功" #: assets/serializers/automations/gather_accounts.py:23 msgid "Executed amount" -msgstr "" +msgstr "执行次数" #: assets/serializers/base.py:21 msgid "Key password" -msgstr "" +msgstr "密钥密码" #: assets/serializers/cagegory.py:9 msgid "Constraints" @@ -1374,148 +1400,145 @@ msgstr "" #: assets/serializers/cagegory.py:15 msgid "Types" -msgstr "" +msgstr "类型" #: assets/serializers/domain.py:16 msgid "Gateway" -msgstr "" +msgstr "网关" #: assets/serializers/gathered_user.py:24 settings/serializers/terminal.py:9 msgid "Hostname" -msgstr "" +msgstr "主机名" #: assets/serializers/label.py:12 msgid "Assets amount" -msgstr "" +msgstr "资产数量" #: assets/serializers/label.py:13 msgid "Category display" -msgstr "" +msgstr "类别名称" #: assets/serializers/node.py:17 msgid "value" -msgstr "" +msgstr "值" #: assets/serializers/node.py:31 msgid "Can't contains: /" -msgstr "" +msgstr "不能包含: /" #: assets/serializers/node.py:41 msgid "The same level node name cannot be the same" -msgstr "" +msgstr "同级别节点名字不能重复" #: assets/serializers/platform.py:24 msgid "SFTP enabled" -msgstr "" +msgstr "SFTP 已启用" #: assets/serializers/platform.py:25 msgid "SFTP home" -msgstr "" +msgstr "SFTP根路径" -#: assets/serializers/platform.py:28 -msgid "Auto fill" -msgstr "" #: assets/serializers/platform.py:79 msgid "Primary" -msgstr "" +msgstr "主要的" #: assets/serializers/utils.py:13 msgid "Password can not contains `{{` " -msgstr "" +msgstr "密码不能包含 `{{` 字符" #: assets/serializers/utils.py:16 msgid "Password can not contains `'` " -msgstr "" +msgstr "密码不能包含 `'` 字符" #: assets/serializers/utils.py:18 msgid "Password can not contains `\"` " -msgstr "" +msgstr "密码不能包含 `\"` 字符" #: assets/serializers/utils.py:24 msgid "private key invalid or passphrase error" -msgstr "" +msgstr "密钥不合法或密钥密码错误" #: assets/tasks/automation.py:11 msgid "Execute automation" -msgstr "" +msgstr "执行自动化任务" #: assets/tasks/backup.py:13 msgid "Execute account backup plan" -msgstr "" +msgstr "执行账号备份计划" #: assets/tasks/gather_accounts.py:31 msgid "Gather assets accounts" -msgstr "" +msgstr "收集资产上的账号" #: assets/tasks/gather_facts.py:26 msgid "Update some assets hardware info. " -msgstr "" +msgstr "更新资产硬件信息. " #: assets/tasks/gather_facts.py:44 msgid "Manually update the hardware information of assets" -msgstr "" +msgstr "手动更新资产信息" #: assets/tasks/gather_facts.py:49 msgid "Update assets hardware info: " -msgstr "" +msgstr "更新资产硬件信息" #: assets/tasks/gather_facts.py:53 msgid "Manually update the hardware information of assets under a node" -msgstr "" +msgstr "手动更新节点下资产信息" #: assets/tasks/gather_facts.py:59 msgid "Update node asset hardware information: " -msgstr "" +msgstr "更新节点资产硬件信息: " #: assets/tasks/nodes_amount.py:16 msgid "Check the amount of assets under the node" -msgstr "" +msgstr "检查节点下资产数量" #: assets/tasks/nodes_amount.py:28 msgid "" "The task of self-checking is already running and cannot be started repeatedly" -msgstr "" +msgstr "自检程序已经在运行,不能重复启动" #: assets/tasks/nodes_amount.py:34 msgid "Periodic check the amount of assets under the node" -msgstr "" +msgstr "周期性检查节点下资产数量" #: assets/tasks/ping.py:21 assets/tasks/ping.py:39 msgid "Test assets connectivity " -msgstr "" +msgstr "测试资产可连接性" #: assets/tasks/ping.py:33 msgid "Manually test the connectivity of a asset" -msgstr "" +msgstr "手动测试资产连接性" #: assets/tasks/ping.py:43 msgid "Manually test the connectivity of assets under a node" -msgstr "" +msgstr "手动测试节点下资产连接性" #: assets/tasks/ping.py:49 msgid "Test if the assets under the node are connectable " -msgstr "" +msgstr "测试节点下资产是否可连接" #: assets/tasks/push_account.py:17 assets/tasks/push_account.py:34 msgid "Push accounts to assets" -msgstr "" +msgstr "推送账号到资产" #: assets/tasks/utils.py:17 msgid "Asset has been disabled, skipped: {}" -msgstr "" +msgstr "资产已经被禁用, 跳过: {}" #: assets/tasks/utils.py:21 msgid "Asset may not be support ansible, skipped: {}" -msgstr "" +msgstr "资产或许不支持ansible, 跳过: {}" #: assets/tasks/utils.py:39 msgid "For security, do not push user {}" -msgstr "" +msgstr "为了安全,禁止推送用户 {}" #: assets/tasks/utils.py:55 msgid "No assets matched, stop task" -msgstr "" +msgstr "没有匹配到资产,结束任务" #: assets/tasks/verify_account.py:30 msgid "Verify asset account availability" @@ -1523,222 +1546,222 @@ msgstr "" #: assets/tasks/verify_account.py:37 msgid "Verify accounts connectivity" -msgstr "" +msgstr "测试账号可连接性" #: audits/apps.py:9 msgid "Audits" -msgstr "" +msgstr "日志审计" #: audits/backends/db.py:12 msgid "The text content is too long. Use Elasticsearch to store operation logs" -msgstr "" +msgstr "文字内容太长。请使用 Elasticsearch 存储操作日志" #: audits/backends/db.py:24 audits/backends/db.py:26 msgid "Tips" -msgstr "" +msgstr "提示" #: audits/const.py:45 msgid "Mkdir" -msgstr "" +msgstr "创建目录" #: audits/const.py:46 msgid "Rmdir" -msgstr "" +msgstr "删除目录" #: audits/const.py:47 audits/const.py:57 #: authentication/templates/authentication/_access_key_modal.html:65 #: rbac/tree.py:226 msgid "Delete" -msgstr "" +msgstr "删除" #: audits/const.py:48 perms/const.py:13 msgid "Upload" -msgstr "" +msgstr "上传文件" #: audits/const.py:49 msgid "Rename" -msgstr "" +msgstr "重命名" #: audits/const.py:50 msgid "Symlink" -msgstr "" +msgstr "建立软链接" #: audits/const.py:51 perms/const.py:14 msgid "Download" -msgstr "" +msgstr "下载文件" #: audits/const.py:55 rbac/tree.py:224 msgid "View" -msgstr "" +msgstr "查看" #: audits/const.py:56 rbac/tree.py:225 templates/_csv_import_export.html:18 #: templates/_csv_update_modal.html:6 msgid "Update" -msgstr "" +msgstr "更新" #: audits/const.py:58 #: authentication/templates/authentication/_access_key_modal.html:22 #: rbac/tree.py:223 msgid "Create" -msgstr "" +msgstr "创建" #: audits/const.py:63 settings/serializers/terminal.py:6 #: terminal/models/applet/host.py:24 terminal/models/component/terminal.py:159 msgid "Terminal" -msgstr "" +msgstr "终端" #: audits/const.py:70 msgid "-" -msgstr "" +msgstr "-" #: audits/handler.py:134 msgid "Yes" -msgstr "" +msgstr "是" #: audits/handler.py:134 msgid "No" -msgstr "" +msgstr "否" #: audits/models.py:32 audits/models.py:55 audits/models.py:96 #: terminal/models/session/session.py:37 terminal/models/session/sharing.py:96 msgid "Remote addr" -msgstr "" +msgstr "远端地址" #: audits/models.py:37 audits/serializers.py:19 msgid "Operate" -msgstr "" +msgstr "操作" #: audits/models.py:39 msgid "Filename" -msgstr "" +msgstr "文件名" #: audits/models.py:44 msgid "File transfer log" -msgstr "" +msgstr "文件管理" #: audits/models.py:53 audits/serializers.py:91 msgid "Resource Type" -msgstr "" +msgstr "资源类型" #: audits/models.py:54 msgid "Resource" -msgstr "" +msgstr "资源" #: audits/models.py:56 audits/models.py:98 #: terminal/backends/command/serializers.py:41 msgid "Datetime" -msgstr "" +msgstr "日期" #: audits/models.py:88 msgid "Operate log" -msgstr "" +msgstr "操作日志" #: audits/models.py:94 msgid "Change by" -msgstr "" +msgstr "修改者" #: audits/models.py:104 msgid "Password change log" -msgstr "" +msgstr "改密日志" #: audits/models.py:111 msgid "Login type" -msgstr "" +msgstr "登录方式" #: audits/models.py:113 tickets/models/ticket/login_confirm.py:10 msgid "Login ip" -msgstr "" +msgstr "登录IP" #: audits/models.py:115 #: authentication/templates/authentication/_msg_different_city.html:11 #: tickets/models/ticket/login_confirm.py:11 msgid "Login city" -msgstr "" +msgstr "登录城市" #: audits/models.py:118 audits/serializers.py:62 msgid "User agent" -msgstr "" +msgstr "用户代理" #: audits/models.py:121 audits/serializers.py:39 #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: users/forms/profile.py:65 users/models/user.py:698 #: users/serializers/profile.py:126 msgid "MFA" -msgstr "" +msgstr "MFA" #: audits/models.py:131 msgid "Date login" -msgstr "" +msgstr "登录日期" #: audits/models.py:133 audits/serializers.py:64 msgid "Authentication backend" -msgstr "" +msgstr "认证方式" #: audits/models.py:174 msgid "User login log" -msgstr "" +msgstr "用户登录日志" #: audits/serializers.py:63 msgid "Reason display" -msgstr "" +msgstr "原因描述" #: audits/signal_handlers.py:48 msgid "SSH Key" -msgstr "" +msgstr "SSH 密钥" #: audits/signal_handlers.py:50 settings/serializers/auth/sso.py:10 msgid "SSO" -msgstr "" +msgstr "SSO" #: audits/signal_handlers.py:51 msgid "Auth Token" -msgstr "" +msgstr "认证令牌" #: audits/signal_handlers.py:52 authentication/notifications.py:73 #: authentication/views/login.py:73 authentication/views/wecom.py:178 #: notifications/backends/__init__.py:11 settings/serializers/auth/wecom.py:10 #: users/models/user.py:736 msgid "WeCom" -msgstr "" +msgstr "企业微信" #: audits/signal_handlers.py:53 authentication/views/feishu.py:145 #: authentication/views/login.py:85 notifications/backends/__init__.py:14 #: settings/serializers/auth/feishu.py:10 users/models/user.py:738 msgid "FeiShu" -msgstr "" +msgstr "飞书" #: audits/signal_handlers.py:54 authentication/views/dingtalk.py:180 #: authentication/views/login.py:79 notifications/backends/__init__.py:12 #: settings/serializers/auth/dingtalk.py:10 users/models/user.py:737 msgid "DingTalk" -msgstr "" +msgstr "钉钉" #: audits/signal_handlers.py:55 authentication/models/temp_token.py:16 msgid "Temporary token" -msgstr "" +msgstr "临时密码" #: authentication/api/confirm.py:40 msgid "This action require verify your MFA" -msgstr "" +msgstr "此操作需要验证您的 MFA" #: authentication/api/mfa.py:59 msgid "Current user not support mfa type: {}" -msgstr "" +msgstr "当前用户不支持 MFA 类型: {}" #: authentication/api/password.py:31 terminal/api/session/session.py:225 #: users/views/profile/reset.py:44 msgid "User does not exist: {}" -msgstr "" +msgstr "用户不存在: {}" #: authentication/api/password.py:31 users/views/profile/reset.py:127 msgid "No user matched" -msgstr "" +msgstr "没有匹配到用户" #: authentication/api/password.py:35 msgid "" "The user is from {}, please go to the corresponding system to change the " "password" -msgstr "" +msgstr "用户来自 {} 请去相应系统修改密码" #: authentication/api/password.py:59 #: authentication/templates/authentication/login.html:256 @@ -1747,7 +1770,7 @@ msgstr "" #: users/templates/users/forgot_password_previewing.html:13 #: users/templates/users/forgot_password_previewing.html:14 msgid "Forgot password" -msgstr "" +msgstr "忘记密码" #: authentication/apps.py:7 settings/serializers/auth/base.py:10 #: settings/serializers/auth/cas.py:10 settings/serializers/auth/dingtalk.py:10 @@ -1756,123 +1779,123 @@ msgstr "" #: settings/serializers/auth/radius.py:13 settings/serializers/auth/saml2.py:11 #: settings/serializers/auth/sso.py:10 settings/serializers/auth/wecom.py:10 msgid "Authentication" -msgstr "" +msgstr "认证" #: authentication/backends/custom.py:58 #: authentication/backends/oauth2/backends.py:158 msgid "User invalid, disabled or expired" -msgstr "" +msgstr "用户无效,已禁用或已过期" #: authentication/backends/drf.py:56 msgid "Invalid signature header. No credentials provided." -msgstr "" +msgstr "不合法的签名头" #: authentication/backends/drf.py:59 msgid "Invalid signature header. Signature string should not contain spaces." -msgstr "" +msgstr "不合法的签名头" #: authentication/backends/drf.py:66 msgid "Invalid signature header. Format like AccessKeyId:Signature" -msgstr "" +msgstr "不合法的签名头" #: authentication/backends/drf.py:70 msgid "" "Invalid signature header. Signature string should not contain invalid " "characters." -msgstr "" +msgstr "不合法的签名头" #: authentication/backends/drf.py:90 authentication/backends/drf.py:106 msgid "Invalid signature." -msgstr "" +msgstr "签名无效" #: authentication/backends/drf.py:97 msgid "HTTP header: Date not provide or not %a, %d %b %Y %H:%M:%S GMT" -msgstr "" +msgstr "HTTP header not valid" #: authentication/backends/drf.py:102 msgid "Expired, more than 15 minutes" -msgstr "" +msgstr "已过期,超过15分钟" #: authentication/backends/drf.py:109 msgid "User disabled." -msgstr "" +msgstr "用户已禁用" #: authentication/backends/drf.py:127 msgid "Invalid token header. No credentials provided." -msgstr "" +msgstr "无效的令牌头。没有提供任何凭据。" #: authentication/backends/drf.py:130 msgid "Invalid token header. Sign string should not contain spaces." -msgstr "" +msgstr "无效的令牌头。符号字符串不应包含空格。" #: authentication/backends/drf.py:137 msgid "" "Invalid token header. Sign string should not contain invalid characters." -msgstr "" +msgstr "无效的令牌头。符号字符串不应包含无效字符。" #: authentication/backends/drf.py:148 msgid "Invalid token or cache refreshed." -msgstr "" +msgstr "刷新的令牌或缓存无效。" #: authentication/confirm/password.py:16 msgid "Authentication failed password incorrect" -msgstr "" +msgstr "认证失败 (用户名或密码不正确)" #: authentication/confirm/relogin.py:10 msgid "Login time has exceeded {} minutes, please login again" -msgstr "" +msgstr "登录时长已超过 {} 分钟,请重新登录" #: authentication/errors/const.py:18 msgid "Username/password check failed" -msgstr "" +msgstr "用户名/密码 校验失败" #: authentication/errors/const.py:19 msgid "Password decrypt failed" -msgstr "" +msgstr "密码解密失败" #: authentication/errors/const.py:20 msgid "MFA failed" -msgstr "" +msgstr "MFA 校验失败" #: authentication/errors/const.py:21 msgid "MFA unset" -msgstr "" +msgstr "MFA 没有设定" #: authentication/errors/const.py:22 msgid "Username does not exist" -msgstr "" +msgstr "用户名不存在" #: authentication/errors/const.py:23 msgid "Password expired" -msgstr "" +msgstr "密码已过期" #: authentication/errors/const.py:24 msgid "Disabled or expired" -msgstr "" +msgstr "禁用或失效" #: authentication/errors/const.py:25 msgid "This account is inactive." -msgstr "" +msgstr "此账号已禁用" #: authentication/errors/const.py:26 msgid "This account is expired" -msgstr "" +msgstr "此账号已过期" #: authentication/errors/const.py:27 msgid "Auth backend not match" -msgstr "" +msgstr "没有匹配到认证后端" #: authentication/errors/const.py:28 msgid "ACL is not allowed" -msgstr "" +msgstr "登录访问控制不被允许" #: authentication/errors/const.py:29 msgid "Only local users are allowed" -msgstr "" +msgstr "仅允许本地用户" #: authentication/errors/const.py:39 msgid "No session found, check your cookie" -msgstr "" +msgstr "会话已变更,刷新页面" #: authentication/errors/const.py:41 #, python-brace-format @@ -1881,18 +1904,20 @@ msgid "" "You can also try {times_try} times (The account will be temporarily locked " "for {block_time} minutes)" msgstr "" +"您输入的用户名或密码不正确,请重新输入。 您还可以尝试 {times_try} 次(账号将" +"被临时 锁定 {block_time} 分钟)" #: authentication/errors/const.py:47 authentication/errors/const.py:55 msgid "" "The account has been locked (please contact admin to unlock it or try again " "after {} minutes)" -msgstr "" +msgstr "账号已被锁定(请联系管理员解锁或{}分钟后重试)" #: authentication/errors/const.py:51 msgid "" "The address has been locked (please contact admin to unlock it or try again " "after {} minutes)" -msgstr "" +msgstr "IP 已被锁定(请联系管理员解锁或 {} 分钟后重试)" #: authentication/errors/const.py:59 #, python-brace-format @@ -1900,153 +1925,154 @@ msgid "" "{error}, You can also try {times_try} times (The account will be temporarily " "locked for {block_time} minutes)" msgstr "" +"{error},您还可以尝试 {times_try} 次(账号将被临时锁定 {block_time} 分钟)" #: authentication/errors/const.py:63 msgid "MFA required" -msgstr "" +msgstr "需要 MFA 认证" #: authentication/errors/const.py:64 msgid "MFA not set, please set it first" -msgstr "" +msgstr "MFA 没有设置,请先完成设置" #: authentication/errors/const.py:65 msgid "Login confirm required" -msgstr "" +msgstr "需要登录复核" #: authentication/errors/const.py:66 msgid "Wait login confirm ticket for accept" -msgstr "" +msgstr "等待登录复核处理" #: authentication/errors/const.py:67 msgid "Login confirm ticket was {}" -msgstr "" +msgstr "登录复核: {}" #: authentication/errors/failed.py:146 msgid "Current IP and Time period is not allowed" -msgstr "" +msgstr "当前 IP 和时间段不被允许登录" #: authentication/errors/failed.py:151 msgid "Please enter MFA code" -msgstr "" +msgstr "请输入 MFA 验证码" #: authentication/errors/failed.py:156 msgid "Please enter SMS code" -msgstr "" +msgstr "请输入短信验证码" #: authentication/errors/failed.py:161 users/exceptions.py:15 msgid "Phone not set" -msgstr "" +msgstr "手机号没有设置" #: authentication/errors/mfa.py:8 msgid "SSO auth closed" -msgstr "" +msgstr "SSO 认证关闭了" #: authentication/errors/mfa.py:18 authentication/views/wecom.py:80 msgid "WeCom is already bound" -msgstr "" +msgstr "企业微信已经绑定" #: authentication/errors/mfa.py:23 authentication/views/wecom.py:237 #: authentication/views/wecom.py:291 msgid "WeCom is not bound" -msgstr "" +msgstr "没有绑定企业微信" #: authentication/errors/mfa.py:28 authentication/views/dingtalk.py:243 #: authentication/views/dingtalk.py:297 msgid "DingTalk is not bound" -msgstr "" +msgstr "钉钉没有绑定" #: authentication/errors/mfa.py:33 authentication/views/feishu.py:204 msgid "FeiShu is not bound" -msgstr "" +msgstr "没有绑定飞书" #: authentication/errors/mfa.py:38 msgid "Your password is invalid" -msgstr "" +msgstr "您的密码无效" #: authentication/errors/redirect.py:85 authentication/mixins.py:306 msgid "Your password is too simple, please change it for security" -msgstr "" +msgstr "你的密码过于简单,为了安全,请修改" #: authentication/errors/redirect.py:93 authentication/mixins.py:313 msgid "You should to change your password before login" -msgstr "" +msgstr "登录完成前,请先修改密码" #: authentication/errors/redirect.py:101 authentication/mixins.py:320 msgid "Your password has expired, please reset before logging in" -msgstr "" +msgstr "您的密码已过期,先修改再登录" #: authentication/forms.py:45 msgid "{} days auto login" -msgstr "" +msgstr "{} 天内自动登录" #: authentication/forms.py:56 msgid "MFA Code" -msgstr "" +msgstr "MFA 验证码" #: authentication/forms.py:57 msgid "MFA type" -msgstr "" +msgstr "MFA 类型" #: authentication/forms.py:65 #: authentication/templates/authentication/_captcha_field.html:15 msgid "Captcha" -msgstr "" +msgstr "验证码" #: authentication/forms.py:70 users/forms/profile.py:28 msgid "MFA code" -msgstr "" +msgstr "MFA 验证码" #: authentication/forms.py:72 msgid "Dynamic code" -msgstr "" +msgstr "动态码" #: authentication/mfa/base.py:7 msgid "Please input security code" -msgstr "" +msgstr "请输入动态安全码" #: authentication/mfa/custom.py:20 msgid "MFA Custom code invalid" -msgstr "" +msgstr "自定义 MFA 验证码校验失败" #: authentication/mfa/custom.py:26 msgid "MFA custom verification code" -msgstr "" +msgstr "自定义 MFA 验证码" #: authentication/mfa/custom.py:56 msgid "MFA custom global enabled, cannot disable" -msgstr "" +msgstr "自定义 MFA 全局开启,无法被禁用" #: authentication/mfa/otp.py:7 msgid "OTP code invalid, or server time error" -msgstr "" +msgstr "虚拟 MFA 验证码错误,或者服务器端时间不对" #: authentication/mfa/otp.py:12 msgid "OTP" -msgstr "" +msgstr "虚拟 MFA" #: authentication/mfa/otp.py:13 msgid "OTP verification code" -msgstr "" +msgstr "虚拟 MFA 验证码" #: authentication/mfa/otp.py:48 msgid "Virtual OTP based MFA" -msgstr "" +msgstr "虚拟 MFA(OTP)" #: authentication/mfa/radius.py:7 msgid "Radius verify code invalid" -msgstr "" +msgstr "Radius 校验失败" #: authentication/mfa/radius.py:13 msgid "Radius verification code" -msgstr "" +msgstr "Radius 动态安全码" #: authentication/mfa/radius.py:44 msgid "Radius global enabled, cannot disable" -msgstr "" +msgstr "Radius MFA 全局开启,无法被禁用" #: authentication/mfa/sms.py:7 msgid "SMS verify code invalid" -msgstr "" +msgstr "短信验证码校验失败" #: authentication/mfa/sms.py:12 authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 @@ -2054,122 +2080,122 @@ msgstr "" #: users/forms/profile.py:106 users/templates/users/forgot_password.html:111 #: users/views/profile/reset.py:79 msgid "SMS" -msgstr "" +msgstr "短信" #: authentication/mfa/sms.py:13 msgid "SMS verification code" -msgstr "" +msgstr "短信验证码" #: authentication/mfa/sms.py:57 msgid "Set phone number to enable" -msgstr "" +msgstr "设置手机号码启用" #: authentication/mfa/sms.py:61 msgid "Clear phone number to disable" -msgstr "" +msgstr "清空手机号码禁用" #: authentication/middleware.py:77 settings/utils/ldap.py:652 msgid "Authentication failed (before login check failed): {}" -msgstr "" +msgstr "认证失败(登录前检查失败): {}" #: authentication/mixins.py:256 msgid "The MFA type ({}) is not enabled" -msgstr "" +msgstr "该 MFA ({}) 方式没有启用" #: authentication/mixins.py:296 msgid "Please change your password" -msgstr "" +msgstr "请修改密码" #: authentication/models/connection_token.py:31 #: terminal/serializers/storage.py:111 msgid "Account name" -msgstr "" +msgstr "账号名称" #: authentication/models/connection_token.py:32 msgid "Input username" -msgstr "" +msgstr "自定义用户名" #: authentication/models/connection_token.py:33 msgid "Input secret" -msgstr "" +msgstr "自定义密码" #: authentication/models/connection_token.py:35 #: authentication/serializers/connect_token_secret.py:110 #: perms/models/perm_token.py:17 msgid "Connect method" -msgstr "" +msgstr "连接方式" #: authentication/models/connection_token.py:36 #: rbac/serializers/rolebinding.py:21 msgid "User display" -msgstr "" +msgstr "用户名称" #: authentication/models/connection_token.py:37 msgid "Asset display" -msgstr "" +msgstr "资产名称" #: authentication/models/connection_token.py:38 #: authentication/models/temp_token.py:13 perms/models/asset_permission.py:69 #: tickets/models/ticket/apply_application.py:31 #: tickets/models/ticket/apply_asset.py:20 users/models/user.py:719 msgid "Date expired" -msgstr "" +msgstr "失效日期" #: authentication/models/connection_token.py:42 msgid "Connection token" -msgstr "" +msgstr "连接令牌" #: authentication/models/connection_token.py:44 msgid "Can view connection token secret" -msgstr "" +msgstr "可以查看连接令牌密文" #: authentication/models/connection_token.py:91 msgid "Connection token expired at: {}" -msgstr "" +msgstr "连接令牌过期: {}" #: authentication/models/connection_token.py:94 msgid "No user or invalid user" -msgstr "" +msgstr "没有用户或用户失效" #: authentication/models/connection_token.py:98 msgid "No asset or inactive asset" -msgstr "" +msgstr "没有资产或资产未激活" #: authentication/models/connection_token.py:173 msgid "Super connection token" -msgstr "" +msgstr "超级连接令牌" #: authentication/models/private_token.py:9 msgid "Private Token" -msgstr "" +msgstr "SSH密钥" #: authentication/models/sso_token.py:15 msgid "Expired" -msgstr "" +msgstr "过期时间" #: authentication/models/sso_token.py:20 msgid "SSO token" -msgstr "" +msgstr "SSO token" #: authentication/models/temp_token.py:11 msgid "Verified" -msgstr "" +msgstr "已校验" #: authentication/notifications.py:19 msgid "Different city login reminder" -msgstr "" +msgstr "异地登录提醒" #: authentication/notifications.py:52 msgid "binding reminder" -msgstr "" +msgstr "绑定提醒" #: authentication/serializers/connect_token_secret.py:109 msgid "Expired now" -msgstr "" +msgstr "立刻过期" #: authentication/serializers/connection_token.py:14 msgid "Expired time" -msgstr "" +msgstr "过期时间" #: authentication/serializers/password_mfa.py:16 #: authentication/serializers/password_mfa.py:24 @@ -2179,90 +2205,90 @@ msgstr "" #: users/templates/users/forgot_password.html:116 #: users/views/profile/reset.py:73 msgid "Email" -msgstr "" +msgstr "邮箱" #: authentication/serializers/password_mfa.py:29 #: users/templates/users/forgot_password.html:107 msgid "The {} cannot be empty" -msgstr "" +msgstr "{} 不能为空" #: authentication/serializers/token.py:79 perms/serializers/permission.py:30 #: perms/serializers/permission.py:61 users/serializers/user.py:203 msgid "Is valid" -msgstr "" +msgstr "账号是否有效" #: authentication/templates/authentication/_access_key_modal.html:6 msgid "API key list" -msgstr "" +msgstr "API Key列表" #: authentication/templates/authentication/_access_key_modal.html:18 msgid "Using api key sign api header, every requests header difference" -msgstr "" +msgstr "使用api key签名请求头,每个请求的头部是不一样的" #: authentication/templates/authentication/_access_key_modal.html:19 msgid "docs" -msgstr "" +msgstr "文档" #: authentication/templates/authentication/_access_key_modal.html:30 #: users/serializers/group.py:35 msgid "ID" -msgstr "" +msgstr "ID" #: authentication/templates/authentication/_access_key_modal.html:33 #: terminal/notifications.py:96 terminal/notifications.py:144 msgid "Date" -msgstr "" +msgstr "日期" #: authentication/templates/authentication/_access_key_modal.html:48 msgid "Show" -msgstr "" +msgstr "显示" #: authentication/templates/authentication/_access_key_modal.html:66 #: settings/serializers/security.py:39 users/models/user.py:559 #: users/serializers/profile.py:116 users/templates/users/mfa_setting.html:61 #: users/templates/users/user_verify_mfa.html:36 msgid "Disable" -msgstr "" +msgstr "禁用" #: authentication/templates/authentication/_access_key_modal.html:67 #: users/models/user.py:560 users/serializers/profile.py:117 #: users/templates/users/mfa_setting.html:26 #: users/templates/users/mfa_setting.html:68 msgid "Enable" -msgstr "" +msgstr "启用" #: authentication/templates/authentication/_access_key_modal.html:147 msgid "Delete success" -msgstr "" +msgstr "删除成功" #: authentication/templates/authentication/_access_key_modal.html:155 #: authentication/templates/authentication/_mfa_confirm_modal.html:53 #: templates/_modal.html:22 tickets/const.py:44 msgid "Close" -msgstr "" +msgstr "关闭" #: authentication/templates/authentication/_captcha_field.html:8 msgid "Play CAPTCHA as audio file" -msgstr "" +msgstr "语言播放验证码" #: authentication/templates/authentication/_mfa_confirm_modal.html:5 msgid "MFA confirm" -msgstr "" +msgstr "MFA 认证校验" #: authentication/templates/authentication/_mfa_confirm_modal.html:17 msgid "Need MFA for view auth" -msgstr "" +msgstr "需要 MFA 认证来查看账号信息" #: authentication/templates/authentication/_mfa_confirm_modal.html:20 #: authentication/templates/authentication/auth_fail_flash_message_standalone.html:37 #: templates/_modal.html:23 templates/flash_message_standalone.html:37 #: users/templates/users/user_password_verify.html:20 msgid "Confirm" -msgstr "" +msgstr "确认" #: authentication/templates/authentication/_mfa_confirm_modal.html:25 msgid "Code error" -msgstr "" +msgstr "代码错误" #: authentication/templates/authentication/_msg_different_city.html:3 #: authentication/templates/authentication/_msg_oauth_bind.html:3 @@ -2279,116 +2305,116 @@ msgstr "" #: users/templates/users/_msg_reset_mfa.html:4 #: users/templates/users/_msg_reset_ssh_key.html:4 msgid "Hello" -msgstr "" +msgstr "你好" #: authentication/templates/authentication/_msg_different_city.html:6 msgid "Your account has remote login behavior, please pay attention" -msgstr "" +msgstr "你的账号存在异地登录行为,请关注。" #: authentication/templates/authentication/_msg_different_city.html:10 msgid "Login time" -msgstr "" +msgstr "登录日期" #: authentication/templates/authentication/_msg_different_city.html:16 msgid "" "If you suspect that the login behavior is abnormal, please modify the " "account password in time." -msgstr "" +msgstr "若怀疑此次登录行为异常,请及时修改账号密码" #: authentication/templates/authentication/_msg_oauth_bind.html:6 msgid "Your account has just been bound to" -msgstr "" +msgstr "您的帐户刚刚绑定到" #: authentication/templates/authentication/_msg_oauth_bind.html:17 msgid "If the operation is not your own, unbind and change the password." -msgstr "" +msgstr "如果操作不是您本人,请解绑并且修改密码" #: authentication/templates/authentication/_msg_reset_password.html:6 msgid "" "Please click the link below to reset your password, if not your request, " "concern your account security" -msgstr "" +msgstr "请点击下面链接重置密码, 如果不是您申请的,请关注账号安全" #: authentication/templates/authentication/_msg_reset_password.html:10 msgid "Click here reset password" -msgstr "" +msgstr "点击这里重置密码" #: authentication/templates/authentication/_msg_reset_password.html:16 #: users/templates/users/_msg_user_created.html:22 msgid "This link is valid for 1 hour. After it expires" -msgstr "" +msgstr "这个链接有效期1小时, 超过时间您可以" #: authentication/templates/authentication/_msg_reset_password.html:17 #: users/templates/users/_msg_user_created.html:23 msgid "request new one" -msgstr "" +msgstr "重新申请" #: authentication/templates/authentication/_msg_reset_password_code.html:12 #: terminal/models/session/sharing.py:26 terminal/models/session/sharing.py:80 #: users/forms/profile.py:104 users/templates/users/forgot_password.html:65 msgid "Verify code" -msgstr "" +msgstr "验证码" #: authentication/templates/authentication/_msg_reset_password_code.html:15 msgid "" "Copy the verification code to the Reset Password page to reset the password." -msgstr "" +msgstr "将验证码复制到重置密码页面,重置密码。" #: authentication/templates/authentication/_msg_reset_password_code.html:18 msgid "The validity period of the verification code is one minute" -msgstr "" +msgstr "验证码有效期为 1 分钟" #: authentication/templates/authentication/_msg_rest_password_success.html:5 msgid "Your password has just been successfully updated" -msgstr "" +msgstr "你的密码刚刚成功更新" #: authentication/templates/authentication/_msg_rest_password_success.html:9 #: authentication/templates/authentication/_msg_rest_public_key_success.html:9 msgid "Browser" -msgstr "" +msgstr "浏览器" #: authentication/templates/authentication/_msg_rest_password_success.html:13 msgid "" "If the password update was not initiated by you, your account may have " "security issues" -msgstr "" +msgstr "如果这次密码更新不是由你发起的,那么你的账号可能存在安全问题" #: authentication/templates/authentication/_msg_rest_password_success.html:14 #: authentication/templates/authentication/_msg_rest_public_key_success.html:14 msgid "If you have any questions, you can contact the administrator" -msgstr "" +msgstr "如果有疑问或需求,请联系系统管理员" #: authentication/templates/authentication/_msg_rest_public_key_success.html:5 msgid "Your public key has just been successfully updated" -msgstr "" +msgstr "你的公钥刚刚成功更新" #: authentication/templates/authentication/_msg_rest_public_key_success.html:13 msgid "" "If the public key update was not initiated by you, your account may have " "security issues" -msgstr "" +msgstr "如果这次公钥更新不是由你发起的,那么你的账号可能存在安全问题" #: authentication/templates/authentication/auth_fail_flash_message_standalone.html:28 #: templates/flash_message_standalone.html:28 tickets/const.py:17 msgid "Cancel" -msgstr "" +msgstr "取消" #: authentication/templates/authentication/login.html:221 msgid "Welcome back, please enter username and password to login" -msgstr "" +msgstr "欢迎回来,请输入用户名和密码登录" #: authentication/templates/authentication/login.html:264 #: templates/_header_bar.html:89 msgid "Login" -msgstr "" +msgstr "登录" #: authentication/templates/authentication/login.html:271 msgid "More login options" -msgstr "" +msgstr "其他方式登录" #: authentication/templates/authentication/login_mfa.html:6 msgid "MFA Auth" -msgstr "" +msgstr "MFA 多因子认证" #: authentication/templates/authentication/login_mfa.html:19 #: users/templates/users/user_otp_check_password.html:12 @@ -2396,234 +2422,236 @@ msgstr "" #: users/templates/users/user_otp_enable_install_app.html:29 #: users/templates/users/user_verify_mfa.html:30 msgid "Next" -msgstr "" +msgstr "下一步" #: authentication/templates/authentication/login_mfa.html:22 msgid "Can't provide security? Please contact the administrator!" -msgstr "" +msgstr "如果不能提供 MFA 验证码,请联系管理员!" #: authentication/templates/authentication/login_wait_confirm.html:41 msgid "Refresh" -msgstr "" +msgstr "刷新" #: authentication/templates/authentication/login_wait_confirm.html:46 msgid "Copy link" -msgstr "" +msgstr "复制链接" #: authentication/templates/authentication/login_wait_confirm.html:51 msgid "Return" -msgstr "" +msgstr "返回" #: authentication/templates/authentication/login_wait_confirm.html:116 msgid "Copy success" -msgstr "" +msgstr "复制成功" #: authentication/utils.py:28 common/utils/ip/geoip/utils.py:24 #: xpack/plugins/cloud/const.py:27 msgid "LAN" -msgstr "" +msgstr "局域网" #: authentication/views/dingtalk.py:42 msgid "DingTalk Error, Please contact your system administrator" -msgstr "" +msgstr "钉钉错误,请联系系统管理员" #: authentication/views/dingtalk.py:45 msgid "DingTalk Error" -msgstr "" +msgstr "钉钉错误" #: authentication/views/dingtalk.py:57 authentication/views/feishu.py:52 #: authentication/views/wecom.py:56 msgid "" "The system configuration is incorrect. Please contact your administrator" -msgstr "" +msgstr "企业配置错误,请联系系统管理员" #: authentication/views/dingtalk.py:81 msgid "DingTalk is already bound" -msgstr "" +msgstr "钉钉已经绑定" #: authentication/views/dingtalk.py:149 authentication/views/wecom.py:148 msgid "Invalid user_id" -msgstr "" +msgstr "无效的 user_id" #: authentication/views/dingtalk.py:165 msgid "DingTalk query user failed" -msgstr "" +msgstr "钉钉查询用户失败" #: authentication/views/dingtalk.py:174 msgid "The DingTalk is already bound to another user" -msgstr "" +msgstr "该钉钉已经绑定其他用户" #: authentication/views/dingtalk.py:181 msgid "Binding DingTalk successfully" -msgstr "" +msgstr "绑定 钉钉 成功" #: authentication/views/dingtalk.py:237 authentication/views/dingtalk.py:291 msgid "Failed to get user from DingTalk" -msgstr "" +msgstr "从钉钉获取用户失败" #: authentication/views/dingtalk.py:244 authentication/views/dingtalk.py:298 msgid "Please login with a password and then bind the DingTalk" -msgstr "" +msgstr "请使用密码登录,然后绑定钉钉" #: authentication/views/feishu.py:40 msgid "FeiShu Error" -msgstr "" +msgstr "飞书错误" #: authentication/views/feishu.py:88 msgid "FeiShu is already bound" -msgstr "" +msgstr "飞书已经绑定" #: authentication/views/feishu.py:130 msgid "FeiShu query user failed" -msgstr "" +msgstr "飞书查询用户失败" #: authentication/views/feishu.py:139 msgid "The FeiShu is already bound to another user" -msgstr "" +msgstr "该飞书已经绑定其他用户" #: authentication/views/feishu.py:146 msgid "Binding FeiShu successfully" -msgstr "" +msgstr "绑定 飞书 成功" #: authentication/views/feishu.py:198 msgid "Failed to get user from FeiShu" -msgstr "" +msgstr "从飞书获取用户失败" #: authentication/views/feishu.py:205 msgid "Please login with a password and then bind the FeiShu" -msgstr "" +msgstr "请使用密码登录,然后绑定飞书" #: authentication/views/login.py:181 msgid "Redirecting" -msgstr "" +msgstr "跳转中" #: authentication/views/login.py:182 msgid "Redirecting to {} authentication" -msgstr "" +msgstr "正在跳转到 {} 认证" #: authentication/views/login.py:205 msgid "Please enable cookies and try again." -msgstr "" +msgstr "设置你的浏览器支持cookie" #: authentication/views/login.py:307 msgid "" "Wait for {} confirm, You also can copy link to her/him
\n" " Don't close this page" msgstr "" +"等待 {} 确认, 你也可以复制链接发给他/她
\n" +" 不要关闭本页面" #: authentication/views/login.py:312 msgid "No ticket found" -msgstr "" +msgstr "没有发现工单" #: authentication/views/login.py:348 msgid "Logout success" -msgstr "" +msgstr "退出登录成功" #: authentication/views/login.py:349 msgid "Logout success, return login page" -msgstr "" +msgstr "退出登录成功,返回到登录页面" #: authentication/views/wecom.py:41 msgid "WeCom Error, Please contact your system administrator" -msgstr "" +msgstr "企业微信错误,请联系系统管理员" #: authentication/views/wecom.py:44 msgid "WeCom Error" -msgstr "" +msgstr "企业微信错误" #: authentication/views/wecom.py:163 msgid "WeCom query user failed" -msgstr "" +msgstr "企业微信查询用户失败" #: authentication/views/wecom.py:172 msgid "The WeCom is already bound to another user" -msgstr "" +msgstr "该企业微信已经绑定其他用户" #: authentication/views/wecom.py:179 msgid "Binding WeCom successfully" -msgstr "" +msgstr "绑定 企业微信 成功" #: authentication/views/wecom.py:231 authentication/views/wecom.py:285 msgid "Failed to get user from WeCom" -msgstr "" +msgstr "从企业微信获取用户失败" #: authentication/views/wecom.py:238 authentication/views/wecom.py:292 msgid "Please login with a password and then bind the WeCom" -msgstr "" +msgstr "请使用密码登录,然后绑定企业微信" #: common/const/__init__.py:6 #, python-format msgid "%(name)s was created successfully" -msgstr "" +msgstr "%(name)s 创建成功" #: common/const/__init__.py:7 #, python-format msgid "%(name)s was updated successfully" -msgstr "" +msgstr "%(name)s 更新成功" #: common/const/choices.py:10 msgid "Manual trigger" -msgstr "" +msgstr "手动触发" #: common/const/choices.py:11 msgid "Timing trigger" -msgstr "" +msgstr "定时触发" #: common/const/choices.py:15 xpack/plugins/change_auth_plan/models/base.py:183 msgid "Ready" -msgstr "" +msgstr "准备" #: common/const/choices.py:16 tickets/const.py:29 tickets/const.py:39 msgid "Pending" -msgstr "" +msgstr "待定的" #: common/const/choices.py:17 msgid "Running" -msgstr "" +msgstr "运行中" #: common/const/choices.py:21 msgid "Canceled" -msgstr "" +msgstr "取消" #: common/db/encoder.py:11 msgid "ugettext_lazy" -msgstr "" +msgstr "ugettext_lazy" #: common/db/fields.py:94 msgid "Marshal dict data to char field" -msgstr "" +msgstr "编码 dict 为 char" #: common/db/fields.py:98 msgid "Marshal dict data to text field" -msgstr "" +msgstr "编码 dict 为 text" #: common/db/fields.py:110 msgid "Marshal list data to char field" -msgstr "" +msgstr "编码 list 为 char" #: common/db/fields.py:114 msgid "Marshal list data to text field" -msgstr "" +msgstr "编码 list 为 text" #: common/db/fields.py:118 msgid "Marshal data to char field" -msgstr "" +msgstr "编码数据为 char" #: common/db/fields.py:122 msgid "Marshal data to text field" -msgstr "" +msgstr "编码数据为 text" #: common/db/fields.py:164 msgid "Encrypt field using Secret Key" -msgstr "" +msgstr "加密的字段" #: common/db/models.py:76 msgid "Updated by" -msgstr "" +msgstr "更新人" #: common/drf/exc_handlers.py:25 msgid "Object" -msgstr "" +msgstr "对象" #: common/drf/fields.py:77 tickets/serializers/ticket/common.py:58 #: xpack/plugins/change_auth_plan/serializers/asset.py:64 @@ -2632,12 +2660,12 @@ msgstr "" #: xpack/plugins/change_auth_plan/serializers/asset.py:101 #: xpack/plugins/cloud/serializers/account_attrs.py:56 msgid "This field is required." -msgstr "" +msgstr "该字段是必填项。" #: common/drf/fields.py:78 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." -msgstr "" +msgstr "%s对象不存在" #: common/drf/fields.py:79 #, python-brace-format @@ -2650,15 +2678,15 @@ msgstr "" #: common/drf/fields.py:156 msgid "Invalid choice: {}" -msgstr "" +msgstr "无效选项: {}" #: common/drf/parsers/base.py:17 msgid "The file content overflowed (The maximum length `{}` bytes)" -msgstr "" +msgstr "文件内容太大 (最大长度 `{}` 字节)" #: common/drf/parsers/base.py:159 msgid "Parse file error: {}" -msgstr "" +msgstr "解析文件错误: {}" #: common/drf/serializers/common.py:86 msgid "Children" @@ -2666,173 +2694,173 @@ msgstr "" #: common/drf/serializers/common.py:94 msgid "File" -msgstr "" +msgstr "文件" #: common/exceptions.py:15 #, python-format msgid "%s object does not exist." -msgstr "" +msgstr "%s对象不存在" #: common/exceptions.py:25 msgid "Someone else is doing this. Please wait for complete" -msgstr "" +msgstr "其他人正在操作,请等待他人完成" #: common/exceptions.py:30 msgid "Your request timeout" -msgstr "" +msgstr "您的请求超时了" #: common/exceptions.py:35 msgid "M2M reverse not allowed" -msgstr "" +msgstr "多对多反向是不被允许的" #: common/exceptions.py:41 msgid "Is referenced by other objects and cannot be deleted" -msgstr "" +msgstr "被其他对象关联,不能删除" #: common/exceptions.py:48 msgid "This action require confirm current user" -msgstr "" +msgstr "此操作需要确认当前用户" #: common/exceptions.py:56 msgid "Unexpect error occur" -msgstr "" +msgstr "发生意外错误" #: common/mixins/api/action.py:52 msgid "Request file format may be wrong" -msgstr "" +msgstr "上传的文件格式错误 或 其它类型资源的文件" #: common/mixins/models.py:33 msgid "is discard" -msgstr "" +msgstr "忽略的" #: common/mixins/models.py:34 msgid "discard time" -msgstr "" +msgstr "忽略时间" #: common/mixins/views.py:58 msgid "Export all" -msgstr "" +msgstr "导出所有" #: common/mixins/views.py:60 msgid "Export only selected items" -msgstr "" +msgstr "仅导出选择项" #: common/mixins/views.py:65 #, python-format msgid "Export filtered: %s" -msgstr "" +msgstr "导出搜素: %s" #: common/plugins/es.py:28 msgid "Invalid elasticsearch config" -msgstr "" +msgstr "无效的 Elasticsearch 配置" #: common/plugins/es.py:33 msgid "Not Support Elasticsearch8" -msgstr "" +msgstr "不支持 Elasticsearch8" #: common/sdk/im/exceptions.py:23 msgid "Network error, please contact system administrator" -msgstr "" +msgstr "网络错误,请联系系统管理员" #: common/sdk/im/wecom/__init__.py:15 msgid "WeCom error, please contact system administrator" -msgstr "" +msgstr "企业微信错误,请联系系统管理员" #: common/sdk/sms/alibaba.py:56 msgid "Signature does not match" -msgstr "" +msgstr "签名不匹配" #: common/sdk/sms/cmpp2.py:46 msgid "sp_id is 6 bits" -msgstr "" +msgstr "SP_id 为6位" #: common/sdk/sms/cmpp2.py:216 msgid "Failed to connect to the CMPP gateway server, err: {}" -msgstr "" +msgstr "连接网关服务器错误,错误:{}" #: common/sdk/sms/endpoint.py:16 msgid "Alibaba cloud" -msgstr "" +msgstr "阿里云" #: common/sdk/sms/endpoint.py:17 msgid "Tencent cloud" -msgstr "" +msgstr "腾讯云" #: common/sdk/sms/endpoint.py:18 xpack/plugins/cloud/const.py:13 msgid "Huawei Cloud" -msgstr "" +msgstr "华为云" #: common/sdk/sms/endpoint.py:19 msgid "CMPP v2.0" -msgstr "" +msgstr "CMPP v2.0" #: common/sdk/sms/endpoint.py:30 msgid "SMS provider not support: {}" -msgstr "" +msgstr "短信服务商不支持:{}" #: common/sdk/sms/endpoint.py:51 msgid "SMS verification code signature or template invalid" -msgstr "" +msgstr "短信验证码签名或模版无效" #: common/sdk/sms/exceptions.py:8 msgid "The verification code has expired. Please resend it" -msgstr "" +msgstr "验证码已过期,请重新发送" #: common/sdk/sms/exceptions.py:13 msgid "The verification code is incorrect" -msgstr "" +msgstr "验证码错误" #: common/sdk/sms/exceptions.py:18 msgid "Please wait {} seconds before sending" -msgstr "" +msgstr "请在 {} 秒后发送" #: common/tasks.py:13 msgid "Send email" -msgstr "" +msgstr "发件邮件" #: common/tasks.py:40 msgid "Send email attachment" -msgstr "" +msgstr "发送邮件附件" #: common/utils/ip/geoip/utils.py:26 msgid "Invalid ip" -msgstr "" +msgstr "无效IP" #: common/utils/ip/utils.py:78 msgid "Invalid address" -msgstr "" +msgstr "无效地址" #: common/validators.py:14 msgid "Special char not allowed" -msgstr "" +msgstr "不能包含特殊字符" #: common/validators.py:32 msgid "This field must be unique." -msgstr "" +msgstr "字段必须唯一" #: common/validators.py:40 msgid "Should not contains special characters" -msgstr "" +msgstr "不能包含特殊字符" #: common/validators.py:46 msgid "The mobile phone number format is incorrect" -msgstr "" +msgstr "手机号格式不正确" #: jumpserver/conf.py:413 msgid "Create account successfully" -msgstr "" +msgstr "创建账号成功" #: jumpserver/conf.py:415 msgid "Your account has been created successfully" -msgstr "" +msgstr "你的账号已创建成功" #: jumpserver/context_processor.py:12 msgid "JumpServer Open Source Bastion Host" -msgstr "" +msgstr "JumpServer 开源堡垒机" #: jumpserver/views/celery_flower.py:23 msgid "

Flower service unavailable, check it

" -msgstr "" +msgstr "Flower 服务不可用,请检查" #: jumpserver/views/other.py:26 msgid "" @@ -2840,10 +2868,12 @@ msgid "" "configure nginx for url distribution, If you see this page, " "prove that you are not accessing the nginx listening port. Good luck." msgstr "" +"
Luna是单独部署的一个程序,你需要部署luna,koko,
如果你看到了" +"这个页面,证明你访问的不是nginx监听的端口,祝你好运
" #: jumpserver/views/other.py:70 msgid "Websocket server run on port: {}, you should proxy it on nginx" -msgstr "" +msgstr "Websocket 服务运行在端口: {}, 请检查nginx是否代理是否设置" #: jumpserver/views/other.py:84 msgid "" @@ -2851,30 +2881,33 @@ msgid "" "configure nginx for url distribution, If you see this page, " "prove that you are not accessing the nginx listening port. Good luck." msgstr "" +"
Koko是单独部署的一个程序,你需要部署Koko, 并确保nginx配置转发,
如果你看到了这个页面,证明你访问的不是nginx监听的端口,祝你好运" #: notifications/apps.py:7 msgid "Notifications" -msgstr "" +msgstr "通知" #: notifications/backends/__init__.py:13 msgid "Site message" -msgstr "" +msgstr "站内信" #: notifications/models/notification.py:14 msgid "receive backend" -msgstr "" +msgstr "消息后端" #: notifications/models/notification.py:17 msgid "User message" -msgstr "" +msgstr "用户消息" #: notifications/models/notification.py:20 msgid "{} subscription" -msgstr "" +msgstr "{} 订阅" #: notifications/models/notification.py:32 msgid "System message" -msgstr "" +msgstr "系统信息" #: notifications/notifications.py:46 msgid "Publish the station message" @@ -2882,155 +2915,155 @@ msgstr "" #: ops/ansible/inventory.py:75 msgid "No account available" -msgstr "" +msgstr "无可用账号" #: ops/ansible/inventory.py:178 msgid "Ansible disabled" -msgstr "" +msgstr "Ansible 已禁用" #: ops/ansible/inventory.py:194 msgid "Skip hosts below:" -msgstr "" +msgstr "跳过以下主机: " #: ops/api/celery.py:63 ops/api/celery.py:78 msgid "Waiting task start" -msgstr "" +msgstr "等待任务开始" #: ops/apps.py:9 ops/notifications.py:16 msgid "App ops" -msgstr "" +msgstr "作业中心" #: ops/const.py:6 msgid "Push" -msgstr "" +msgstr "推送" #: ops/const.py:7 msgid "Verify" -msgstr "" +msgstr "校验" #: ops/const.py:8 msgid "Collect" -msgstr "" +msgstr "收集" #: ops/const.py:9 msgid "Change password" -msgstr "" +msgstr "改密" #: ops/const.py:19 xpack/plugins/change_auth_plan/models/base.py:27 msgid "Custom password" -msgstr "" +msgstr "自定义密码" #: ops/exception.py:6 msgid "no valid program entry found." -msgstr "" +msgstr "没有可用程序入口" #: ops/mixin.py:25 ops/mixin.py:88 settings/serializers/auth/ldap.py:73 msgid "Cycle perform" -msgstr "" +msgstr "周期执行" #: ops/mixin.py:29 ops/mixin.py:86 ops/mixin.py:105 #: settings/serializers/auth/ldap.py:70 msgid "Regularly perform" -msgstr "" +msgstr "定期执行" #: ops/mixin.py:108 msgid "Interval" -msgstr "" +msgstr "间隔" #: ops/mixin.py:118 msgid "* Please enter a valid crontab expression" -msgstr "" +msgstr "* 请输入有效的 crontab 表达式" #: ops/mixin.py:125 msgid "Range {} to {}" -msgstr "" +msgstr "输入在 {} - {} 范围之间" #: ops/mixin.py:136 msgid "Require periodic or regularly perform setting" -msgstr "" +msgstr "需要周期或定期设置" #: ops/models/adhoc.py:18 ops/models/job.py:31 msgid "Powershell" -msgstr "" +msgstr "PowerShell" #: ops/models/adhoc.py:22 msgid "Pattern" -msgstr "" +msgstr "模式" #: ops/models/adhoc.py:24 ops/models/job.py:38 msgid "Module" -msgstr "" +msgstr "模块" #: ops/models/adhoc.py:25 ops/models/celery.py:54 ops/models/job.py:36 #: terminal/models/component/task.py:17 msgid "Args" -msgstr "" +msgstr "参数" #: ops/models/adhoc.py:26 ops/models/base.py:16 ops/models/base.py:53 #: ops/models/job.py:43 ops/models/job.py:107 ops/models/playbook.py:16 #: terminal/models/session/sharing.py:24 msgid "Creator" -msgstr "" +msgstr "创建者" #: ops/models/base.py:19 msgid "Account policy" -msgstr "" +msgstr "账号策略" #: ops/models/base.py:20 msgid "Last execution" -msgstr "" +msgstr "最后执行" #: ops/models/base.py:22 msgid "Date last run" -msgstr "" +msgstr "最后运行日期" #: ops/models/base.py:51 ops/models/job.py:105 #: xpack/plugins/cloud/models.py:172 msgid "Result" -msgstr "" +msgstr "结果" #: ops/models/base.py:52 ops/models/job.py:106 msgid "Summary" -msgstr "" +msgstr "汇总" #: ops/models/celery.py:55 terminal/models/component/task.py:18 msgid "Kwargs" -msgstr "" +msgstr "其它参数" #: ops/models/celery.py:56 tickets/models/comment.py:13 #: tickets/models/ticket/general.py:43 tickets/models/ticket/general.py:278 #: tickets/serializers/ticket/ticket.py:21 msgid "State" -msgstr "" +msgstr "状态" #: ops/models/celery.py:57 terminal/models/session/sharing.py:111 #: tickets/const.py:25 xpack/plugins/change_auth_plan/models/base.py:188 msgid "Finished" -msgstr "" +msgstr "结束" #: ops/models/celery.py:58 msgid "Date published" -msgstr "" +msgstr "发布日期" #: ops/models/job.py:21 msgid "Adhoc" -msgstr "" +msgstr "命令" #: ops/models/job.py:22 ops/models/job.py:41 msgid "Playbook" -msgstr "" +msgstr "Playbook" #: ops/models/job.py:25 msgid "Privileged Only" -msgstr "" +msgstr "仅限特权账号" #: ops/models/job.py:26 msgid "Privileged First" -msgstr "" +msgstr "特权账号优先" #: ops/models/job.py:27 msgid "Skip" -msgstr "" +msgstr "跳过" #: ops/models/job.py:39 msgid "Chdir" @@ -3062,35 +3095,35 @@ msgstr "" #: ops/notifications.py:17 msgid "Server performance" -msgstr "" +msgstr "监控告警" #: ops/notifications.py:23 msgid "Terminal health check warning" -msgstr "" +msgstr "终端健康状况检查警告" #: ops/notifications.py:68 #, python-brace-format msgid "The terminal is offline: {name}" -msgstr "" +msgstr "终端已离线: {name}" #: ops/notifications.py:73 #, python-brace-format msgid "Disk used more than {max_threshold}%: => {value}" -msgstr "" +msgstr "硬盘使用率超过 {max_threshold}%: => {value}" #: ops/notifications.py:78 #, python-brace-format msgid "Memory used more than {max_threshold}%: => {value}" -msgstr "" +msgstr "内存使用率超过 {max_threshold}%: => {value}" #: ops/notifications.py:83 #, python-brace-format msgid "CPU load more than {max_threshold}: => {value}" -msgstr "" +msgstr "CPU 使用率超过 {max_threshold}: => {value}" #: ops/serializers/job.py:10 msgid "Run after save" -msgstr "" +msgstr "保存后执行" #: ops/serializers/job.py:11 msgid "Job type" @@ -3100,192 +3133,192 @@ msgstr "任务类型" #: terminal/models/component/task.py:26 #: xpack/plugins/gathered_user/models.py:68 msgid "Task" -msgstr "" +msgstr "任务" #: ops/tasks.py:28 msgid "Run ansible task" -msgstr "" +msgstr "运行 Ansible 任务" #: ops/tasks.py:35 msgid "Run ansible task execution" -msgstr "" +msgstr "开始执行 Ansible 任务" #: ops/tasks.py:48 msgid "Periodic clear celery tasks" -msgstr "" +msgstr "周期清理不可用任务" #: ops/tasks.py:50 msgid "Clean celery log period" -msgstr "" +msgstr "定期清除任务日志" #: ops/tasks.py:67 msgid "Clear celery periodic tasks" -msgstr "" +msgstr "清理周期任务" #: ops/tasks.py:90 msgid "Create or update periodic tasks" -msgstr "" +msgstr "创建或更新周期任务" #: ops/tasks.py:98 msgid "Periodic check service performance" -msgstr "" +msgstr "周期检测服务性能" #: ops/templates/ops/celery_task_log.html:4 msgid "Task log" -msgstr "" +msgstr "任务列表" #: ops/utils.py:64 msgid "Update task content: {}" -msgstr "" +msgstr "更新任务内容: {}" #: orgs/api.py:67 msgid "The current organization ({}) cannot be deleted" -msgstr "" +msgstr "当前组织 ({}) 不能被删除" #: orgs/api.py:72 msgid "" "LDAP synchronization is set to the current organization. Please switch to " "another organization before deleting" -msgstr "" +msgstr "LDAP 同步设置组织为当前组织,请切换其他组织后再进行删除操作" #: orgs/api.py:81 msgid "The organization have resource ({}) cannot be deleted" -msgstr "" +msgstr "组织存在资源 ({}) 不能被删除" #: orgs/apps.py:7 rbac/tree.py:113 msgid "App organizations" -msgstr "" +msgstr "组织管理" #: orgs/mixins/models.py:57 orgs/mixins/serializers.py:25 orgs/models.py:88 #: rbac/const.py:7 rbac/models/rolebinding.py:48 #: rbac/serializers/rolebinding.py:40 settings/serializers/auth/ldap.py:63 #: tickets/models/ticket/general.py:301 tickets/serializers/ticket/ticket.py:62 msgid "Organization" -msgstr "" +msgstr "组织" #: orgs/mixins/serializers.py:26 rbac/serializers/rolebinding.py:23 msgid "Org name" -msgstr "" +msgstr "组织名称" #: orgs/models.py:72 msgid "Builtin" -msgstr "" +msgstr "内置的" #: orgs/models.py:80 msgid "GLOBAL" -msgstr "" +msgstr "全局组织" #: orgs/models.py:82 msgid "DEFAULT" -msgstr "" +msgstr "默认组织" #: orgs/models.py:84 msgid "SYSTEM" -msgstr "" +msgstr "系统组织" #: orgs/models.py:90 msgid "Can view root org" -msgstr "" +msgstr "可以查看全局组织" #: orgs/models.py:91 msgid "Can view all joined org" -msgstr "" +msgstr "可以查看所有加入的组织" #: orgs/tasks.py:9 msgid "Refresh organization cache" -msgstr "" +msgstr "刷新组织缓存" #: perms/apps.py:9 msgid "App permissions" -msgstr "" +msgstr "授权管理" #: perms/const.py:12 msgid "Connect" -msgstr "" +msgstr "连接" #: perms/const.py:15 msgid "Copy" -msgstr "" +msgstr "复制" #: perms/const.py:16 msgid "Paste" -msgstr "" +msgstr "粘贴" #: perms/const.py:26 msgid "Transfer" -msgstr "" +msgstr "文件传输" #: perms/const.py:27 msgid "Clipboard" -msgstr "" +msgstr "剪贴板" #: perms/models/asset_permission.py:66 perms/models/perm_token.py:18 #: perms/serializers/permission.py:29 perms/serializers/permission.py:59 #: tickets/models/ticket/apply_application.py:28 #: tickets/models/ticket/apply_asset.py:18 msgid "Actions" -msgstr "" +msgstr "动作" #: perms/models/asset_permission.py:73 msgid "From ticket" -msgstr "" +msgstr "来自工单" #: perms/models/asset_permission.py:81 msgid "Asset permission" -msgstr "" +msgstr "资产授权" #: perms/models/perm_node.py:55 msgid "Ungrouped" -msgstr "" +msgstr "未分组" #: perms/models/perm_node.py:57 msgid "Favorite" -msgstr "" +msgstr "收藏夹" #: perms/models/perm_node.py:104 msgid "Permed asset" -msgstr "" +msgstr "授权的资产" #: perms/models/perm_node.py:106 msgid "Can view my assets" -msgstr "" +msgstr "可以查看我的资产" #: perms/models/perm_node.py:107 msgid "Can view user assets" -msgstr "" +msgstr "可以查看用户授权的资产" #: perms/models/perm_node.py:108 msgid "Can view usergroup assets" -msgstr "" +msgstr "可以查看用户组授权的资产" #: perms/models/perm_node.py:119 msgid "Permed account" -msgstr "" +msgstr "授权账号" #: perms/notifications.py:12 perms/notifications.py:44 msgid "today" -msgstr "" +msgstr "今天" #: perms/notifications.py:15 msgid "You permed assets is about to expire" -msgstr "" +msgstr "你授权的资产即将到期" #: perms/notifications.py:20 msgid "permed assets" -msgstr "" +msgstr "授权的资产" #: perms/notifications.py:59 msgid "Asset permissions is about to expire" -msgstr "" +msgstr "资产授权规则将要过期" #: perms/notifications.py:64 msgid "asset permissions of organization {}" -msgstr "" +msgstr "组织 ({}) 的资产授权" #: perms/serializers/permission.py:31 perms/serializers/permission.py:60 #: users/serializers/user.py:100 users/serializers/user.py:205 msgid "Is expired" -msgstr "" +msgstr "已过期" #: perms/templates/perms/_msg_item_permissions_expire.html:7 #: perms/templates/perms/_msg_permed_items_expire.html:7 @@ -3295,667 +3328,674 @@ msgid "" " The following %(item_type)s will expire in %(count)s days\n" " " msgstr "" +"\n" +" 以下 %(item_type)s 即将在 %(count)s 天后过期\n" +" " #: perms/templates/perms/_msg_permed_items_expire.html:21 msgid "If you have any question, please contact the administrator" -msgstr "" +msgstr "如果有疑问或需求,请联系系统管理员" #: perms/utils/user_permission.py:627 rbac/tree.py:57 msgid "My assets" -msgstr "" +msgstr "我的资产" #: rbac/api/role.py:34 msgid "Internal role, can't be destroy" -msgstr "" +msgstr "内部角色,不能删除" #: rbac/api/role.py:38 msgid "The role has been bound to users, can't be destroy" -msgstr "" +msgstr "角色已绑定用户,不能删除" #: rbac/api/role.py:60 msgid "Internal role, can't be update" -msgstr "" +msgstr "内部角色,不能更新" #: rbac/api/rolebinding.py:52 msgid "{} at least one system role" -msgstr "" +msgstr "{} 至少有一个系统角色" #: rbac/apps.py:7 msgid "RBAC" -msgstr "" +msgstr "RBAC" #: rbac/builtin.py:111 msgid "SystemAdmin" -msgstr "" +msgstr "系统管理员" #: rbac/builtin.py:114 msgid "SystemAuditor" -msgstr "" +msgstr "系统审计员" #: rbac/builtin.py:117 msgid "SystemComponent" -msgstr "" +msgstr "系统组件" #: rbac/builtin.py:123 msgid "OrgAdmin" -msgstr "" +msgstr "组织管理员" #: rbac/builtin.py:126 msgid "OrgAuditor" -msgstr "" +msgstr "组织审计员" #: rbac/builtin.py:129 msgid "OrgUser" -msgstr "" +msgstr "组织用户" #: rbac/models/menu.py:13 msgid "Menu permission" -msgstr "" +msgstr "菜单授权" #: rbac/models/menu.py:15 msgid "Can view console view" -msgstr "" +msgstr "可以显示控制台" #: rbac/models/menu.py:16 msgid "Can view audit view" -msgstr "" +msgstr "可以显示审计台" #: rbac/models/menu.py:17 msgid "Can view workbench view" -msgstr "" +msgstr "可以显示工作台" #: rbac/models/menu.py:18 msgid "Can view web terminal" -msgstr "" +msgstr "Web终端" #: rbac/models/menu.py:19 msgid "Can view file manager" -msgstr "" +msgstr "文件管理" #: rbac/models/permission.py:26 rbac/models/role.py:34 msgid "Permissions" -msgstr "" +msgstr "授权" #: rbac/models/role.py:31 rbac/models/rolebinding.py:38 #: settings/serializers/auth/oauth2.py:37 msgid "Scope" -msgstr "" +msgstr "范围" #: rbac/models/role.py:36 msgid "Built-in" -msgstr "" +msgstr "内置" #: rbac/models/role.py:46 rbac/models/rolebinding.py:44 #: users/models/user.py:685 msgid "Role" -msgstr "" +msgstr "角色" #: rbac/models/role.py:144 msgid "System role" -msgstr "" +msgstr "系统角色" #: rbac/models/role.py:152 msgid "Organization role" -msgstr "" +msgstr "组织角色" #: rbac/models/rolebinding.py:53 msgid "Role binding" -msgstr "" +msgstr "角色绑定" #: rbac/models/rolebinding.py:137 msgid "All organizations" -msgstr "" +msgstr "所有组织" #: rbac/models/rolebinding.py:166 msgid "" "User last role in org, can not be delete, you can remove user from org " "instead" -msgstr "" +msgstr "用户最后一个角色,不能删除,你可以将用户从组织移除" #: rbac/models/rolebinding.py:173 msgid "Organization role binding" -msgstr "" +msgstr "组织角色绑定" #: rbac/models/rolebinding.py:188 msgid "System role binding" -msgstr "" +msgstr "系统角色绑定" #: rbac/serializers/permission.py:26 users/serializers/profile.py:132 msgid "Perms" -msgstr "" +msgstr "权限" #: rbac/serializers/role.py:11 msgid "Scope display" -msgstr "" +msgstr "范围名称" #: rbac/serializers/role.py:26 users/serializers/group.py:34 msgid "Users amount" -msgstr "" +msgstr "用户数量" #: rbac/serializers/role.py:27 terminal/models/applet/applet.py:21 msgid "Display name" -msgstr "" +msgstr "显示名称" #: rbac/serializers/rolebinding.py:22 msgid "Role display" -msgstr "" +msgstr "角色显示" #: rbac/serializers/rolebinding.py:56 msgid "Has bound this role" -msgstr "" +msgstr "已经绑定" #: rbac/tree.py:18 rbac/tree.py:19 msgid "All permissions" -msgstr "" +msgstr "所有权限" #: rbac/tree.py:25 msgid "Console view" -msgstr "" +msgstr "控制台" #: rbac/tree.py:26 msgid "Workbench view" -msgstr "" +msgstr "工作台" #: rbac/tree.py:27 msgid "Audit view" -msgstr "" +msgstr "审计台" #: rbac/tree.py:28 settings/models.py:156 msgid "System setting" -msgstr "" +msgstr "系统设置" #: rbac/tree.py:29 msgid "Other" -msgstr "" +msgstr "其它" #: rbac/tree.py:41 msgid "Session audits" -msgstr "" +msgstr "会话审计" #: rbac/tree.py:51 msgid "Cloud import" -msgstr "" +msgstr "云同步" #: rbac/tree.py:52 msgid "Backup account" -msgstr "" +msgstr "备份账号" #: rbac/tree.py:53 msgid "Gather account" -msgstr "" +msgstr "收集账号" #: rbac/tree.py:54 msgid "App change auth" -msgstr "" +msgstr "应用改密" #: rbac/tree.py:55 msgid "Asset change auth" -msgstr "" +msgstr "资产改密" #: rbac/tree.py:56 msgid "Terminal setting" -msgstr "" +msgstr "终端设置" #: rbac/tree.py:58 msgid "My apps" -msgstr "" +msgstr "我的应用" #: rbac/tree.py:114 msgid "Ticket comment" -msgstr "" +msgstr "工单评论" #: rbac/tree.py:115 tickets/models/ticket/general.py:306 msgid "Ticket" -msgstr "" +msgstr "工单管理" #: rbac/tree.py:116 msgid "Common setting" -msgstr "" +msgstr "一般设置" #: rbac/tree.py:117 msgid "View permission tree" -msgstr "" +msgstr "查看授权树" #: rbac/tree.py:118 msgid "Execute batch command" -msgstr "" +msgstr "执行批量命令" #: settings/api/dingtalk.py:31 settings/api/feishu.py:36 #: settings/api/sms.py:148 settings/api/wecom.py:37 msgid "Test success" -msgstr "" +msgstr "测试成功" #: settings/api/email.py:20 msgid "Test mail sent to {}, please check" -msgstr "" +msgstr "邮件已经发送{}, 请检查" #: settings/api/ldap.py:166 msgid "Synchronization start, please wait." -msgstr "" +msgstr "同步开始,请稍等" #: settings/api/ldap.py:170 msgid "Synchronization is running, please wait." -msgstr "" +msgstr "同步正在运行,请稍等" #: settings/api/ldap.py:175 msgid "Synchronization error: {}" -msgstr "" +msgstr "同步错误: {}" #: settings/api/ldap.py:213 msgid "Get ldap users is None" -msgstr "" +msgstr "获取 LDAP 用户为 None" #: settings/api/ldap.py:222 msgid "Imported {} users successfully (Organization: {})" -msgstr "" +msgstr "成功导入 {} 个用户 ( 组织: {} )" #: settings/api/sms.py:130 msgid "Invalid SMS platform" -msgstr "" +msgstr "无效的短信平台" #: settings/api/sms.py:136 msgid "test_phone is required" -msgstr "" +msgstr "测试手机号 该字段是必填项。" #: settings/apps.py:7 msgid "Settings" -msgstr "" +msgstr "系统设置" #: settings/models.py:36 msgid "Encrypted" -msgstr "" +msgstr "加密的" #: settings/models.py:158 msgid "Can change email setting" -msgstr "" +msgstr "邮件设置" #: settings/models.py:159 msgid "Can change auth setting" -msgstr "" +msgstr "认证设置" #: settings/models.py:160 msgid "Can change system msg sub setting" -msgstr "" +msgstr "消息订阅设置" #: settings/models.py:161 msgid "Can change sms setting" -msgstr "" +msgstr "短信设置" #: settings/models.py:162 msgid "Can change security setting" -msgstr "" +msgstr "安全设置" #: settings/models.py:163 msgid "Can change clean setting" -msgstr "" +msgstr "定期清理" #: settings/models.py:164 msgid "Can change interface setting" -msgstr "" +msgstr "界面设置" #: settings/models.py:165 msgid "Can change license setting" -msgstr "" +msgstr "许可证设置" #: settings/models.py:166 msgid "Can change terminal setting" -msgstr "" +msgstr "终端设置" #: settings/models.py:167 msgid "Can change other setting" -msgstr "" +msgstr "其它设置" #: settings/serializers/auth/base.py:12 msgid "CAS Auth" -msgstr "" +msgstr "CAS 认证" #: settings/serializers/auth/base.py:13 msgid "OPENID Auth" -msgstr "" +msgstr "OIDC 认证" #: settings/serializers/auth/base.py:14 msgid "RADIUS Auth" -msgstr "" +msgstr "RADIUS 认证" #: settings/serializers/auth/base.py:15 msgid "DingTalk Auth" -msgstr "" +msgstr "钉钉 认证" #: settings/serializers/auth/base.py:16 msgid "FeiShu Auth" -msgstr "" +msgstr "飞书 认证" #: settings/serializers/auth/base.py:17 msgid "WeCom Auth" -msgstr "" +msgstr "企业微信 认证" #: settings/serializers/auth/base.py:18 msgid "SSO Auth" -msgstr "" +msgstr "SSO Token 认证" #: settings/serializers/auth/base.py:19 msgid "SAML2 Auth" -msgstr "" +msgstr "SAML2 认证" #: settings/serializers/auth/base.py:22 settings/serializers/basic.py:38 msgid "Forgot password url" -msgstr "" +msgstr "忘记密码 URL" #: settings/serializers/auth/base.py:28 msgid "Enable login redirect msg" -msgstr "" +msgstr "启用登录跳转提示" #: settings/serializers/auth/cas.py:10 msgid "CAS" -msgstr "" +msgstr "CAS" #: settings/serializers/auth/cas.py:12 msgid "Enable CAS Auth" -msgstr "" +msgstr "启用 CAS 认证" #: settings/serializers/auth/cas.py:13 settings/serializers/auth/oidc.py:49 msgid "Server url" -msgstr "" +msgstr "服务端地址" #: settings/serializers/auth/cas.py:16 msgid "Proxy server url" -msgstr "" +msgstr "回调地址" #: settings/serializers/auth/cas.py:18 settings/serializers/auth/oauth2.py:55 #: settings/serializers/auth/saml2.py:34 msgid "Logout completely" -msgstr "" +msgstr "同步注销" #: settings/serializers/auth/cas.py:23 msgid "Username attr" -msgstr "" +msgstr "用户名属性" #: settings/serializers/auth/cas.py:26 msgid "Enable attributes map" -msgstr "" +msgstr "启用属性映射" #: settings/serializers/auth/cas.py:28 settings/serializers/auth/saml2.py:33 msgid "Rename attr" -msgstr "" +msgstr "映射属性" #: settings/serializers/auth/cas.py:29 msgid "Create user if not" -msgstr "" +msgstr "创建用户(如果不存在)" #: settings/serializers/auth/dingtalk.py:15 msgid "Enable DingTalk Auth" -msgstr "" +msgstr "启用钉钉认证" #: settings/serializers/auth/feishu.py:14 msgid "Enable FeiShu Auth" -msgstr "" +msgstr "启用飞书认证" #: settings/serializers/auth/ldap.py:39 msgid "LDAP" -msgstr "" +msgstr "LDAP" #: settings/serializers/auth/ldap.py:42 msgid "LDAP server" -msgstr "" +msgstr "LDAP 地址" #: settings/serializers/auth/ldap.py:43 msgid "eg: ldap://localhost:389" -msgstr "" +msgstr "如: ldap://localhost:389" #: settings/serializers/auth/ldap.py:45 msgid "Bind DN" -msgstr "" +msgstr "绑定 DN" #: settings/serializers/auth/ldap.py:50 msgid "User OU" -msgstr "" +msgstr "用户 OU" #: settings/serializers/auth/ldap.py:51 msgid "Use | split multi OUs" -msgstr "" +msgstr "多个 OU 使用 | 分割" #: settings/serializers/auth/ldap.py:54 msgid "User search filter" -msgstr "" +msgstr "用户过滤器" #: settings/serializers/auth/ldap.py:55 #, python-format msgid "Choice may be (cn|uid|sAMAccountName)=%(user)s)" -msgstr "" +msgstr "可能的选项是(cn或uid或sAMAccountName=%(user)s)" #: settings/serializers/auth/ldap.py:58 settings/serializers/auth/oauth2.py:57 #: settings/serializers/auth/oidc.py:37 msgid "User attr map" -msgstr "" +msgstr "用户属性映射" #: settings/serializers/auth/ldap.py:59 msgid "" "User attr map present how to map LDAP user attr to jumpserver, username,name," "email is jumpserver attr" msgstr "" +"用户属性映射代表怎样将LDAP中用户属性映射到jumpserver用户上,username, name," +"email 是jumpserver的用户需要属性" #: settings/serializers/auth/ldap.py:77 msgid "Connect timeout" -msgstr "" +msgstr "连接超时时间" #: settings/serializers/auth/ldap.py:79 msgid "Search paged size" -msgstr "" +msgstr "搜索分页数量" #: settings/serializers/auth/ldap.py:81 msgid "Enable LDAP auth" -msgstr "" +msgstr "启用 LDAP 认证" #: settings/serializers/auth/oauth2.py:19 msgid "OAuth2" -msgstr "" +msgstr "OAuth2" #: settings/serializers/auth/oauth2.py:22 msgid "Enable OAuth2 Auth" -msgstr "" +msgstr "启用 OAuth2 认证" #: settings/serializers/auth/oauth2.py:25 msgid "Logo" -msgstr "" +msgstr "图标" #: settings/serializers/auth/oauth2.py:28 msgid "Service provider" -msgstr "" +msgstr "服务提供商" #: settings/serializers/auth/oauth2.py:31 settings/serializers/auth/oidc.py:19 msgid "Client Id" -msgstr "" +msgstr "客户端 ID" #: settings/serializers/auth/oauth2.py:34 settings/serializers/auth/oidc.py:22 #: xpack/plugins/cloud/serializers/account_attrs.py:38 msgid "Client Secret" -msgstr "" +msgstr "客户端密钥" #: settings/serializers/auth/oauth2.py:40 settings/serializers/auth/oidc.py:63 msgid "Provider auth endpoint" -msgstr "" +msgstr "授权端点地址" #: settings/serializers/auth/oauth2.py:43 settings/serializers/auth/oidc.py:66 msgid "Provider token endpoint" -msgstr "" +msgstr "token 端点地址" #: settings/serializers/auth/oauth2.py:46 settings/serializers/auth/oidc.py:30 msgid "Client authentication method" -msgstr "" +msgstr "客户端认证方式" #: settings/serializers/auth/oauth2.py:50 settings/serializers/auth/oidc.py:72 msgid "Provider userinfo endpoint" -msgstr "" +msgstr "用户信息端点地址" #: settings/serializers/auth/oauth2.py:53 settings/serializers/auth/oidc.py:75 msgid "Provider end session endpoint" -msgstr "" +msgstr "注销会话端点地址" #: settings/serializers/auth/oauth2.py:60 settings/serializers/auth/oidc.py:93 #: settings/serializers/auth/saml2.py:35 msgid "Always update user" -msgstr "" +msgstr "总是更新用户信息" #: settings/serializers/auth/oidc.py:12 msgid "OIDC" -msgstr "" +msgstr "OIDC" #: settings/serializers/auth/oidc.py:16 msgid "Base site url" -msgstr "" +msgstr "JumpServer 地址" #: settings/serializers/auth/oidc.py:32 msgid "Share session" -msgstr "" +msgstr "共享会话" #: settings/serializers/auth/oidc.py:34 msgid "Ignore ssl verification" -msgstr "" +msgstr "忽略 SSL 证书验证" #: settings/serializers/auth/oidc.py:38 msgid "" "User attr map present how to map OpenID user attr to jumpserver, username," "name,email is jumpserver attr" msgstr "" +"用户属性映射代表怎样将OpenID中用户属性映射到jumpserver用户上,username, name," +"email 是jumpserver的用户需要属性" #: settings/serializers/auth/oidc.py:46 msgid "Use Keycloak" -msgstr "" +msgstr "使用 Keycloak" #: settings/serializers/auth/oidc.py:52 msgid "Realm name" -msgstr "" +msgstr "域" #: settings/serializers/auth/oidc.py:58 msgid "Enable OPENID Auth" -msgstr "" +msgstr "启用 OIDC 认证" #: settings/serializers/auth/oidc.py:60 msgid "Provider endpoint" -msgstr "" +msgstr "端点地址" #: settings/serializers/auth/oidc.py:69 msgid "Provider jwks endpoint" -msgstr "" +msgstr "jwks 端点地址" #: settings/serializers/auth/oidc.py:78 msgid "Provider sign alg" -msgstr "" +msgstr "签名算法" #: settings/serializers/auth/oidc.py:81 msgid "Provider sign key" -msgstr "" +msgstr "签名 Key" #: settings/serializers/auth/oidc.py:83 msgid "Scopes" -msgstr "" +msgstr "连接范围" #: settings/serializers/auth/oidc.py:85 msgid "Id token max age" -msgstr "" +msgstr "令牌有效时间" #: settings/serializers/auth/oidc.py:88 msgid "Id token include claims" -msgstr "" +msgstr "声明" #: settings/serializers/auth/oidc.py:90 msgid "Use state" -msgstr "" +msgstr "使用状态" #: settings/serializers/auth/oidc.py:91 msgid "Use nonce" -msgstr "" +msgstr "临时使用" #: settings/serializers/auth/radius.py:13 msgid "Radius" -msgstr "" +msgstr "Radius" #: settings/serializers/auth/radius.py:15 msgid "Enable Radius Auth" -msgstr "" +msgstr "启用 Radius 认证" #: settings/serializers/auth/radius.py:21 msgid "OTP in Radius" -msgstr "" +msgstr "使用 Radius OTP" #: settings/serializers/auth/saml2.py:11 msgid "SAML2" -msgstr "" +msgstr "SAML2" #: settings/serializers/auth/saml2.py:14 msgid "Enable SAML2 Auth" -msgstr "" +msgstr "启用 SAML2 认证" #: settings/serializers/auth/saml2.py:17 msgid "IDP metadata URL" -msgstr "" +msgstr "IDP metadata 地址" #: settings/serializers/auth/saml2.py:20 msgid "IDP metadata XML" -msgstr "" +msgstr "IDP metadata XML" #: settings/serializers/auth/saml2.py:23 msgid "SP advanced settings" -msgstr "" +msgstr "高级设置" #: settings/serializers/auth/saml2.py:27 msgid "SP private key" -msgstr "" +msgstr "SP 密钥" #: settings/serializers/auth/saml2.py:31 msgid "SP cert" -msgstr "" +msgstr "SP 证书" #: settings/serializers/auth/sms.py:15 msgid "Enable SMS" -msgstr "" +msgstr "启用 SMS" #: settings/serializers/auth/sms.py:17 msgid "SMS provider / Protocol" -msgstr "" +msgstr "短信服务商 / 协议" #: settings/serializers/auth/sms.py:22 settings/serializers/auth/sms.py:45 #: settings/serializers/auth/sms.py:53 settings/serializers/auth/sms.py:62 #: settings/serializers/auth/sms.py:73 settings/serializers/email.py:68 msgid "Signature" -msgstr "" +msgstr "签名" #: settings/serializers/auth/sms.py:23 settings/serializers/auth/sms.py:46 #: settings/serializers/auth/sms.py:54 settings/serializers/auth/sms.py:63 msgid "Template code" -msgstr "" +msgstr "模板" #: settings/serializers/auth/sms.py:31 msgid "Test phone" -msgstr "" +msgstr "测试手机号" #: settings/serializers/auth/sms.py:60 msgid "App Access Address" -msgstr "" +msgstr "应用地址" #: settings/serializers/auth/sms.py:61 msgid "Signature channel number" -msgstr "" +msgstr "签名通道号" #: settings/serializers/auth/sms.py:69 msgid "Enterprise code(SP id)" -msgstr "" +msgstr "企业代码(SP id)" #: settings/serializers/auth/sms.py:70 msgid "Shared secret(Shared secret)" -msgstr "" +msgstr "共享密码(Shared secret)" #: settings/serializers/auth/sms.py:71 msgid "Original number(Src id)" -msgstr "" +msgstr "原始号码(Src id)" #: settings/serializers/auth/sms.py:72 msgid "Business type(Service id)" -msgstr "" +msgstr "业务类型(Service id)" #: settings/serializers/auth/sms.py:75 msgid "Template" -msgstr "" +msgstr "模板" #: settings/serializers/auth/sms.py:76 #, python-brace-format @@ -3964,200 +4004,206 @@ msgid "" "67 words. For example, your verification code is {code}, which is valid for " "5 minutes. Please do not disclose it to others." msgstr "" +"模板需要包含 {code},并且模板+签名长度不能超过67个字。例如, 您的验证码是 " +"{code}, 有效期为5分钟。请不要泄露给其他人。" #: settings/serializers/auth/sms.py:85 #, python-brace-format msgid "The template needs to contain {code}" -msgstr "" +msgstr "模板需要包含 {code}" #: settings/serializers/auth/sms.py:88 msgid "Signature + Template must not exceed 65 words" -msgstr "" +msgstr "模板+签名不能超过65个字" #: settings/serializers/auth/sso.py:13 msgid "Enable SSO auth" -msgstr "" +msgstr "启用 SSO Token 认证" #: settings/serializers/auth/sso.py:14 msgid "Other service can using SSO token login to JumpServer without password" -msgstr "" +msgstr "其它系统可以使用 SSO Token 对接 JumpServer, 免去登录的过程" #: settings/serializers/auth/sso.py:17 msgid "SSO auth key TTL" -msgstr "" +msgstr "Token 有效期" #: settings/serializers/auth/sso.py:17 #: xpack/plugins/cloud/serializers/account_attrs.py:176 msgid "Unit: second" -msgstr "" +msgstr "单位: 秒" #: settings/serializers/auth/wecom.py:15 msgid "Enable WeCom Auth" -msgstr "" +msgstr "启用企业微信认证" #: settings/serializers/basic.py:9 msgid "Subject" -msgstr "" +msgstr "主题" #: settings/serializers/basic.py:13 msgid "More url" -msgstr "" +msgstr "更多信息 URL" #: settings/serializers/basic.py:30 msgid "Site url" -msgstr "" +msgstr "当前站点URL" #: settings/serializers/basic.py:31 msgid "eg: http://dev.jumpserver.org:8080" -msgstr "" +msgstr "如: http://dev.jumpserver.org:8080" #: settings/serializers/basic.py:34 msgid "User guide url" -msgstr "" +msgstr "用户向导URL" #: settings/serializers/basic.py:35 msgid "User first login update profile done redirect to it" -msgstr "" +msgstr "用户第一次登录,修改profile后重定向到地址, 可以是 wiki 或 其他说明文档" #: settings/serializers/basic.py:39 msgid "" "The forgot password url on login page, If you use ldap or cas external " "authentication, you can set it" msgstr "" +"登录页面忘记密码URL, 如果使用了 LDAP, OPENID 等外部认证系统,可以自定义用户重" +"置密码访问的地址" #: settings/serializers/basic.py:43 msgid "Global organization name" -msgstr "" +msgstr "全局组织名" #: settings/serializers/basic.py:44 msgid "The name of global organization to display" -msgstr "" +msgstr "全局组织的显示名称,默认为 全局组织" #: settings/serializers/basic.py:46 msgid "Enable announcement" -msgstr "" +msgstr "启用公告" #: settings/serializers/basic.py:47 msgid "Announcement" -msgstr "" +msgstr "公告" #: settings/serializers/basic.py:48 msgid "Enable tickets" -msgstr "" +msgstr "启用工单" #: settings/serializers/cleaning.py:8 msgid "Period clean" -msgstr "" +msgstr "定時清掃" #: settings/serializers/cleaning.py:12 msgid "Login log keep days" -msgstr "" +msgstr "登录日志" #: settings/serializers/cleaning.py:12 settings/serializers/cleaning.py:16 #: settings/serializers/cleaning.py:20 settings/serializers/cleaning.py:24 #: settings/serializers/cleaning.py:28 msgid "Unit: day" -msgstr "" +msgstr "单位: 天" #: settings/serializers/cleaning.py:16 msgid "Task log keep days" -msgstr "" +msgstr "任务日志" #: settings/serializers/cleaning.py:20 msgid "Operate log keep days" -msgstr "" +msgstr "操作日志" #: settings/serializers/cleaning.py:24 msgid "FTP log keep days" -msgstr "" +msgstr "上传下载" #: settings/serializers/cleaning.py:28 msgid "Cloud sync record keep days" -msgstr "" +msgstr "云同步记录" #: settings/serializers/cleaning.py:31 msgid "Session keep duration" -msgstr "" +msgstr "会话日志保存时间" #: settings/serializers/cleaning.py:32 msgid "" "Unit: days, Session, record, command will be delete if more than duration, " "only in database" msgstr "" +"单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不" +"受影响)" #: settings/serializers/email.py:21 msgid "SMTP host" -msgstr "" +msgstr "SMTP 主机" #: settings/serializers/email.py:22 msgid "SMTP port" -msgstr "" +msgstr "SMTP 端口" #: settings/serializers/email.py:23 msgid "SMTP account" -msgstr "" +msgstr "SMTP 账号" #: settings/serializers/email.py:25 msgid "SMTP password" -msgstr "" +msgstr "SMTP 密码" #: settings/serializers/email.py:26 msgid "Tips: Some provider use token except password" -msgstr "" +msgstr "提示:一些邮件提供商需要输入的是授权码" #: settings/serializers/email.py:29 msgid "Send user" -msgstr "" +msgstr "发件人" #: settings/serializers/email.py:30 msgid "Tips: Send mail account, default SMTP account as the send account" -msgstr "" +msgstr "提示:发送邮件账号,默认使用 SMTP 账号作为发送账号" #: settings/serializers/email.py:33 msgid "Test recipient" -msgstr "" +msgstr "测试收件人" #: settings/serializers/email.py:34 msgid "Tips: Used only as a test mail recipient" -msgstr "" +msgstr "提示:仅用来作为测试邮件收件人" #: settings/serializers/email.py:38 msgid "If SMTP port is 465, may be select" -msgstr "" +msgstr "如果SMTP端口是465,通常需要启用 SSL" #: settings/serializers/email.py:41 msgid "Use TLS" -msgstr "" +msgstr "使用 TLS" #: settings/serializers/email.py:42 msgid "If SMTP port is 587, may be select" -msgstr "" +msgstr "如果SMTP端口是587,通常需要启用 TLS" #: settings/serializers/email.py:45 msgid "Subject prefix" -msgstr "" +msgstr "主题前缀" #: settings/serializers/email.py:54 msgid "Create user email subject" -msgstr "" +msgstr "邮件主题" #: settings/serializers/email.py:55 msgid "" "Tips: When creating a user, send the subject of the email (eg:Create account " "successfully)" -msgstr "" +msgstr "提示: 创建用户时,发送设置密码邮件的主题 (例如: 创建用户成功)" #: settings/serializers/email.py:59 msgid "Create user honorific" -msgstr "" +msgstr "邮件问候语" #: settings/serializers/email.py:60 msgid "Tips: When creating a user, send the honorific of the email (eg:Hello)" -msgstr "" +msgstr "提示: 创建用户时,发送设置密码邮件的敬语 (例如: 你好)" #: settings/serializers/email.py:64 msgid "Create user email content" -msgstr "" +msgstr "邮件的内容" #: settings/serializers/email.py:65 #, python-brace-format @@ -4165,165 +4211,168 @@ msgid "" "Tips: When creating a user, send the content of the email, support " "{username} {name} {email} label" msgstr "" +"提示: 创建用户时,发送设置密码邮件的内容, 支持 {username} {name} {email} 标签" #: settings/serializers/email.py:69 msgid "Tips: Email signature (eg:jumpserver)" -msgstr "" +msgstr "邮件署名 (如:jumpserver)" #: settings/serializers/other.py:6 msgid "More..." -msgstr "" +msgstr "更多..." #: settings/serializers/other.py:9 msgid "Email suffix" -msgstr "" +msgstr "邮件后缀" #: settings/serializers/other.py:10 msgid "" "This is used by default if no email is returned during SSO authentication" -msgstr "" +msgstr "SSO认证时,如果没有返回邮件地址,将使用该后缀" #: settings/serializers/other.py:14 msgid "OTP issuer name" -msgstr "" +msgstr "OTP 扫描后的名称" #: settings/serializers/other.py:18 msgid "OTP valid window" -msgstr "" +msgstr "OTP 延迟有效次数" #: settings/serializers/other.py:23 msgid "CMD" -msgstr "" +msgstr "CMD" #: settings/serializers/other.py:24 msgid "PowerShell" -msgstr "" +msgstr "PowerShell" #: settings/serializers/other.py:26 msgid "Shell (Windows)" -msgstr "" +msgstr "Windows shell" #: settings/serializers/other.py:27 msgid "The shell type used when Windows assets perform ansible tasks" -msgstr "" +msgstr "windows 资产执行 Ansible 任务时,使用的 Shell 类型。" #: settings/serializers/other.py:31 msgid "Perm ungroup node" -msgstr "" +msgstr "显示未分组节点" #: settings/serializers/other.py:32 msgid "Perm single to ungroup node" msgstr "" +"放置单独授权的资产到未分组节点, 避免能看到资产所在节点,但该节点未被授权的问" +"题" #: settings/serializers/other.py:37 msgid "Ticket authorize default time" -msgstr "" +msgstr "默认工单授权时间" #: settings/serializers/other.py:40 msgid "day" -msgstr "" +msgstr "天" #: settings/serializers/other.py:40 msgid "hour" -msgstr "" +msgstr "时" #: settings/serializers/other.py:41 msgid "Ticket authorize default time unit" -msgstr "" +msgstr "默认工单授权时间单位" #: settings/serializers/other.py:44 msgid "Help Docs URL" -msgstr "" +msgstr "文档链接" #: settings/serializers/other.py:45 msgid "default: http://docs.jumpserver.org" -msgstr "" +msgstr "默认: http://dev.jumpserver.org:8080" #: settings/serializers/other.py:49 msgid "Help Support URL" -msgstr "" +msgstr "支持链接" #: settings/serializers/other.py:50 msgid "default: http://www.jumpserver.org/support/" -msgstr "" +msgstr "默认: http://www.jumpserver.org/support/" #: settings/serializers/security.py:10 msgid "Password minimum length" -msgstr "" +msgstr "密码最小长度" #: settings/serializers/security.py:14 msgid "Admin user password minimum length" -msgstr "" +msgstr "管理员密码最小长度" #: settings/serializers/security.py:17 msgid "Must contain capital" -msgstr "" +msgstr "必须包含大写字符" #: settings/serializers/security.py:20 msgid "Must contain lowercase" -msgstr "" +msgstr "必须包含小写字符" #: settings/serializers/security.py:23 msgid "Must contain numeric" -msgstr "" +msgstr "必须包含数字" #: settings/serializers/security.py:26 msgid "Must contain special" -msgstr "" +msgstr "必须包含特殊字符" #: settings/serializers/security.py:31 msgid "" "Unit: minute, If the user has failed to log in for a limited number of " "times, no login is allowed during this time interval." -msgstr "" +msgstr "单位:分, 当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录" #: settings/serializers/security.py:40 msgid "All users" -msgstr "" +msgstr "所有用户" #: settings/serializers/security.py:41 msgid "Only admin users" -msgstr "" +msgstr "仅管理员" #: settings/serializers/security.py:43 msgid "Global MFA auth" -msgstr "" +msgstr "全局启用 MFA 认证" #: settings/serializers/security.py:47 msgid "Third-party login users perform MFA authentication" -msgstr "" +msgstr "第三方登录用户进行MFA认证" #: settings/serializers/security.py:48 msgid "The third-party login modes include OIDC, CAS, and SAML2" -msgstr "" +msgstr "第三方登录方式包括: OIDC、CAS、SAML2" #: settings/serializers/security.py:52 msgid "Limit the number of user login failures" -msgstr "" +msgstr "限制用户登录失败次数" #: settings/serializers/security.py:56 msgid "Block user login interval" -msgstr "" +msgstr "禁止用户登录时间间隔" #: settings/serializers/security.py:61 msgid "Limit the number of IP login failures" -msgstr "" +msgstr "限制 IP 登录失败次数" #: settings/serializers/security.py:65 msgid "Block IP login interval" -msgstr "" +msgstr "禁止 IP 登录时间间隔" #: settings/serializers/security.py:69 msgid "Login IP White List" -msgstr "" +msgstr "IP 登录白名单" #: settings/serializers/security.py:74 msgid "Login IP Black List" -msgstr "" +msgstr "IP 登录黑名单" #: settings/serializers/security.py:80 msgid "User password expiration" -msgstr "" +msgstr "用户密码过期时间" #: settings/serializers/security.py:82 msgid "" @@ -4332,146 +4381,150 @@ msgid "" "be automatic sent to the user by system within 5 days (daily) before the " "password expires" msgstr "" +"单位:天, 如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期提醒邮件" +"将在密码过期前5天内由系统(每天)自动发送给用户" #: settings/serializers/security.py:89 msgid "Number of repeated historical passwords" -msgstr "" +msgstr "不能设置近几次密码" #: settings/serializers/security.py:91 msgid "" "Tip: When the user resets the password, it cannot be the previous n " "historical passwords of the user" -msgstr "" +msgstr "提示:用户重置密码时,不能为该用户前几次使用过的密码" #: settings/serializers/security.py:96 msgid "Only single device login" -msgstr "" +msgstr "仅一台设备登录" #: settings/serializers/security.py:97 msgid "Next device login, pre login will be logout" -msgstr "" +msgstr "下个设备登录,上次登录会被顶掉" #: settings/serializers/security.py:100 msgid "Only exist user login" -msgstr "" +msgstr "仅已存在用户登录" #: settings/serializers/security.py:101 msgid "If enable, CAS、OIDC auth will be failed, if user not exist yet" -msgstr "" +msgstr "开启后,如果系统中不存在该用户,CAS、OIDC 登录将会失败" #: settings/serializers/security.py:104 msgid "Only from source login" -msgstr "" +msgstr "仅从用户来源登录" #: settings/serializers/security.py:105 msgid "Only log in from the user source property" -msgstr "" +msgstr "开启后,如果用户来源为本地,CAS、OIDC 登录将会失败" #: settings/serializers/security.py:109 msgid "MFA verify TTL" -msgstr "" +msgstr "MFA 校验有效期" #: settings/serializers/security.py:111 msgid "" "Unit: second, The verification MFA takes effect only when you view the " "account password" -msgstr "" +msgstr "单位: 秒, 目前仅在查看账号密码校验 MFA 时生效" #: settings/serializers/security.py:116 msgid "Enable Login dynamic code" -msgstr "" +msgstr "启用登录附加码" #: settings/serializers/security.py:117 msgid "" "The password and additional code are sent to a third party authentication " "system for verification" msgstr "" +"密码和附加码一并发送给第三方认证系统进行校验, 如:有的第三方认证系统,需要 密" +"码+6位数字 完成认证" #: settings/serializers/security.py:122 msgid "MFA in login page" -msgstr "" +msgstr "MFA 在登录页面输入" #: settings/serializers/security.py:123 msgid "Eu security regulations(GDPR) require MFA to be on the login page" -msgstr "" +msgstr "欧盟数据安全法规(GDPR) 要求 MFA 在登录页面,来确保系统登录安全" #: settings/serializers/security.py:126 msgid "Enable Login captcha" -msgstr "" +msgstr "启用登录验证码" #: settings/serializers/security.py:127 msgid "Enable captcha to prevent robot authentication" -msgstr "" +msgstr "开启验证码,防止机器人登录" #: settings/serializers/security.py:146 msgid "Security" -msgstr "" +msgstr "安全" #: settings/serializers/security.py:149 msgid "Enable terminal register" -msgstr "" +msgstr "终端注册" #: settings/serializers/security.py:151 msgid "" "Allow terminal register, after all terminal setup, you should disable this " "for security" -msgstr "" +msgstr "是否允许终端注册,当所有终端启动后,为了安全应该关闭" #: settings/serializers/security.py:155 msgid "Enable watermark" -msgstr "" +msgstr "开启水印" #: settings/serializers/security.py:156 msgid "Enabled, the web session and replay contains watermark information" -msgstr "" +msgstr "启用后,Web 会话和录像将包含水印信息" #: settings/serializers/security.py:160 msgid "Connection max idle time" -msgstr "" +msgstr "连接最大空闲时间" #: settings/serializers/security.py:161 msgid "If idle time more than it, disconnect connection Unit: minute" -msgstr "" +msgstr "提示:如果超过该配置没有操作,连接会被断开 (单位:分)" #: settings/serializers/security.py:164 msgid "Remember manual auth" -msgstr "" +msgstr "保存手动输入密码" #: settings/serializers/security.py:167 msgid "Enable change auth secure mode" -msgstr "" +msgstr "启用改密安全模式" #: settings/serializers/security.py:170 msgid "Insecure command alert" -msgstr "" +msgstr "危险命令告警" #: settings/serializers/security.py:173 msgid "Email recipient" -msgstr "" +msgstr "邮件收件人" #: settings/serializers/security.py:174 msgid "Multiple user using , split" -msgstr "" +msgstr "多个用户,使用 , 分割" #: settings/serializers/security.py:177 msgid "Batch command execution" -msgstr "" +msgstr "批量命令执行" #: settings/serializers/security.py:178 msgid "Allow user run batch command or not using ansible" -msgstr "" +msgstr "是否允许用户使用 ansible 执行批量命令" #: settings/serializers/security.py:181 msgid "Session share" -msgstr "" +msgstr "会话分享" #: settings/serializers/security.py:182 msgid "Enabled, Allows user active session to be shared with other users" -msgstr "" +msgstr "开启后允许用户分享已连接的资产会话给他人,协同工作" #: settings/serializers/security.py:185 msgid "Remote Login Protection" -msgstr "" +msgstr "异地登录保护" #: settings/serializers/security.py:187 msgid "" @@ -4479,224 +4532,229 @@ msgid "" "city. If the account is logged in from a common login city, the system sends " "a remote login reminder" msgstr "" +"根据登录 IP 是否所属常用登录城市进行判断,若账号在非常用城市登录,会发送异地" +"登录提醒" #: settings/serializers/terminal.py:15 msgid "Auto" -msgstr "" +msgstr "自动" #: settings/serializers/terminal.py:21 msgid "Password auth" -msgstr "" +msgstr "密码认证" #: settings/serializers/terminal.py:23 msgid "Public key auth" -msgstr "" +msgstr "密钥认证" #: settings/serializers/terminal.py:24 msgid "" "Tips: If use other auth method, like AD/LDAP, you should disable this to " "avoid being able to log in after deleting" msgstr "" +"提示:如果你使用其它认证方式,如 AD/LDAP,你应该禁用此项,以避免第三方系统删" +"除后,还可以登录" #: settings/serializers/terminal.py:28 msgid "List sort by" -msgstr "" +msgstr "资产列表排序" #: settings/serializers/terminal.py:31 msgid "List page size" -msgstr "" +msgstr "资产列表每页数量" #: settings/serializers/terminal.py:34 msgid "Telnet login regex" -msgstr "" +msgstr "Telnet 成功正则表达式" #: settings/serializers/terminal.py:35 msgid "" "Tips: The login success message varies with devices. if you cannot log in to " "the device through Telnet, set this parameter" msgstr "" +"提示: 不同设备登录成功提示不一样,所以如果 telnet 不能正常登录,可以这里设置" #: settings/serializers/terminal.py:38 msgid "Enable database proxy" -msgstr "" +msgstr "启用数据库组件" #: settings/serializers/terminal.py:39 msgid "Enable Razor" -msgstr "" +msgstr "启用 Razor 服务" #: settings/serializers/terminal.py:40 msgid "Enable SSH Client" -msgstr "" +msgstr "启用 SSH Client" #: settings/serializers/terminal.py:51 msgid "Default graphics resolution" -msgstr "" +msgstr "默认图形化分辨率" #: settings/serializers/terminal.py:52 msgid "" "Tip: Default resolution to use when connecting graphical assets in Luna pages" -msgstr "" +msgstr "提示:在Luna 页面中连接图形化资产时默认使用的分辨率" #: settings/utils/ldap.py:467 msgid "ldap:// or ldaps:// protocol is used." -msgstr "" +msgstr "使用 ldap:// 或 ldaps:// 协议" #: settings/utils/ldap.py:478 msgid "Host or port is disconnected: {}" -msgstr "" +msgstr "主机或端口不可连接: {}" #: settings/utils/ldap.py:480 msgid "The port is not the port of the LDAP service: {}" -msgstr "" +msgstr "端口不是LDAP服务端口: {}" #: settings/utils/ldap.py:482 msgid "Please add certificate: {}" -msgstr "" +msgstr "请添加证书" #: settings/utils/ldap.py:486 settings/utils/ldap.py:513 #: settings/utils/ldap.py:543 settings/utils/ldap.py:571 msgid "Unknown error: {}" -msgstr "" +msgstr "未知错误: {}" #: settings/utils/ldap.py:500 msgid "Bind DN or Password incorrect" -msgstr "" +msgstr "绑定DN或密码错误" #: settings/utils/ldap.py:507 msgid "Please enter Bind DN: {}" -msgstr "" +msgstr "请输入绑定DN: {}" #: settings/utils/ldap.py:509 msgid "Please enter Password: {}" -msgstr "" +msgstr "请输入密码: {}" #: settings/utils/ldap.py:511 msgid "Please enter correct Bind DN and Password: {}" -msgstr "" +msgstr "请输入正确的绑定DN和密码: {}" #: settings/utils/ldap.py:529 msgid "Invalid User OU or User search filter: {}" -msgstr "" +msgstr "不合法的用户OU或用户过滤器: {}" #: settings/utils/ldap.py:560 msgid "LDAP User attr map not include: {}" -msgstr "" +msgstr "LDAP属性映射没有包含: {}" #: settings/utils/ldap.py:567 msgid "LDAP User attr map is not dict" -msgstr "" +msgstr "LDAP属性映射不合法" #: settings/utils/ldap.py:586 msgid "LDAP authentication is not enabled" -msgstr "" +msgstr "LDAP认证没有启用" #: settings/utils/ldap.py:604 msgid "Error (Invalid LDAP server): {}" -msgstr "" +msgstr "错误 (不合法的LDAP服务器地址): {}" #: settings/utils/ldap.py:606 msgid "Error (Invalid Bind DN): {}" -msgstr "" +msgstr "错误(不合法的绑定DN): {}" #: settings/utils/ldap.py:608 msgid "Error (Invalid LDAP User attr map): {}" -msgstr "" +msgstr "错误(不合法的LDAP属性映射): {}" #: settings/utils/ldap.py:610 msgid "Error (Invalid User OU or User search filter): {}" -msgstr "" +msgstr "错误(不合法的用户OU或用户过滤器): {}" #: settings/utils/ldap.py:612 msgid "Error (Not enabled LDAP authentication): {}" -msgstr "" +msgstr "错误(没有启用LDAP认证): {}" #: settings/utils/ldap.py:614 msgid "Error (Unknown): {}" -msgstr "" +msgstr "错误(未知): {}" #: settings/utils/ldap.py:617 msgid "Succeed: Match {} s user" -msgstr "" +msgstr "成功匹配 {} 个用户" #: settings/utils/ldap.py:650 msgid "Authentication failed (configuration incorrect): {}" -msgstr "" +msgstr "认证失败(配置错误): {}" #: settings/utils/ldap.py:654 msgid "Authentication failed (username or password incorrect): {}" -msgstr "" +msgstr "认证失败 (用户名或密码不正确): {}" #: settings/utils/ldap.py:656 msgid "Authentication failed (Unknown): {}" -msgstr "" +msgstr "认证失败: (未知): {}" #: settings/utils/ldap.py:659 msgid "Authentication success: {}" -msgstr "" +msgstr "认证成功: {}" #: templates/_csv_import_export.html:8 msgid "Export" -msgstr "" +msgstr "导出" #: templates/_csv_import_export.html:13 templates/_csv_import_modal.html:5 msgid "Import" -msgstr "" +msgstr "导入" #: templates/_csv_import_modal.html:12 msgid "Download the imported template or use the exported CSV file format" -msgstr "" +msgstr "下载导入的模板或使用导出的csv格式" #: templates/_csv_import_modal.html:13 msgid "Download the import template" -msgstr "" +msgstr "下载导入模版" #: templates/_csv_import_modal.html:17 templates/_csv_update_modal.html:17 msgid "Select the CSV file to import" -msgstr "" +msgstr "请选择csv文件导入" #: templates/_csv_import_modal.html:39 templates/_csv_update_modal.html:42 msgid "Please select file" -msgstr "" +msgstr "选择文件" #: templates/_csv_update_modal.html:12 msgid "Download the update template or use the exported CSV file format" -msgstr "" +msgstr "下载更新的模板或使用导出的csv格式" #: templates/_csv_update_modal.html:13 msgid "Download the update template" -msgstr "" +msgstr "下载更新模版" #: templates/_header_bar.html:12 msgid "Help" -msgstr "" +msgstr "帮助" #: templates/_header_bar.html:19 msgid "Docs" -msgstr "" +msgstr "文档" #: templates/_header_bar.html:25 msgid "Commercial support" -msgstr "" +msgstr "商业支持" #: templates/_header_bar.html:76 users/forms/profile.py:44 msgid "Profile" -msgstr "" +msgstr "个人信息" #: templates/_header_bar.html:79 msgid "Admin page" -msgstr "" +msgstr "管理页面" #: templates/_header_bar.html:81 msgid "User page" -msgstr "" +msgstr "用户页面" #: templates/_header_bar.html:84 msgid "API Key" -msgstr "" +msgstr "API Key" #: templates/_header_bar.html:85 msgid "Logout" -msgstr "" +msgstr "注销登录" #: templates/_message.html:6 msgid "" @@ -4704,14 +4762,16 @@ msgid "" " Your account has expired, please contact the administrator.\n" " " msgstr "" +"\n" +" 您的账号已经过期,请联系管理员。 " #: templates/_message.html:13 msgid "Your account will at" -msgstr "" +msgstr "您的账号将于" #: templates/_message.html:13 templates/_message.html:30 msgid "expired. " -msgstr "" +msgstr "过期。" #: templates/_message.html:23 #, python-format @@ -4721,10 +4781,14 @@ msgid "" "href=\"%(user_password_update_url)s\"> this link update password.\n" " " msgstr "" +"\n" +" 您的密码已经过期,请点击 链接 更新密码\n" +" " #: templates/_message.html:30 msgid "Your password will at" -msgstr "" +msgstr "您的密码将于" #: templates/_message.html:31 #, python-format @@ -4734,6 +4798,10 @@ msgid "" "link to update your password.\n" " " msgstr "" +"\n" +" 请点击 链接 更" +"新密码\n" +" " #: templates/_message.html:43 #, python-format @@ -4743,6 +4811,10 @@ msgid "" "href=\"%(first_login_url)s\"> this link to complete your information.\n" " " msgstr "" +"\n" +" 你的信息不完整,请点击 链接 " +" 补充完整\n" +" " #: templates/_message.html:56 #, python-format @@ -4752,68 +4824,74 @@ msgid "" "href=\"%(user_pubkey_update)s\"> this link to update\n" " " msgstr "" +"\n" +" 您的SSH密钥没有设置或已失效,请点击 链接 更新\n" +" " #: templates/_mfa_login_field.html:28 msgid "Send verification code" -msgstr "" +msgstr "发送验证码" #: templates/_mfa_login_field.html:106 #: users/templates/users/forgot_password.html:129 msgid "Wait: " -msgstr "" +msgstr "等待:" #: templates/_mfa_login_field.html:116 #: users/templates/users/forgot_password.html:145 msgid "The verification code has been sent" -msgstr "" +msgstr "验证码已发送" #: templates/_without_nav_base.html:26 msgid "Home page" -msgstr "" +msgstr "首页" #: templates/resource_download.html:18 templates/resource_download.html:31 msgid "Client" -msgstr "" +msgstr "客户端" #: templates/resource_download.html:20 msgid "" "JumpServer Client, currently used to launch the client, now only support " "launch RDP SSH client, The Telnet client will next" msgstr "" +"JumpServer 客户端,目前用来唤起 特定客户端程序 连接资产, 目前仅支持 RDP SSH " +"客户端,Telnet 会在未来支持" #: templates/resource_download.html:31 msgid "Microsoft" -msgstr "" +msgstr "微软" #: templates/resource_download.html:31 msgid "Official" -msgstr "" +msgstr "官方" #: templates/resource_download.html:33 msgid "" "macOS needs to download the client to connect RDP asset, which comes with " "Windows" -msgstr "" +msgstr "macOS 需要下载客户端来连接 RDP 资产,Windows 系统默认安装了该程序" #: templates/resource_download.html:42 msgid "Windows Remote application publisher tools" -msgstr "" +msgstr "Windows 远程应用发布服务器工具" #: templates/resource_download.html:43 msgid "" "OpenSSH is a program used to connect remote applications in the Windows " "Remote Application Publisher" -msgstr "" +msgstr "OpenSSH 是在 windows 远程应用发布服务器中用来连接远程应用的程序" #: templates/resource_download.html:48 msgid "" "Jmservisor is the program used to pull up remote applications in Windows " "Remote Application publisher" -msgstr "" +msgstr "Jmservisor 是在 windows 远程应用发布服务器中用来拉起远程应用的程序" #: templates/resource_download.html:57 msgid "Offline video player" -msgstr "" +msgstr "离线录像播放器" #: terminal/api/component/endpoint.py:31 msgid "Not found protocol query params" @@ -4821,190 +4899,190 @@ msgstr "" #: terminal/api/component/storage.py:28 msgid "Deleting the default storage is not allowed" -msgstr "" +msgstr "不允许删除默认存储配置" #: terminal/api/component/storage.py:31 msgid "Cannot delete storage that is being used" -msgstr "" +msgstr "不允许删除正在使用的存储配置" #: terminal/api/component/storage.py:72 terminal/api/component/storage.py:73 msgid "Command storages" -msgstr "" +msgstr "命令存储" #: terminal/api/component/storage.py:79 msgid "Invalid" -msgstr "" +msgstr "无效" #: terminal/api/component/storage.py:119 msgid "Test failure: {}" -msgstr "" +msgstr "测试失败: {}" #: terminal/api/component/storage.py:122 msgid "Test successful" -msgstr "" +msgstr "测试成功" #: terminal/api/component/storage.py:124 msgid "Test failure: Account invalid" -msgstr "" +msgstr "测试失败: 账号无效" #: terminal/api/component/terminal.py:38 msgid "Have online sessions" -msgstr "" +msgstr "有在线会话" #: terminal/api/session/session.py:217 msgid "Session does not exist: {}" -msgstr "" +msgstr "会话不存在: {}" #: terminal/api/session/session.py:220 msgid "Session is finished or the protocol not supported" -msgstr "" +msgstr "会话已经完成或协议不支持" #: terminal/api/session/session.py:233 msgid "User does not have permission" -msgstr "" +msgstr "用户没有权限" #: terminal/api/session/sharing.py:29 msgid "Secure session sharing settings is disabled" -msgstr "" +msgstr "未开启会话共享" #: terminal/apps.py:9 msgid "Terminals" -msgstr "" +msgstr "终端管理" #: terminal/backends/command/models.py:16 msgid "Ordinary" -msgstr "" +msgstr "普通" #: terminal/backends/command/models.py:17 msgid "Dangerous" -msgstr "" +msgstr "危险" #: terminal/backends/command/models.py:23 msgid "Input" -msgstr "" +msgstr "输入" #: terminal/backends/command/models.py:24 #: terminal/backends/command/serializers.py:38 msgid "Output" -msgstr "" +msgstr "输出" #: terminal/backends/command/models.py:25 terminal/models/session/replay.py:9 #: terminal/models/session/sharing.py:19 terminal/models/session/sharing.py:78 #: terminal/templates/terminal/_msg_command_alert.html:10 #: tickets/models/ticket/command_confirm.py:17 msgid "Session" -msgstr "" +msgstr "会话" #: terminal/backends/command/models.py:26 #: terminal/backends/command/serializers.py:18 msgid "Risk level" -msgstr "" +msgstr "风险等级" #: terminal/backends/command/serializers.py:16 msgid "Session ID" -msgstr "" +msgstr "会话ID" #: terminal/backends/command/serializers.py:37 msgid "Account " -msgstr "" +msgstr "账号" #: terminal/backends/command/serializers.py:39 msgid "Risk level display" -msgstr "" +msgstr "风险等级名称" #: terminal/backends/command/serializers.py:40 msgid "Timestamp" -msgstr "" +msgstr "时间戳" #: terminal/backends/command/serializers.py:42 #: terminal/models/component/terminal.py:85 msgid "Remote Address" -msgstr "" +msgstr "远端地址" #: terminal/const.py:37 msgid "Critical" -msgstr "" +msgstr "严重" #: terminal/const.py:38 msgid "High" -msgstr "" +msgstr "较高" #: terminal/const.py:39 users/templates/users/reset_password.html:50 msgid "Normal" -msgstr "" +msgstr "正常" #: terminal/const.py:40 msgid "Offline" -msgstr "" +msgstr "离线" #: terminal/const.py:81 terminal/const.py:82 terminal/const.py:83 #: terminal/const.py:84 terminal/const.py:85 msgid "DB Client" -msgstr "" +msgstr "客户端" #: terminal/exceptions.py:8 msgid "Bulk create not support" -msgstr "" +msgstr "不支持批量创建" #: terminal/exceptions.py:13 msgid "Storage is invalid" -msgstr "" +msgstr "存储无效" #: terminal/models/applet/applet.py:23 msgid "Author" -msgstr "" +msgstr "作者" #: terminal/models/applet/applet.py:27 msgid "Tags" -msgstr "" +msgstr "标签" #: terminal/models/applet/applet.py:31 terminal/serializers/storage.py:157 msgid "Hosts" -msgstr "" +msgstr "主机" #: terminal/models/applet/applet.py:58 terminal/models/applet/host.py:27 msgid "Applet" -msgstr "" +msgstr "远程应用" #: terminal/models/applet/host.py:18 terminal/serializers/applet_host.py:38 msgid "Deploy options" -msgstr "" +msgstr "部署参数" #: terminal/models/applet/host.py:19 msgid "Inited" -msgstr "" +msgstr "已初始化" #: terminal/models/applet/host.py:20 msgid "Date inited" -msgstr "" +msgstr "初始化日期" #: terminal/models/applet/host.py:21 msgid "Date synced" -msgstr "" +msgstr "同步日期" #: terminal/models/applet/host.py:102 msgid "Hosting" -msgstr "" +msgstr "宿主机" #: terminal/models/applet/host.py:103 msgid "Initial" -msgstr "" +msgstr "初始化" #: terminal/models/component/endpoint.py:15 msgid "HTTPS Port" -msgstr "" +msgstr "HTTPS 端口" #: terminal/models/component/endpoint.py:16 msgid "HTTP Port" -msgstr "" +msgstr "HTTP 端口" #: terminal/models/component/endpoint.py:17 msgid "SSH Port" -msgstr "" +msgstr "SSH 端口" #: terminal/models/component/endpoint.py:18 msgid "RDP Port" -msgstr "" +msgstr "RDP 端口" #: terminal/models/component/endpoint.py:25 #: terminal/models/component/endpoint.py:94 terminal/serializers/endpoint.py:57 @@ -5012,213 +5090,213 @@ msgstr "" #: terminal/serializers/storage.py:80 terminal/serializers/storage.py:90 #: terminal/serializers/storage.py:98 msgid "Endpoint" -msgstr "" +msgstr "端点" #: terminal/models/component/endpoint.py:87 msgid "IP group" -msgstr "" +msgstr "IP 组" #: terminal/models/component/endpoint.py:99 msgid "Endpoint rule" -msgstr "" +msgstr "端点规则" #: terminal/models/component/status.py:14 msgid "Session Online" -msgstr "" +msgstr "在线会话" #: terminal/models/component/status.py:15 msgid "CPU Load" -msgstr "" +msgstr "CPU负载" #: terminal/models/component/status.py:16 msgid "Memory Used" -msgstr "" +msgstr "内存使用" #: terminal/models/component/status.py:17 msgid "Disk Used" -msgstr "" +msgstr "磁盘使用" #: terminal/models/component/status.py:18 msgid "Connections" -msgstr "" +msgstr "连接数" #: terminal/models/component/status.py:19 msgid "Threads" -msgstr "" +msgstr "线程数" #: terminal/models/component/status.py:20 msgid "Boot Time" -msgstr "" +msgstr "运行时间" #: terminal/models/component/storage.py:27 msgid "Default storage" -msgstr "" +msgstr "默认存储" #: terminal/models/component/storage.py:140 #: terminal/models/component/terminal.py:86 msgid "Command storage" -msgstr "" +msgstr "命令存储" #: terminal/models/component/storage.py:200 #: terminal/models/component/terminal.py:87 msgid "Replay storage" -msgstr "" +msgstr "录像存储" #: terminal/models/component/terminal.py:83 msgid "type" -msgstr "" +msgstr "类型" #: terminal/models/component/terminal.py:88 msgid "Application User" -msgstr "" +msgstr "应用用户" #: terminal/models/component/terminal.py:161 msgid "Can view terminal config" -msgstr "" +msgstr "可以查看终端配置" #: terminal/models/session/command.py:66 msgid "Command record" -msgstr "" +msgstr "命令记录" #: terminal/models/session/replay.py:12 msgid "Session replay" -msgstr "" +msgstr "会话录像" #: terminal/models/session/replay.py:14 msgid "Can upload session replay" -msgstr "" +msgstr "可以上传会话录像" #: terminal/models/session/replay.py:15 msgid "Can download session replay" -msgstr "" +msgstr "可以下载会话录像" #: terminal/models/session/session.py:36 terminal/models/session/sharing.py:101 msgid "Login from" -msgstr "" +msgstr "登录来源" #: terminal/models/session/session.py:40 msgid "Replay" -msgstr "" +msgstr "回放" #: terminal/models/session/session.py:44 msgid "Date end" -msgstr "" +msgstr "结束日期" #: terminal/models/session/session.py:236 msgid "Session record" -msgstr "" +msgstr "会话记录" #: terminal/models/session/session.py:238 msgid "Can monitor session" -msgstr "" +msgstr "可以监控会话" #: terminal/models/session/session.py:239 msgid "Can share session" -msgstr "" +msgstr "可以分享会话" #: terminal/models/session/session.py:240 msgid "Can terminate session" -msgstr "" +msgstr "可以终断会话" #: terminal/models/session/session.py:241 msgid "Can validate session action perm" -msgstr "" +msgstr "可以验证会话动作权限" #: terminal/models/session/sharing.py:31 msgid "Expired time (min)" -msgstr "" +msgstr "过期时间 (分)" #: terminal/models/session/sharing.py:37 terminal/models/session/sharing.py:83 msgid "Session sharing" -msgstr "" +msgstr "会话分享" #: terminal/models/session/sharing.py:39 msgid "Can add super session sharing" -msgstr "" +msgstr "可以创建超级会话分享" #: terminal/models/session/sharing.py:66 msgid "Link not active" -msgstr "" +msgstr "链接失效" #: terminal/models/session/sharing.py:68 msgid "Link expired" -msgstr "" +msgstr "链接过期" #: terminal/models/session/sharing.py:70 msgid "User not allowed to join" -msgstr "" +msgstr "该用户无权加入会话" #: terminal/models/session/sharing.py:87 terminal/serializers/sharing.py:59 msgid "Joiner" -msgstr "" +msgstr "加入者" #: terminal/models/session/sharing.py:90 msgid "Date joined" -msgstr "" +msgstr "加入日期" #: terminal/models/session/sharing.py:93 msgid "Date left" -msgstr "" +msgstr "结束日期" #: terminal/models/session/sharing.py:116 msgid "Session join record" -msgstr "" +msgstr "会话加入记录" #: terminal/models/session/sharing.py:132 msgid "Invalid verification code" -msgstr "" +msgstr "验证码不正确" #: terminal/notifications.py:22 msgid "Sessions" -msgstr "" +msgstr "会话管理" #: terminal/notifications.py:68 msgid "Danger command alert" -msgstr "" +msgstr "危险命令告警" #: terminal/notifications.py:95 terminal/notifications.py:143 msgid "Level" -msgstr "" +msgstr "级别" #: terminal/notifications.py:113 msgid "Batch danger command alert" -msgstr "" +msgstr "批量危险命令告警" #: terminal/serializers/applet.py:16 msgid "Published" -msgstr "" +msgstr "已发布" #: terminal/serializers/applet.py:17 msgid "Unpublished" -msgstr "" +msgstr "未发布" #: terminal/serializers/applet.py:18 msgid "Not match" -msgstr "" +msgstr "没有匹配的" #: terminal/serializers/applet.py:32 msgid "Icon" -msgstr "" +msgstr "图标" #: terminal/serializers/applet_host.py:21 msgid "Per Session" -msgstr "" +msgstr "每会话" #: terminal/serializers/applet_host.py:22 msgid "Per Device" -msgstr "" +msgstr "每设备" #: terminal/serializers/applet_host.py:28 msgid "RDS Licensing" -msgstr "" +msgstr "RDS 许可证" #: terminal/serializers/applet_host.py:29 msgid "RDS License Server" -msgstr "" +msgstr "RDS 许可服务器" #: terminal/serializers/applet_host.py:30 msgid "RDS Licensing Mode" -msgstr "" +msgstr "RDS 授权模式" #: terminal/serializers/applet_host.py:32 msgid "RDS fSingleSessionPerUser" @@ -5234,140 +5312,140 @@ msgstr "" #: terminal/serializers/applet_host.py:40 terminal/serializers/terminal.py:41 msgid "Load status" -msgstr "" +msgstr "负载状态" #: terminal/serializers/endpoint.py:14 msgid "Magnus listen db port" -msgstr "" +msgstr "Magnus 监听的数据库端口" #: terminal/serializers/endpoint.py:17 msgid "Magnus Listen port range" -msgstr "" +msgstr "Magnus 监听的端口范围" #: terminal/serializers/endpoint.py:19 msgid "" "The range of ports that Magnus listens on is modified in the configuration " "file" -msgstr "" +msgstr "请在配置文件中修改 Magnus 监听的端口范围" #: terminal/serializers/endpoint.py:51 msgid "" "If asset IP addresses under different endpoints conflict, use asset labels" -msgstr "" +msgstr "如果不同端点下的资产 IP 有冲突,使用资产标签实现" #: terminal/serializers/session.py:17 terminal/serializers/session.py:42 msgid "Terminal display" -msgstr "" +msgstr "终端显示" #: terminal/serializers/session.py:33 msgid "User ID" -msgstr "" +msgstr "用户 ID" #: terminal/serializers/session.py:34 msgid "Asset ID" -msgstr "" +msgstr "资产 ID" #: terminal/serializers/session.py:35 msgid "Login from display" -msgstr "" +msgstr "登录来源名称" #: terminal/serializers/session.py:37 msgid "Can replay" -msgstr "" +msgstr "是否可重放" #: terminal/serializers/session.py:38 msgid "Can join" -msgstr "" +msgstr "是否可加入" #: terminal/serializers/session.py:39 msgid "Terminal ID" -msgstr "" +msgstr "终端 ID" #: terminal/serializers/session.py:40 msgid "Is finished" -msgstr "" +msgstr "是否完成" #: terminal/serializers/session.py:41 msgid "Can terminate" -msgstr "" +msgstr "是否可中断" #: terminal/serializers/session.py:47 msgid "Command amount" -msgstr "" +msgstr "命令数量" #: terminal/serializers/storage.py:20 msgid "Endpoint invalid: remove path `{}`" -msgstr "" +msgstr "端点无效: 移除路径 `{}`" #: terminal/serializers/storage.py:26 msgid "Bucket" -msgstr "" +msgstr "桶名称" #: terminal/serializers/storage.py:30 #: xpack/plugins/cloud/serializers/account_attrs.py:17 msgid "Access key id" -msgstr "" +msgstr "访问密钥 ID(AK)" #: terminal/serializers/storage.py:34 #: xpack/plugins/cloud/serializers/account_attrs.py:20 msgid "Access key secret" -msgstr "" +msgstr "访问密钥密文(SK)" #: terminal/serializers/storage.py:65 xpack/plugins/cloud/models.py:219 msgid "Region" -msgstr "" +msgstr "地域" #: terminal/serializers/storage.py:109 msgid "Container name" -msgstr "" +msgstr "容器名称" #: terminal/serializers/storage.py:112 msgid "Account key" -msgstr "" +msgstr "账号密钥" #: terminal/serializers/storage.py:115 msgid "Endpoint suffix" -msgstr "" +msgstr "端点后缀" #: terminal/serializers/storage.py:135 msgid "The address format is incorrect" -msgstr "" +msgstr "地址格式不正确" #: terminal/serializers/storage.py:142 msgid "Host invalid" -msgstr "" +msgstr "主机无效" #: terminal/serializers/storage.py:145 msgid "Port invalid" -msgstr "" +msgstr "端口无效" #: terminal/serializers/storage.py:160 msgid "Index by date" -msgstr "" +msgstr "按日期建索引" #: terminal/serializers/storage.py:161 msgid "Whether to create an index by date" -msgstr "" +msgstr "是否根据日期动态建立索引" #: terminal/serializers/storage.py:164 msgid "Index" -msgstr "" +msgstr "索引" #: terminal/serializers/storage.py:166 msgid "Doc type" -msgstr "" +msgstr "文档类型" #: terminal/serializers/storage.py:168 msgid "Ignore Certificate Verification" -msgstr "" +msgstr "忽略证书认证" #: terminal/serializers/terminal.py:77 terminal/serializers/terminal.py:85 msgid "Not found" -msgstr "" +msgstr "没有发现" #: terminal/templates/terminal/_msg_command_alert.html:10 msgid "view" -msgstr "" +msgstr "查看" #: terminal/utils/db_port_mapper.py:64 msgid "" @@ -5375,28 +5453,30 @@ msgid "" "number of ports open to the database agent service, Contact the " "administrator to open more ports." msgstr "" +"未匹配到可用端口,数据库的数量可能已经超过数据库代理服务开放的端口数量,请联" +"系管理员开放更多端口。" #: terminal/utils/db_port_mapper.py:90 msgid "" "No ports can be used, check and modify the limit on the number of ports that " "Magnus listens on in the configuration file." -msgstr "" +msgstr "没有端口可以使用,检查并修改配置文件中 Magnus 监听的端口数量限制。" #: terminal/utils/db_port_mapper.py:92 msgid "All available port count: {}, Already use port count: {}" -msgstr "" +msgstr "所有可用端口数量:{},已使用端口数量:{}" #: tickets/apps.py:7 msgid "Tickets" -msgstr "" +msgstr "工单管理" #: tickets/const.py:9 msgid "Apply for asset" -msgstr "" +msgstr "申请资产" #: tickets/const.py:16 tickets/const.py:24 tickets/const.py:43 msgid "Open" -msgstr "" +msgstr "打开" #: tickets/const.py:18 tickets/const.py:31 msgid "Reopen" @@ -5404,69 +5484,70 @@ msgstr "" #: tickets/const.py:19 tickets/const.py:32 msgid "Approved" -msgstr "" +msgstr "已同意" #: tickets/const.py:20 tickets/const.py:33 msgid "Rejected" -msgstr "" +msgstr "已拒绝" #: tickets/const.py:30 tickets/const.py:38 msgid "Closed" -msgstr "" +msgstr "关闭的" #: tickets/const.py:46 msgid "Approve" -msgstr "" +msgstr "同意" #: tickets/const.py:50 msgid "One level" -msgstr "" +msgstr "1 级" #: tickets/const.py:51 msgid "Two level" -msgstr "" +msgstr "2 级" #: tickets/const.py:55 msgid "Org admin" -msgstr "" +msgstr "组织管理员" #: tickets/const.py:56 msgid "Custom user" -msgstr "" +msgstr "自定义用户" #: tickets/const.py:57 msgid "Super admin" -msgstr "" +msgstr "超级管理员" #: tickets/const.py:58 msgid "Super admin and org admin" -msgstr "" +msgstr "组织管理员或超级管理员" #: tickets/errors.py:9 msgid "Ticket already closed" -msgstr "" +msgstr "工单已经关闭" #: tickets/handlers/apply_asset.py:36 msgid "" "Created by the ticket ticket title: {} ticket applicant: {} ticket " "processor: {} ticket ID: {}" msgstr "" +"通过工单创建, 工单标题: {}, 工单申请人: {}, 工单处理人: {}, 工单 ID: {}" #: tickets/handlers/base.py:84 msgid "Change field" -msgstr "" +msgstr "变更字段" #: tickets/handlers/base.py:84 msgid "Before change" -msgstr "" +msgstr "变更前" #: tickets/handlers/base.py:84 msgid "After change" -msgstr "" +msgstr "变更后" #: tickets/handlers/base.py:96 msgid "{} {} the ticket" -msgstr "" +msgstr "{} {} 工单" #: tickets/models/comment.py:14 msgid "common" @@ -5474,291 +5555,295 @@ msgstr "" #: tickets/models/comment.py:23 msgid "User display name" -msgstr "" +msgstr "用户显示名称" #: tickets/models/comment.py:24 msgid "Body" -msgstr "" +msgstr "内容" #: tickets/models/flow.py:20 tickets/models/flow.py:62 #: tickets/models/ticket/general.py:39 msgid "Approve level" -msgstr "" +msgstr "审批级别" #: tickets/models/flow.py:25 tickets/serializers/flow.py:18 msgid "Approve strategy" -msgstr "" +msgstr "审批策略" #: tickets/models/flow.py:30 tickets/serializers/flow.py:20 msgid "Assignees" -msgstr "" +msgstr "受理人" #: tickets/models/flow.py:34 msgid "Ticket flow approval rule" -msgstr "" +msgstr "工单批准信息" #: tickets/models/flow.py:67 msgid "Ticket flow" -msgstr "" +msgstr "工单流程" #: tickets/models/relation.py:10 msgid "Ticket session relation" -msgstr "" +msgstr "工单会话" #: tickets/models/ticket/apply_application.py:10 #: tickets/models/ticket/apply_asset.py:13 msgid "Permission name" -msgstr "" +msgstr "授权规则名称" #: tickets/models/ticket/apply_application.py:19 msgid "Apply applications" -msgstr "" +msgstr "申请应用" #: tickets/models/ticket/apply_application.py:22 msgid "Apply system users" -msgstr "" +msgstr "申请的系统用户" #: tickets/models/ticket/apply_asset.py:9 #: tickets/serializers/ticket/apply_asset.py:14 msgid "Select at least one asset or node" -msgstr "" +msgstr "资产或者节点至少选择一项" #: tickets/models/ticket/apply_asset.py:14 #: tickets/serializers/ticket/apply_asset.py:19 msgid "Apply nodes" -msgstr "" +msgstr "申请节点" #: tickets/models/ticket/apply_asset.py:16 #: tickets/serializers/ticket/apply_asset.py:18 msgid "Apply assets" -msgstr "" +msgstr "申请资产" #: tickets/models/ticket/apply_asset.py:17 +#, fuzzy msgid "Apply accounts" -msgstr "" +msgstr "应用账号" #: tickets/models/ticket/command_confirm.py:10 msgid "Run user" -msgstr "" +msgstr "运行的用户" #: tickets/models/ticket/command_confirm.py:12 msgid "Run asset" -msgstr "" +msgstr "运行的资产" #: tickets/models/ticket/command_confirm.py:13 msgid "Run command" -msgstr "" +msgstr "运行的命令" #: tickets/models/ticket/command_confirm.py:14 +#, fuzzy msgid "Run account" -msgstr "" +msgstr "账号" #: tickets/models/ticket/command_confirm.py:21 msgid "From cmd filter" -msgstr "" +msgstr "来自命令过滤规则" #: tickets/models/ticket/command_confirm.py:25 msgid "From cmd filter rule" -msgstr "" +msgstr "来自命令过滤规则" #: tickets/models/ticket/general.py:74 msgid "Ticket step" -msgstr "" +msgstr "工单步骤" #: tickets/models/ticket/general.py:92 msgid "Ticket assignee" -msgstr "" +msgstr "工单受理人" #: tickets/models/ticket/general.py:271 msgid "Title" -msgstr "" +msgstr "标题" #: tickets/models/ticket/general.py:287 msgid "Applicant" -msgstr "" +msgstr "申请人" #: tickets/models/ticket/general.py:291 msgid "TicketFlow" -msgstr "" +msgstr "工单流程" #: tickets/models/ticket/general.py:294 msgid "Approval step" -msgstr "" +msgstr "审批步骤" #: tickets/models/ticket/general.py:297 msgid "Relation snapshot" -msgstr "" +msgstr "工单快照" #: tickets/models/ticket/general.py:391 msgid "Please try again" -msgstr "" +msgstr "请再次尝试" #: tickets/models/ticket/general.py:424 msgid "Super ticket" -msgstr "" +msgstr "超级工单" #: tickets/models/ticket/login_asset_confirm.py:11 msgid "Login user" -msgstr "" +msgstr "登录用户" #: tickets/models/ticket/login_asset_confirm.py:14 msgid "Login asset" -msgstr "" +msgstr "登录资产" #: tickets/models/ticket/login_asset_confirm.py:17 +#, fuzzy msgid "Login account" -msgstr "" +msgstr "登录访问控制" #: tickets/models/ticket/login_confirm.py:12 msgid "Login datetime" -msgstr "" +msgstr "登录日期" #: tickets/notifications.py:63 msgid "Ticket basic info" -msgstr "" +msgstr "工单基本信息" #: tickets/notifications.py:64 msgid "Ticket applied info" -msgstr "" +msgstr "工单申请信息" #: tickets/notifications.py:109 msgid "Your has a new ticket, applicant - {}" -msgstr "" +msgstr "你有一个新的工单, 申请人 - {}" #: tickets/notifications.py:113 msgid "{}: New Ticket - {} ({})" -msgstr "" +msgstr "新工单 - {} ({})" #: tickets/notifications.py:157 msgid "Your ticket has been processed, processor - {}" -msgstr "" +msgstr "你的工单已被处理, 处理人 - {}" #: tickets/notifications.py:161 msgid "Ticket has processed - {} ({})" -msgstr "" +msgstr "你的工单已被处理, 处理人 - {} ({})" #: tickets/serializers/flow.py:21 msgid "Assignees display" -msgstr "" +msgstr "受理人名称" #: tickets/serializers/flow.py:47 msgid "Please select the Assignees" -msgstr "" +msgstr "请选择受理人" #: tickets/serializers/flow.py:75 msgid "The current organization type already exists" -msgstr "" +msgstr "当前组织已存在该类型" #: tickets/serializers/super_ticket.py:11 msgid "Processor" -msgstr "" +msgstr "处理人" #: tickets/serializers/ticket/apply_asset.py:20 +#, fuzzy msgid "Apply actions" -msgstr "" +msgstr "申请应用" #: tickets/serializers/ticket/common.py:15 #: tickets/serializers/ticket/common.py:77 msgid "Created by ticket ({}-{})" -msgstr "" +msgstr "通过工单创建 ({}-{})" #: tickets/serializers/ticket/common.py:67 msgid "The expiration date should be greater than the start date" -msgstr "" +msgstr "过期时间要大于开始时间" #: tickets/serializers/ticket/common.py:84 msgid "Permission named `{}` already exists" -msgstr "" +msgstr "授权名称 `{}` 已存在" #: tickets/serializers/ticket/ticket.py:96 msgid "The ticket flow `{}` does not exist" -msgstr "" +msgstr "工单流程 `{}` 不存在" #: tickets/templates/tickets/_msg_ticket.html:20 msgid "View details" -msgstr "" +msgstr "查看详情" #: tickets/templates/tickets/_msg_ticket.html:25 msgid "Direct approval" -msgstr "" +msgstr "直接批准" #: tickets/templates/tickets/approve_check_password.html:11 msgid "Ticket information" -msgstr "" +msgstr "工单信息" #: tickets/templates/tickets/approve_check_password.html:29 #: tickets/views/approve.py:38 msgid "Ticket approval" -msgstr "" +msgstr "工单审批" #: tickets/templates/tickets/approve_check_password.html:45 msgid "Approval" -msgstr "" +msgstr "同意" #: tickets/templates/tickets/approve_check_password.html:54 msgid "Go Login" -msgstr "" +msgstr "去登录" #: tickets/views/approve.py:39 msgid "" "This ticket does not exist, the process has ended, or this link has expired" -msgstr "" +msgstr "工单不存在,或者工单流程已经结束,或者此链接已经过期" #: tickets/views/approve.py:68 msgid "Click the button below to approve or reject" -msgstr "" +msgstr "点击下方按钮同意或者拒绝" #: tickets/views/approve.py:70 msgid "After successful authentication, this ticket can be approved directly" -msgstr "" +msgstr "认证成功后,工单可直接审批" #: tickets/views/approve.py:92 msgid "Illegal approval action" -msgstr "" +msgstr "无效的审批动作" #: tickets/views/approve.py:105 msgid "This user is not authorized to approve this ticket" -msgstr "" +msgstr "此用户无权审批此工单" #: users/api/user.py:183 msgid "Could not reset self otp, use profile reset instead" -msgstr "" +msgstr "不能在该页面重置 MFA 多因子认证, 请去个人信息页面重置" #: users/apps.py:9 msgid "Users" -msgstr "" +msgstr "用户管理" #: users/const.py:10 msgid "System administrator" -msgstr "" +msgstr "系统管理员" #: users/const.py:11 msgid "System auditor" -msgstr "" +msgstr "系统审计员" #: users/const.py:12 msgid "Organization administrator" -msgstr "" +msgstr "组织管理员" #: users/const.py:13 msgid "Organization auditor" -msgstr "" +msgstr "组织审计员" #: users/const.py:18 msgid "Reset link will be generated and sent to the user" -msgstr "" +msgstr "生成重置密码链接,通过邮件发送给用户" #: users/const.py:19 msgid "Set password" -msgstr "" +msgstr "设置密码" #: users/exceptions.py:10 msgid "MFA not enabled" -msgstr "" +msgstr "MFA 多因子认证没有开启" #: users/exceptions.py:20 msgid "MFA method not support" -msgstr "" +msgstr "不支持该 MFA 方式" #: users/forms/profile.py:50 msgid "" @@ -5766,10 +5851,12 @@ msgid "" "in. you can also directly bind in \"personal information -> quick " "modification -> change MFA Settings\"!" msgstr "" +"启用之后您将会在下次登录时进入多因子认证绑定流程;您也可以在(个人信息->快速" +"修改->设置 MFA 多因子认证)中直接绑定!" #: users/forms/profile.py:61 msgid "* Enable MFA to make the account more secure." -msgstr "" +msgstr "* 启用 MFA 多因子认证,使账号更加安全。" #: users/forms/profile.py:70 msgid "" @@ -5777,710 +5864,714 @@ msgid "" "and key sensitive information properly. (for example: setting complex " "password, enabling MFA)" msgstr "" +"为了保护您和公司的安全,请妥善保管您的账号、密码和密钥等重要敏感信息;(如:" +"设置复杂密码,并启用 MFA 多因子认证)" #: users/forms/profile.py:77 msgid "Finish" -msgstr "" +msgstr "完成" #: users/forms/profile.py:84 msgid "New password" -msgstr "" +msgstr "新密码" #: users/forms/profile.py:89 msgid "Confirm password" -msgstr "" +msgstr "确认密码" #: users/forms/profile.py:97 msgid "Password does not match" -msgstr "" +msgstr "密码不一致" #: users/forms/profile.py:118 msgid "Old password" -msgstr "" +msgstr "原来密码" #: users/forms/profile.py:128 msgid "Old password error" -msgstr "" +msgstr "原来密码错误" #: users/forms/profile.py:138 msgid "Automatically configure and download the SSH key" -msgstr "" +msgstr "自动配置并下载SSH密钥" #: users/forms/profile.py:140 msgid "ssh public key" -msgstr "" +msgstr "SSH公钥" #: users/forms/profile.py:141 msgid "ssh-rsa AAAA..." -msgstr "" +msgstr "ssh-rsa AAAA..." #: users/forms/profile.py:142 msgid "Paste your id_rsa.pub here." -msgstr "" +msgstr "复制你的公钥到这里" #: users/forms/profile.py:155 msgid "Public key should not be the same as your old one." -msgstr "" +msgstr "不能和原来的密钥相同" #: users/forms/profile.py:159 users/serializers/profile.py:100 #: users/serializers/profile.py:183 users/serializers/profile.py:210 msgid "Not a valid ssh public key" -msgstr "" +msgstr "SSH密钥不合法" #: users/forms/profile.py:170 users/models/user.py:708 msgid "Public key" -msgstr "" +msgstr "SSH公钥" #: users/models/user.py:561 msgid "Force enable" -msgstr "" +msgstr "强制启用" #: users/models/user.py:631 msgid "Local" -msgstr "" +msgstr "数据库" #: users/models/user.py:687 users/serializers/user.py:204 msgid "Is service account" -msgstr "" +msgstr "服务账号" #: users/models/user.py:689 msgid "Avatar" -msgstr "" +msgstr "头像" #: users/models/user.py:692 msgid "Wechat" -msgstr "" +msgstr "微信" #: users/models/user.py:695 msgid "Phone" -msgstr "" +msgstr "手机" #: users/models/user.py:701 msgid "OTP secret key" -msgstr "" +msgstr "OTP 秘钥" #: users/models/user.py:705 msgid "Private key" -msgstr "" +msgstr "ssh私钥" #: users/models/user.py:711 msgid "Secret key" -msgstr "" +msgstr "Secret key" #: users/models/user.py:716 users/serializers/profile.py:149 #: users/serializers/user.py:201 msgid "Is first login" -msgstr "" +msgstr "首次登录" #: users/models/user.py:727 msgid "Source" -msgstr "" +msgstr "来源" #: users/models/user.py:731 msgid "Date password last updated" -msgstr "" +msgstr "最后更新密码日期" #: users/models/user.py:734 msgid "Need update password" -msgstr "" +msgstr "需要更新密码" #: users/models/user.py:909 msgid "Can invite user" -msgstr "" +msgstr "可以邀请用户" #: users/models/user.py:910 msgid "Can remove user" -msgstr "" +msgstr "可以移除用户" #: users/models/user.py:911 msgid "Can match user" -msgstr "" +msgstr "可以匹配用户" #: users/models/user.py:920 msgid "Administrator" -msgstr "" +msgstr "管理员" #: users/models/user.py:923 msgid "Administrator is the super user of system" -msgstr "" +msgstr "Administrator是初始的超级管理员" #: users/models/user.py:948 msgid "User password history" -msgstr "" +msgstr "用户密码历史" #: users/notifications.py:55 #: users/templates/users/_msg_password_expire_reminder.html:17 #: users/templates/users/reset_password.html:5 #: users/templates/users/reset_password.html:6 msgid "Reset password" -msgstr "" +msgstr "重置密码" #: users/notifications.py:85 users/views/profile/reset.py:194 msgid "Reset password success" -msgstr "" +msgstr "重置密码成功" #: users/notifications.py:117 msgid "Reset public key success" -msgstr "" +msgstr "重置公钥成功" #: users/notifications.py:143 msgid "Password is about expire" -msgstr "" +msgstr "密码即将过期" #: users/notifications.py:171 msgid "Account is about expire" -msgstr "" +msgstr "账号即将过期" #: users/notifications.py:193 msgid "Reset SSH Key" -msgstr "" +msgstr "重置 SSH 密钥" #: users/notifications.py:214 msgid "Reset MFA" -msgstr "" +msgstr "重置 MFA" #: users/serializers/profile.py:30 msgid "The old password is incorrect" -msgstr "" +msgstr "旧密码错误" #: users/serializers/profile.py:37 users/serializers/profile.py:197 msgid "Password does not match security rules" -msgstr "" +msgstr "密码不满足安全规则" #: users/serializers/profile.py:41 msgid "The new password cannot be the last {} passwords" -msgstr "" +msgstr "新密码不能是最近 {} 次的密码" #: users/serializers/profile.py:49 users/serializers/profile.py:71 msgid "The newly set password is inconsistent" -msgstr "" +msgstr "两次密码不一致" #: users/serializers/user.py:30 msgid "System roles" -msgstr "" +msgstr "系统角色" #: users/serializers/user.py:35 msgid "Org roles" -msgstr "" +msgstr "组织角色" #: users/serializers/user.py:38 msgid "System roles display" -msgstr "" +msgstr "系统角色显示" #: users/serializers/user.py:40 msgid "Org roles display" -msgstr "" +msgstr "组织角色显示" #: users/serializers/user.py:90 #: xpack/plugins/change_auth_plan/models/base.py:35 #: xpack/plugins/change_auth_plan/serializers/base.py:27 msgid "Password strategy" -msgstr "" +msgstr "密码策略" #: users/serializers/user.py:92 msgid "MFA enabled" -msgstr "" +msgstr "MFA 已启用" #: users/serializers/user.py:94 msgid "MFA force enabled" -msgstr "" +msgstr "强制 MFA" #: users/serializers/user.py:97 msgid "MFA level display" -msgstr "" +msgstr "MFA 等级名称" #: users/serializers/user.py:99 msgid "Login blocked" -msgstr "" +msgstr "登录被阻塞" #: users/serializers/user.py:102 msgid "Can public key authentication" -msgstr "" +msgstr "能否公钥认证" #: users/serializers/user.py:206 msgid "Avatar url" -msgstr "" +msgstr "头像路径" #: users/serializers/user.py:208 msgid "Groups name" -msgstr "" +msgstr "用户组名" #: users/serializers/user.py:209 msgid "Source name" -msgstr "" +msgstr "用户来源名" #: users/serializers/user.py:210 msgid "Organization role name" -msgstr "" +msgstr "组织角色名称" #: users/serializers/user.py:211 msgid "Super role name" -msgstr "" +msgstr "超级角色名称" #: users/serializers/user.py:212 msgid "Total role name" -msgstr "" +msgstr "汇总角色名称" #: users/serializers/user.py:214 msgid "Is wecom bound" -msgstr "" +msgstr "是否绑定了企业微信" #: users/serializers/user.py:215 msgid "Is dingtalk bound" -msgstr "" +msgstr "是否绑定了钉钉" #: users/serializers/user.py:216 msgid "Is feishu bound" -msgstr "" +msgstr "是否绑定了飞书" #: users/serializers/user.py:217 msgid "Is OTP bound" -msgstr "" +msgstr "是否绑定了虚拟 MFA" #: users/serializers/user.py:219 msgid "System role name" -msgstr "" +msgstr "系统角色名称" #: users/serializers/user.py:325 msgid "Select users" -msgstr "" +msgstr "选择用户" #: users/serializers/user.py:326 msgid "For security, only list several users" -msgstr "" +msgstr "为了安全,仅列出几个用户" #: users/serializers/user.py:362 msgid "name not unique" -msgstr "" +msgstr "名称重复" #: users/templates/users/_msg_account_expire_reminder.html:7 msgid "Your account will expire in" -msgstr "" +msgstr "您的账号即将过期" #: users/templates/users/_msg_account_expire_reminder.html:8 msgid "" "In order not to affect your normal work, please contact the administrator " "for confirmation." msgstr "" +"为了不影响您正常工作,请联系管理员确认。\n" +" " #: users/templates/users/_msg_password_expire_reminder.html:7 msgid "Your password will expire in" -msgstr "" +msgstr "您的密码将过期" #: users/templates/users/_msg_password_expire_reminder.html:8 msgid "" "For your account security, please click on the link below to update your " "password in time" -msgstr "" +msgstr "为了您的账号安全,请点击下面的链接及时更新密码" #: users/templates/users/_msg_password_expire_reminder.html:11 msgid "Click here update password" -msgstr "" +msgstr "点击这里更新密码" #: users/templates/users/_msg_password_expire_reminder.html:16 msgid "If your password has expired, please click the link below to" -msgstr "" +msgstr "如果你的密码已过期,请点击" #: users/templates/users/_msg_reset_mfa.html:7 msgid "Your MFA has been reset by site administrator" -msgstr "" +msgstr "你的 MFA 已经被管理员重置" #: users/templates/users/_msg_reset_mfa.html:8 #: users/templates/users/_msg_reset_ssh_key.html:8 msgid "Please click the link below to set" -msgstr "" +msgstr "请点击下面链接设置" #: users/templates/users/_msg_reset_mfa.html:11 #: users/templates/users/_msg_reset_ssh_key.html:11 msgid "Click here set" -msgstr "" +msgstr "点击这里设置" #: users/templates/users/_msg_reset_ssh_key.html:7 msgid "Your ssh public key has been reset by site administrator" -msgstr "" +msgstr "你的 SSH 密钥已经被管理员重置" #: users/templates/users/_msg_user_created.html:15 msgid "click here to set your password" -msgstr "" +msgstr "点击这里设置密码" #: users/templates/users/forgot_password.html:32 msgid "Input your email account, that will send a email to your" -msgstr "" +msgstr "输入您的邮箱, 将会发一封重置邮件到您的邮箱中" #: users/templates/users/forgot_password.html:35 msgid "" "Enter your mobile number and a verification code will be sent to your phone" -msgstr "" +msgstr "输入您的手机号码,验证码将发送到您的手机" #: users/templates/users/forgot_password.html:57 msgid "Email account" -msgstr "" +msgstr "邮箱账号" #: users/templates/users/forgot_password.html:61 msgid "Mobile number" -msgstr "" +msgstr "手机号码" #: users/templates/users/forgot_password.html:68 msgid "Send" -msgstr "" +msgstr "发送" #: users/templates/users/forgot_password.html:72 #: users/templates/users/forgot_password_previewing.html:30 msgid "Submit" -msgstr "" +msgstr "提交" #: users/templates/users/forgot_password_previewing.html:21 msgid "Please enter the username for which you want to retrieve the password" -msgstr "" +msgstr "请输入您需要找回密码的用户名" #: users/templates/users/mfa_setting.html:24 msgid "Enable MFA" -msgstr "" +msgstr "启用 MFA 多因子认证" #: users/templates/users/mfa_setting.html:30 msgid "MFA force enable, cannot disable" -msgstr "" +msgstr "MFA 已强制启用,无法禁用" #: users/templates/users/mfa_setting.html:48 msgid "MFA setting" -msgstr "" +msgstr "设置 MFA 多因子认证" #: users/templates/users/reset_password.html:23 msgid "Your password must satisfy" -msgstr "" +msgstr "您的密码必须满足:" #: users/templates/users/reset_password.html:24 msgid "Password strength" -msgstr "" +msgstr "密码强度:" #: users/templates/users/reset_password.html:48 msgid "Very weak" -msgstr "" +msgstr "很弱" #: users/templates/users/reset_password.html:49 msgid "Weak" -msgstr "" +msgstr "弱" #: users/templates/users/reset_password.html:51 msgid "Medium" -msgstr "" +msgstr "一般" #: users/templates/users/reset_password.html:52 msgid "Strong" -msgstr "" +msgstr "强" #: users/templates/users/reset_password.html:53 msgid "Very strong" -msgstr "" +msgstr "很强" #: users/templates/users/user_otp_check_password.html:6 msgid "Enable OTP" -msgstr "" +msgstr "启用 MFA(OTP)" #: users/templates/users/user_otp_enable_bind.html:6 msgid "Bind one-time password authenticator" -msgstr "" +msgstr "绑定MFA验证器" #: users/templates/users/user_otp_enable_bind.html:13 msgid "" "Use the MFA Authenticator application to scan the following qr code for a 6-" "bit verification code" -msgstr "" +msgstr "使用 MFA 验证器应用扫描以下二维码,获取6位验证码" #: users/templates/users/user_otp_enable_bind.html:22 #: users/templates/users/user_verify_mfa.html:27 msgid "Six figures" -msgstr "" +msgstr "6 位数字" #: users/templates/users/user_otp_enable_install_app.html:6 msgid "Install app" -msgstr "" +msgstr "安装应用" #: users/templates/users/user_otp_enable_install_app.html:13 msgid "" "Download and install the MFA Authenticator application on your phone or " "applet of WeChat" -msgstr "" +msgstr "请在手机端或微信小程序下载并安装 MFA 验证器应用" #: users/templates/users/user_otp_enable_install_app.html:18 msgid "Android downloads" -msgstr "" +msgstr "Android手机下载" #: users/templates/users/user_otp_enable_install_app.html:23 msgid "iPhone downloads" -msgstr "" +msgstr "iPhone手机下载" #: users/templates/users/user_otp_enable_install_app.html:26 msgid "" "After installation, click the next step to enter the binding page (if " "installed, go to the next step directly)." -msgstr "" +msgstr "安装完成后点击下一步进入绑定页面(如已安装,直接进入下一步)" #: users/templates/users/user_password_verify.html:8 #: users/templates/users/user_password_verify.html:9 msgid "Verify password" -msgstr "" +msgstr "校验密码" #: users/templates/users/user_verify_mfa.html:9 msgid "Authenticate" -msgstr "" +msgstr "验证身份" #: users/templates/users/user_verify_mfa.html:15 msgid "" "The account protection has been opened, please complete the following " "operations according to the prompts" -msgstr "" +msgstr "账号保护已开启,请根据提示完成以下操作" #: users/templates/users/user_verify_mfa.html:17 msgid "Open MFA Authenticator and enter the 6-bit dynamic code" -msgstr "" +msgstr "请打开 MFA 验证器,输入 6 位动态码" #: users/views/profile/otp.py:87 msgid "Already bound" -msgstr "" +msgstr "已经绑定" #: users/views/profile/otp.py:88 msgid "MFA already bound, disable first, then bound" -msgstr "" +msgstr "MFA(OTP) 已经绑定,请先禁用,再绑定" #: users/views/profile/otp.py:115 msgid "OTP enable success" -msgstr "" +msgstr "MFA(OTP) 启用成功" #: users/views/profile/otp.py:116 msgid "OTP enable success, return login page" -msgstr "" +msgstr "MFA(OTP) 启用成功,返回到登录页面" #: users/views/profile/otp.py:158 msgid "Disable OTP" -msgstr "" +msgstr "禁用虚拟 MFA(OTP)" #: users/views/profile/otp.py:164 msgid "OTP disable success" -msgstr "" +msgstr "MFA(OTP) 禁用成功" #: users/views/profile/otp.py:165 msgid "OTP disable success, return login page" -msgstr "" +msgstr "MFA(OTP) 禁用成功,返回登录页面" #: users/views/profile/password.py:36 users/views/profile/password.py:41 msgid "Password invalid" -msgstr "" +msgstr "用户名或密码无效" #: users/views/profile/reset.py:47 msgid "" "Non-local users can log in only from third-party platforms and cannot change " "their passwords: {}" -msgstr "" +msgstr "非本地用户仅允许从第三方平台登录,不支持修改密码: {}" #: users/views/profile/reset.py:149 users/views/profile/reset.py:160 msgid "Token invalid or expired" -msgstr "" +msgstr "Token错误或失效" #: users/views/profile/reset.py:165 msgid "User auth from {}, go there change password" -msgstr "" +msgstr "用户认证源来自 {}, 请去相应系统修改密码" #: users/views/profile/reset.py:172 msgid "* Your password does not meet the requirements" -msgstr "" +msgstr "* 您的密码不符合要求" #: users/views/profile/reset.py:178 msgid "* The new password cannot be the last {} passwords" -msgstr "" +msgstr "* 新密码不能是最近 {} 次的密码" #: users/views/profile/reset.py:195 msgid "Reset password success, return to login page" -msgstr "" +msgstr "重置密码成功,返回到登录页面" #: xpack/apps.py:8 msgid "XPACK" -msgstr "" +msgstr "XPack" #: xpack/plugins/change_auth_plan/meta.py:9 #: xpack/plugins/change_auth_plan/models/asset.py:124 msgid "Change auth plan" -msgstr "" +msgstr "改密计划" #: xpack/plugins/change_auth_plan/models/app.py:45 #: xpack/plugins/change_auth_plan/models/app.py:94 msgid "Application change auth plan" -msgstr "" +msgstr "应用改密计划" #: xpack/plugins/change_auth_plan/models/app.py:98 #: xpack/plugins/change_auth_plan/models/app.py:150 msgid "Application change auth plan execution" -msgstr "" +msgstr "应用改密计划执行" #: xpack/plugins/change_auth_plan/models/app.py:143 msgid "App" -msgstr "" +msgstr "应用" #: xpack/plugins/change_auth_plan/models/app.py:155 msgid "Application change auth plan task" -msgstr "" +msgstr "应用改密计划任务" #: xpack/plugins/change_auth_plan/models/app.py:179 #: xpack/plugins/change_auth_plan/models/asset.py:264 msgid "Password cannot be set to blank, exit. " -msgstr "" +msgstr "密码不能设置为空, 退出. " #: xpack/plugins/change_auth_plan/models/asset.py:68 msgid "Asset change auth plan" -msgstr "" +msgstr "资产改密计划" #: xpack/plugins/change_auth_plan/models/asset.py:135 msgid "Asset change auth plan execution" -msgstr "" +msgstr "资产改密计划执行" #: xpack/plugins/change_auth_plan/models/asset.py:211 msgid "Change auth plan execution" -msgstr "" +msgstr "改密计划执行" #: xpack/plugins/change_auth_plan/models/asset.py:218 msgid "Asset change auth plan task" -msgstr "" +msgstr "资产改密计划任务" #: xpack/plugins/change_auth_plan/models/asset.py:253 msgid "This asset does not have a privileged user set: " -msgstr "" +msgstr "该资产没有设置特权用户: " #: xpack/plugins/change_auth_plan/models/asset.py:259 msgid "" "The password and key of the current asset privileged user cannot be changed: " -msgstr "" +msgstr "不能更改当前资产特权用户的密码及密钥: " #: xpack/plugins/change_auth_plan/models/asset.py:270 msgid "Public key cannot be set to null, exit. " -msgstr "" +msgstr "公钥不能设置为空, 退出. " #: xpack/plugins/change_auth_plan/models/base.py:114 msgid "Change auth plan snapshot" -msgstr "" +msgstr "改密计划快照" #: xpack/plugins/change_auth_plan/models/base.py:184 msgid "Preflight check" -msgstr "" +msgstr "改密前的校验" #: xpack/plugins/change_auth_plan/models/base.py:185 msgid "Change auth" -msgstr "" +msgstr "执行改密" #: xpack/plugins/change_auth_plan/models/base.py:186 msgid "Verify auth" -msgstr "" +msgstr "验证密码/密钥" #: xpack/plugins/change_auth_plan/models/base.py:187 msgid "Keep auth" -msgstr "" +msgstr "保存密码/密钥" #: xpack/plugins/change_auth_plan/models/base.py:195 msgid "Step" -msgstr "" +msgstr "步骤" #: xpack/plugins/change_auth_plan/serializers/asset.py:30 msgid "Change Password" -msgstr "" +msgstr "更改密码" #: xpack/plugins/change_auth_plan/serializers/asset.py:31 msgid "Change SSH Key" -msgstr "" +msgstr "修改 SSH Key" #: xpack/plugins/change_auth_plan/serializers/base.py:44 msgid "Run times" -msgstr "" +msgstr "执行次数" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:236 msgid "After many attempts to change the secret, it still failed" -msgstr "" +msgstr "多次尝试改密后, 依然失败" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:255 msgid "Invalid/incorrect password" -msgstr "" +msgstr "无效/错误 密码" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:257 msgid "Failed to connect to the host" -msgstr "" +msgstr "连接主机失败" #: xpack/plugins/change_auth_plan/task_handlers/base/handler.py:259 msgid "Data could not be sent to remote" -msgstr "" +msgstr "无法将数据发送到远程" #: xpack/plugins/cloud/api.py:40 msgid "Test connection successful" -msgstr "" +msgstr "测试成功" #: xpack/plugins/cloud/api.py:42 msgid "Test connection failed: {}" -msgstr "" +msgstr "测试连接失败:{}" #: xpack/plugins/cloud/const.py:8 msgid "Alibaba Cloud" -msgstr "" +msgstr "阿里云" #: xpack/plugins/cloud/const.py:9 msgid "AWS (International)" -msgstr "" +msgstr "AWS (国际)" #: xpack/plugins/cloud/const.py:10 msgid "AWS (China)" -msgstr "" +msgstr "AWS (中国)" #: xpack/plugins/cloud/const.py:11 msgid "Azure (China)" -msgstr "" +msgstr "Azure (中国)" #: xpack/plugins/cloud/const.py:12 msgid "Azure (International)" -msgstr "" +msgstr "Azure (国际)" #: xpack/plugins/cloud/const.py:14 msgid "Baidu Cloud" -msgstr "" +msgstr "百度云" #: xpack/plugins/cloud/const.py:15 msgid "JD Cloud" -msgstr "" +msgstr "京东云" #: xpack/plugins/cloud/const.py:16 msgid "KingSoft Cloud" -msgstr "" +msgstr "金山云" #: xpack/plugins/cloud/const.py:17 msgid "Tencent Cloud" -msgstr "" +msgstr "腾讯云" #: xpack/plugins/cloud/const.py:18 msgid "Tencent Cloud (Lighthouse)" -msgstr "" +msgstr "腾讯云(轻量服务器应用)" #: xpack/plugins/cloud/const.py:19 msgid "VMware" -msgstr "" +msgstr "VMware" #: xpack/plugins/cloud/const.py:20 xpack/plugins/cloud/providers/nutanix.py:13 msgid "Nutanix" -msgstr "" +msgstr "Nutanix" #: xpack/plugins/cloud/const.py:21 msgid "Huawei Private Cloud" -msgstr "" +msgstr "华为私有云" #: xpack/plugins/cloud/const.py:22 msgid "Qingyun Private Cloud" -msgstr "" +msgstr "青云私有云" #: xpack/plugins/cloud/const.py:23 msgid "CTYun Private Cloud" -msgstr "" +msgstr "天翼私有云" #: xpack/plugins/cloud/const.py:24 msgid "OpenStack" -msgstr "" +msgstr "OpenStack" #: xpack/plugins/cloud/const.py:25 msgid "Google Cloud Platform" -msgstr "" +msgstr "谷歌云" #: xpack/plugins/cloud/const.py:26 msgid "Fusion Compute" @@ -6488,374 +6579,374 @@ msgstr "" #: xpack/plugins/cloud/const.py:31 msgid "Private IP" -msgstr "" +msgstr "私有IP" #: xpack/plugins/cloud/const.py:32 msgid "Public IP" -msgstr "" +msgstr "公网IP" #: xpack/plugins/cloud/const.py:36 msgid "Instance name" -msgstr "" +msgstr "实例名称" #: xpack/plugins/cloud/const.py:37 msgid "Instance name and Partial IP" -msgstr "" +msgstr "实例名称和部分IP" #: xpack/plugins/cloud/const.py:42 msgid "Succeed" -msgstr "" +msgstr "成功" #: xpack/plugins/cloud/const.py:46 msgid "Unsync" -msgstr "" +msgstr "未同步" #: xpack/plugins/cloud/const.py:47 msgid "New Sync" -msgstr "" +msgstr "新同步" #: xpack/plugins/cloud/const.py:48 msgid "Synced" -msgstr "" +msgstr "已同步" #: xpack/plugins/cloud/const.py:49 msgid "Released" -msgstr "" +msgstr "已释放" #: xpack/plugins/cloud/meta.py:9 msgid "Cloud center" -msgstr "" +msgstr "云管中心" #: xpack/plugins/cloud/models.py:32 msgid "Provider" -msgstr "" +msgstr "云服务商" #: xpack/plugins/cloud/models.py:36 msgid "Validity" -msgstr "" +msgstr "有效" #: xpack/plugins/cloud/models.py:41 msgid "Cloud account" -msgstr "" +msgstr "云账号" #: xpack/plugins/cloud/models.py:43 msgid "Test cloud account" -msgstr "" +msgstr "测试云账号" #: xpack/plugins/cloud/models.py:90 xpack/plugins/cloud/serializers/task.py:38 msgid "Regions" -msgstr "" +msgstr "地域" #: xpack/plugins/cloud/models.py:93 msgid "Hostname strategy" -msgstr "" +msgstr "主机名策略" #: xpack/plugins/cloud/models.py:102 xpack/plugins/cloud/serializers/task.py:72 msgid "Unix admin user" -msgstr "" +msgstr "Unix 管理员" #: xpack/plugins/cloud/models.py:106 xpack/plugins/cloud/serializers/task.py:73 msgid "Windows admin user" -msgstr "" +msgstr "Windows 管理员" #: xpack/plugins/cloud/models.py:112 xpack/plugins/cloud/serializers/task.py:46 msgid "IP network segment group" -msgstr "" +msgstr "IP网段组" #: xpack/plugins/cloud/models.py:115 xpack/plugins/cloud/serializers/task.py:51 msgid "Sync IP type" -msgstr "" +msgstr "同步IP类型" #: xpack/plugins/cloud/models.py:118 xpack/plugins/cloud/serializers/task.py:76 msgid "Always update" -msgstr "" +msgstr "总是更新" #: xpack/plugins/cloud/models.py:124 msgid "Date last sync" -msgstr "" +msgstr "最后同步日期" #: xpack/plugins/cloud/models.py:129 xpack/plugins/cloud/models.py:170 msgid "Sync instance task" -msgstr "" +msgstr "同步实例任务" #: xpack/plugins/cloud/models.py:181 xpack/plugins/cloud/models.py:229 msgid "Date sync" -msgstr "" +msgstr "同步日期" #: xpack/plugins/cloud/models.py:185 msgid "Sync instance task execution" -msgstr "" +msgstr "同步实例任务执行" #: xpack/plugins/cloud/models.py:209 msgid "Sync task" -msgstr "" +msgstr "同步任务" #: xpack/plugins/cloud/models.py:213 msgid "Sync instance task history" -msgstr "" +msgstr "同步实例任务历史" #: xpack/plugins/cloud/models.py:216 msgid "Instance" -msgstr "" +msgstr "实例" #: xpack/plugins/cloud/models.py:233 msgid "Sync instance detail" -msgstr "" +msgstr "同步实例详情" #: xpack/plugins/cloud/providers/aws_international.py:17 msgid "China (Beijing)" -msgstr "" +msgstr "中国(北京)" #: xpack/plugins/cloud/providers/aws_international.py:18 msgid "China (Ningxia)" -msgstr "" +msgstr "中国(宁夏)" #: xpack/plugins/cloud/providers/aws_international.py:21 msgid "US East (Ohio)" -msgstr "" +msgstr "美国东部(俄亥俄州)" #: xpack/plugins/cloud/providers/aws_international.py:22 msgid "US East (N. Virginia)" -msgstr "" +msgstr "美国东部(弗吉尼亚北部)" #: xpack/plugins/cloud/providers/aws_international.py:23 msgid "US West (N. California)" -msgstr "" +msgstr "美国西部(加利福尼亚北部)" #: xpack/plugins/cloud/providers/aws_international.py:24 msgid "US West (Oregon)" -msgstr "" +msgstr "美国西部(俄勒冈)" #: xpack/plugins/cloud/providers/aws_international.py:25 msgid "Africa (Cape Town)" -msgstr "" +msgstr "非洲(开普敦)" #: xpack/plugins/cloud/providers/aws_international.py:26 msgid "Asia Pacific (Hong Kong)" -msgstr "" +msgstr "亚太地区(香港)" #: xpack/plugins/cloud/providers/aws_international.py:27 msgid "Asia Pacific (Mumbai)" -msgstr "" +msgstr "亚太地区(孟买)" #: xpack/plugins/cloud/providers/aws_international.py:28 msgid "Asia Pacific (Osaka-Local)" -msgstr "" +msgstr "亚太区域(大阪当地)" #: xpack/plugins/cloud/providers/aws_international.py:29 msgid "Asia Pacific (Seoul)" -msgstr "" +msgstr "亚太区域(首尔)" #: xpack/plugins/cloud/providers/aws_international.py:30 msgid "Asia Pacific (Singapore)" -msgstr "" +msgstr "亚太区域(新加坡)" #: xpack/plugins/cloud/providers/aws_international.py:31 msgid "Asia Pacific (Sydney)" -msgstr "" +msgstr "亚太区域(悉尼)" #: xpack/plugins/cloud/providers/aws_international.py:32 msgid "Asia Pacific (Tokyo)" -msgstr "" +msgstr "亚太区域(东京)" #: xpack/plugins/cloud/providers/aws_international.py:33 msgid "Canada (Central)" -msgstr "" +msgstr "加拿大(中部)" #: xpack/plugins/cloud/providers/aws_international.py:34 msgid "Europe (Frankfurt)" -msgstr "" +msgstr "欧洲(法兰克福)" #: xpack/plugins/cloud/providers/aws_international.py:35 msgid "Europe (Ireland)" -msgstr "" +msgstr "欧洲(爱尔兰)" #: xpack/plugins/cloud/providers/aws_international.py:36 msgid "Europe (London)" -msgstr "" +msgstr "欧洲(伦敦)" #: xpack/plugins/cloud/providers/aws_international.py:37 msgid "Europe (Milan)" -msgstr "" +msgstr "欧洲(米兰)" #: xpack/plugins/cloud/providers/aws_international.py:38 msgid "Europe (Paris)" -msgstr "" +msgstr "欧洲(巴黎)" #: xpack/plugins/cloud/providers/aws_international.py:39 msgid "Europe (Stockholm)" -msgstr "" +msgstr "欧洲(斯德哥尔摩)" #: xpack/plugins/cloud/providers/aws_international.py:40 msgid "Middle East (Bahrain)" -msgstr "" +msgstr "中东(巴林)" #: xpack/plugins/cloud/providers/aws_international.py:41 msgid "South America (São Paulo)" -msgstr "" +msgstr "南美洲(圣保罗)" #: xpack/plugins/cloud/providers/baiducloud.py:54 #: xpack/plugins/cloud/providers/jdcloud.py:127 msgid "CN North-Beijing" -msgstr "" +msgstr "华北-北京" #: xpack/plugins/cloud/providers/baiducloud.py:55 #: xpack/plugins/cloud/providers/huaweicloud.py:40 #: xpack/plugins/cloud/providers/jdcloud.py:130 msgid "CN South-Guangzhou" -msgstr "" +msgstr "华南-广州" #: xpack/plugins/cloud/providers/baiducloud.py:56 msgid "CN East-Suzhou" -msgstr "" +msgstr "华东-苏州" #: xpack/plugins/cloud/providers/baiducloud.py:57 #: xpack/plugins/cloud/providers/huaweicloud.py:48 msgid "CN-Hong Kong" -msgstr "" +msgstr "中国-香港" #: xpack/plugins/cloud/providers/baiducloud.py:58 msgid "CN Center-Wuhan" -msgstr "" +msgstr "华中-武汉" #: xpack/plugins/cloud/providers/baiducloud.py:59 msgid "CN North-Baoding" -msgstr "" +msgstr "华北-保定" #: xpack/plugins/cloud/providers/baiducloud.py:60 #: xpack/plugins/cloud/providers/jdcloud.py:129 msgid "CN East-Shanghai" -msgstr "" +msgstr "华东-上海" #: xpack/plugins/cloud/providers/baiducloud.py:61 #: xpack/plugins/cloud/providers/huaweicloud.py:47 msgid "AP-Singapore" -msgstr "" +msgstr "亚太-新加坡" #: xpack/plugins/cloud/providers/huaweicloud.py:35 msgid "AF-Johannesburg" -msgstr "" +msgstr "非洲-约翰内斯堡" #: xpack/plugins/cloud/providers/huaweicloud.py:36 msgid "CN North-Beijing4" -msgstr "" +msgstr "华北-北京4" #: xpack/plugins/cloud/providers/huaweicloud.py:37 msgid "CN North-Beijing1" -msgstr "" +msgstr "华北-北京1" #: xpack/plugins/cloud/providers/huaweicloud.py:38 msgid "CN East-Shanghai2" -msgstr "" +msgstr "华东-上海2" #: xpack/plugins/cloud/providers/huaweicloud.py:39 msgid "CN East-Shanghai1" -msgstr "" +msgstr "华东-上海1" #: xpack/plugins/cloud/providers/huaweicloud.py:41 msgid "LA-Mexico City1" -msgstr "" +msgstr "拉美-墨西哥城一" #: xpack/plugins/cloud/providers/huaweicloud.py:42 msgid "LA-Santiago" -msgstr "" +msgstr "拉美-圣地亚哥" #: xpack/plugins/cloud/providers/huaweicloud.py:43 msgid "LA-Sao Paulo1" -msgstr "" +msgstr "拉美-圣保罗一" #: xpack/plugins/cloud/providers/huaweicloud.py:44 msgid "EU-Paris" -msgstr "" +msgstr "欧洲-巴黎" #: xpack/plugins/cloud/providers/huaweicloud.py:45 msgid "CN Southwest-Guiyang1" -msgstr "" +msgstr "西南-贵阳1" #: xpack/plugins/cloud/providers/huaweicloud.py:46 msgid "AP-Bangkok" -msgstr "" +msgstr "亚太-曼谷" #: xpack/plugins/cloud/providers/huaweicloud.py:50 msgid "CN Northeast-Dalian" -msgstr "" +msgstr "华北-大连" #: xpack/plugins/cloud/providers/huaweicloud.py:51 msgid "CN North-Ulanqab1" -msgstr "" +msgstr "华北-乌兰察布一" #: xpack/plugins/cloud/providers/huaweicloud.py:52 msgid "CN South-Guangzhou-InvitationOnly" -msgstr "" +msgstr "华南-广州-友好用户环境" #: xpack/plugins/cloud/providers/jdcloud.py:128 msgid "CN East-Suqian" -msgstr "" +msgstr "华东-宿迁" #: xpack/plugins/cloud/serializers/account.py:65 msgid "Validity display" -msgstr "" +msgstr "有效性显示" #: xpack/plugins/cloud/serializers/account.py:66 msgid "Provider display" -msgstr "" +msgstr "服务商显示" #: xpack/plugins/cloud/serializers/account_attrs.py:35 msgid "Client ID" -msgstr "" +msgstr "客户端 ID" #: xpack/plugins/cloud/serializers/account_attrs.py:41 msgid "Tenant ID" -msgstr "" +msgstr "租户 ID" #: xpack/plugins/cloud/serializers/account_attrs.py:44 msgid "Subscription ID" -msgstr "" +msgstr "订阅 ID" #: xpack/plugins/cloud/serializers/account_attrs.py:95 #: xpack/plugins/cloud/serializers/account_attrs.py:100 #: xpack/plugins/cloud/serializers/account_attrs.py:116 #: xpack/plugins/cloud/serializers/account_attrs.py:141 msgid "API Endpoint" -msgstr "" +msgstr "API 端点" #: xpack/plugins/cloud/serializers/account_attrs.py:106 msgid "Auth url" -msgstr "" +msgstr "认证地址" #: xpack/plugins/cloud/serializers/account_attrs.py:107 msgid "eg: http://openstack.example.com:5000/v3" -msgstr "" +msgstr "如: http://openstack.example.com:5000/v3" #: xpack/plugins/cloud/serializers/account_attrs.py:110 msgid "User domain" -msgstr "" +msgstr "用户域" #: xpack/plugins/cloud/serializers/account_attrs.py:117 msgid "Cert File" -msgstr "" +msgstr "证书文件" #: xpack/plugins/cloud/serializers/account_attrs.py:118 msgid "Key File" -msgstr "" +msgstr "秘钥文件" #: xpack/plugins/cloud/serializers/account_attrs.py:134 msgid "Service account key" -msgstr "" +msgstr "服务账号密钥" #: xpack/plugins/cloud/serializers/account_attrs.py:135 msgid "The file is in JSON format" -msgstr "" +msgstr "JSON 格式的文件" #: xpack/plugins/cloud/serializers/account_attrs.py:148 msgid "IP address invalid `{}`, {}" -msgstr "" +msgstr "IP 地址无效: `{}`, {}" #: xpack/plugins/cloud/serializers/account_attrs.py:154 msgid "" "Format for comma-delimited string,Such as: 192.168.1.0/24, " "10.0.0.0-10.0.0.255" -msgstr "" +msgstr "格式为逗号分隔的字符串,如:192.168.1.0/24,10.0.0.0-10.0.0.255" #: xpack/plugins/cloud/serializers/account_attrs.py:158 msgid "" @@ -6863,22 +6954,24 @@ msgid "" "synchronization task is executed, only the valid IP address will be " "synchronized.
If the port is 0, all IP addresses are valid." msgstr "" +"端口用来检测 IP 地址的有效性,在同步任务执行时,只会同步有效的 IP 地址。
" +"如果端口为 0,则表示所有 IP 地址均有效。" #: xpack/plugins/cloud/serializers/account_attrs.py:166 msgid "Hostname prefix" -msgstr "" +msgstr "主机名前缀" #: xpack/plugins/cloud/serializers/account_attrs.py:169 msgid "IP segment" -msgstr "" +msgstr "IP 网段" #: xpack/plugins/cloud/serializers/account_attrs.py:173 msgid "Test port" -msgstr "" +msgstr "测试端口" #: xpack/plugins/cloud/serializers/account_attrs.py:176 msgid "Test timeout" -msgstr "" +msgstr "测试超时时间" #: xpack/plugins/cloud/serializers/task.py:29 msgid "" @@ -6888,108 +6981,552 @@ msgid "" "all instances and randomly match IP addresses.
Format for comma-" "delimited string, Such as: 192.168.1.0/24, 10.1.1.1-10.1.1.20" msgstr "" +"只有匹配到 IP 段的实例会被同步。
如果实例包含多个 IP 地址,那么第一个匹配" +"到的 IP 地址将被用作创建的资产的 IP。
默认值 * 表示同步所有实例和随机匹配 " +"IP 地址。
格式为以逗号分隔的字符串,例如:192.168.1.0/24,10.1.1.1-10.1.1.20" #: xpack/plugins/cloud/serializers/task.py:36 msgid "History count" -msgstr "" +msgstr "执行次数" #: xpack/plugins/cloud/serializers/task.py:37 msgid "Instance count" -msgstr "" +msgstr "实例个数" #: xpack/plugins/cloud/serializers/task.py:70 msgid "Linux admin user" -msgstr "" +msgstr "Linux 管理员" #: xpack/plugins/cloud/serializers/task.py:75 #: xpack/plugins/gathered_user/serializers.py:20 msgid "Periodic display" -msgstr "" +msgstr "定时执行" #: xpack/plugins/cloud/utils.py:69 msgid "Account unavailable" -msgstr "" +msgstr "账号无效" #: xpack/plugins/gathered_user/meta.py:11 msgid "Gathered user" -msgstr "" +msgstr "收集用户" #: xpack/plugins/gathered_user/models.py:34 msgid "Gather user task" -msgstr "" +msgstr "收集用户任务" #: xpack/plugins/gathered_user/models.py:80 msgid "gather user task execution" -msgstr "" +msgstr "收集用户执行" #: xpack/plugins/gathered_user/models.py:86 msgid "Assets is empty, please change nodes" -msgstr "" +msgstr "资产为空,请更改节点" #: xpack/plugins/gathered_user/serializers.py:21 msgid "Executed times" -msgstr "" +msgstr "执行次数" #: xpack/plugins/interface/api.py:52 msgid "Restore default successfully." -msgstr "" +msgstr "恢复默认成功!" #: xpack/plugins/interface/meta.py:10 msgid "Interface settings" -msgstr "" +msgstr "界面设置" #: xpack/plugins/interface/models.py:22 msgid "Title of login page" -msgstr "" +msgstr "登录页面标题" #: xpack/plugins/interface/models.py:26 msgid "Image of login page" -msgstr "" +msgstr "登录页面图片" #: xpack/plugins/interface/models.py:30 msgid "Website icon" -msgstr "" +msgstr "网站图标" #: xpack/plugins/interface/models.py:34 msgid "Logo of management page" -msgstr "" +msgstr "管理页面logo" #: xpack/plugins/interface/models.py:38 msgid "Logo of logout page" -msgstr "" +msgstr "退出页面logo" #: xpack/plugins/interface/models.py:40 msgid "Theme" -msgstr "" +msgstr "主题" #: xpack/plugins/interface/models.py:43 xpack/plugins/interface/models.py:84 msgid "Interface setting" -msgstr "" +msgstr "界面设置" #: xpack/plugins/license/api.py:50 msgid "License import successfully" -msgstr "" +msgstr "许可证导入成功" #: xpack/plugins/license/api.py:51 msgid "License is invalid" -msgstr "" +msgstr "无效的许可证" #: xpack/plugins/license/meta.py:11 xpack/plugins/license/models.py:127 msgid "License" -msgstr "" +msgstr "许可证" #: xpack/plugins/license/models.py:71 msgid "Standard edition" -msgstr "" +msgstr "标准版" #: xpack/plugins/license/models.py:73 msgid "Enterprise edition" -msgstr "" +msgstr "企业版" #: xpack/plugins/license/models.py:75 msgid "Ultimate edition" -msgstr "" +msgstr "旗舰版" #: xpack/plugins/license/models.py:77 msgid "Community edition" -msgstr "" +msgstr "社区版" + +#~ msgid "System User" +#~ msgstr "系统用户" + +#~ msgid "" +#~ "Format for comma-delimited string, with * indicating a match all. " +#~ "Protocol options: {}" +#~ msgstr "格式为逗号分隔的字符串, * 表示匹配所有. 可选的协议有: {}" + +#~ msgid "Unsupported protocols: {}" +#~ msgstr "不支持的协议: {}" + +#~ msgid "Remote app" +#~ msgstr "远程应用" + +#~ msgid "Custom" +#~ msgstr "自定义" + +#~ msgid "Can view application account secret" +#~ msgstr "可以查看应用账号密码" + +#~ msgid "Can change application account secret" +#~ msgstr "可以查看应用账号密码" + +#~ msgid "Application user" +#~ msgstr "应用用户" + +#~ msgid "Type display" +#~ msgstr "类型名称" + +#~ msgid "Application display" +#~ msgstr "应用名称" + +#~ msgid "Cluster" +#~ msgstr "集群" + +#~ msgid "CA certificate" +#~ msgstr "CA 证书" + +#~ msgid "Client certificate file" +#~ msgstr "客户端证书" + +#~ msgid "Certificate key file" +#~ msgstr "证书秘钥" + +#~ msgid "Asset Info" +#~ msgstr "资产信息" + +#~ msgid "Application path" +#~ msgstr "应用路径" + +#~ msgid "Target URL" +#~ msgstr "目标URL" + +#~ msgid "Chrome username" +#~ msgstr "Chrome 用户名" + +#~ msgid "Chrome password" +#~ msgstr "Chrome 密码" + +#~ msgid "Operating parameter" +#~ msgstr "运行参数" + +#~ msgid "Target url" +#~ msgstr "目标URL" + +#~ msgid "Mysql workbench username" +#~ msgstr "Mysql 工作台 用户名" + +#~ msgid "Mysql workbench password" +#~ msgstr "Mysql 工作台 密码" + +#~ msgid "Vmware username" +#~ msgstr "Vmware 用户名" + +#~ msgid "Vmware password" +#~ msgstr "Vmware 密码" + +#~ msgid "Base" +#~ msgstr "基础" + +#~ msgid "Can test asset account connectivity" +#~ msgstr "可以测试资产账号连接性" + +#~ msgid "Bandwidth" +#~ msgstr "带宽" + +#~ msgid "Contact" +#~ msgstr "联系人" + +#~ msgid "Intranet" +#~ msgstr "内网" + +#~ msgid "Extranet" +#~ msgstr "外网" + +#~ msgid "Operator" +#~ msgstr "运营商" + +#~ msgid "Default Cluster" +#~ msgstr "默认Cluster" + +#~ msgid "Test gateway" +#~ msgstr "测试网关" + +#~ msgid "User groups" +#~ msgstr "用户组" + +#~ msgid "System user display" +#~ msgstr "系统用户名称" + +#~ msgid "Protocol format should {}/{}" +#~ msgstr "协议格式 {}/{}" + +#~ msgid "Nodes name" +#~ msgstr "节点名称" + +#~ msgid "Labels name" +#~ msgstr "标签名称" + +#~ msgid "Hardware info" +#~ msgstr "硬件信息" + +#~ msgid "Admin user display" +#~ msgstr "特权用户名称" + +#~ msgid "CPU info" +#~ msgstr "CPU信息" + +#~ msgid "Action display" +#~ msgstr "动作名称" + +#~ msgid "Applications amount" +#~ msgstr "应用数量" + +#~ msgid "Gateways count" +#~ msgstr "网关数量" + +#~ msgid "SSH key fingerprint" +#~ msgstr "密钥指纹" + +#~ msgid "Apps amount" +#~ msgstr "应用数量" + +#~ msgid "Nodes amount" +#~ msgstr "节点数量" + +#~ msgid "Login mode display" +#~ msgstr "认证方式名称" + +#~ msgid "Ad domain" +#~ msgstr "Ad 网域" + +#~ msgid "Is asset protocol" +#~ msgstr "资产协议" + +#~ msgid "Only ssh and automatic login system users are supported" +#~ msgstr "仅支持ssh协议和自动登录的系统用户" + +#~ msgid "Username same with user with protocol {} only allow 1" +#~ msgstr "用户名和用户相同的一种协议只允许存在一个" + +#~ msgid "* Automatic login mode must fill in the username." +#~ msgstr "自动登录模式,必须填写用户名" + +#~ msgid "Path should starts with /" +#~ msgstr "路径应该以 / 开头" + +#~ msgid "Password or private key required" +#~ msgstr "密码或密钥密码需要一个" + +#~ msgid "Only ssh protocol system users are allowed" +#~ msgstr "仅允许ssh协议的系统用户" + +#~ msgid "The protocol must be consistent with the current user: {}" +#~ msgstr "协议必须和当前用户保持一致: {}" + +#~ msgid "Only system users with automatic login are allowed" +#~ msgstr "仅允许自动登录的系统用户" + +#~ msgid "System user name" +#~ msgstr "系统用户名称" + +#~ msgid "Asset hostname" +#~ msgstr "资产主机名" + +#~ msgid "The asset {} system platform {} does not support run Ansible tasks" +#~ msgstr "资产 {} 系统平台 {} 不支持运行 Ansible 任务" + +#~ msgid "Test assets connectivity: " +#~ msgstr "测试资产可连接性: " + +#~ msgid "Unreachable" +#~ msgstr "不可达" + +#~ msgid "Reachable" +#~ msgstr "可连接" + +#~ msgid "Get asset info failed: {}" +#~ msgstr "获取资产信息失败:{}" + +#~ msgid "Update asset hardware info: " +#~ msgstr "更新资产硬件信息: " + +#~ msgid "System user is dynamic: {}" +#~ msgstr "系统用户是动态的: {}" + +#~ msgid "Start push system user for platform: [{}]" +#~ msgstr "推送系统用户到平台: [{}]" + +#~ msgid "Hosts count: {}" +#~ msgstr "主机数量: {}" + +#~ msgid "Push system users to asset: " +#~ msgstr "推送系统用户到入资产: " + +#~ msgid "Dynamic system user not support test" +#~ msgstr "动态系统用户不支持测试" + +#~ msgid "Start test system user connectivity for platform: [{}]" +#~ msgstr "开始测试系统用户在该系统平台的可连接性: [{}]" + +#~ msgid "Test system user connectivity: " +#~ msgstr "测试系统用户可连接性: " + +#~ msgid "Test system user connectivity period: " +#~ msgstr "定期测试系统用户可连接性: " + +#~ msgid "Operate display" +#~ msgstr "操作名称" + +#~ msgid "Status display" +#~ msgstr "状态名称" + +#~ msgid "MFA display" +#~ msgstr "MFA名称" + +#~ msgid "Hosts display" +#~ msgstr "主机名称" + +#~ msgid "Run as" +#~ msgstr "运行用户" + +#~ msgid "Run as display" +#~ msgstr "运行用户名称" + +#~ msgid "User not exists" +#~ msgstr "用户不存在" + +#~ msgid "System user not exists" +#~ msgstr "系统用户不存在" + +#~ msgid "Asset not exists" +#~ msgstr "资产不存在" + +#~ msgid "User has no permission to access asset or permission expired" +#~ msgstr "用户没有权限访问资产或权限已过期" + +#~ msgid "User has no permission to access application or permission expired" +#~ msgstr "用户没有权限访问应用或权限已过期" + +#~ msgid "Asset or application required" +#~ msgstr "资产或应用必填" + +#~ msgid "Not has host {} permission" +#~ msgstr "没有该主机 {} 权限" + +#~ msgid "" +#~ "eg: Every Sunday 03:05 run <5 3 * * 0>
Tips: Using 5 digits linux " +#~ "crontab expressions (Online tools)
Note: If both Regularly " +#~ "perform and Cycle perform are set, give priority to Regularly perform" +#~ msgstr "" +#~ "eg:每周日 03:05 执行 <5 3 * * 0>
提示: 使用5位 Linux crontab 表达" +#~ "式 <分 时 日 月 星期> (在线工具
注意: 如果同时设置了定期执行和周期执" +#~ "行,优先使用定期执行" + +#~ msgid "Unit: hour" +#~ msgstr "单位: 时" + +#~ msgid "Callback" +#~ msgstr "回调" + +#~ msgid "Can view task monitor" +#~ msgstr "可以查看任务监控" + +#~ msgid "Tasks" +#~ msgstr "任务" + +#~ msgid "Options" +#~ msgstr "选项" + +#~ msgid "Run as admin" +#~ msgstr "再次执行" + +#~ msgid "Become" +#~ msgstr "Become" + +#~ msgid "Create by" +#~ msgstr "创建者" + +#~ msgid "AdHoc" +#~ msgstr "任务各版本" + +#~ msgid "Task display" +#~ msgstr "任务名称" + +#~ msgid "Host amount" +#~ msgstr "主机数量" + +#~ msgid "Start time" +#~ msgstr "开始时间" + +#~ msgid "End time" +#~ msgstr "完成时间" + +#~ msgid "Adhoc raw result" +#~ msgstr "结果" + +#~ msgid "Adhoc result summary" +#~ msgstr "汇总" + +#~ msgid "AdHoc execution" +#~ msgstr "任务执行" + +#~ msgid "Task start" +#~ msgstr "任务开始" + +#~ msgid "Command `{}` is forbidden ........" +#~ msgstr "命令 `{}` 不允许被执行 ......." + +#~ msgid "Task end" +#~ msgstr "任务结束" + +#~ msgid "Clean task history period" +#~ msgstr "定期清除任务历史" + +#~ msgid "The administrator is modifying permissions. Please wait" +#~ msgstr "管理员正在修改授权,请稍等" + +#~ msgid "The authorization cannot be revoked for the time being" +#~ msgstr "该授权暂时不能撤销" + +#~ msgid "Application permission" +#~ msgstr "应用授权" + +#~ msgid "Permed application" +#~ msgstr "授权的应用" + +#~ msgid "Can view my apps" +#~ msgstr "可以查看我的应用" + +#~ msgid "Can view user apps" +#~ msgstr "可以查看用户授权的应用" + +#~ msgid "Can view usergroup apps" +#~ msgstr "可以查看用户组授权的应用" + +#~ msgid "Upload file" +#~ msgstr "上传文件" + +#~ msgid "Download file" +#~ msgstr "下载文件" + +#~ msgid "Upload download" +#~ msgstr "上传下载" + +#~ msgid "Clipboard paste" +#~ msgstr "剪贴板粘贴" + +#~ msgid "Clipboard copy paste" +#~ msgstr "剪贴板复制粘贴" + +#~ msgid "Your permed applications is about to expire" +#~ msgstr "你授权的应用即将过期" + +#~ msgid "permed applications" +#~ msgstr "授权的应用" + +#~ msgid "Application permissions is about to expire" +#~ msgstr "应用授权规则即将过期" + +#~ msgid "application permissions of organization {}" +#~ msgstr "组织 ({}) 的应用授权" + +#~ msgid "User groups amount" +#~ msgstr "用户组数量" + +#~ msgid "System users amount" +#~ msgstr "系统用户数量" + +#~ msgid "" +#~ "The application list contains applications that are different from the " +#~ "permission type. ({})" +#~ msgstr "应用列表中包含与授权类型不同的应用。({})" + +#~ msgid "Users display" +#~ msgstr "用户名称" + +#~ msgid "User groups display" +#~ msgstr "用户组名称" + +#~ msgid "Assets display" +#~ msgstr "资产名称" + +#~ msgid "Nodes display" +#~ msgstr "节点名称" + +#~ msgid "System users display" +#~ msgstr "系统用户名称" + +#~ msgid "My applications" +#~ msgstr "我的应用" + +#~ msgid "Empty" +#~ msgstr "空" + +#~ msgid "System user ID" +#~ msgstr "系统用户 ID" + +#~ msgid "Apply for application" +#~ msgstr "申请应用" + +#~ msgid "" +#~ "Created by the ticket, ticket title: {}, ticket applicant: {}, ticket " +#~ "processor: {}, ticket ID: {}" +#~ msgstr "" +#~ "通过工单创建, 工单标题: {}, 工单申请人: {}, 工单处理人: {}, 工单 ID: {}" + +#~ msgid "Applied login IP" +#~ msgstr "申请登录的IP" + +#~ msgid "Applied login city" +#~ msgstr "申请登录的城市" + +#~ msgid "Applied login datetime" +#~ msgstr "申请登录的日期" + +#~ msgid "Login system user" +#~ msgstr "登录系统用户" diff --git a/apps/notifications/signal_handlers.py b/apps/notifications/signal_handlers.py index aaf3480bf..c0b1f1c1c 100644 --- a/apps/notifications/signal_handlers.py +++ b/apps/notifications/signal_handlers.py @@ -1,32 +1,26 @@ -import json -from importlib import import_module import inspect +from importlib import import_module -from django.utils.functional import LazyObject -from django.db.models.signals import post_save -from django.db.models.signals import post_migrate -from django.dispatch import receiver from django.apps import AppConfig +from django.db.models.signals import post_migrate +from django.db.models.signals import post_save +from django.dispatch import receiver +from django.utils.functional import LazyObject +from common.decorator import on_transaction_commit +from common.utils import get_logger +from common.utils.connection import RedisPubSub from notifications.backends import BACKEND from users.models import User -from common.utils.connection import RedisPubSub -from common.utils import get_logger -from common.decorator import on_transaction_commit from .models import SiteMessage, SystemMsgSubscription, UserMsgSubscription from .notifications import SystemMessage - logger = get_logger(__name__) -def new_site_msg_pub_sub(): - return RedisPubSub('notifications.SiteMessageCome') - - class NewSiteMsgSubPub(LazyObject): def _setup(self): - self._wrapped = new_site_msg_pub_sub() + self._wrapped = RedisPubSub('notifications.SiteMessageCome') new_site_msg_chan = NewSiteMsgSubPub() @@ -78,7 +72,8 @@ def create_system_messages(app_config: AppConfig, **kwargs): sub, created = SystemMsgSubscription.objects.get_or_create(message_type=message_type) if created: obj.post_insert_to_db(sub) - logger.info(f'Create SystemMsgSubscription: package={app_config.module.__package__} type={message_type}') + logger.info( + f'Create SystemMsgSubscription: package={app_config.module.__package__} type={message_type}') except ModuleNotFoundError: pass diff --git a/apps/orgs/mixins/models.py b/apps/orgs/mixins/models.py index 0795edc2e..d9eef1e2f 100644 --- a/apps/orgs/mixins/models.py +++ b/apps/orgs/mixins/models.py @@ -1,16 +1,16 @@ # -*- coding: utf-8 -*- # +from django.core.exceptions import ValidationError from django.db import models from django.utils.translation import ugettext_lazy as _ -from django.core.exceptions import ValidationError -from common.utils import get_logger from common.db.models import JMSBaseModel +from common.utils import get_logger, lazyproperty +from ..models import Organization from ..utils import ( set_current_org, get_current_org, current_org, filter_org_queryset ) -from ..models import Organization logger = get_logger(__file__) @@ -75,7 +75,7 @@ class OrgModelMixin(models.Model): self.org_id = org.id return super().save(*args, **kwargs) - @property + @lazyproperty def org(self): return Organization.get_instance(self.org_id) diff --git a/apps/orgs/models.py b/apps/orgs/models.py index 73dc3c6ad..89f50f4bb 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -3,8 +3,8 @@ import uuid from django.db import models from django.utils.translation import ugettext_lazy as _ -from common.utils import lazyproperty, settings from common.tree import TreeNode +from common.utils import lazyproperty, settings class OrgRoleMixin: @@ -33,7 +33,6 @@ class OrgRoleMixin: def get_origin_role_members(self, role_name): from rbac.models import OrgRoleBinding - from users.models import User from rbac.builtin import BuiltinRole from .utils import tmp_to_org @@ -132,6 +131,7 @@ class Organization(OrgRoleMixin, models.Model): @classmethod def expire_orgs_mapping(cls): + print("Expire orgs mapping: ") cls.orgs_mapping = None def org_id(self): diff --git a/apps/orgs/signal_handlers/common.py b/apps/orgs/signal_handlers/common.py index b32cba2cd..802e9c299 100644 --- a/apps/orgs/signal_handlers/common.py +++ b/apps/orgs/signal_handlers/common.py @@ -3,35 +3,30 @@ from collections import defaultdict from functools import partial -import django.db.utils -from django.dispatch import receiver from django.conf import settings -from django.db.utils import ProgrammingError, OperationalError -from django.utils.functional import LazyObject from django.db.models.signals import post_save, pre_delete, m2m_changed +from django.db.utils import ProgrammingError, OperationalError +from django.dispatch import receiver +from django.utils.functional import LazyObject -from orgs.utils import tmp_to_org, set_to_default_org -from orgs.models import Organization -from orgs.hands import set_current_org, Node, get_current_org -from perms.models import AssetPermission -from users.models import UserGroup, User from common.const.signals import PRE_REMOVE, POST_REMOVE from common.decorator import on_transaction_commit from common.signals import django_ready from common.utils import get_logger from common.utils.connection import RedisPubSub +from orgs.hands import set_current_org, Node, get_current_org +from orgs.models import Organization +from orgs.utils import tmp_to_org, set_to_default_org +from perms.models import AssetPermission +from users.models import UserGroup, User from users.signals import post_user_leave_org logger = get_logger(__file__) -def get_orgs_mapping_for_memory_pub_sub(): - return RedisPubSub('fm.orgs_mapping') - - class OrgsMappingForMemoryPubSub(LazyObject): def _setup(self): - self._wrapped = get_orgs_mapping_for_memory_pub_sub() + self._wrapped = RedisPubSub('fm.orgs_mapping') orgs_mapping_for_memory_pub_sub = OrgsMappingForMemoryPubSub() @@ -61,6 +56,7 @@ def subscribe_orgs_mapping_expire(sender, **kwargs): def on_org_create_or_update(sender, instance, created=False, **kwargs): # 必须放到最开始, 因为下面调用Node.save方法时会获取当前组织的org_id(即instance.org_id), 如果不过期会找不到 expire_orgs_mapping_for_memory(instance.id) + old_org = get_current_org() set_current_org(instance) node_root = Node.org_root() diff --git a/apps/settings/signal_handlers.py b/apps/settings/signal_handlers.py index c963488f1..b04ae4f5e 100644 --- a/apps/settings/signal_handlers.py +++ b/apps/settings/signal_handlers.py @@ -18,13 +18,9 @@ from .models import Setting logger = get_logger(__file__) -def get_settings_pub_sub(): - return RedisPubSub('settings') - - class SettingSubPub(LazyObject): def _setup(self): - self._wrapped = get_settings_pub_sub() + self._wrapped = RedisPubSub('settings') setting_pub_sub = SettingSubPub() diff --git a/apps/terminal/api/component/__init__.py b/apps/terminal/api/component/__init__.py index afefe0c18..56432ca42 100644 --- a/apps/terminal/api/component/__init__.py +++ b/apps/terminal/api/component/__init__.py @@ -1,4 +1,5 @@ -from .terminal import * -from .storage import * -from .status import * +from .connect_methods import * from .endpoint import * +from .status import * +from .storage import * +from .terminal import * diff --git a/apps/terminal/api/component/connect_methods.py b/apps/terminal/api/component/connect_methods.py new file mode 100644 index 000000000..a284159d3 --- /dev/null +++ b/apps/terminal/api/component/connect_methods.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# + +from rest_framework import generics +from rest_framework.views import Response + +from common.permissions import IsValidUser +from common.utils import get_request_os +from terminal import serializers +from terminal.connect_methods import ConnectMethodUtil + +__all__ = ['ConnectMethodListApi'] + + +class ConnectMethodListApi(generics.ListAPIView): + serializer_class = serializers.ConnectMethodSerializer + permission_classes = [IsValidUser] + + def get_queryset(self): + os = get_request_os(self.request) + return ConnectMethodUtil.get_protocols_connect_methods(os) + + def list(self, request, *args, **kwargs): + queryset = self.get_queryset() + return Response(queryset) diff --git a/apps/terminal/api/component/terminal.py b/apps/terminal/api/component/terminal.py index df14296f5..d32adf02b 100644 --- a/apps/terminal/api/component/terminal.py +++ b/apps/terminal/api/component/terminal.py @@ -10,16 +10,13 @@ from rest_framework.views import APIView, Response from common.drf.api import JMSBulkModelViewSet from common.exceptions import JMSException -from common.permissions import IsValidUser from common.permissions import WithBootstrapToken -from common.utils import get_request_os from terminal import serializers -from terminal.const import TerminalType from terminal.models import Terminal __all__ = [ 'TerminalViewSet', 'TerminalConfig', - 'TerminalRegistrationApi', 'ConnectMethodListApi' + 'TerminalRegistrationApi', ] logger = logging.getLogger(__file__) @@ -72,15 +69,3 @@ class TerminalRegistrationApi(generics.CreateAPIView): return Response(data=data, status=status.HTTP_400_BAD_REQUEST) return super().create(request, *args, **kwargs) - -class ConnectMethodListApi(generics.ListAPIView): - serializer_class = serializers.ConnectMethodSerializer - permission_classes = [IsValidUser] - - def get_queryset(self): - os = get_request_os(self.request) - return TerminalType.get_protocols_connect_methods(os) - - def list(self, request, *args, **kwargs): - queryset = self.get_queryset() - return Response(queryset) diff --git a/apps/terminal/connect_methods.py b/apps/terminal/connect_methods.py new file mode 100644 index 000000000..db5dd4238 --- /dev/null +++ b/apps/terminal/connect_methods.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +# +from collections import defaultdict + +from django.db.models import TextChoices +from django.utils.translation import ugettext_lazy as _ + +from assets.const import Protocol +from .const import TerminalType + + +class WebMethod(TextChoices): + web_gui = 'web_gui', 'Web GUI' + web_cli = 'web_cli', 'Web CLI' + web_sftp = 'web_sftp', 'Web SFTP' + + @classmethod + def get_methods(cls): + return { + Protocol.ssh: [cls.web_cli, cls.web_sftp], + Protocol.telnet: [cls.web_cli], + Protocol.rdp: [cls.web_gui], + Protocol.vnc: [cls.web_gui], + + Protocol.mysql: [cls.web_cli, cls.web_gui], + Protocol.mariadb: [cls.web_cli, cls.web_gui], + Protocol.oracle: [cls.web_cli, cls.web_gui], + Protocol.postgresql: [cls.web_cli, cls.web_gui], + Protocol.sqlserver: [cls.web_cli, cls.web_gui], + Protocol.redis: [cls.web_cli], + Protocol.mongodb: [cls.web_cli], + + Protocol.k8s: [cls.web_gui], + Protocol.http: [] + } + + +class NativeClient(TextChoices): + # Koko + ssh = 'ssh', 'SSH' + putty = 'putty', 'PuTTY' + xshell = 'xshell', 'Xshell' + + # Magnus + mysql = 'db_client_mysql', _('DB Client') + psql = 'db_client_psql', _('DB Client') + sqlplus = 'db_client_sqlplus', _('DB Client') + redis = 'db_client_redis', _('DB Client') + mongodb = 'db_client_mongodb', _('DB Client') + + # Razor + mstsc = 'mstsc', 'Remote Desktop' + + @classmethod + def get_native_clients(cls): + # native client 关注的是 endpoint 的 protocol, + # 比如 telnet mysql, koko 都支持,到那时暴露的是 ssh 协议 + clients = { + Protocol.ssh: { + 'default': [cls.ssh], + 'windows': [cls.putty], + }, + Protocol.rdp: [cls.mstsc], + Protocol.mysql: [cls.mysql], + Protocol.oracle: [cls.sqlplus], + Protocol.postgresql: [cls.psql], + Protocol.redis: [cls.redis], + Protocol.mongodb: [cls.mongodb], + } + return clients + + @classmethod + def get_target_protocol(cls, name, os): + for protocol, clients in cls.get_native_clients().items(): + if isinstance(clients, dict): + clients = clients.get(os) or clients.get('default') + if name in clients: + return protocol + return None + + @classmethod + def get_methods(cls, os='windows'): + clients_map = cls.get_native_clients() + methods = defaultdict(list) + + for protocol, _clients in clients_map.items(): + if isinstance(_clients, dict): + _clients = _clients.get(os, _clients['default']) + for client in _clients: + methods[protocol].append({ + 'value': client.value, + 'label': client.label, + 'type': 'native', + }) + return methods + + @classmethod + def get_launch_command(cls, name, token, endpoint, os='windows'): + username = f'JMS-{token.id}' + commands = { + cls.ssh: f'ssh {username}@{endpoint.host} -p {endpoint.ssh_port}', + cls.putty: f'putty.exe -ssh {username}@{endpoint.host} -P {endpoint.ssh_port}', + cls.xshell: f'xshell.exe -url ssh://{username}:{token.value}@{endpoint.host}:{endpoint.ssh_port}', + # cls.mysql: 'mysql -h {hostname} -P {port} -u {username} -p', + # cls.psql: { + # 'default': 'psql -h {hostname} -p {port} -U {username} -W', + # 'windows': 'psql /h {hostname} /p {port} /U {username} -W', + # }, + # cls.sqlplus: 'sqlplus {username}/{password}@{hostname}:{port}', + # cls.redis: 'redis-cli -h {hostname} -p {port} -a {password}', + } + command = commands.get(name) + if isinstance(command, dict): + command = command.get(os, command.get('default')) + return command + + +class AppletMethod: + @classmethod + def get_methods(cls): + from .models import Applet, AppletHost + + methods = defaultdict(list) + has_applet_hosts = AppletHost.objects.all().exists() + + applets = Applet.objects.filter(is_active=True) + for applet in applets: + for protocol in applet.protocols: + methods[protocol].append({ + 'value': applet.name, + 'label': applet.display_name, + 'type': 'applet', + 'icon': applet.icon, + 'disabled': not applet.is_active or not has_applet_hosts, + }) + return methods + + +class ConnectMethodUtil: + _all_methods = None + + @classmethod + def protocols(cls): + protocols = { + TerminalType.koko: { + 'web_methods': [WebMethod.web_cli, WebMethod.web_sftp], + 'listen': [Protocol.ssh, Protocol.http], + 'support': [ + Protocol.ssh, Protocol.telnet, + Protocol.mysql, Protocol.postgresql, + Protocol.oracle, Protocol.sqlserver, + Protocol.mariadb, Protocol.redis, + Protocol.mongodb, Protocol.k8s, + Protocol.clickhouse, + ], + 'match': 'm2m' + }, + TerminalType.omnidb: { + 'web_methods': [WebMethod.web_gui], + 'listen': [Protocol.http], + 'support': [ + Protocol.mysql, Protocol.postgresql, Protocol.oracle, + Protocol.sqlserver, Protocol.mariadb + ], + 'match': 'm2m' + }, + TerminalType.lion: { + 'web_methods': [WebMethod.web_gui], + 'listen': [Protocol.http], + 'support': [Protocol.rdp, Protocol.vnc], + 'match': 'm2m' + }, + TerminalType.magnus: { + 'listen': [], + 'support': [ + Protocol.mysql, Protocol.postgresql, + Protocol.oracle, Protocol.mariadb + ], + 'match': 'map' + }, + TerminalType.razor: { + 'listen': [Protocol.rdp], + 'support': [Protocol.rdp], + 'match': 'map' + }, + } + return protocols + + @classmethod + def get_connect_method(cls, name, protocol, os='linux'): + methods = cls.get_protocols_connect_methods(os) + protocol_methods = methods.get(protocol, []) + for method in protocol_methods: + if method['value'] == name: + return method + return None + + @classmethod + def refresh_methods(cls): + cls._all_methods = None + + @classmethod + def get_protocols_connect_methods(cls, os): + if cls._all_methods is not None: + return cls._all_methods + + methods = defaultdict(list) + web_methods = WebMethod.get_methods() + native_methods = NativeClient.get_methods(os) + applet_methods = AppletMethod.get_methods() + + for component, component_protocol in cls.protocols().items(): + support = component_protocol['support'] + + for protocol in support: + # Web 方式 + protocol_web_methods = set(web_methods.get(protocol, [])) \ + & set(component_protocol.get('web_methods', [])) + methods[protocol.value].extend([ + { + 'component': component.value, + 'type': 'web', + 'endpoint_protocol': 'http', + 'value': method.value, + 'label': method.label, + } + for method in protocol_web_methods + ]) + + # 客户端方式 + if component_protocol['match'] == 'map': + listen = [protocol] + else: + listen = component_protocol['listen'] + + for listen_protocol in listen: + # Native method + methods[protocol.value].extend([ + { + 'component': component.value, + 'type': 'native', + 'endpoint_protocol': listen_protocol, + **method + } + for method in native_methods[listen_protocol] + ]) + + # 远程应用方式,这个只有 tinker 提供 + for protocol, applet_methods in applet_methods.items(): + for method in applet_methods: + method['listen'] = 'rdp' + method['component'] = TerminalType.tinker.value + methods[protocol].extend(applet_methods) + + cls._all_methods = methods + return methods diff --git a/apps/terminal/const.py b/apps/terminal/const.py index bf3416c91..69f994476 100644 --- a/apps/terminal/const.py +++ b/apps/terminal/const.py @@ -1,16 +1,9 @@ # -*- coding: utf-8 -*- # -from collections import defaultdict from django.db.models import TextChoices from django.utils.translation import ugettext_lazy as _ -from assets.const import Protocol - - -# Replay & Command Storage Choices -# -------------------------------- - class ReplayStorageType(TextChoices): null = 'null', 'Null', @@ -44,129 +37,6 @@ class ComponentLoad(TextChoices): return set(dict(cls.choices).keys()) -class WebMethod(TextChoices): - web_gui = 'web_gui', 'Web GUI' - web_cli = 'web_cli', 'Web CLI' - web_sftp = 'web_sftp', 'Web SFTP' - - @classmethod - def get_methods(cls): - return { - Protocol.ssh: [cls.web_cli, cls.web_sftp], - Protocol.telnet: [cls.web_cli], - Protocol.rdp: [cls.web_gui], - Protocol.vnc: [cls.web_gui], - - Protocol.mysql: [cls.web_cli, cls.web_gui], - Protocol.mariadb: [cls.web_cli, cls.web_gui], - Protocol.oracle: [cls.web_cli, cls.web_gui], - Protocol.postgresql: [cls.web_cli, cls.web_gui], - Protocol.sqlserver: [cls.web_cli, cls.web_gui], - Protocol.clickhouse: [cls.web_cli], - Protocol.redis: [cls.web_cli], - Protocol.mongodb: [cls.web_cli], - - Protocol.k8s: [cls.web_gui], - Protocol.http: [] - } - - -class NativeClient(TextChoices): - # Koko - ssh = 'ssh', 'SSH' - putty = 'putty', 'PuTTY' - xshell = 'xshell', 'Xshell' - - # Magnus - mysql = 'db_client_mysql', _('DB Client') - psql = 'db_client_psql', _('DB Client') - sqlplus = 'db_client_sqlplus', _('DB Client') - redis = 'db_client_redis', _('DB Client') - mongodb = 'db_client_mongodb', _('DB Client') - - # Razor - mstsc = 'mstsc', 'Remote Desktop' - - @classmethod - def get_native_clients(cls): - # native client 关注的是 endpoint 的 protocol, - # 比如 telnet mysql, koko 都支持,到那时暴露的是 ssh 协议 - clients = { - Protocol.ssh: { - 'default': [cls.ssh], - 'windows': [cls.putty], - }, - Protocol.rdp: [cls.mstsc], - Protocol.mysql: [cls.mysql], - Protocol.oracle: [cls.sqlplus], - Protocol.postgresql: [cls.psql], - Protocol.redis: [cls.redis], - Protocol.mongodb: [cls.mongodb], - } - return clients - - @classmethod - def get_target_protocol(cls, name, os): - for protocol, clients in cls.get_native_clients().items(): - if isinstance(clients, dict): - clients = clients.get(os) or clients.get('default') - if name in clients: - return protocol - return None - - @classmethod - def get_methods(cls, os='windows'): - clients_map = cls.get_native_clients() - methods = defaultdict(list) - - for protocol, _clients in clients_map.items(): - if isinstance(_clients, dict): - _clients = _clients.get(os, _clients['default']) - for client in _clients: - methods[protocol].append({ - 'value': client.value, - 'label': client.label, - 'type': 'native', - }) - return methods - - @classmethod - def get_launch_command(cls, name, token, endpoint, os='windows'): - username = f'JMS-{token.id}' - commands = { - cls.ssh: f'ssh {username}@{endpoint.host} -p {endpoint.ssh_port}', - cls.putty: f'putty.exe -ssh {username}@{endpoint.host} -P {endpoint.ssh_port}', - cls.xshell: f'xshell.exe -url ssh://{username}:{token.value}@{endpoint.host}:{endpoint.ssh_port}', - # cls.mysql: 'mysql -h {hostname} -P {port} -u {username} -p', - # cls.psql: { - # 'default': 'psql -h {hostname} -p {port} -U {username} -W', - # 'windows': 'psql /h {hostname} /p {port} /U {username} -W', - # }, - # cls.sqlplus: 'sqlplus {username}/{password}@{hostname}:{port}', - # cls.redis: 'redis-cli -h {hostname} -p {port} -a {password}', - } - command = commands.get(name) - if isinstance(command, dict): - command = command.get(os, command.get('default')) - return command - - -class AppletMethod: - @classmethod - def get_methods(cls): - from .models import Applet - applets = Applet.objects.all() - methods = defaultdict(list) - for applet in applets: - for protocol in applet.protocols: - methods[protocol].append({ - 'value': applet.name, - 'label': applet.display_name, - 'icon': applet.icon, - }) - return methods - - class TerminalType(TextChoices): koko = 'koko', 'KoKo' guacamole = 'guacamole', 'Guacamole' @@ -182,107 +52,3 @@ class TerminalType(TextChoices): @classmethod def types(cls): return set(dict(cls.choices).keys()) - - @classmethod - def protocols(cls): - protocols = { - cls.koko: { - 'web_methods': [WebMethod.web_cli, WebMethod.web_sftp], - 'listen': [Protocol.ssh, Protocol.http], - 'support': [ - Protocol.ssh, Protocol.telnet, - Protocol.mysql, Protocol.postgresql, - Protocol.oracle, Protocol.sqlserver, - Protocol.mariadb, Protocol.clickhouse, - Protocol.redis, Protocol.mongodb, Protocol.k8s, - ], - 'match': 'm2m' - }, - cls.omnidb: { - 'web_methods': [WebMethod.web_gui], - 'listen': [Protocol.http], - 'support': [ - Protocol.mysql, Protocol.postgresql, Protocol.oracle, - Protocol.sqlserver, Protocol.mariadb - ], - 'match': 'm2m' - }, - cls.lion: { - 'web_methods': [WebMethod.web_gui], - 'listen': [Protocol.http], - 'support': [Protocol.rdp, Protocol.vnc], - 'match': 'm2m' - }, - cls.magnus: { - 'listen': [], - 'support': [ - Protocol.mysql, Protocol.postgresql, - Protocol.oracle, Protocol.mariadb - ], - 'match': 'map' - }, - cls.razor: { - 'listen': [Protocol.rdp], - 'support': [Protocol.rdp], - 'match': 'map' - }, - } - return protocols - - @classmethod - def get_connect_method(cls, name, protocol, os='linux'): - methods = cls.get_protocols_connect_methods(os) - protocol_methods = methods.get(protocol, []) - for method in protocol_methods: - if method['value'] == name: - return method - return None - - @classmethod - def get_protocols_connect_methods(cls, os): - methods = defaultdict(list) - web_methods = WebMethod.get_methods() - native_methods = NativeClient.get_methods(os) - applet_methods = AppletMethod.get_methods() - - for component, component_protocol in cls.protocols().items(): - support = component_protocol['support'] - - for protocol in support: - if component_protocol['match'] == 'map': - listen = [protocol] - else: - listen = component_protocol['listen'] - - for listen_protocol in listen: - # Native method - methods[protocol.value].extend([ - { - 'component': component.value, - 'type': 'native', - 'endpoint_protocol': listen_protocol, - **method - } - for method in native_methods[listen_protocol] - ]) - - protocol_web_methods = set(web_methods.get(protocol, [])) \ - & set(component_protocol.get('web_methods', [])) - methods[protocol.value].extend([ - { - 'component': component.value, - 'type': 'web', - 'endpoint_protocol': 'http', - 'value': method.value, - 'label': method.label, - } - for method in protocol_web_methods - ]) - - for protocol, applet_methods in applet_methods.items(): - for method in applet_methods: - method['type'] = 'applet' - method['listen'] = 'rdp' - method['component'] = cls.tinker.value - methods[protocol].extend(applet_methods) - return methods diff --git a/apps/terminal/models/applet/applet.py b/apps/terminal/models/applet/applet.py index cf854b036..bfe0e5e67 100644 --- a/apps/terminal/models/applet/applet.py +++ b/apps/terminal/models/applet/applet.py @@ -1,14 +1,15 @@ -import yaml import os.path +import random +import yaml from django.conf import settings +from django.core.cache import cache from django.core.files.storage import default_storage from django.db import models from django.utils.translation import gettext_lazy as _ from common.db.models import JMSBaseModel - __all__ = ['Applet', 'AppletPublication'] @@ -53,10 +54,43 @@ class Applet(JMSBaseModel): return None return os.path.join(settings.MEDIA_URL, 'applets', self.name, 'icon.png') + def select_host_account(self): + hosts = list(self.hosts.all()) + if not hosts: + return None + + host = random.choice(hosts) + using_keys = cache.keys('host_accounts_{}_*'.format(host.id)) or [] + accounts_used = cache.get_many(using_keys) + accounts = host.accounts.all().exclude(username__in=accounts_used) + + if not accounts: + accounts = host.accounts.all() + if not accounts: + return None + + account = random.choice(accounts) + ttl = 60 * 60 * 24 + lock_key = 'applet_host_accounts_{}_{}'.format(host.id, account.username) + cache.set(lock_key, account.username, ttl) + return { + 'host': host, + 'account': account, + 'lock_key': lock_key, + 'ttl': ttl + } + + @staticmethod + def release_host_and_account(host_id, username): + key = 'applet_host_accounts_{}_{}'.format(host_id, username) + cache.delete(key) + class AppletPublication(JMSBaseModel): - applet = models.ForeignKey('Applet', on_delete=models.PROTECT, related_name='publications', verbose_name=_('Applet')) - host = models.ForeignKey('AppletHost', on_delete=models.PROTECT, related_name='publications', verbose_name=_('Host')) + applet = models.ForeignKey('Applet', on_delete=models.PROTECT, related_name='publications', + verbose_name=_('Applet')) + host = models.ForeignKey('AppletHost', on_delete=models.PROTECT, related_name='publications', + verbose_name=_('Host')) status = models.CharField(max_length=16, default='ready', verbose_name=_('Status')) comment = models.TextField(default='', blank=True, verbose_name=_('Comment')) diff --git a/apps/terminal/signal_handlers.py b/apps/terminal/signal_handlers.py index 7868159a8..d98e21eee 100644 --- a/apps/terminal/signal_handlers.py +++ b/apps/terminal/signal_handlers.py @@ -4,17 +4,18 @@ from django.db.models.signals import post_save, post_delete from django.db.utils import ProgrammingError from django.dispatch import receiver +from django.utils.functional import LazyObject +from assets.models import Asset from common.signals import django_ready from common.utils import get_logger +from common.utils.connection import RedisPubSub from orgs.utils import tmp_to_builtin_org -from assets.models import Asset -from .utils import db_port_manager, DBPortManager from .models import Applet, AppletHost +from .utils import db_port_manager, DBPortManager db_port_manager: DBPortManager - logger = get_logger(__file__) @@ -27,6 +28,8 @@ def on_applet_host_create(sender, instance, created=False, **kwargs): with tmp_to_builtin_org(system=1): instance.generate_accounts() + applet_host_change_pub_sub.publish(True) + @receiver(post_save, sender=Applet) def on_applet_create(sender, instance, created=False, **kwargs): @@ -35,6 +38,8 @@ def on_applet_create(sender, instance, created=False, **kwargs): hosts = AppletHost.objects.all() instance.hosts.set(hosts) + applet_host_change_pub_sub.publish(True) + @receiver(django_ready) def init_db_port_mapper(sender, **kwargs): @@ -59,3 +64,22 @@ def on_db_app_delete(sender, instance, **kwargs): if not instance.category != 'database': return db_port_manager.pop(instance) + + +class AppletHostPubSub(LazyObject): + def _setup(self): + self._wrapped = RedisPubSub('fm.applet_host_change') + + +@receiver(django_ready) +def subscribe_applet_host_change(sender, **kwargs): + logger.debug("Start subscribe for expire node assets id mapping from memory") + + def on_change(message): + from terminal.connect_methods import ConnectMethodUtil + ConnectMethodUtil.refresh_methods() + + applet_host_change_pub_sub.subscribe(on_change) + + +applet_host_change_pub_sub = AppletHostPubSub() diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 745a23286..5baa5b953 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -39,7 +39,6 @@ jms-storage==0.0.44 simplejson==3.17.6 six==1.16.0 sshpubkeys==3.3.1 -sshtunnel==0.4.0 uritemplate==4.1.1 urllib3==1.26.9 vine==5.0.0